// eg_1_first_win32_app.cpp : Defines the entry point for the application.
//
#include "stdafx.h"
LRESULT CALLBACK MyWndProc(HWND,UINT,WPARAM,LPARAM);
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// TODO: Place code here.
const char* szTitle = "第一个Windows应用程序";
const char* szWindowClass = "MyWindowClass";
WNDCLASSEX wcex;
wcex.cbSize = sizeof(WNDCLASSEX);
wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = (WNDPROC)MyWndProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = LoadIcon(NULL,IDI_APPLICATION);
wcex.hCursor = LoadCursor(NULL,IDC_CROSS);
wcex.hbrBackground = (HBRUSH)::GetStockObject(WHITE_BRUSH);
wcex.lpszMenuName = NULL;
wcex.lpszClassName = szWindowClass;
wcex.hIconSm = LoadIcon(NULL,IDI_APPLICATION);
RegisterClassEx(&wcex);
HWND hWnd = CreateWindow(szWindowClass,szTitle,WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,0,300,200,NULL,NULL,hInstance,NULL);
if(!hWnd)
{
return FALSE;
}
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
MSG msg;
while (GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK MyWndProc (
HWND hWnd,
UINT message,
WPARAM wParam,
LPARAM lParam)
{
const char* szHello = "Hello World";
HDC hdc;
switch (message)
{
case WM_PAINT:
PAINTSTRUCT ps;
hdc = BeginPaint(hWnd,&ps);
RECT rt;
GetClientRect(hWnd,&rt);
DrawText(hdc,szHello,strlen(szHello),&rt,DT_CENTER);
EndPaint(hWnd,&ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd,message,wParam,lParam);
}
return 0;
}
本文介绍了一个简单的Win32应用程序示例,展示了如何创建窗口、响应消息以及绘制文本。通过注册窗口类、创建窗口实例、显示窗口并处理消息循环来实现。

3879

被折叠的 条评论
为什么被折叠?



