计算机程序设计语言与方法_lesson5.ppt
Windows(Win32)APIlAPI(Application Programming Interface)lWin32环境下的所有应用程序都直接或间接地调用Windows提供得Win32 API函数.l动态链接库l组件对象模型(COM).lMSDN的使用Windows API 调用注意事项l动态链接库查找顺序l应用程序所在的当前目录lWindows目录lWindows系统目录l系统环境变量指示的目录Windows编程编程lWinMain主函数主函数l窗体结构体窗体结构体l注册窗体注册窗体l构造和显示窗体构造和显示窗体l消息结构体消息结构体l回调函数回调函数l消息循环消息循环l消息处理消息处理WinMain函数函数lint WINAPI WinMain(lHINSTANCE hInstance,/handle to current instance lHINSTANCE hPrevInstance,/handle to previous instance lLPSTR lpCmdLine,/command line lint nCmdShow/show state);窗体结构体窗体结构体ltypedef struct _WNDCLASS lUINT style;/显示风格显示风格lWNDPROC lpfnWndProc;/回调函数回调函数lint cbClsExtra;/类额外内存类额外内存lint cbWndExtra;/窗体额外内存窗体额外内存lHINSTANCE hInstance;/实例句柄实例句柄lHICON hIcon;/图标类型图标类型lHCURSOR hCursor;/光标类型光标类型lHBRUSH hbrBackground;/背景类型背景类型lLPCTSTR lpszMenuName;/菜单类型菜单类型lLPCTSTR lpszClassName;/类名称类名称 WNDCLASS,*PWNDCLASS;注册窗体类lATOM RegisterClass(lCONST WNDCLASS*lpWndClass/class data);窗体构造lHWND CreateWindow(lLPCTSTR lpClassName,/registered class namel LPCTSTR lpWindowName,/window namel DWORD dwStyle,/window style lint x,/horizontal position of window lint y,/vertical position of window lint nWidth,/window width lint nHeight,/window height lHWND hWndParent,/handle to parent or owner windowl HMENU hMenu,/menu handle or child identifier lHINSTANCE hInstance,/handle to application instance lLPVOID lpParam/window-creation data);窗体显示lBOOL ShowWindow(l HWND hWnd,/handle to window lint nCmdShow/show state);窗体更新lBOOL UpdateWindow(lHWND hWnd/handle to window);消息结构体消息结构体ltypedef struct tagMSG lHWND hwnd;/消息所属窗体句柄消息所属窗体句柄(类似指针类似指针)lUINT message;/消息本身消息本身(宏表示宏表示)lWPARAM wParam;/消息额外信息消息额外信息(整数整数)lLPARAM lParam;/消息额外信息消息额外信息(整数整数)lDWORD time;/发送时间发送时间lPOINT pt;/消息发送是光标位置消息发送是光标位置l MSG,*PMSG;回调函数回调函数lLRESULT CALLBACK WindowProc(lHWND hwnd,/handle to window lUINT uMsg,/message identifier lWPARAM wParam,/first message parameter lLPARAM lParam/second message parameter);获取消息lBOOL GetMessage(l LPMSG lpMsg,/message information lHWND hWnd,/handle to window lUINT wMsgFilterMin,/first message lUINT wMsgFilterMax/last message);消息转换lBOOL TranslateMessage(l CONST MSG*lpMsg/message information l);消息分发lLRESULT DispatchMessage(lCONST MSG*lpmsg/message information l);回调函数中消息处理