将公共控件或 Rich Edit 控件添加到对话框之后,在测试对话框时该控件不出现,或者对话框本身不出现。
问题示例
1 、创建 Win32 项目,修改应用程序设置以创建 Windows 应用程序(不是控制台应用程序)。
2 、在资源视图中,双击 .rc 文件。
3 、在 Dialog 选项下,双击“关于”框。
4 、将一个“ IP Address Control ”添加到对话框。
5 、 保存并“全部重新生成”。
6 、执行程序。
7 、在对话框的“帮助”菜单上,单击“关于”命令;没有显示任何对话框。
有的系统不会出现该问题,但是在 Windows2000 下,可能会比较经常出现
原因
目前,将下列公共控件或 Rich Edit 控件拖放到对话框上时,对话框编辑器不自动在项目中添加代码。当此问题发生时, Visual Studio 既不提供错误也不进行警告。必须手动为控件添加代码。
Slider Control 、 Tree Control 、 Date Time Picker
Spin Control 、 Progress Control Animation Control
IP Address Control 、 Rich Edit Control 、 Extended Combo Box
List Control 、 Rich Edit 2.0Control 、 CustomControl
解决方法(公共控件的修复)
为了在对话框上使用公共控件,需要在创建对话框之前调用 InitCommonControlsE 或 AFXInitCommonControls 。
#pragma comment(ib, "comctl32.lib") // 此句的意思是让链接器在链接时寻找 comctl32.lib 库文件
INITCOMMONCONTROLSEX ipaddress={sizeof(ipaddress),ICC_INTERNET_CLASSES};
InitCommonControlsEx(&ipaddress);
DialogBoxParam(hinstExe, MAKEINTRESOURCE(IDD_DIALOG1), NULL, Dlg_Proc, _ttoi(pszCmdLine));