#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");