c++ - 常见对话框 Win32

标签 c++ winapi modal-dialog

我有一个通用颜色对话框,我想在按下菜单时激活它。 不幸的是,每次我按下该项目时,窗口都会失去焦点,好像会弹出一个对话框,但对话框永远不会出现。

我现在使用的代码如下:

case ID_TOOL_CHOOSECOLOR:
//show colour dialog
ChooseColor(&cc);

我已经像这样初始化了我的 CHOOSECOLOR 结构:

 cc.lStructSize    = sizeof (CHOOSECOLOR) ;
 cc.hwndOwner      = NULL ;
 cc.hInstance      = NULL ;
 cc.rgbResult      = RGB (0x80, 0x80, 0x80) ;
 cc.lpCustColors   = crCustColor ;
 cc.Flags          = CC_RGBINIT | CC_FULLOPEN ;
 cc.lCustData      = 0 ;
 cc.lpfnHook       = NULL ;
 cc.lpTemplateName = NULL ;

奇怪的是,只有在我按下“ALT”键(而且只有 alt 键)后,对话框才会出现。有什么建议吗?

顺便说一下,我正在尝试在 MDI 文档中执行此操作。

谢谢

最佳答案

我能看到的唯一问题是您没有为对话框指定所有者。这可能会导致对话框显示在主窗口后面。将主窗口的句柄指定为对话框的所有者。

Window Features page on MSDN 上阅读有关窗口所有权的更多信息.

关于c++ - 常见对话框 Win32,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15914668/

相关文章:

Android:如何获得模态对话框或类似的模态行为?

c++ - 将数组作为参数传递给函数

c++ - 如何实现具有 arg 两种类型之一的类

c++ - 为链表中的节点分配内存,没想到链表中的下一个节点也被分配了

c# - Windows 的声音管理器类

c++ - 在加载 DLL 之前创建 RemoteThread

C++ - SDL2 和 OpenGL - Visual Studio 错误 LNK2019 : unresolved external symbol

c++ - SetCurrentConsoleFontEx 用于将文本设为粗体

javascript - AngularJS - 在 Controller 中打开 $mdDialog

javascript - 无法在 angularjs 对话框上应用 CSS