我有一个MFC应用程序,并且我希望将此应用程序生成的所有弹出窗口作为对话框或使用AfxMessageBox的位置都放置在配置文件中指定的位置。在MFC中有没有一种方法可以为任何弹出窗口设置默认位置?
提前致谢
使用窗口挂钩过程轻松完成。
请参阅此SO帖子:在MFC程序中挂钩窗口创建
样例代码:
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
在ExitInstance
(不需要真的)。
此示例挂钩过程将所有弹出窗口移至左上角。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句