createdialog返回0

来源:百度知道 编辑:UC知道 时间:2024/05/24 12:35:22
#include <windows.h>
#include "resource.h"

TCHAR szName[]=TEXT("localmsg");
TCHAR szTitle[]=TEXT("Local Messager");

LRESULT CALLBACK MainProc(HWND hwndDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
);

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd)
{
WNDCLASS wcs;

wcs.cbClsExtra=0;
wcs.cbWndExtra=DLGWINDOWEXTRA;
wcs.hbrBackground=(HBRUSH)(COLOR_BTNFACE+1);
wcs.hCursor=LoadCursor(NULL,IDC_ARROW);
wcs.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wcs.hInstance=hInstance;
wcs.lpfnWndProc=MainProc;
wcs.lpszClassName=szName;
wcs.lpszMenuName=NULL;
wcs.style=CS_VREDRAW | CS_HREDRAW;

if(!RegisterClass(&wcs))
{
MessageBox(NULL,TEXT("This Program needs Windows NT!"),szTitle,MB_ICONERROR);
exit(1);
}

HWND hwnd;
<

不要直接使用函数后缀“W”(如“CreatDialogW”),除非你很确定传递给它的字符串参数都是双字节的。一般情况下只需要使用原型函数,编译器会自动替换成相对应的形式。

用原型看这个:

HWND CreateDialog(
HINSTANCE hInstance, // handle to module
LPCTSTR lpTemplate, // dialog box template name
HWND hWndParent, // handle to owner window
DLGPROC lpDialogFunc // dialog box procedure
);

INT_PTR CALLBACK DialogProc(
HWND hwndDlg, // handle to dialog box
UINT uMsg, // message
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
);