inainte : https://gyazo.com/c64d3e41175fc2f80c1a118387058cec
dupa : https://gyazo.com/b8692ab9d48e9d9af704fc7de1650a72
dupa : https://gyazo.com/b8692ab9d48e9d9af704fc7de1650a72
Cod:
//////PythonApplication.cpp////
// cauta
m_dwLastIdleTime(0),
// adauga
m_IsMovingMainWindow(false)
---------
ai grija la ultima virgula trebuie sa arate asa:
m_dwLastIdleTime(0),
m_IsMovingMainWindow(false)
--------
// cauta
#ifndef _DEBUG
SetEterExceptionHandler();
#endif
// adauga
m_InitialMouseMovingPoint = {};
// cauta
void CPythonApplication::Loop()
{
...
}
// adauga inainte:
void CPythonApplication::SetUserMovingMainWindow(bool flag)
{
if (flag && !GetCursorPos(&m_InitialMouseMovingPoint))
return;
m_IsMovingMainWindow = flag;
}
bool CPythonApplication::IsUserMovingMainWindow() const
{
return m_IsMovingMainWindow;
}
void CPythonApplication::UpdateMainWindowPosition()
{
POINT finalPoint{};
if (GetCursorPos(&finalPoint))
{
LONG xDiff = finalPoint.x - m_InitialMouseMovingPoint.x;
LONG yDiff = finalPoint.y - m_InitialMouseMovingPoint.y;
RECT r{};
GetWindowRect(&r);
SetPosition(r.left + xDiff, r.top + yDiff);
m_InitialMouseMovingPoint = finalPoint;
}
}
// cauta
void CPythonApplication::Loop()
{
#ifdef PROFILING
Profiler::Instance().beginSession("session1");
#endif
while (1)
{
// adauga
if (IsUserMovingMainWindow())
UpdateMainWindowPosition();
--------
trebuie sa arate asa:
while (1)
{
if (IsUserMovingMainWindow())
UpdateMainWindowPosition();
if (IsMessage())
{
if (!MessageProcess())
break;
}
else
{
if (!Process())
break;
m_dwLastIdleTime = ELTimer_GetMSec();
}
}
//////////////////////////////
///////////// PythonApplication.h
// cauta
void Loop();
// adauga
bool IsUserMovingMainWindow() const;
void SetUserMovingMainWindow(bool flag);
void UpdateMainWindowPosition();
// mergi la final si modifica ultima functie
protected:
bool m_IsMovingMainWindow;//adauga asta
POINT m_InitialMouseMovingPoint; // adauga asta
int m_iCursorNum;
///////////////////////////
//////////////////////////PythonApplicationProcedure.cpp
// cauta
case WM_EXITSIZEMOVE:
{
...
}
// adauga
case WM_NCLBUTTONDOWN:
{
switch (wParam)
{
case HTMAXBUTTON:
case HTSYSMENU:
return 0;
case HTMINBUTTON:
ShowWindow(hWnd, SW_MINIMIZE);
return 0;
case HTCLOSE:
RunPressExitKey();
return 0;
case HTCAPTION:
if (!IsUserMovingMainWindow())
SetUserMovingMainWindow(true);
return 0;
}
break;
}
case WM_NCLBUTTONUP:
{
if (IsUserMovingMainWindow())
SetUserMovingMainWindow(false);
break;
}
case WM_NCRBUTTONDOWN:
case WM_NCRBUTTONUP:
case WM_CONTEXTMENU:
return 0;