资源描述:
《孙鑫vc++讲座笔记》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、孙鑫VC++讲座笔记孙鑫VC++讲座笔记-(1)Windows程序内部运行机制选择自hbyufan的Blog关键字孙鑫VC++讲座笔记-(1)Windows程序内部运行机制出处1,windows程序设计是种事件驱动方式的程序设计,主要基于消息的。当用户需要完成某种功能时,需要调用OS某种支持,然后OS将用户的需要包装成消息,并投入到消息队列中,最后应用程序从消息队列中取走消息并进行响应。2,消息结构:typedefstructtagMSG{//msgHWNDhwnd;//接收消息的窗口句柄。和哪个窗口相关联。UINTmessage;//消息标识。消息本身是什么。WPARAM
2、wParam;//消息的附加信息。具体取决于消息本身。LPARAMlParam;DWORDtime;//消息投递时间。POINTpt;//消息投递时,光标在屏幕上的位置。}MSG;3,消息队列:每个应用程序OS都为它建立一个消息队列,消息队列是个先进先出的缓冲区,其中每个元素都是一个消息,OS将生成的每个消息按先后顺序放进消息队列中,应用程序总是取走当前消息队列中的第一条消息,应用程序取走消息后便知道用户的操作和程序的状态,然后对其处理即消息响应,消息响应通过编码实现。4,使用VC编程除了良好的C基础外还需要掌握两方面:一,消息本身。不同消息所代表的用户操作和应用程序的状态
3、。二,对于某个特定的消息来说,要让OS执行某个特定的功能去响应消息。5,Window程序入口:intWINAPIWinMain(HINSTANCEhInstance,//当前事例句柄。HINSTANCEhPrevInstance,//先前事例句柄。LPSTRlpCmdLine,//命令行指针intnCmdShow//(窗口)显示的状态);说明:WinMain函数是Windows程序入口点函数,由OS调用,当OS启动应用程序的时候,winmain函数的参数由OS传递的。6,创建一个完整的窗口需要经过下面四个操作步骤:一,设计一个窗口类;如:WNDCLASSwndcls;二,注
4、册窗口类;如:RegisterClass(&wndcls);三,创建窗口;如:CreateWindow(),CreateWindowEX();四,显示及更新窗口。如:ShowWindow(),UpdateWindow();说明:创建窗口的时候一定要基于已经注册的窗口类.7,Windows提供的窗口类:typedefstruct_WNDCLASS{UINTstyle;//窗口的类型WNDPROClpfnWndProc;//窗口过程函数指针(回调函数)intcbClsExtra;//窗口类附加字节,为该类窗口所共享。通常0。intcbWndExtra;//窗口附加字节。通常设为
5、0。HANDLEhInstance;//当前应用程序事例句柄。HICONhIcon;//图标句柄LoadIcon();HCURSORhCursor;//光标句柄LoadCursor();HBRUSHhbrBackground;//画刷句柄(HBRUSH)GetStockObject();LPCTSTRlpszMenuName;//菜单名字LPCTSTRlpszClassName;//类的名字}WNDCLASS;8,窗口类注册:ATOMRegisterClass(CONSTWNDCLASS*lpWndClass//addressofstructurewithclass//da
6、ta);9,创建窗口:HWNDCreateWindow(LPCTSTRlpClassName,//pointertoregisteredclassnameLPCTSTRlpWindowName,//pointertowindownameDWORDdwStyle,//windowstyleintx,//horizontalpositionofwindowinty,//verticalpositionofwindowintnWidth,//windowwidthintnHeight,//windowheightHWNDhWndParent,//handletoparentoro
7、wnerwindowHMENUhMenu,//handletomenuorchild-windowidentifierHANDLEhInstance,//handletoapplicationinstanceLPVOIDlpParam//pointertowindow-creationdata);10,显示和更新窗口窗口:BOOLShowWindow(HWNDhWnd,//handletowindowintnCmdShow//showstateofwindow);BOOLUpdateWindow(HWNDhWnd/