1
我有一個MFC應用程序,並且希望將此應用程序生成的所有彈出窗口作爲對話框或使用AfxMessageBox應定位到配置文件中給出的某個位置。 MFC中有沒有設置任何彈出窗口的默認位置?如何在MFC中更改彈出窗口的默認位置
在此先感謝
我有一個MFC應用程序,並且希望將此應用程序生成的所有彈出窗口作爲對話框或使用AfxMessageBox應定位到配置文件中給出的某個位置。 MFC中有沒有設置任何彈出窗口的默認位置?如何在MFC中更改彈出窗口的默認位置
在此先感謝
使用窗口掛鉤過程很容易完成。在ExitInstance
(不需要真的)
static HHOOK g_myHook = NULL;
LRESULT CALLBACK MyCbtHook(int nCode, WPARAM wParam, LPARAM lParam)
{
switch (nCode)
{
case HCBT_ACTIVATE:
{
CWnd* wnd = CWnd::FromHandle((HWND)wParam);
WINDOWINFO wi;
wi.cbSize = sizeof(wi);
wnd->GetWindowInfo(&wi);
if ((wi.dwStyle & WS_POPUPWINDOW) == WS_POPUPWINDOW)
{
wnd->SetWindowPos(NULL, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOZORDER);
}
break;
}
}
return CallNextHookEx(0, nCode, wParam, lParam);
}
static void InstallHook()
{
g_myHook = SetWindowsHookEx(WH_CBT, MyCbtHook, 0, GetCurrentThreadId());
}
static void UninstallHook()
{
if (g_myHook)
{
UnhookWindowsHookEx(g_myHook);
g_myHook = NULL;
}
}
呼叫InstallHook
在InitInstance
,然後UninstallHook
:
,請參閱本SO帖子:Hooking window creation in an MFC program
示例代碼。
此示例鉤子程序將所有彈出窗口移動到左上角。
不是我所知道的。如果我要實現這一點,我會使用鉤子檢測基於對話框的窗口的顯示,並在顯示它們之前設置它們的位置。 – user1793036 2014-08-28 08:03:20