第一次培训内容(Windows编程基础)

第一次培训内容(Windows编程基础)
第一次培训内容(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程序,在窗口的客户端画一个圆。

相关主题
相关文档
最新文档