- #include <windows.h>
- LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
- int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPreInstance,
- LPSTR lpCmdLine, int nCmdShow)
- {
- WNDCLASS wndclass;
- HWND hwnd;
- MSG msg;
- //窗口属性
- wndclass.style = CS_HREDRAW | CS_VREDRAW;
- wndclass.lpfnWndProc = WndProc;
- 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 = "shang1";
- //注册
- if (!RegisterClass(&wndclass))
- return FALSE;
- //创建窗口
- hwnd = CreateWindow("shang1", "shang1", WS_OVERLAPPEDWINDOW,
- CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
- NULL, NULL, hInstance, NULL);
- //显示窗口
- ShowWindow(hwnd, nCmdShow);
- //更新窗口的客户区
- UpdateWindow(hwnd);
- //消息循环
- while (GetMessage(&msg, NULL, 0, 0))//获取消息,遇WM_QUIT退出循环
- {
- TranslateMessage(&msg);//键盘消息转换
- DispatchMessage(&msg);//消息给窗口函数
- }
- return msg.wParam;
- }
- LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
- {
- switch(message)
- {
- case WM_PAINT:
- HDC hdc;
- PAINTSTRUCT ps;
- hdc = BeginPaint(hwnd, &ps);
- TextOut(hdc, 20, 30, "The First Windows Application Showing Window",
- strlen("The First Windows Application Showing Window"));
- EndPaint(hwnd, &ps);
- return 0;
- case WM_DESTROY:
- PostQuitMessage(0);
- return 0;
- }
- return DefWindowProc(hwnd, message, wParam, lParam);
- }
出现如下的问题:
- 1>------ 已启动生成: 项目: shang1, 配置: Debug Win32 ------
- 1>正在编译...
- 1>main.cpp
- 1>d:\程序代码\shang1\main.cpp(22) : error C2440: “=”: 无法从“const char [7]”转换为“LPCWSTR”
- 1> 与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
- 1>d:\程序代码\shang1\main.cpp(31) : error C2664: “CreateWindowExW”: 不能将参数 2 从“const char [7]”转换为“LPCWSTR”
- 1> 与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
- 1>d:\程序代码\shang1\main.cpp(58) : error C2664: “TextOutW”: 不能将参数 4 从“const char [45]”转换为“LPCWSTR”
- 1> 与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
- 1>生成日志保存在“file://d:\程序代码\shang1\Debug\BuildLog.htm”
- 1>shang1 - 3 个错误,0 个警告
- ========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
出现问题的原因:UNICODE的问题
在项目属性中,【配置属性】-【常规】-【项目默认值】-【字符集】-
默认为【使用Unicode字符集】,改成【未设置】或【使用多字节字符集】,即可解决问题。
解决办法二是:
wndclass.lpszClassName =L "shang1";
或wndclass.lpszClassName =_T( "shang1");