3
を使用して子ウィンドウから親ウィンドウを移動させる方法このポップアップウィンドウでは、カスタムの移動とサイズ変更、Ctrlキーを押しながらクライアントの任意の場所をクリックして移動し、境界線をサイズ変更します。問題は、今、私はこのウィンドウの内側に子ウインドウを作成しており、ここでは「間違っている」ということです。親ウィンドウにメッセージを送信する方法が見つかりません。 これは私が試したことです。WM_NCHITTEST
私は親ウィンドウ
case WM_NCHITTEST:
//determines if the window should be moving, sizing or don't do a thing
return DoHitTest(pWnd, GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam));
case WM_NCLBUTTONDOWN:
//just set the cursor for visual notice
if (GetAsyncKeyState(VK_CONTROL) & 0x8000)
SetCursor(LoadCursor(NULL, IDC_SIZEALL));
break;
のWndProcメソッドでこれらのメッセージを処理し、これは
int WindowGnaq::DoHitTest(WindowBase* pWnd, int x, int y)
{
if(GetAsyncKeyState(VK_CONTROL) & 0x8000)
return HTCAPTION;
if(m_bAdjustable && GetAsyncKeyState(VK_MENU) & 0x8000)
{
short spare = 5;
RECT r;
pWnd->GetRect(r);
r.right -= 1;
r.bottom -= 1;
if (x < (r.left + spare) && y < (r.top + spare))
return HTTOPLEFT;
else if (x < (r.left + spare) && y > (r.bottom - spare))
return HTBOTTOMLEFT;
else if (x < (r.left + spare))
return HTLEFT;
else if (x > (r.right - spare) && y < (r.top + spare))
return HTTOPRIGHT;
else if (x > (r.right - spare) && y > (r.bottom - spare))
return HTBOTTOMRIGHT;
else if (x > (r.right - spare))
return HTRIGHT;
else if (y < (r.top + spare))
return HTTOP;
else if (y > (r.bottom - spare))
return HTBOTTOM;
}
return HTCLIENT;
}
doHitTest方法であり、これは私がお子様のウィンドウプロシージャ
にしようとしているものですcase WM_NCHITTEST:
//this just moves the mouse to the border i don't have but doesn't make me able to move
return SendMessage(m_pParent->GetHandle(), WM_SYSCOMMAND, SC_MOVE, -1);
//this doesn't to anything
return PostMessage(m_pParent->GetHandle(), msg, wParam, lParam);
//this makes the childwindow move instead of the parent
return SendMessage(m_pParent->GetHandle(), msg, wParam, lParam);
thnx – ColmanJ