我在资源文件中创建了 IDD_DIALOG。
我使用以下代码将 DIALOG 置于屏幕中央:
case WM_INITDIALOG:
RECT Rect;
::GetWindowRect(hwndDlg, &Rect);
::SetWindowPos(hwndDlg, HWND_TOPMOST, (::GetSystemMetrics(SM_CXSCREEN)/2 - ((Rect.right - Rect.left)/2)), (::GetSystemMetrics(SM_CYSCREEN)/2 - ((Rect.bottom - Rect.top)/2)), (Rect.right - Rect.left), (Rect.bottom - Rect.top), SWP_SHOWWINDOW);
return TRUE;
我的问题是,如何将标题(对话框标题)与我当前的代码一起居中?
谢谢。
最佳答案
除非确实需要,否则最好不要这样做。
您可能需要绘制自定义边框/框架,Office 等某些应用程序就是这样做的,以便它们可以在标题栏中拥有其他按钮小部件。 (Office 还将标题栏中的文本居中...)它非常复杂,而且有两种不同的技术,具体取决于您是在 XP 之前的版本还是启用了 DWM 的 Vista 上运行。我找到一篇文章that summarizes some of the issues involved in the Vista/DWM case 。如果未启用 DWM,您可能需要支持旧技术 handling and overriding WM_NCPAINT .
仅将标题栏居中就需要大量工作!
事实证明,标题栏的对齐方式随着时间的推移而发生了变化:在 Win3.1 中,它居中;在 Win3.1 中,标题栏居中;在 Win3.1 中,标题栏居中。然后在 95 时代它变成了左对齐(或者对于从右到左的语言来说是右对齐)。事实证明,事情又回到了原点,在桌面模式下,Windows 8 再次恢复居中。
这也许是“如何使对话框标题居中?”的最简单的答案。是:升级到 Windows 8 :-)
关于c++ - 如何使对话框标题居中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14574011/