#include<Windows.h>
#define M 1024
PAINTSTRUCT ps;//绘图结构体
// 6.处理窗口过程
/* 消息所属的窗口句柄 具体消息名称 键盘的附加消息 鼠标的附加消息*/
LRESULT CALLBACK WindowProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
switch(uMsg)
{
case WM_CLOSE: /*MessageBox(hwnd,TEXT(""),TEXT(""),MB_OK);*/DestroyWindow(hwnd);break;
case WM_DESTROY:PostQuitMessage(0);break;//真正的退出窗口
case WM_LBUTTONDOWN://按下鼠标左键
{ int xPos=LOWORD(lParam); //鼠标单击的横坐标位置
int yPos=HIWORD(lParam); //鼠标单击的纵坐标位置
char buf[M];
wsprintf(buf,TEXT("x=%d,y=%d"),xPos,yPos);
// MessageBox(hwnd,TEXT("内容"),TEXT("标题"),MB_OK);break;//第一个TEXT为内容 第二个TEXT为标题
MessageBox(hwnd,buf,TEXT("标题"),MB_OK);break; //鼠标单击显示坐标
}
case WM_KEYDOWN:MessageBox(hwnd,TEXT("内容"),TEXT("标题"),MB_OK);break;//键盘响应
case WM_PAINT://绘图
{
HDC hdc=BeginPaint(hwnd,&ps);
TextOut(hdc,604,276,TEXT("Martin"),strlen("hello!"));//文字绘画
EndPaint(hwnd,&ps);
break;
}
}
return DefWindowProc(hwnd,uMsg,wParam,lParam); //返回值为默认
}
int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nShowCmd)
{
//1.设计窗口
MSG msg;
HWND hwnd;
WNDCLASS wc;
wc.cbClsExtra=0;
wc.cbWndExtra=0;
wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);//设置背景
wc.hCursor= LoadCursor(NULL,IDC_HAND); //设置光标 如果第一个参数为NULL默认使用系统的光标
wc.hIcon= LoadIcon(NULL,IDI_ERROR);//图标
wc.hInstance=hInstance;//应用程序的实例句柄,传入WinMain中的形参
wc.lpfnWndProc=WindowProc;// 回调函数 可以任取
wc.lpszClassName=TEXT("Windwos"); //指定窗口类名称
wc.lpszMenuName=NULL;//菜单名称
wc.style=0; //显示风格 0代表默认风格
//2. 注册窗口类
RegisterClass(&wc);
//3. 创建
/*
类名
窗口标题名
*/
hwnd=CreateWindow(wc.lpszClassName,TEXT("这个一个底层MFC窗口"),WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);
//4.显示
ShowWindow(hwnd,SW_SHOWNORMAL);
//5.通过循环取消息
while(1)
{
if(GetMessage(&msg,NULL,0,0)==FALSE)
{
break;
}
TranslateMessage(&msg);
DispatchMessage(&msg); //分发消息
}
return 0;
}
实现如下图: