第一次培训内容(Windows编程基础)
Windows编程基础
1.了解Windows常用的消息分类
1)WM_COMMAND消息,通常是菜单点击、工具栏点击的一些消息.
2)除WM_COMMAND以外的系统消息.如WM_PAINT, WM_SIZE 等消息
3)标准控件通知消息,如按钮点击消息 BN_CLICKED 会发送给父窗口进行处理中
BN_CLICKED是从WM_COMMAND里面获得,事实上可以把标准控件的消息看成
WM_COMMAND
4)通用控件通知消息,形式为WM_NOTIFY,如列表视图、微调按钮等发送给父窗口的消
息
5)反射消息,其实是控件通知消息的子类,在MFC里面的一些父窗口不处理而教给子
窗口处理的消息。如:WM_DRAWITEM, WM_CTLCOLOR等等
2.了解基本的Windows编程模式
1)程序入口函数WinMain()
2)窗口过程
3)理解是怎么样处理消息的
4)匈牙利命名法
5)讲解DC的工作原理,句柄等一些基本的概念,不同窗口由不同句柄标识
6)讲解消息的处理过程,SendMessage,PostMessage区别、消息队列
编写一个窗口的基本模式是:
通过下面的例子来说明:
#include "windows.h"
//窗口函数
LRESULT CALLBACK WNDFUN (HWND hWnd, UINT msg, WPARAM wparam, LPARAM lparam) {
switch (msg)
{
case WM_PAINT:
{
HDC hdc = GetDC(hWnd);
SetBkMode(hdc,TRANSPARENT);
TextOut(hdc,20,20,_T("这是我的第一个Windows程序!"),16);
DeleteDC(hdc);
break;
}
case WM_CLOSE:
{
DestroyWindow(hWnd);
break;
}
case WM_DESTROY:
{
PostQuitMessage(0);
break;
}
default:
return DefWindowProc(hWnd,msg,wparam,lparam);
}
return 0;
}
//程序的进入点
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
//设计窗口类
WNDCLASS wndcls;
wndcls.style = CS_DBLCLKS|CS_VREDRAW|CS_HREDRAW;
wndcls.lpszMenuName = NULL;
wndcls.lpszClassName = "CustomWnd";
wndcls.lpfnWndProc = WNDFUN;
wndcls.hInstance = GetModuleHandle(NULL);
wndcls.hIcon = NULL;
wndcls.hCursor = NULL;
wndcls.hbrBackground = (HBRUSH)GetStockObject(GRAY_BRUSH);
wndcls.cbClsExtra = 0;
wndcls.cbWndExtra = 0;
//注册窗口类
RegisterClass(&wndcls);
//创建窗口
HWND hwnd;
Hwnd=CreateWindow("CustomWnd","Win32App",WS_CAPTION|WS_OVERLAPPEDWINDOW |WS_SYSMENU,50,50,500,500,NULL,NULL,wndcls.hInstance,NULL);
//显示窗口
ShowWindow(hwnd,SW_SHOW);
UpdateWindow(hwnd);
//进入消息循环
MSG msg;
while (GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;}
作业:
写个windows程序,在窗口的客户端画一个圆。