说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

调用CreateWindow出错,请大虾帮忙

编辑:说三道四文库 发布时间:2018-05-23 11:20
HTML文档下载 WORD文档下载 PDF文档下载
// TODO: Place code here.
static TCHAR szAppName[] = TEXT ("HelloWin") ;

HWND   hwnd; //
        
    MSG    msg ;
        
    WNDCLASS wndClass ;

//set the property of the object wndclass
wndClass.style = CS_HREDRAW | CS_VREDRAW;
wndClass.cbClsExtra = 0;
wndClass.cbWndExtra = 0;
wndClass.hInstance = hInstance;
wndClass.hIcon = LoadIcon(NULL,IDI_APPLICATION);
wndClass.hCursor = LoadCursor(NULL,IDC_ARROW);
wndClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wndClass.lpszMenuName = NULL;
wndClass.lpszClassName = szAppName;

if( !RegisterClass(&wndClass)) 
{
MessageBox(NULL,TEXT("register error"),szAppName,MB_ICONERROR); 
return 0;
}
static TCHAR szAppTitle[] = "Hello Window";
hwnd = CreateWindow(szAppName,
szAppTitle,
WS_OVERLAPPED | WS_MINIMIZEBOX | WS_SYSMENU,
500,
500,
544,
347,
NULL,
NULL,
hInstance,
NULL);


——————————————————————————————————

上面是在win2000+vc6。0中运行,可是一运行到CreateWindow
就出些读写错误……
hInstance其中是winmain里的参数……
访问不允许地址(就是,使用空指针)。

窗口过程

wndClass.lpfnWndProc = (WNDPROC)WndProc;
你没有定义处理函数:
wndClass.lpfnWndProc = (WNDPROC)WndProc;
另外你创建完要:
ShowWindow(hwnd,SW_SHOW);
慢了……
我也才学,哈哈

#include <windows.h>

LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,
PTSTR szCmdLine,int nShowCmd)
{
static TCHAR szAppName[]=TEXT("HelloWin!");
WNDCLASS wd;
MSG msg;
HWND hwnd;

wd.style = CS_HREDRAW | CS_VREDRAW;
wd.lpfnWndProc = WndProc;
wd.cbClsExtra = 0;//类扩充大小
wd.cbWndExtra = 0;
wd.hInstance = hInstance;
wd.hIcon = LoadIcon(NULL,IDI_APPLICATION);
wd.hCursor = LoadCursor(NULL,IDC_ARROW);
    wd.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wd.lpszMenuName = NULL;
wd.lpszClassName = szAppName;

RegisterClass(&wd);

hwnd = CreateWindow(szAppName,TEXT("HelloWin"),WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
NULL,NULL,hInstance,NULL);

ShowWindow(hwnd,nShowCmd);
UpdateWindow(hwnd);

while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}

LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
HDC hdc;
RECT rect;
PAINTSTRUCT ps;

switch(message)
{
case WM_PAINT:
hdc = BeginPaint(hwnd,&ps);
GetClientRect(hwnd,&rect);

DrawText(hdc,TEXT("Hello,you are welcome!"),-1,
&rect,DT_SINGLELINE | DT_VCENTER | DT_CENTER);
EndPaint(hwnd,&ps);
return 0;

case WM_DESTROY:
PostQuitMessage(0);
return 0;
}

return DefWindowProc(hwnd,message,wParam,lParam);
}
建议在结构体定义定义后调用一句ZeroMemory,虽然这里不是这个原因。
dongfa(一桶江湖)  谢谢~~~~
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘