win32。创建窗口类,注册窗口类,创建窗口,刷新窗口。但是窗口没法显示?!

baidu_28726667 CSDN会员 baidu_28726667 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

#include <Windows.h>
#include <stdio.h>

LRESULT CALLBACK WinSunProc(
HWND hwnd, /*窗口句柄*/
UINT uMsg, /*信息标识*/
WPARAM wParam,
LPARAM lParam
);

int WINAPI WinMain(
HINSTANCE hInstance, /*当前实例句柄*/
HINSTANCE hPrevInstance, /*上一个实例句柄*/
LPSTR lpCmdLine, /*命令行*/
int nCmdShow /*显示状态*/
)
{
/*设计一个窗口类*/
WNDCLASS wndcle;
wndcle.cbClsExtra = 0;
wndcle.cbWndExtra = 0;
wndcle.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
wndcle.hCursor = LoadCursor(NULL, IDC_CROSS);
wndcle.hIcon = LoadIcon(NULL, IDI_ERROR);
wndcle.hInstance = hInstance;
wndcle.lpfnWndProc = WinSunProc;
wndcle.lpszClassName = TEXT("lpl2018");
wndcle.lpszMenuName = NULL;
wndcle.style = CS_HREDRAW | CS_VREDRAW;

RegisterClass(&wndcle);


char pszErrMsg[128] = { 0 };

/*创建窗口,定义一个变量用来保存成功创建窗口后返回的句柄*/
HWND hwnd;
hwnd = CreateWindow(TEXT("LCK2018"), TEXT("http://www.baidu.com"), WS_OVERLAPPEDWINDOW, 0, 0, 600, 400, NULL, NULL, hInstance, NULL);
if (hwnd == NULL) {
snprintf(pszErrMsg,sizeof(pszErrMsg),TEXT("err[%d]"), GetLastError());
OutputDebugString(pszErrMsg);
MessageBox(NULL, "CreateWindow Err", "Error", 0);
}

/*显示及刷新窗口*/
ShowWindow(hwnd, SW_SHOWNORMAL);
UpdateWindow(hwnd);

/*定义消息结构体,开始消息循环*/
MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;

}

/*编写窗口过程函数*/
LRESULT CALLBACK WinSunProc(
HWND hwnd, /*窗口句柄*/
UINT uMsg, /*信息标识*/
WPARAM wParam,
LPARAM lParam
)
{

switch (uMsg)
{
case WM_CHAR:
char szChar[20];
sprintf_s(szChar, "char code is %d", wParam);
MessageBox(hwnd, szChar, TEXT("char"), 0);
break;
case WM_LBUTTONDOWN:
MessageBox(hwnd, "mouse clicked", "message", 0);
HDC hdc;
hdc = GetDC(hwnd); /*不能再相应WM_PAINT 消息时调用*/
TextOut(hdc, 0, 50, TEXT("LOL HOME"), strlen("LOL HOME"));
/*ReleaseDC(hwnd,hdc);*/
break;
case WM_PAINT:
HDC hDc;
PAINTSTRUCT ps;
hDc = BeginPaint(hwnd, &ps); /* BeginPaint 只能在响应 WM_PAINT 消息时调用*/
TextOut(hDc, 0, 0, "http://www.csdn.com", strlen("http://www.csdn.com"));
EndPaint(hwnd, &ps);
break;
case WM_CLOSE:
if (IDYES == MessageBox(hwnd, "Is End?", "message", MB_YESNO))
{
DestroyWindow(hwnd);
}
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}

return 0;
}


CreateWindow返回NULL, GetLastError 是1407. 是我类填漏了还是填错了?
...全文
评论 4
收藏 已收藏
分享
返回顶部
baidu_28726667 CSDN会员
界面 15,976 成员 115,866 内容