如何修改基于对话框的程序的ClassName?
2006-12-08 09:41
399 查看
如果你要使用函数FindWindow(lpClassName,lpWindowName);查找某个对话框,而该程序刚好是基于对话框时,这该怎么办呢?默认的窗口的ClassName都是"#32770”,(可以在程序中调用以下函数得到):
intGetClassName(
[b]HWNDhWnd,//handletowindow
LPTSTRlpClassName,//classname
intnMaxCount//sizeofclassnamebuffer
);
在我的例子中,假设我要设定ClassName为SeedServer,具体如下:
(1)首先在程序中CSeed::InitInstance()中添加以下代码:
[align=left]WNDCLASSwcx;[/align]
[align=left]memset(&wcx,0,sizeof(wcx));[/align]
[align=left]//if(!GetClassInfoEx(NULL,MAKEINTATOM(0X8002),&wcx))[/align]
[align=left]if(!GetClassInfo(NULL,WC_DIALOG,&wcx))[/align]
[align=left]{[/align]
[align=left]TRACE("Failedtoregisterclassstep1/n");[/align]
[align=left]returnFALSE;[/align]
[align=left]}[/align]
[align=left]wcx.lpszClassName=_T("SeedServer");//修改为自己定义的ClassName[/align]
[align=left]if(!RegisterClass(&wcx))[/align]
[align=left]{[/align]
[align=left]TRACE("FAILEDtoregisterclassstep2/n");[/align]
[align=left]DWORDdw=GetLastError();[/align]
[align=left]CHARszBuf[80];[/align]
[align=left]sprintf(szBuf,"failed:GetLastErrorreturned%u/n",dw);[/align]
[align=left]AfxMessageBox(szBuf);[/align]
[align=left]returnFALSE;[/align]
}
(2)修改资源文件*.rc,
IDD_SEED_DIALOGDIALOGEX0,0,327,231
STYLEDS_MODALFRAME|WS_MINIMIZEBOX|WS_MAXIMIZEBOX|WS_POPUP|
WS_VISIBLE|WS_CAPTION|WS_SYSMENU
EXSTYLEWS_EX_APPWINDOW
CAPTION"Seed"
CLASS"SeedServer"//添加这一行(中间有空格)
FONT9,"宋体"
BEGIN
PUSHBUTTON"Start",IDC_BTN_START,14,36,69,24
PUSHBUTTON"Button2",IDC_BUTTON2,236,191,84,33
[/b]
intGetClassName(
[b]HWNDhWnd,//handletowindow
LPTSTRlpClassName,//classname
intnMaxCount//sizeofclassnamebuffer
);
在我的例子中,假设我要设定ClassName为SeedServer,具体如下:
(1)首先在程序中CSeed::InitInstance()中添加以下代码:
[align=left]WNDCLASSwcx;[/align]
[align=left]memset(&wcx,0,sizeof(wcx));[/align]
[align=left]//if(!GetClassInfoEx(NULL,MAKEINTATOM(0X8002),&wcx))[/align]
[align=left]if(!GetClassInfo(NULL,WC_DIALOG,&wcx))[/align]
[align=left]{[/align]
[align=left]TRACE("Failedtoregisterclassstep1/n");[/align]
[align=left]returnFALSE;[/align]
[align=left]}[/align]
[align=left]wcx.lpszClassName=_T("SeedServer");//修改为自己定义的ClassName[/align]
[align=left]if(!RegisterClass(&wcx))[/align]
[align=left]{[/align]
[align=left]TRACE("FAILEDtoregisterclassstep2/n");[/align]
[align=left]DWORDdw=GetLastError();[/align]
[align=left]CHARszBuf[80];[/align]
[align=left]sprintf(szBuf,"failed:GetLastErrorreturned%u/n",dw);[/align]
[align=left]AfxMessageBox(szBuf);[/align]
[align=left]returnFALSE;[/align]
}
(2)修改资源文件*.rc,
IDD_SEED_DIALOGDIALOGEX0,0,327,231
STYLEDS_MODALFRAME|WS_MINIMIZEBOX|WS_MAXIMIZEBOX|WS_POPUP|
WS_VISIBLE|WS_CAPTION|WS_SYSMENU
EXSTYLEWS_EX_APPWINDOW
CAPTION"Seed"
CLASS"SeedServer"//添加这一行(中间有空格)
FONT9,"宋体"
BEGIN
PUSHBUTTON"Start",IDC_BTN_START,14,36,69,24
PUSHBUTTON"Button2",IDC_BUTTON2,236,191,84,33
[/b]
相关文章推荐
- 【转载、修改、增强】MFC基于对话框程序如何最小化到托盘?
- 将基于MFC的对话框应用程序修改为服务程序
- 基于Spring框架开发的Web程序,如何动态修改日志级别
- 如何安全删除基于对话框的MFC中控件的事件处理程序
- 将基于MFC的对话框应用程序修改为服务程序
- 修改基于对话框的MFC程序的主窗口类名
- 将基于MFC的对话框应用程序修改为服务程序
- 如何修改基于Debian包管理dpkg的程序流程方法概述
- 如何在基于对话框的程序中动态设置鼠标指针
- 将基于MFC的对话框应用程序修改为服务程序---------
- MFC 基于对话框 程序,如何添加状态栏
- 基于对话框的程序如何启动时不可见
- 将基于MFC的对话框应用程序修改为服务程序
- 如何初始化基于对话框的MFC程序中对话框的大小
- 如何让基于对话框的程序运行时隐藏界面
- 如何让基于对话框的MFC程序启动后自动隐藏对话框
- 如何在一个基于对话框的程序中添加 Menu 菜单
- 将基于MFC的对话框应用程序修改为服务程序
- 如何让基于对话框的MFC程序一运行起来就完全隐藏
- 【MFC-11】VS2010/MFC基于对话框程序之修改Enter/ESC按键默认响应