常用对话框
Common Dialogboxes Win32
我有一个普通的颜色对话框,我想在菜单上按下激活。不幸的是,每次我按下这个项目,窗口就失去焦点,好像出现了一个对话框,但对话框从来没有出现过。
我现在使用的代码如下:
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文档中这样做。
谢谢
我能看到的唯一问题是您没有为对话框指定所有者。这可能导致在主窗口后面显示对话框。指定主窗口的句柄作为对话框的所有者。
在MSDN的窗口功能页面上阅读有关窗口所有权的更多信息。
修复!
原来,我的问题是在主窗口的WndProc。
我将WM_PAINT
命令设置为return 0;
而不是break;
。
改变我的return 0
到break
解决了一切!我认为这是因为我的return
将退出wndproc,而break
将允许我继续到return MDIFrameProc(hwnd, message, wparam, lparam)
。
我可能错了,但这是我能想到的最好的解释,解释了为什么break
有效,而return 0
不行
绘制完成后,请确保调用ValidateRect(HWND,CONST RECT*);
// https://learn.microsoft.com/en-us/windows/win32/dlgbox/color-dialog-box
// http://winapi.freetechsecrets.com/win32/WIN32Choosing_a_Color.htm
COLORREF acrCustClr[16]; // array of custom colors
CHOOSECOLOR cc = {sizeof(cc)};
ZeroMemory(&cc, sizeof(CHOOSECOLOR));
cc.lStructSize = sizeof(CHOOSECOLOR);
cc.hwndOwner = hwnd;
cc.Flags = CC_FULLOPEN | CC_RGBINIT;
cc.lpCustColors = (LPDWORD) acrCustClr;
BOOL fOk = ChooseColor(&cc);
if (fOk) {
}
相关文章:
- 如何在Qbutton的帮助下更改Q对话框的宽度
- 当对话框被接受时,如何用参数调用槽
- WinAPI 在单击第一个对话框上的按钮控件并销毁第一个对话框后创建第二个对话框
- 如何多次询问来自QML对话框的输入?
- 选择文件对话框错误
- 自定义对话框(源自QDialog)不会关闭(Android)
- 如何在 MFC 对话框中使用 OnDraw
- 在C++中创建文件夹选取器对话框的最简单方法是什么?
- 从资源视图访问对话框时出现问题
- 如何检测窗口当前是否正在运行模式对话框?
- "最小化"按钮不会出现在 MFC 对话框中
- 如何获取QNetworkConfiguration UserChoice对话框?
- 表单显示对话框函数错误,并且不执行下面的语句
- 如何在 VC6 中的对话框中将图标设置为按钮
- C++/Win32 构造函数不使用从对话框获取的字符串初始化变量
- 在 Win32 应用中,如果未选择文件夹并且用户单击"确定",则文件夹选择对话框将关闭
- 在主窗口之前显示登录对话框并隐藏主窗口按钮
- 找不到没有具有类名 #32770 的窗口名称的父窗口的子窗口(对话框)
- 如何在主窗口标签的对话框中显示QLineEdit的输入
- 常用对话框