如何更改MFC中弹出窗口的默认位置
How to change default position of pop-up window in MFC
我有一个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;
}
}
在InitInstance
调用InstallHook
,然后在ExitInstance
调用UninstallHook
(实际上不是必需的)。
此示例挂钩程序将所有弹出窗口移动到左上角。
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 如何使用默认参数等选择模板专业化
- 具有默认模板参数的多态类的模板推导失败
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 如何在Qt窗口小部件中使用QStringView(或QStringRef)
- 问:如何使用C++中的按钮从窗口打开窗口
- 当函数模板参数是具有默认参数的类模板时,函数模板参数的推导如何执行
- 初始化具有非默认构造函数的std::数组项的更好方法
- 何时提供默认参数作为模板参数
- 更改 ICDBurn 窗口 API 中的默认刻录驱动器
- 在无窗口 GLX 程序中读取 OpenGL 的默认帧缓冲
- 更改后如何将默认名称设置为窗口
- "PlaySound()"播放默认窗口错误声音的功能
- cpp-neltib(和 Boost)窗口中的默认字符串类型
- 我可以根据系统文件中某处的不同系统加载默认窗口图标吗?
- 为什么当窗口在win32上失去焦点时,被覆盖的非客户端区域显示默认值
- 如何更改MFC中弹出窗口的默认位置
- 如何在Qt应用程序中编辑默认的窗口标题和框架?
- Qt Ui设计器-创建窗口默认框架和默认按钮
- 如何在拖动窗口时覆盖默认的 linux Alt+鼠标行为