本文是基于VS2008的Windows底层基础代码
- 帮助初学者了解windows应用程序及相应MFC基础架构;
- 代码附带详细注释,方便大家复制运行;
- 程序实现三个功能:
Ⅰ:按下键盘程序返回窗口表示收到;
Ⅱ:在指定区域画图/写文本文字;
Ⅲ:鼠标点击应用程序界面框显示对应的横纵坐标。
- 在系统学习MFC之前需要对底层有一定的初步了解;
- 在创建文件夹时需选择win32应用程序,不能选择MFC应用程序。
序号 |
底层窗口实现具体步骤 |
Ⅰ |
WinMain入口函数 |
Ⅱ |
创建窗口五步法 |
Ⅲ |
窗口过程处理函数 |
#include <windows.h>底层实现窗口的头文件
LRESULT CALLBACK WindowProc(
HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
switch(uMsg)
{
case WM_CLOSE:
DestroyWindow(hwnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_LBUTTONDOWN://鼠标左键按下
{
int xPos = LOWORD(lParam);
int yPos = HIWORD(lParam);
char buf[1024];
wsprintf(buf,TEXT("x = %d,y = %d"),xPos,yPos);
MessageBox(hwnd,buf,TEXT("鼠标左键按下"),MB_OK);
break;
}
case WM_KEYDOWN://键盘
MessageBox(hwnd,TEXT("键盘按下"),TEXT("有键盘按下"),MB_OK);
break;
case WM_PAINT://绘图
{
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hwnd,&ps);
TextOut(hdc,100,100,TEXT("HELLO"),strlen("HELLO"));
EndPaint(hwnd,&ps);
break;
}
}
return DefWindowProc(hwnd,uMsg,wParam,lParam);
}
int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nShowCmd )
{
HWND hwnd;
MSG msg;
WNDCLASS wc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wc.hCursor = LoadCursor(NULL,IDC_HAND);
wc.hIcon = LoadIcon(NULL,IDI_ERROR);
wc.hInstance = hInstance;
wc.lpfnWndProc = WindowProc;
wc.lpszClassName = TEXT("WIN");
wc.lpszMenuName = NULL;
wc.style = 0;
RegisterClass(&wc);
hwnd = CreateWindow(wc.lpszClassName,TEXT("WINDOWS"),WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);
ShowWindow(hwnd,SW_SHOWNORMAL);
UpdateWindow(hwnd);
while (1)
{
if (GetMessage(&msg, NULL, 0, 0) == FALSE)
{
break;
}
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0 ;
}