} //
// FUNCTION: WndProc(HWND, UINT, WPARAM, LPARAM) //
// PURPOSE: Processes messages for the main window.// // WM_PAINT - Paint the main window
// WM_DESTROY - post a quit message and return // //
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
PAINTSTRUCT ps; HDC hdc;
TCHAR greeting[] = _T(\
switch (message) {
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
// Here your application is laid out.// For this introduction, we just print out \
// in the top left corner.TextOut(hdc, 5, 5,
greeting, _tcslen(greeting));
// End application-specific layout section.EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage(0); break; default:
return DefWindowProc(hWnd, message, wParam, lParam); break; }
return 0; }
后续步骤
上一部分:创建 Windows 应用程序 (C++) |下一部分:通过使用 .NET Framework 创建 Windows 窗体应用程序 (C++)
请参见
任务
创建 Windows 应用程序 (C++) 社区内容添加 常见问题 两个 return 1
创建窗口类失败、创建窗口失败的两个 return 1; 有这样子的吗?
发展历史
? ?
错误提示
2010/11/2 淡淡滋味
1>d:\\documents\\visual studio 2010\\projects\\win3201\\win3201\\gt_helloworldwin32.cpp(37): error C2065: “szWindowClass”: 未声明的标识符
1>d:\\documents\\visual studio 2010\\projects\\win3201\\win3201\\gt_helloworldwin32.cpp(72): error C2065: “szWindowClass”: 未声明的标识符
1>d:\\documents\\visual studio 2010\\projects\\win3201\\win3201\\gt_helloworldwin32.cpp(72): error C2065: “szTitle”: 未声明的标识符
1>d:\\documents\\visual studio 2010\\projects\\win3201\\win3201\\gt_helloworldwin32.cpp(124): error C2059: 语法错误:“)”
如何生命标识符szWindowClass和szTitle
发展历史
? ?
正确的代码
示例代码里有三句代码放在注释语句里面了。正确的如下:
// GT_HelloWorldWin32.cpp
2010/10/31 错误提示
// compile with: /D_UNICODE /DUNICODE /DWIN32 /D_WINDOWS /c #include
// The main window class name.
static TCHAR szWindowClass[] = _T(\// The string that appears in the application's title bar. static TCHAR szTitle[] = _T(\HINSTANCE hInst;
// Forward declarations of functions included in this code module: LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
WNDCLASSEX wcex;
wcex.cbSize = sizeof(WNDCLASSEX); wcex.style = CS_HREDRAW | CS_VREDRAW; wcex.lpfnWndProc = WndProc; wcex.cbClsExtra = 0; wcex.cbWndExtra = 0; wcex.hInstance = hInstance;
wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_APPLICATION)); wcex.hCursor = LoadCursor(NULL, IDC_ARROW); wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); wcex.lpszMenuName = NULL;
wcex.lpszClassName = szWindowClass;
wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_APPLICATION)); if (!RegisterClassEx(&wcex)) {
MessageBox(NULL,
_T(\_T(\NULL); return 1; }
hInst = hInstance; // Store instance handle in our global variable // The parameters to CreateWindow explained: // szWindowClass: the name of the application // szTitle: the text that appears in the title bar
// WS_OVERLAPPEDWINDOW: the type of window to create
// CW_USEDEFAULT, CW_USEDEFAULT: initial position (x, y) // 500, 100: initial size (width, length) // NULL: the parent of this window
// NULL: this application does not have a menu bar // hInstance: the first parameter from WinMain // NULL: not used in this application HWND hWnd = CreateWindow( szWindowClass, szTitle,
WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 500, 100, NULL, NULL, hInstance, NULL ); if (!hWnd) {
MessageBox(NULL,
_T(\_T(\NULL); return 1; }
// The parameters to ShowWindow explained: // hWnd: the value returned from CreateWindow // nCmdShow: the fourth parameter from WinMain ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd); // Main message loop: MSG msg;
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg); DispatchMessage(&msg); }
return (int) msg.wParam; } //
// FUNCTION: WndProc(HWND, UINT, WPARAM, LPARAM) //
// PURPOSE: Processes messages for the main window.//
// WM_PAINT - Paint the main window
// WM_DESTROY - post a quit message and return // //
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
PAINTSTRUCT ps; HDC hdc;
TCHAR greeting[] = _T(\switch (message) {
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
// Here your application is laid out.// For this introduction, we just print out \// in the top left corner.
TextOut(hdc,5, 5,greeting, _tcslen(greeting));
// End application-specific layout section.EndPaint(hWnd, &ps); break;
case WM_DESTROY: PostQuitMessage(0); break; default:
return DefWindowProc(hWnd, message, wParam, lParam); break; } return 0; }
发展历史
? ?
2010/10/29
wwx024
?
?
有人能解决吗?
和楼上的一样,为什么运行这个例子,会有错误呢?期待解决。纠结几天了
2010/10/29
wwx024
发展历史
? ?
关于代码错误
代码并没有错误,只是有两句被注释了
2010/10/22 paddybear
发展历史
?
?
无语。。代码无法编译通过
1>------ 已启动生成: 项目: sample1, 配置: Debug Win32 ------ 1> HelloWorld.cpp
2010/9/25
xlstar
1>c:\%users\\蔡太太\\documents\\visual studio 2010\\projects\\sample1\\sample1\\helloworld.cpp(37): error C2065: “szWindowClass”: 未声明的标识符
1>c:\%users\\蔡太太\\documents\\visual studio 2010\\projects\\sample1\\sample1\\helloworld.cpp(72): error C2065: “szWindowClass”: 未声明的标识符
1>c:\%users\\蔡太太\\documents\\visual studio 2010\\projects\\sample1\\sample1\\helloworld.cpp(72): error C2065: “szTitle”: 未声明的标识符
1>c:\%users\\蔡太太\\documents\\visual studio 2010\\projects\\sample1\\sample1\\helloworld.cpp(124): error C2059: 语法错误:“)”
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
发展历史