




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
API函数是操作系统提供给应用程序的,用来控制操作系统完成某些功能。对事件作出反应叫做消息响应,操作系统将每个事件都包装成一个称为消息的结构体MSG来传递给应用程序。句柄(HANDLE),资源的标识。创建窗口:设计一个窗口类WNDCLASS注册一个窗口类RegisterClass创建窗口CreateWindow更新窗口UpdataWindow窗口回调函数:类WNDCLASS第二个成员变量lpfnWndProc指定了这一类型窗口的过程函数,也称回调函数。回调函数的原理是这样的,当应用程序收到给某一窗口的消息时(还记得前面讲过的消息通常与窗口相关的吗?),就应该调用某一函数来处理这条消息。这一调用过程不用应用程序自己来实施,而由操作系统来完成,但是,回调函数本身的代码必须由应用程序自己完成。对于一条消息,操作系统到底调用应用程序中的哪个函数(回调函数)来处理呢?操作系统调用的就是接受消息的窗口所属的类型中的lpfnWndProc成员指定的函数。每一种不同类型的窗口都有自己专用的回调函数,该函数就是通过lpfnWndProc成员指定的。 消息循环:当应用程序建立时,操作系统会为这个应用程序分配一个消息队列,凡是和这个程序相关的消息,操作系统都会把它放在消息队列中,然后我们的应用程序会利用GetMessage从消息队列中取出一条具体的消息,然后利用TranslateMessage将WM_KeyDown和WM_KEYUp这样的消息,转化为WM-CHAR消息,然后利用DispatchMessage将消息分发出去(给操作系统);然后操作系统利用我们在设计窗口类时指定的窗口回调函数(WindowProc)对不同的函数进行不同的消息响应。消息映射:因为消息和一个具体窗口相关,当消息产生之后,MFC中就维护了一个句柄和C+指针的映射。然后通过指针传递给基类,基类会调用WindowProc,在WindowProc内部调用OnWinMsg,该函数在此函数内部完成了主要消息映射的处理,此时,OnwndMsg会到C+头文件查看在DECLARE_MESSAGE_MAP()之上有无消息响应函数原型申明,然后在原文件中查看在BEGIN_MESSAGE_MAP和END_MESSAGE_MAP()之间有没有消息映射的宏,如果成功就会调用消息响应函数进行处理。Doc类是文档类。数据加载存储有Doc类完成,数据显示修改由View完成。消息映射:1.afx_msg void OnMessageBox() 消息响应函数原型申明2.On_COMMAND(IDM_MESSAGE_BOX,OnMessageBox)定义消息映射宏3.void CMainFrame:OnMessageBox() MessageBox(OK);4.菜单变灰:m_bAutoMenuEnable = false;/ CMainFrame 的构造函数添加成员GetMenu()- EnableMenuItem(IDM_MESSAGE_BOX, MF_GRAYED);View用于将Document类别中的数据显示在视窗中,Document类别用于存储视窗程序中的数据,继承于CDocument。自定义的MyView类别继承与CView类别,必须注意要过载OnDraw虚拟函数。OnDraw函数在重绘视窗以及打印2时,都会被呼叫。利用CFrameWnd:Create直接载入菜单资源。在在程序里,修改菜单时使用CMenu。建立工具栏,必须载入afxext.h标头文件CButton:CreateBOOL Create( LPCTSTR lpszCaption, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );动态创建一个按纽LPCTSTR lpszCaption 按纽文字DWORD dwStyle 按纽样式,常选用BS_DEFPUSHBUTTON表示下压式按纽,控件本身也是窗口,因此还具有窗口类型,如让控件创建后即可见,可给控件WS_VISIBLE,通常还具有WS_CHILD属性const RECT& rect 矩形区域,可以是CRect类型,也可是Rect结构体。可直接由CRect构造,如CRect (0,0,10,10).。CWnd* pParentWnd 为父窗口指针,若消息响应在父类中,可直接用this指针。UINT nID 可随便给(只能为数字?)。注意用此函数时需判断该控件是否已与该控件窗口已关联,因为若关联两次会出现错误,动态创建控件好象只能创建一个控件。CWnd:GetDlgItem CWnd* GetDlgItem( int nID ) const;用此函数可通过控件ID获得指定控件的指针,一般此函数用于一个对话框类中。CWnd:GetWindowTextint GetWindowText( LPTSTR lpszStringBuf, int nMaxCount ) const;void GetWindowText( CString& rString ) const;此函数可获得指定控件上的文本信息并把它保存在一个CString对象或char型数组中。第一个重载函数中nMaxCount指能够复制到BUFFER中的最大字符数CWnd:SetWindowTextvoid SetWindowText( LPCTSTR lpszString );该函数用于设置窗体尤其是控件文本。(该函数是否可向窗口输出字符串?)atoiint atoi( const char *string );该函数可将字符串转换为整形值并返回。类似的函数如下:long atol( const char *string );double atof( const char *string );如果字符不能转化为相应的类型则返回0itoachar *_itoa( int value, char *string, int radix );第一个参数是要转换的整形值,第二个参数是目标字符串的指针,第三个参数代表进制。(回值干什么用的?)CWnd:GetDlgItemText int GetDlgItemText( int nID, LPTSTR lpStr, int nMaxCount ) const;int GetDlgItemText( int nID, CString& rString ) const;该函数可通过控件ID来获取控件文本并把它保存在CString 的一个对象中或char型数组中,因为数组会有最大字符数,因此第一个重载函数还有nMaxCount参数。CWnd:SetDlgItemTextvoid SetDlgItemText( int nID, LPCTSTR lpszString );将字符串中字符放回nID所指定的控件中CWnd:GetDlgItemInt UINT GetDlgItemInt( int nID, BOOL* lpTrans = NULL, BOOL bSigned = TRUE ) const;该函数作用是接收指定控件文本并作为整形数返回nID为控件ID,第二个参数若为NULL则若字符无法转换为数字时会接受一个零而不会报错,第三个参数若为TRUE则检查文本开始处的有无符号,即数据做有符号数处理,若为FALSE则作无符号数处理。CWnd:SetDlgItemIntvoid SetDlgItemInt( int nID, UINT nValue, BOOL bSigned = TRUE );该函数是将整形值直接传入ID标识的控件作为控件文本。nID为控件ID,第二个参数为要传入的整形值,第三个参数为真则为有符号值,反之则为无符号值CWnd:ShowWindowBOOL ShowWindow( int nCmdShow );常用nCmdShow的参数值SW_HIDE 隐藏窗口或控件 SW_SHOW 正常显示窗口或控件 一般由窗口类或窗口类的派生类产生一个窗口后都需要调用该函数将窗口显示出来,不过有时不需要显式调用而有时必须显示调用CWnd:PostMessageBOOL PostMessage( UINT message, WPARAM wParam = 0, LPARAM lParam = 0 );CWnd:SendMessageLRESULT SendMessage( UINT message, WPARAM wParam = 0, LPARAM lParam = 0 );可用于各窗体或控件之间的消息通信。如常用的获取窗体或控件的文本消息WM_GETTEXT,用WM_GETTEXT时参数:WPARAM为要copy的最大字符数,LPARAM为存储的buffer区,若为char型数组则需要强制类型转换设置窗体文本的消息WM_SETTEXT,参数含义:wParam 未被使用,设为0 ,lParam 为要设置的文本的存储单元地址; 设置编辑框文本复选的消息为EM_SETSELEM_SETSELwParam = (WPARAM) (INT) nStart; / starting positionlParam = (LPARAM) (INT) nEnd; / ending positionwParam为复选起始位置,lParam为复选结束位置。注意,若最后鼠标焦点不在编辑框上则无法显示文本复选,因此一般最后会加上一个SetFocus函数。获取编辑框文本复选的消息为 EM_GETSEL wParam = (WPARAM) (LPDWORD) lpdwStart; / receives starting position lParam = (LPARAM) (LPDWORD) lpdwEnd; / receives ending position wParam为一个DWORD类型数的指针,用于保存起始位置,lParam也为一个DWORD类型数的指针,用于保存结束位置。CWnd:SendDlgItemMessageLRESULT SendDlgItemMessage( int nID, UINT message, WPARAM wParam = 0, LPARAM lParam = 0 );本函数用于对话框各控件的消息通信,获取指定ID的消息,该函数不是被类的对象调用的。CDC:TextOutvirtual BOOL TextOut( int x, int y, LPCTSTR lpszString, int nCount );BOOL TextOut( int x, int y, const CString& str );该函数可用于向指定窗口输出一串文字,输出成功则返回非0;输出文本颜色不是由画笔控制的,而是由CD中的成员函数CDC:SetTextColorvirtual COLORREF SetTextColor( COLORREF crColor );指定。背景颜色由CDC:SetBkColor virtual COLORREF SetBkColor( COLORREF crColor );指定。SDK下该函数为:BOOL TextOut( HDC hdc, / handle to device context int nXStart, / x-coordinate of starting position int nYStart, / y-coordinate of starting position LPCTSTR lpString, / pointer to string int cbString / number of characters in string ); CWnd:SetFocusCWnd* SetFocus( );该函数为设置鼠标焦点的函数,返回的是原先具有焦点的窗体指针。CWnd:GetWindowRectvoid GetWindowRect( LPRECT lpRect ) const;该函数获得窗口矩形区域信息并将信息保存在CRect或Rect结构体中CWnd:SetWindowPosBOOL SetWindowPos( const CWnd* pWndInsertAfter, int x, int y, int cx, int cy, UINT nFlags );该函数可用于设置窗口的大小以及窗口的层叠次序。第二,三个参数为窗口的左上角的x与y值,第四个参数为窗口的宽度,第五个参数为窗口的高度,最后一个参数为设置显示属性,如若要窗口显示位置不改变,nFlags可设置为 SWP_NOMOVE ,此时将忽略x与y值,SetWindowLongLONG SetWindowLong(HWND hWnd, / handle of windowint nIndex, / offset of value to setLONG dwNewLong / new value);API函数,可用于改变指定窗口的一个属性,当nIndex取GWL_WNDPROC,可用于替换一个窗口过程。GetNextWindowHWND GetNextWindow( HWND hWnd, / handle to current window UINT wCmd / direction flag ); SDK函数,可获取当前控件的下一个控件的句柄,其中第一个参数为当前控件的句柄,第二个参数可取GW_HWNDNEXT或GW_HWNDPREV,若取GW_HWNDNEXT则获取下一个控件句柄,若取GW_HWNDPREV则获取当前句柄的前一个控件句柄 GetWindow HWND GetWindow( HWND hWnd, / handle to original window UINT uCmd / relationship flag ); 该函数功能与GetNextWindow相似,但功能比GetNextWindow更强大,其中的nCmd选项可选GW_HWNDNEXT与GW_HWNDPREV外还可选择: GW_CHILD表示获取当前控件子控件句柄,GW_HWNDFIRST与 GW_HWNDLASTfenbie分别表示获取第一个与最后一个控件句柄。GetNextDlgTabItemHWND GetNextDlgTabItem( HWND hDlg, / handle of dialog box HWND hCtl, / handle of known control BOOL bPrevious / direction flag ); CWnd:GetNextWind
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- (2025年标准)股份在出售协议书
- 节奏训练律动课件
- 小学四年级PEP英语上册教学进展计划
- (2025年标准)古董鉴定协议书
- 2025年高职院校国际交流招聘工作面试题及参考答案
- 2025年农业科技类招聘面试题农业技术员职位面试预测题
- 居家护理安全
- 跨行业合作中的原料药采购合同范文
- (2025年标准)购买番薯苗协议书
- 2025年国际酒店管理集团面试技巧及模拟题集锦
- 基坑监测评审汇报
- 2025-2026年秋季学期各周国旗下讲话安排表+2025-2026学年上学期升旗仪式演讲主题安排表
- 物业公司电瓶车管理制度
- GB/T 45875-2025精细陶瓷自然烧结条件下陶瓷粉体致密性的测定
- 肺占位性病变护理查房
- 广告创意与用户体验-第3篇-洞察阐释
- 幼儿园一日常规安全培训
- 5G基带芯片算法验证平台:从设计到实现的关键技术与实践
- 2025年高考生物辽宁卷真题解读及复习备考指导(黑龙江吉林内蒙古适用)
- 新媒体视听节目制作
- 数字化教学环境下小学语文板书设计优化策略
评论
0/150
提交评论