您的位置:首页 > 其它

如何修改基于对话框的程序的ClassName?

2006-12-08 09:41 399 查看
如果你要使用函数FindWindow(lpClassName,lpWindowName);查找某个对话框,而该程序刚好是基于对话框时,这该怎么办呢?默认的窗口的ClassName都是"#32770”,(可以在程序中调用以下函数得到):



intGetClassName(



[b]HWND
hWnd,//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]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: