修改MFC Dialog 的 class name

    技术2022-05-20  30

    刚开始看《WINDOWS核心编程5》,看到 HWND hwnd = FindWindow(TEXT("#32770"), TEXT("Error Show"))。知道是在找窗口名"Error Show",但不知"#32770"从何而来。查找才知道,这是一个MFC自动为基于对话框的程序产生的默认窗口类 ,所有的基于MFC所产生的对话框程序都使用这一个默认类名。即是说,在使用一个基于对话框的程序时,无论多少个对话框产生,它们的类名都会是 "#32770(Dialog)"。

    解决办法:

    假定 class name是"class123"

    1.用code view打开.rc文件

    加入 CLASS "class123"

    EXSTYLE WS_EX_APPWINDOW CAPTION "TimeingKiller" CLASS "class123" FONT 9, "MS Shell Dlg", 0, 0, 0x1 BEGIN

    2.在InitInstance里设置 class name

    BOOL CTimeingKillerApp::InitInstance() { WNDCLASS wc; ::GetClassInfo(AfxGetInstanceHandle(),"#32770",&wc); wc.lpszClassName = "class123"; AfxRegisterClass(&wc); ......


    最新回复(0)