ImageVerifierCode 换一换
格式:DOCX , 页数:80 ,大小:71.71KB ,
资源ID:22123424      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/22123424.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(MFC学习总结 67个技巧Word文档格式.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

MFC学习总结 67个技巧Word文档格式.docx

1、int width = rect.right - rect.left;int height = rect.bottom - rect.top;/调整属性页的大小和位置m_tabsheet.SetWindowPos(NULL, 225, 225, width-82, height,SWP_NOACTIVATE);属性页的添加完成。如果要添加多个属性页,则只需要增加多个对象,如下:m_skatch1);m_tabsheet.AddPage(&m_skatch2);. . . . . .2List Control中标题栏(Column)的添加:创建一个List Control,其ID为IDC_LIS

2、T,在其Styles属性项下的View项里选择Report、Align项里选择Top、Sort项里选择None.然后在该List所在对话框的类(头文件)里创建ClistCtrl的一个对象m_list然后在.cpp文件的OnInitDialog()之类的函数里实现如下代码:CString strname3;strname0=Screen Name;strname1=Form IDstrname2=Category Pathfor(int i=0;i3;i+)m_List.InsertColumn(i,strnamei,LVCFMT_LEFT,130);在这之前也要将List Control的ID

3、与ClistCtrl的对象m_list在DoDataExchange(CDataExchange* pDX)函数里绑定,如下:DDX_Control(pDX, IDC_LIST, m_List);3ToolBar和StatusBar中控件的添加:方法.只能在ToolBar里创建控件:首先,在ToolBar中创建一个Button,其ID为ID_TOOL_COMBO(我们要将创建的控件放在该Button的位置上).其次,新创建一个类CMainToolBar,要从CToolBar继承(创建过程大概如下:选择工程/增加到工程/新的类;也可以选择工程的根,然后点击右键,选择新的类;或者CTL+W,选择增

4、加类/新的类 - 然后在class type里选择Generic Class,在Name栏里输入新类的名字,Base class里输入CToolBar),创建成功后在该类里创建要增加的控件的对象,如:CComboBoxm_wndMyCombo;CStaticm_wndCategory, m_wndCategoryPath;CButtonm_wndOpenButton;Ceditm_wndEdit;然后在构造函数里初始化如:m_wndMyCombo.m_hWnd = NULL;m_wndCategory.m_hWnd = NULL;m_wndCategoryPath.m_hWnd = NULL;

5、m_wndOpenButton.m_hWnd = NULL;m_wndEdit.m_hWnd = NULL;接着在CMainframe的头文件里创建CMainToolBar的一个对象m_wndToolBar,最后在.cpp文件的OnCreate函数的最后实现如下:int index = 0;CRect rect; / 可定义在头文件当中/ComboBox/找到指定的工具项while(m_wndToolBar.GetItemID(index)!=ID_TOOL_COMBO)index+;/设置指定工具项的宽度并获取新的区域120是宽度m_wndToolBar.SetButtonInfo(inde

6、x, ID_TOOL_COMBO, TBBS_SEPARATOR, 120);m_wndToolBar.GetItemRect(index, &/设置位置rect.top+=1;rect.bottom += 200;/ 创建并显示控件if(!m_wndToolBar.m_wndMyCombo.Create(WS_CHILD|WS_VISIBLE| CBS_AUTOHSCROLL|CBS_DROPDOWNLIST | CBS_HASSTRINGS , rect, &m_wndToolBar, ID_TOOL_COMBO)TRACE0(Failed to create combo-boxn);re

7、turn FALSE;m_wndToolBar.m_wndMyCombo.ShowWindow(SW_SHOW);/填充内容m_wndToolBar.m_wndMyCombo.AddString(25%50%75%/选择默认项m_wndToolBar.m_wndMyCombo.SetCurSel(0);/获取到内容并MSGBOX显示出来CString strContent;m_wndToolBar.m_wndMyCombo.GetWindowText(strContent);index = 0;其他控件都类似创建(只需要注意一下各自的Create函数的参数即可)。方法.这种方法创建不太容易控制

8、:直接在CMainframe的头文件中创建要增加的控件的对象,如CButton的对象m_wndAboutButton,然后创建CToolBar或者CstatusBar的对象,如:CstatusBar的对象_wndStatusBar;再增加几个函数如下:Protected:virtual void RecalcLayout(BOOL bNotify = TRUE);afx_msg void CMainFrame:OnViewStatusBar();接着在.cpp文件中将StatusBar的ID和OnViewStatusBar 函数绑定在一起,如下所示:BEGIN_MESSAGE_MAP(CMai

9、nFrame, CFrameWnd)/AFX_MSG_MAP(CMainFrame)ON_COMMAND(ID_VIEW_STATUS_BAR, OnViewStatusBar)ON_WM_CREATE()/AFX_MSG_MAPEND_MESSAGE_MAP()然后Create函数的最后(返回值之前)实现如下代码:CRect rc;VERIFY(m_wndAboutButton.Create(_T(MyAbout), WS_VISIBLE,rc,this,ID_APP_ABOUT);/ TODO: Remove this if you dont want tool tips or a res

10、izeable toolbarm_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() |CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);再在RecalcLayout函数里实现:if (m_wndStatusBar.m_hWnd)m_wndStatusBar.GetWindowRect(&rc);ScreenToClient(&rc.right -= 50;m_wndStatusBar.SetWindowPos(NULL,rc.left,rc.top,rc.Width(),rc.Height(),SW

11、P_NOZORDER);rc.left = rc.right;rc.right += 50;m_wndAboutButton.SetWindowPos(NULL,rc.left,rc.top,rc.Width(),rc.Height(),最后在OnViewStatusBar()里实现:BOOL bShow = m_wndStatusBar.GetStyle() & WS_VISIBLE;m_wndAboutButton.SetWindowPos(NULL, 0, 0, 0, 0,SWP_NOZORDER|SWP_NOMOVE|SWP_NOSIZE|SWP_NOACTIVATE|(bShow ?

12、 SWP_SHOWWINDOW : SWP_HIDEWINDOW);ToolBar中的创建与此相同,只需更改一下句柄即可。4通过Control创建的控件,对其属性的动态控制:在对话框类的头文件里创建所要改变属性的控件的对象,如要改变一个Button(其ID为IDC_MyButton)的属性,则需创建Cbutton的对象m_button。然后在.cpp中的DoDataExchange函数里将Button的ID和创建的对象绑定在一起:/AFX_DATA_MAP(CPrintDlg)/ NOTE: the ClassWizard will add DDX and DDV calls hereDDX_

13、Control(pDX, IDC_MyButton, m_button);/AFX_DATA_MAP然后可以在该函数的最后进行初始化:m_button.EnableWindow(FALSE);到这里已经实现了改变属性。如果要动态改变其属性,可如下实现(通过两个Button的点击改变起属性):/ RadioAll Button的点击响应函数void CPrintDlg:OnRadioAll() Add your control notification handler code herem_button.EnableWindow(TRUE);/ RadioSelect Button的点击响应函数

14、OnRadioSelect()也可以通过一个Check Button的点击来改变,在其点击响应函数里实现:m_button.EnableWindow(!m_button.IsWindowEnabled();其余控件属性的改变都如此。5窗口的分割与停靠:一、新建一个类CMySplitter,基类为CSplitterWnd二、重载该类的OnMouseMove函数:void CMySplitter:OnMouseMove(UINT nFlags, CPoint point)/ 限制切分条的运动范围。if(point.x600)CWnd:OnMouseMove(nFlags, point);elseC

15、SplitterWnd:三、 然后就可以跟一般的窗口分割那样去做了,if(point.xShowWindow(SW_SHOW)改成m_pMainWnd-ShowWindow(SW_MAXIMIZE);在CreateWidnow时用WS_SYSMENU|WS_MINIMIZEBOX|WS_MAXIMIZEBOX 风格. 第一种方法:PreCreateWindow(CREATESTRUCT& cs)if( !CFrameWnd:PreCreateWindow(cs) ) Modify the Window class or styles here by modifying/the CREATEST

16、RUCT cs/ disable the maxmini boxcs.style &= WS_MAXIMIZEBOX;第二种方法:CMenu *pMenu=AfxGetApp()-m_pMainWnd-GetSystemMenu(FALSE); int x=pMenu-GetMenuItemCount( ); UINT pID=pMenu-GetMenuItemID(x-1); pMenu-EnableMenuItem(pID, MF_DISABLED);第三种方法:ModifyStyle(WS_MAXIMIZEBOX, 0);这个函数也可以是最大化按钮失效!并且可以在程序中动态的改变窗口的风

17、格7. 更改属性页标题void CProSheet:SetPageTitle(int nPage, int nImage, CString strTitle)TC_ITEM item;/item.mask = TCIF_TEXT|TCIF_IMAGE;/设置图标+文字item.mask = TCIF_IMAGE;/只设置图标item.iImage = nImage;/ item.pszText = strTitle.GetBuffer(0);/设置文字GetTabControl ()-SetItem (nPage, &item);/要设置文字时就将上面2行有注释符的代码前的注释符去掉8. 创建

18、动态菜单void CMainFrame:OnSelectState(NMTOOLBAR* pnmtb, LRESULT *plr)CMenu menu;menu.CreateMenu()return;menu.AppendMenu(MF_STRING,0,开始结束m_wndToolBar.SendMessage(TB_GETRECT, pnmtb-iItem, (LPARAM)&m_wndToolBar.ClientToScreen(&menu.TrackMenu( TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_VERTICAL,rc.left, rc.bottom

19、, this, &/menu.DestroyMenu();menu.detach();9关于打印1.要打印哪个视就(CMainFrame*)AfxGetMainWnd()-m_wndSplitter.SetActivePane(.)/要打印的那个视对应的Pane2.有一个单文档工程,文档窗口被切分:左视图由CTreeView 的派生类管理,右视图由CListView 的派生类CMyListView(其为风格为LVS_REPORT)管理,我想为右视图添加打印和打印预览,我在MyListView.cpp中添加了ON_COMMAND(ID_FILE_PRINT,CListView:OnFilePri

20、nt)ON_COMMAND(ID_FILE_PRINT_PREVIEW,CListView:OnFilePrintPreview)还有BOOL CMyListView:OnPreparePrinting(CPrintInfo* pInfo) / TODO: call DoPreparePrinting to invoke the Print dialog box / return CListView:OnPreparePrinting(pInfo); pInfo-SetMaxPage(2); BOOL bret=DoPreparePrinting(pInfo);m_nNumPreviewPag

21、es=2; return bret;3. 下面是从MSDN中摘出来的一段,是用来改变消息路由的。用了这段代码之后,CView中的消息(菜单,控件,子窗口)将先被CMyShape类来处理。不知道你要的是不是这样的效果。/ This example illustrates extending the frameworks standard command/ route from the view to objects managed by the view.This example/ is from an object-oriented drawing application, similar t

22、o the/ DRAWCLI sample application, which draws and edits shapes.BOOL CMyView:OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo) / Extend the frameworks command route from the view to / the application-specific CMyShape that is currently selected / in the view. m_pActiveSha

23、pe is NULL if no shape object / is currently selected in the view. if (m_pActiveShape != NULL)& m_pActiveShape-OnCmdMsg(nID, nCode, pExtra, pHandlerInfo) return TRUE; / If the object(s) in the extended command route dont handle/ the command, then let the base class OnCmdMsg handle it.return CView:OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);/ The command handler for ID_SHAPE_COLOR (menu command to change/ the color of the currently selected shape) was added to/ the message map of CMyShape (note, not CMyView) using ClassWizard./ The menu item will be automatically enabled or disabled, depending

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1