#include <windows.h>
#pragma comment(lib, "winmm")
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPSTR lpCmdLine, _In_ int nShowCmd)
{
static TCHAR str1[] = TEXT("李赛赛爱邱坤小美女\n");
HWND hwnd1;
MSG msg1;//也是一个结构体
WNDCLASS wndclass;//窗口过程类是个结构体
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 = str1;
if (!RegisterClass(&wndclass))//注册窗口过程类
{
MessageBox(NULL, TEXT("注册窗口过程类错误"), TEXT("错误"), 0);
return 0;
}
hwnd1 = CreateWindow(str1, L"邱坤小美女", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);//1标题 WM_CREATE
ShowWindow(hwnd1, nShowCmd);//WM_SIZE WM_SHOWWINDOW
UpdateWindow(hwnd1);//WM_PAINT
//从消息队列获取消息
while (GetMessage(&msg1, NULL, 0, 0))//消息循环 检索消息
{
TranslateMessage(&msg1);//调动消息 翻译一些键盘消息 转换给windows
DispatchMessage(&msg1);//分派消息 将消息发给窗口过程 转换给windows 分发消息
}
return msg1.wParam;
//MessageBox(NULL, L"22222", L"1111111", 0);
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)//窗口回调函数 lParam低位是客户区的宽度 高位是客户区的高度 wParam低位鼠标在滚动条上的动作(通知码) 高位用户拖动滑块的当前位置
{
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://话绘画 UpdateWindow 窗口创建 尺寸改变 最小化还原 被遮挡覆盖 首先让客户区有效化
hdc = BeginPaint(hwnd, &ps);//窗口绘制开始 客户区变的有效 获取hdc
GetClientRect(hwnd, &rect);
DrawText(hdc, TEXT("我爱邱坤"), -1, &rect,
DT_SINGLELINE | DT_CENTER | DT_VCENTER);
EndPaint(hwnd, &ps);//释放hdc
return 0;
case WM_DESTROY://摧毁
PostQuitMessage(0);//将退出消息插入消息队列 投递(post)
return 0;
}
return DefWindowProc(hwnd, message, wParam, lParam);//执行默认的消息处理
}