我有一個常見的顏色對話框,我想在菜單按下時激活。 不幸的是,每當我按下該項目時,窗口就會失去焦點,就好像一個對話框即將出現,但對話框從不出現。常見對話框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文件中這樣做。
感謝
努力表現更完整的源代碼。 – 2013-04-10 00:06:13
只是提供的代碼中的單個東西,我發現它並不好,即應該將'hInstance'設置爲'GetModuleHandle(0)'的結果。一個可能的其他問題可能是未初始化整個結構。只需將其聲明爲'CHOOSECOLOR cc = {sizeof(cc)};',它負責零初始化和'lStructSize'初始化。 – 2013-04-10 00:57:09
@Cheers文檔不同意。 hInstance:*如果既沒有設置CC_ ENABLETEMPLATEHANDLE也沒有設置CC_ENABLETEMPLATE,這個成員被忽略。*此外,所有的字段都被初始化,所以zero-init不會解決這個問題。 – 2013-04-10 01:04:31