如何提供对 MFC 对话框为您自己窗口类名

注意 Microsoft Visual c + +.net 2002年和 Microsoft Visual c + +.net 2003年支持托管的代码模型所提供的 Microsoft.net 框架和非托管本机 Windows 代码模型。本文中的信息仅适用于非托管的 Visual c + + 代码。Microsoft Visual c + + 2005年支持托管的代码模型所提供的 Microsoft.net 框架和非托管本机 Windows 代码模型。



概要

本文介绍如何提供您自己创建基于 MFC 的应用程序中的对话框的窗口类名。

当您尝试限制基于对话框的 MFC 应用程序的单个实例时,您可能会遇到这一需要。

更多信息

若要提供您自己的窗口类名,请执行以下步骤:
  1. 打开包含对话框中,您项目的工作空间,然后单击ResourceView
  2. 在资源编辑器中打开对话框。用鼠标右键单击对话框,然后选择属性注意到为类名在右下角的一个条目。如果您正在使用 Microsoft 基础类库支持的资源文件,则该编辑框被禁用。要启用此选项,请切换到顶级节点上的资源视图中,然后右键单击并选择属性清除启用 MFC 功能复选框。或为使 Visual C++.NET,清除MFC 模式属性设置为 FALSE现在显示的对话框中的属性。应启用类名称编辑框。键入类的名称 ;例如 MyPrivateClassName。
  3. 另外,作为文本文件打开.rc 文件。转到所需的对话框资源,并添加类选项。

    IDD_LIMITDLGINSTANCE_DIALOG DIALOGEX 0, 0, 195, 44
    STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
    EXSTYLE WS_EX_APPWINDOW
    CAPTION "LimitDlgInstance"
    CLASS "MyPrivateClassName" // Add your class name here!
    FONT 8, "MS Sans Serif"
    BEGIN
        DEFPUSHBUTTON   "OK",IDOK,138,7,50,14
        PUSHBUTTON      "Cancel",IDCANCEL,138,23,50,14
        PUSHBUTTON      "&Test!",IDC_BUTTON1,48,14,49,15
    END
    						
  4. CWinApp 派生类的InitInstance()函数中添加以下代码。

    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);	
    	/ 
    	/ 
    
    // ...
    }
    						
  5. 对的调用中,上述步骤中:: GetClassInfo(),请确保使用正确的 HINSTANCE 调用,如果对话框资源位于单独的 DLL。
  6. 生成并运行您的应用程序。使用 Spy + + 工具来验证在对话框中现在使用新的类名。

转自:http://support.microsoft.com/kb/251059

概要

本文介绍如何提供您自己创建基于 MFC 的应用程序中的对话框的窗口类名。

当您尝试限制基于对话框的 MFC 应用程序的单个实例时,您可能会遇到这一需要。

更多信息

若要提供您自己的窗口类名,请执行以下步骤:
  1. 打开包含对话框中,您项目的工作空间,然后单击ResourceView
  2. 在资源编辑器中打开对话框。用鼠标右键单击对话框,然后选择属性注意到为类名在右下角的一个条目。如果您正在使用 Microsoft 基础类库支持的资源文件,则该编辑框被禁用。要启用此选项,请切换到顶级节点上的资源视图中,然后右键单击并选择属性清除启用 MFC 功能复选框。或为使 Visual C++.NET,清除MFC 模式属性设置为 FALSE现在显示的对话框中的属性。应启用类名称编辑框。键入类的名称 ;例如 MyPrivateClassName。
  3. 另外,作为文本文件打开.rc 文件。转到所需的对话框资源,并添加类选项。

    IDD_LIMITDLGINSTANCE_DIALOG DIALOGEX 0, 0, 195, 44
    STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
    EXSTYLE WS_EX_APPWINDOW
    CAPTION "LimitDlgInstance"
    CLASS "MyPrivateClassName" // Add your class name here!
    FONT 8, "MS Sans Serif"
    BEGIN
        DEFPUSHBUTTON   "OK",IDOK,138,7,50,14
        PUSHBUTTON      "Cancel",IDCANCEL,138,23,50,14
        PUSHBUTTON      "&Test!",IDC_BUTTON1,48,14,49,15
    END
    						
  4. CWinApp 派生类的InitInstance()函数中添加以下代码。

    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);	
    	/ 
    	/ 
    
    // ...
    }
    						
  5. 对的调用中,上述步骤中:: GetClassInfo(),请确保使用正确的 HINSTANCE 调用,如果对话框资源位于单独的 DLL。
  6. 生成并运行您的应用程序。使用 Spy + + 工具来验证在对话框中现在使用新的类名。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值