一、首先根据SDK创建一个窗口。
SDK窗口创建步骤有:
1、编写WinMain函数
2、设计窗口类(WNDCLASS)
3、注册窗口类
4、创建窗口
5、显示并更新窗口
6、编写消息循环
7、编写窗口过程函数
#include<Windows.h>
#include<stdio.h>
LRESULT CALLBACK WinSunProc(
HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
); //编写窗口过程函数
//WinMain主函数
int WINAPI WinMain(
HINSTANCE hInstance, //当前窗口句柄
HINSTANCE hPrevInstance,//上一次窗口句柄
LPSTR lpCmdLine, //命令行
int nCmdShow //显示状态
)
{
//设计一个窗口类
WNDCLASS wndcls;
wndcls.cbClsExtra = 0;
wndcls.cbWndExtra = 0;
wndcls.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wndcls.hCursor = LoadCursor(NULL, IDC_CROSS);
wndcls.hIcon = LoadIcon(NULL, IDI_WINLOGO);
wndcls.hInstance = hInstance;
wndcls.lpfnWndProc = WinSunProc;
wndcls.lpszClassName = TEXT("sheng");
wndcls.lpszMenuName = NULL;
wndcls.style = CS_HREDRAW | CS_VREDRAW;
RegisterClass(&wndcls);
//创建窗口
HWND hwnd;
hwnd = CreateWindowA("sheng", "MFC学习第一步", WS_OVERLAPPEDWINDOW, 0, 0, 600, 400, NULL, NULL, hInstance, NULL);
//显示及刷新窗口
ShowWindow(hwnd, SW_SHOWNORMAL);
UpdateWindow(hwnd);
//定义消息结构体,开始消息循环
MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
//编写窗口过程函数
LRESULT CALLBACK WinSunProc(
HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
switch (uMsg)
{
case WM_CHAR:
char szChar[20];
sprintf_s(szChar, "char code is %d", wParam);
MessageBoxA(hwnd,szChar,"CHAR",0);
break;
case WM_LBUTTONDOWN:
MessageBoxA(hwnd, "mouse clicked", "message", 0);
HDC hdc;
hdc = GetDC(hwnd);
TextOutA(hdc, 0, 50, "程序员之家", strlen("程序员之家"));
ReleaseDC(hwnd, hdc);
break;
case WM_PAINT:
HDC hDC;
PAINTSTRUCT ps;
hDC = BeginPaint(hwnd, &ps);
TextOutA(hDC, 0, 0, "MFC学习第一步", strlen("MFC学习第一步"));
EndPaint(hwnd, &ps);
break;
case WM_CLOSE:
if (IDYES == MessageBoxA(hwnd, "是否真的结束?", "messge", MB_YESNO))
{
DestroyWindow(hwnd);
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
return 0;
}