第一种:
1、打开这个对话框工程文件,打开 ResourceView。
2、打开 Resource Editor,右击对话框,选择选项 Properties,在对话框的属性项中 ,最下角是一个类名的输入项, 但是这一个选项是禁止的, 你无法在些输入类名, 因为你在这里是选择了 MFC 类库的 支持。为了使这个选项可以输入。如图所示,在Resource View 的最顶项选择右键->属性,就会弹出 一个资源文件属性对话框,把其中的 Enable MFC Features 的项设为禁止, 则对话框的类名就可以在在资源编辑器中设定了。(在Visual C++(www.cppentry.com) 。NET,设置 MFC Mode property 属性为 FALSE)
第二种可供选择的方法就是修改 RC 文件和源代码! 在 CWinApp 的派生类的 Initinstance 函数中进行修改 :
// 在派生类的 InitIntace() 中 BOOL CLimitDlgInstanceApp::InitInstance() { WNDCLASS wc;
// Get the info for this class。 // #32770 is the default class name for dialogs boxes。 ::GetClassInfo(AfxGetInstanceHandle(), "#32770", &wc);
// Change the name of the class。 wc.lpszClassName = "MyPrivateClassName";
// Register this class so that MFC can use it。 AfxRegisterClass(&wc);
// ...... } |
其中 ::GetClassInfo 保证了即使你的资源文件在不同的 Dll 中也能正确得到 HINSTANCE 跟着就是要修改资源文件了,用文本编辑器打开 rc 文件 ,加上" ClASS 类名 "如下图所示:
注意,如果你 rc 文件中的类名与 Initinstance 中的类名不一致,程序不会运行,这是非常重要的。切记。
结束语:
这只是一个小技巧,希望对于大家的开发有所帮助,例如在开发基于对话框的程序中,使应用程序只有一个运行实例,注册唯一的窗口类是非常有用的。或作一个进行程序监控的时候,可以进行快速定位。
|