mfc学习的67个技巧

上传人:xiao****1972 文档编号:84823384 上传时间:2019-03-05 格式:DOC 页数:57 大小:246KB
返回 下载 相关 举报
mfc学习的67个技巧_第1页
第1页 / 共57页
mfc学习的67个技巧_第2页
第2页 / 共57页
mfc学习的67个技巧_第3页
第3页 / 共57页
mfc学习的67个技巧_第4页
第4页 / 共57页
mfc学习的67个技巧_第5页
第5页 / 共57页
点击查看更多>>
资源描述

《mfc学习的67个技巧》由会员分享,可在线阅读,更多相关《mfc学习的67个技巧(57页珍藏版)》请在金锄头文库上搜索。

1、b9f29c8e1f39dc4832535358b98b3c46.pdf1属性页的添加:创建对话框的类,该类要从CpropertyPage继承;然后在要添加该对话框为属性页的类(头文件)里创建CpropertySheet类的一个对象m_tabsheet和新创建的对话框类的对象m_skatch;最后,在.cpp文件里的OnInitDialog()之类的函数里实现如下代码:m_tabsheet.Create(this, WS_CHILD | WS_VISIBLE, 0);/使选项卡的按钮在下面if(m_tabsheet.m_hWnd)m_tabsheet.ShowWindow(SW_MAXIMIZ

2、E);/显示选项卡/加入标签,标签名由各个子对话框的标题栏决定m_tabsheet.AddPage(&m_skatch);/用Create来创建一个属性页m_tabsheet.Create(this, WS_CHILD | WS_VISIBLE, WS_EX_CONTROLPARENT);RECT rect;m_tabsheet.GetWindowRect(&rect);int width = rect.right - rect.left;int height = rect.bottom - rect.top;/调整属性页的大小和位置m_tabsheet.SetWindowPos(NULL,

3、225, 225, width-82, height,SWP_NOACTIVATE);属性页的添加完成。如果要添加多个属性页,则只需要增加多个对象,如下:m_tabsheet.AddPage(&m_skatch1);m_tabsheet.AddPage(&m_skatch2);. . . . . .2List Control中标题栏(Column)的添加:创建一个List Control,其ID为IDC_LIST,在其Styles属性项下的View项里选择Report、Align项里选择Top、Sort项里选择None.然后在该List所在对话框的类(头文件)里创建ClistCtrl的一个对象

4、m_list然后在.cpp文件的OnInitDialog()之类的函数里实现如下代码:CString strname3;strname0=Screen Name;strname1=Form ID;strname2=Category Path;for(int i=0;i3;i+)m_List.InsertColumn(i,strnamei,LVCFMT_LEFT,130);在这之前也要将List Control的ID与ClistCtrl的对象m_list在DoDataExchange(CDataExchange* pDX)函数里绑定,如下:DDX_Control(pDX, IDC_LIST, m

5、_List);3ToolBar和StatusBar中控件的添加:方法.只能在ToolBar里创建控件:首先,在ToolBar中创建一个Button,其ID为ID_TOOL_COMBO(我们要将创建的控件放在该Button的位置上).其次,新创建一个类CMainToolBar,要从CToolBar继承(创建过程大概如下:选择工程/增加到工程/新的类;也可以选择工程的根,然后点击右键,选择新的类;或者CTL+W,选择增加类/新的类 - 然后在class type里选择Generic Class,在Name栏里输入新类的名字,Base class里输入CToolBar),创建成功后在该类里创建要增加

6、的控件的对象,如: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;m_wndOpenButton.m_hWnd = NULL;m_wndEdit.m_hWnd = NULL;接着在CMainframe的头文件里创建CMainToolBar的一个对

7、象m_wndToolBar,最后在.cpp文件的OnCreate函数的最后实现如下:int index = 0;CRect rect; / 可定义在头文件当中/ComboBox/找到指定的工具项while(m_wndToolBar.GetItemID(index)!=ID_TOOL_COMBO)index+;/设置指定工具项的宽度并获取新的区域120是宽度m_wndToolBar.SetButtonInfo(index, ID_TOOL_COMBO, TBBS_SEPARATOR, 120);m_wndToolBar.GetItemRect(index, &rect);/设置位置rect.to

8、p+=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);return FALSE;m_wndToolBar.m_wndMyCombo.ShowWindow(SW_SHOW);/填充内容m_wndToolBar.m_wndMyC

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

10、Mainframe的头文件中创建要增加的控件的对象,如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(CMainFram

11、e, 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 resizeab

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

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

14、WP_NOACTIVATE|(bShow ? 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_Control(pDX, IDC_MyButton, m_button);/AFX_DATA_MAP然后可以在该函数的最后进行初始化:m_button.EnableWindow(FALSE);到这里已经实现了改变属性。如果要动态改变其属性,可如下实现(通过两个Button的点击改变起属性):/ RadioAll Button的点击响应函数void CPrintDlg:OnRadioAll() / TODO: Add your control notification handler code herem_but

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号