#include <windows.h>
//
消息处理函数
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
//CALLBACK
表示是个回调函数
(
把地址给
windows,
后者会呼叫前者
)
{
HDC hdc ; //
设备内容句柄
PAINTSTRUCT ps; //
绘图信息结构
RECT rect; //
矩形结构
switch (message)
{
case WM_CREATE:
PlaySound ( TEXT("hellowin.wav"), NULL, SND_FILENAME | SND_ASYNC);
return 0;
case WM_PAINT: //
必须成对地呼叫
BeginPaint
和
EndPaint,
中间是
GDI
函数
hdc = BeginPaint (hWnd, &ps);
GetClientRect (hWnd, &rect);
::TextOut(hdc,100,100,"hello",5);
DrawText (hdc, TEXT ("Hello, Windows 98!"), -1, &rect,DT_SINGLELINE | DT_CENTER | DT_VCENTER);
EndPaint (hWnd, &ps);
return 0;
case WM_DESTROY:
PostQuitMessage (0);
return 0;
}
return DefWindowProc (hWnd, message, wParam, lParam); //
系统定义的消息处理方法
}
//
程序入口
int APIENTRY WinMain(HINSTANCE hInstance,
//
执行实体句柄
HINSTANCE hPrevInstance, //NULL
LPSTR lpCmdLine, //
用于执行程序的命令列
int nCmdShow) //
指出程序最初显示的方式
{
//
注册窗口
static TCHAR szAppName[] = TEXT ("HelloWin"); //
注册名
HWND hwnd ; //
窗口句柄
MSG msg ; //
消息结构
WNDCLASS wcex; //
窗口类别结构
wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = WndProc; //
消息处理函数
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = LoadIcon(hInstance, IDI_APPLICATION);
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH);
wcex.lpszMenuName = NULL;
wcex.lpszClassName = szAppName; //
注册名称
if(!RegisterClassA(&wcex))
MessageBox(NULL,"error!",szAppName,MB_ICONERROR);
//创建窗口
hwnd=CreateWindow(szAppName,TEXT("TheHelloProgram"),WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);
if (!hwnd)
{
return FALSE;
}
ShowWindow(hwnd, nCmdShow); //
在显示器上显示窗口
UpdateWindow(hwnd); //
重画显示区域,会向窗口发送
WM_PAINT
消息处理程序
//
循环消息
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg); //
将
msg
结构传给
Windows
DispatchMessage(&msg); //Windows
将呼叫窗口消息处理程序
}
return msg.wParam;
}