常用对话框Win32

doc*_*lic 1 c++ winapi modal-dialog

我有一个常见的颜色对话框,我想在菜单按下时激活.不幸的是,每次按下该项目时,窗口都会失去焦点,就好像会出现一个对话框,但对话框永远不会显示出来.

我现在使用的代码如下:

case ID_TOOL_CHOOSECOLOR:
//show colour dialog
ChooseColor(&cc);
Run Code Online (Sandbox Code Playgroud)

我已经初始化了我的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 ;
Run Code Online (Sandbox Code Playgroud)

奇怪的是,只有在按下"ALT"键(并且只有alt键)后,对话框才会出现.有小费吗?

顺便说一下,我正试图在MDI文档中这样做.

谢谢

Dav*_*nan 5

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

了解更多关于在窗口所有权在MSDN窗口功能页面.