如何解决CPropertySheet中所添加的属性页窗口的字体变大,窗口也变大的问题?

牧童吃五谷 2018-11-09 12:15:17
我发现在CPropertySheet中添加了属性页窗口,那么属性页窗口中的控件将比资源模板的的字体变大了,控件也会变大,这样窗口也变大了。

我确认把一个属性页窗口作为单独的对话框来显示是正常不会变大的,现在我不想让CPropertySheet属性页窗口中控件变大,该如何实现呢?
...全文
246 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zgl7903 2019-08-29
  • 打赏
  • 举报
回复
如何更改属性页向导页的字体 前段时间,一个底层开发的同事写一个MFC工具,在想实现设置属性页字体时遇到了困难,问我该如何实现?根据多年的经验,想当然的以为很简单,只需在资源里,更改对话框的字体即可,试了试不行;那就CreateFont,然后SetFont,可是无论怎么弄,程序运行后,属性页的字体依然如故!在网上搜索也没有找到好的解决办法,最后折腾许久,终于找到一篇文章,最终把这个问题解决了。 文章:http://support.microsoft.com/default.aspx?scid=kb;en-us;142170 示例下载:http://download.microsoft.com/download/vc60pro/samp40/1/win98/en-us/prpfont.exe 概要 PRPFONT 说明如何为您 CPropertyPages 在资源编辑器, 并在运行时设置所需字体, 设置要和一切正常大小相同表的字体。 所有这是一个类称为 CMySheet 中完成。 调用 ChangeDialogFont() 函数进行调整窗口以及设置字体工作。 CPropertySheet::BuildPropPageArray() 被覆盖以便不重置网页中字体。 更多信息 在 VisualC++ 的版本低于 4.0, MFC 必须自己实现 CPropertySheet。 对于您 CPropertySheet 通过资源编辑器中设置首 CPropertyPage 您对话框资源的字体可能设置字体。 在运行时, 表将使用字体设置并一切根据字体大小。 开头 VisualC++4.0, MFC 使用 Windows 95 PropertySheet 控件。 此控件将始终使用系统字体来表。 这是设计使然。 MFC 还将强制页以用作表相同字体。 这样调用 BuildPropPageArray() 函数中。 因为这是无出处函数, 它可能更改或将来的 MFC 版本中被删除。 CMySheet 将使用的首活动 CPropertyPage 字体来设置字体和 CPropertySheet 和其子窗口大小。 CPropertyPages 与资源编辑器中指定字体显示。 具体步骤: 1、新建类CMySheet,继承自CPropertySheet 2、在.cpp文件中大概实现如下。 3、修改.h文件。 4、使用这个CMySheet,更改资源中的属性页,则程序运行后,设置的字体有效。 #define WM_RESIZEPAGE WM_APP+1 enum { CDF_CENTER, CDF_TOPLEFT, CDF_NONE }; // helper function which sets the font for a window and all its children // and also resizes everything according to the new font void ChangeDialogFont(CWnd* pWnd, CFont* pFont, int nFlag) { CRect windowRect; // grab old and new text metrics TEXTMETRIC tmOld, tmNew; CDC * pDC = pWnd->GetDC(); CFont * pSavedFont = pDC->SelectObject(pWnd->GetFont()); pDC->GetTextMetrics(&tmOld); pDC->SelectObject(pFont); pDC->GetTextMetrics(&tmNew); pDC->SelectObject(pSavedFont); pWnd->ReleaseDC(pDC); long oldHeight = tmOld.tmHeight+tmOld.tmExternalLeading; long newHeight = tmNew.tmHeight+tmNew.tmExternalLeading; if (nFlag != CDF_NONE) { // calculate new dialog window rectangle CRect clientRect, newClientRect, newWindowRect; pWnd->GetWindowRect(windowRect); pWnd->GetClientRect(clientRect); long xDiff = windowRect.Width() - clientRect.Width(); long yDiff = windowRect.Height() - clientRect.Height(); newClientRect.left = newClientRect.top = 0; newClientRect.right = clientRect.right * tmNew.tmAveCharWidth / tmOld.tmAveCharWidth; newClientRect.bottom = clientRect.bottom * newHeight / oldHeight; if (nFlag == CDF_TOPLEFT) // resize with origin at top/left of window { newWindowRect.left = windowRect.left; newWindowRect.top = windowRect.top; newWindowRect.right = windowRect.left + newClientRect.right + xDiff; newWindowRect.bottom = windowRect.top + newClientRect.bottom + yDiff; } else if (nFlag == CDF_CENTER) // resize with origin at center of window { newWindowRect.left = windowRect.left - (newClientRect.right - clientRect.right)/2; newWindowRect.top = windowRect.top - (newClientRect.bottom - clientRect.bottom)/2; newWindowRect.right = newWindowRect.left + newClientRect.right + xDiff; newWindowRect.bottom = newWindowRect.top + newClientRect.bottom + yDiff; } pWnd->MoveWindow(newWindowRect); } pWnd->SetFont(pFont); // iterate through and move all child windows and change their font. CWnd* pChildWnd = pWnd->GetWindow(GW_CHILD); while (pChildWnd) { pChildWnd->SetFont(pFont); pChildWnd->GetWindowRect(windowRect); CString strClass; ::GetClassName(pChildWnd->m_hWnd, strClass.GetBufferSetLength(32), 31); strClass.MakeUpper(); if(strClass==_T("COMBOBOX")) { CRect rect; pChildWnd->SendMessage(CB_GETDROPPEDCONTROLRECT,0,(LPARAM) &rect); windowRect.right = rect.right; windowRect.bottom = rect.bottom; } pWnd->ScreenToClient(windowRect); windowRect.left = windowRect.left * tmNew.tmAveCharWidth / tmOld.tmAveCharWidth; windowRect.right = windowRect.right * tmNew.tmAveCharWidth / tmOld.tmAveCharWidth; windowRect.top = windowRect.top * newHeight / oldHeight; windowRect.bottom = windowRect.bottom * newHeight / oldHeight; pChildWnd->MoveWindow(windowRect); pChildWnd = pChildWnd->GetWindow(GW_HWNDNEXT); } } ///////////////////////////////////////////////////////////////////////////// // CMySheet IMPLEMENT_DYNAMIC(CMySheet, CPropertySheet) CMySheet::CMySheet(UINT nIDCaption, CWnd* pParentWnd, UINT iSelectPage) :CPropertySheet(nIDCaption, pParentWnd, iSelectPage) { } CMySheet::CMySheet(LPCTSTR pszCaption, CWnd* pParentWnd, UINT iSelectPage) :CPropertySheet(pszCaption, pParentWnd, iSelectPage) { } CMySheet::~CMySheet() { if (m_fntPage.m_hObject) VERIFY (m_fntPage.DeleteObject ()); } BEGIN_MESSAGE_MAP(CMySheet, CPropertySheet) //{{AFX_MSG_MAP(CMySheet) //}}AFX_MSG_MAP ON_MESSAGE (WM_RESIZEPAGE, OnResizePage) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CMySheet message handlers void CMySheet::BuildPropPageArray() { CPropertySheet::BuildPropPageArray(); // get first page CPropertyPage* pPage = GetPage (0); ASSERT (pPage); // dialog template class in afxpriv.h CDialogTemplate dlgtemp; // load the dialog template VERIFY (dlgtemp.Load (pPage->m_psp.pszTemplate)); // get the font information CString strFace; WORD wSize; VERIFY (dlgtemp.GetFont (strFace, wSize)); if (m_fntPage.m_hObject) VERIFY (m_fntPage.DeleteObject ()); // create a font using the info from first page VERIFY (m_fntPage.CreatePointFont (wSize*10, strFace)); } BOOL CMySheet::OnInitDialog() { CPropertySheet::OnInitDialog(); // get the font for the first active page CPropertyPage* pPage = GetActivePage (); ASSERT (pPage); // change the font for the sheet ChangeDialogFont (this, &m_fntPage, CDF_CENTER); // change the font for each page for (int iCntr = 0; iCntr < GetPageCount (); iCntr++) { VERIFY (SetActivePage (iCntr)); CPropertyPage* pPage = GetActivePage (); ASSERT (pPage); ChangeDialogFont (pPage, &m_fntPage, CDF_CENTER); } VERIFY (SetActivePage (pPage)); // set and save the size of the page CTabCtrl* pTab = GetTabControl (); ASSERT (pTab); if (m_psh.dwFlags & PSH_WIZARD) { pTab->ShowWindow (SW_HIDE); GetClientRect (&m_rctPage); CWnd* pButton = GetDlgItem (ID_WIZBACK); ASSERT (pButton); CRect rc; pButton->GetWindowRect (&rc); ScreenToClient (&rc); m_rctPage.bottom = rc.top-2; } else { pTab->GetWindowRect (&m_rctPage); ScreenToClient (&m_rctPage); pTab->AdjustRect (FALSE, &m_rctPage); } // resize the page pPage->MoveWindow (&m_rctPage); return TRUE; } BOOL CMySheet::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult) { NMHDR* pnmh = (LPNMHDR) lParam; // the sheet resizes the page whenever it is activated so we need to size it correctly if (TCN_SELCHANGE == pnmh->code) PostMessage (WM_RESIZEPAGE); return CPropertySheet::OnNotify(wParam, lParam, pResult); } LONG CMySheet::OnResizePage (UINT, LONG) { // resize the page CPropertyPage* pPage = GetActivePage (); ASSERT (pPage); pPage->MoveWindow (&m_rctPage); return 0; } BOOL CMySheet::OnCommand(WPARAM wParam, LPARAM lParam) { // the sheet resizes the page whenever the Apply button is clicked so we need to size it correctly if (ID_APPLY_NOW == wParam || ID_WIZNEXT == wParam || ID_WIZBACK == wParam) PostMessage (WM_RESIZEPAGE); return CPropertySheet::OnCommand(wParam, lParam); }
低调-yang 2019-08-29
  • 打赏
  • 举报
回复
引用 1 楼 zgl7903 的回复:
http://www.cppblog.com/qiujian5628/archive/2008/01/25/41903.html


大神还在不?这个里面的衔接打不开了.能否发一份啊 谢谢
schlafenhamster 2018-11-09
  • 打赏
  • 举报
回复
Onpaint 中改变 字体 !
牧童吃五谷 2018-11-09
  • 打赏
  • 举报
回复
确实可以用。谢谢
MFC类目录及头文件 类 描述 头文件 CAnimateCtrl 自动化通用控件 afxcmn.h CArchive afx.h CArchiveException afx.h CArray afxtempl.h CAsyncMonikerFile 在ActiveX控件中提供对异步标记的支持 afxole.h CAsyncScoket 封装Windows Sockets API,参看CSocket afxsock.h CBitmap afxwin.h CBitmapButton afxext.h CBrush afxwin.h CButton 按钮控件对象 afxwin.h CByteArray afxcoll.h CCachedDataPathProperty 允许一个ActiveX控件异步传输属性数据和缓冲内存中的数据,参考CDataPathProperty afxctl.h CCheckListBox afxwin.h CClientDC afxwin.h CCmdTarget 所有能够接收和响应消息的对象的基类 afxwin.h CCmdUI afxwin.h CColorDialog 颜色选择的通用对话框,提供为显示系统定义的颜色列表 afxdlgs.h CComboBox 组合框对象 afxwin.h CComboBoxEx CComboBox类的派生类,用于支持在组合框控件中的图像列表 afxcmn.h CCommandLineInfo afxwin.h CCommonDialog afxdlgs.h CConnectionPoint afxdisp.h CControlBar afxext.h CCreateContext afxext.h CCriticalSection afxmt.h CCtrlView afxwin.h CDaoDatabase afxdao.h CDaoException afxdao.h CDaoFieldExchange afxdao.h CDaoQueryDef afxdao.h CDaoRecordset 代表选自数据源的记录集。CDaoRecordset对象可用于三种格式:表类型记录集,动态集类型记录集和快照类型记录集 afxdao.h CDaoRecordView 提供表单视图,以在控件中显示数据库记录。表单视图是CDaoRecordset对象的一部分。参考CFormView和CRecordView afxdao.h CDaoTableDef afxdao.h CDaoWorkspace afxdao.h CDatabase afxdb.h CDataExchange afxwin.h CDataPathProperty 实现一个ActiveX控件属性,它能够异步加载其数据。这个类允许ActiveX控件在后台下载属性数据时被激活 afxctl.h CDateTimeCtrl 封装新的日期/时间选取器控件 afxdtctl.h CDBException afxdb.h CDBVariant afxdb.h CDC afxwin.h CDialog 用于包含控件窗口的对话框对象 afxwin.h CDialogBar afxext.h CDocItem afxole.h CDockState afxadv.h CDocObjectServer afxdocob.h CDocObjectServerItem afxdocob.h CDocTemplate afxwin.h CDocument 用于管理程序的数据的类 afxwin.h CDragListBox Windows列表框,允许用户把其中的项拖放到不同的位置 afxcmn.h CDumpContext afx.h CDWordArray afxcoll.h CEdit 用于文本输入的子窗口控件 afxwin.h CEditView 提供Windows编缉控件的功能。因为CEditView派生于Cedit,该对象可同文件和文件模板一同使用 afxext.h CEvent afxmt.h CException afx.h CFieldExchange afxdb.h CFile afx.h CFileDialog 通用文件对话框,提供Open和Save As对话框中的功能 afxdlgs.h CFileException afx.h CFileFind afx.h CFindReplaceDialog afxdlgs.h CFont afxwin.h CFontDialog 通用字体对话框,用于显示当前已装入系统的字体列表 afxdlgs.h CFontHolder afxctl.h CFormView 包含对话框控件的窗口 afxext.h CFrameWnd SDI(单窗口界面)框架窗口 afxwin.h CFtpConnection afxinet.h CFtpFileFind afxinet.h CGdiObject afxwin.h CGopherConnection afxinet.h CGopherFile afxinet.h CGopherFileFind afxinet.h CGopherLocator afxinet.h CHeaderCtrl 标题通用控件 afxcmn.h CHotKeyCtrl 热键通用控件 afxcmn.h CHtmlStream afxisapi.h CHtmlView 实现Web Browser控件的视图类,能够访问当地或Web上的HTML文件。 afxhtml.h CHttpConnection afxinet.h CHttpFile afxinet.h CHttpFilter 创建并处理超文传输协议过滤器对象,该对象用于过滤用于HTTP请求的服务器通知 afxisapi.h CHttpFilterContext afxisapi.h CHttpServer Internet Server API(ISAPI)的包装类 afxisapi.h CHttpServerContext afxisapi.h CImageList afxcmn.h CInternetConnection afxinet.h CInternetException afxinet.h CInternetFile afxinet.h CInternetSession afxinet.h CIPAddressCtrl IP地址控件。类似于编缉框,该控件接收Internet 协议格式的地址 afxcmn.h CList afxtempl.h CListBox 列表框对象 afxwin.h CListCtrl 列表视通用控件 afxcmn.h ClistView 简化CListCtrl的使用,添加了对文件和视图的支持 afxcview.h CLongBinary afxdb_.h CMap afxtempl.h CMapPtrToPtr afxcoll.h CMapPtrToWord afxcoll.h CMapStringToOb afxcoll.h CMapStringToPtr afxcoll.h CMapStringToString afxcoll.h CMapWordToOb afxcoll.h CMapWordToPtr afxcoll.h CMDIChildWnd MDI(多文档界面)子框架窗口 afxwin.h CMDIFrameWnd afxwin.h CMemFile afx.h CMemoryException afx.h CMemoryState CMenu afxwin.h CMetaFileDC afxext.h CMiniFrameWnd 半高的框架窗口,主要用于浮动工具栏。一个小框架窗口没有最小化和最大化按钮,但其他都类似于正常的框架窗口 afxwin.h CMonikerFile afxole.h CMonthCalCtrl 月历控件,用于显示一个用户可选择日期的日历 afxdtctl.h CMultiDocTemplate afxwin.h CMultiLock afxmt.h CMutex afxmt.h CNotSupportedException afx.h CObArray afxcoll.h CObject afx.h CObList afxcoll.h COleBusyDialog afxodlgs.h COleChangeIconDialog afxodlgs.h COleChangeSourceDialog afxodlgs.h COleClientItem afxole.h COleCmdUI afxdocob.h COleControl afxctl.h COleControlModule afxctl.h COleConvertDialog afxodlgs.h COleCurrency afxdisp.h COleDataObject afxole.h COleDataSource afxole.h COleDateTime afxdisp.h COleDateTimeSpan afxdisp.h COleDBRecordView afxoledb.h COleDialog afxodlgs.h COleDispatchDriver afxdisp.h COleDispatchException afxdisp.h COleDocObjectItem afxole.h COleDocument 把一个文件看作为CDocItem对象的一个集合。包容器和服务器都需要这个结构,因为它们的文件必须能够包含OLE项 afxole.h COleDropSource afxole.h COleDropTarget afxole.h COleException afxdisp.h COleInsertDialog afxodlgs.h COleIPFrameWnd afxole.h COleLinkingDoc OLE包容器文件的基类,这些文件支持对它们所包含项的链接 afxole.h COleLinksDialog afxodlgs.h COleMessageFilter afxole.h COleObjectFactory afxdisp.h COlePasteSpecialDialog afxodlgs.h COlePropertiesDialog afxodlgs.h COlePropertyPage afxctl.h COleResizeBar afxole.h COleSafeArray afxdisp.h COleServerDoc OLE服务器文件的基类 afxole.h COleServerItem 为OLE项提供一个服务器界面 afxole.h COleStreamFile afxole.h COleTemplateServer afxdisp.h COleUpdateDialog afxodlgs.h COleVariant afxdisp.h CPageSetupDialog afxdlgs.h CPaintDC afxwin.h CPalette afxwin.h CPen afxwin.h CPictureHolder afxctl.h CPoint atltypes.h CPrintDialog 通用打印对话框,提供Print和Print Setup对话框中的功能 afxdlgs.h CPrintInfo CProgressCtrl 通用进程指示器控件 afxcmn.h CPropertyPage 代表属性表单中的一 afxdlgs.h CPropertyPageEx CPropertySheet 属性表,也叫做多选项卡对话框。一个属性表由一个CPropertySheet对象和几个CPropertyPage对象组成 afxdlgs.h CPropertySheetEx CPropExchange afxctl.h CPtrArray afxcoll.h CPtrList afxcoll.h CReBar afxext.h CReBarCtrl afxcmn.h CRecentFileList afxadv.h CRecordset 用于访问数据库表或查询的类 afxdb.h CRecordView 包含对话框控件的窗口 afxdb.h CRect atltypes.h CRectTracker afxext.h CResourceException afxwin.h CRgn afxwin.h CRichEditCntrItem afxrich.h CRichEditCtrl 用户能够输入和编缉文本的窗口,提供字符和程序段格式,以及对嵌入OLE项的支持 afxcmn.h CRichEditDoc afxrich.h CRichEditView afxrich.h CRuntimeClass CScrollBar 滚动条对象 afxwin.h CScrollView 可滚动的窗口,派生于CView afxwin.h CSemaphore afxmt.h CSharedFile afxadv.h CSingleDocTemplate afxwin.h CSingleLock afxmt.h CSize atltypes.h CSliderCtrl 提供包含一个滑块和可选的刻度线的窗口 afxcmn.h CSocket Windows Socket API的包装类 afxsock.h CSocketFile afxsock.h CSpinButtonCtrl 提供箭头按钮,用户可单击它,以增加或减少某个控件中的一个值 afxcmn.h CSplitterWnd afxext.h CStatic 用于标识另一个控件或给用户提供消息的简单文本框 afxwin.h CStatusBar afxext.h CStatusBarCtrl 提供一个层次窗口,通常放于父窗口的底部,用于显示关于应用程序的状态信息 afxcmn.h CStdioFile afx.h CString afx.h CStringArray afxcoll.h CStringList afxcoll.h CSyncObject afxmt.h CTabCtrl 允许应用程序在一个窗口或对话框的同一区域显示多个面 afxcmn.h CTime afx.h CTimeSpan afx.h CToolBar afxext.h CToolBarCtrl 工具栏通用控件 afxcmn.h CToolTipCtrl 提供工具提示控件的功能,它以一个小弹出窗口的样子显示,包含描述某个工具用途的一行文本 afxcmn.h CTreeCtrl 显示项的分层结构列表 afxcmn.h CTreeView 简化CTreeCtrl的用法 afxcview.h CTypedPtrArray afxtempl.h CTypedPtrList afxtempl.h CTypedPtrMap afxtempl.h CUIntArray afxcoll.h CUserException afxwin.h CView 用于显示程序数据的类 afxwin.h CWaitCursor afxwin.h CWinApp afxwin.h CWindowDC afxwin.h CWinThread 代表一个应用程序中的一个线程 afxwin.h CWnd afxwin.h CWordArray afxcoll.h ......
第1章 概述 1.1 MFC与C++ 1.2 VC++组件 1.3 安装 1.3.1 环境 1.3.2 安装过程 第2章 开发环境 2.1 主窗口 2.2 工具栏 2.2.1 Shaod工具栏 2.2.2 Build Mini-bar工具栏 2.3 菜单栏 2.3.1 File菜单 2.3.2 Edit菜单 2.3.3 View菜单 2.3.4 tasert菜单 2.3.5 Project菜单 2.3.6 Build菜单 2.3.7 Tools菜单 2.3.8 Window菜单 2. 3.9 Help菜单 2.4 工程工作区和主工作区 2.4.1 CtassView面板 2.4.2 FileView面板 2.4.3 ResourceView面板 2.4.4 主工作区 2.5 资源和资源编辑器 2.5.1 加速键编辑器 2.5.2 对话框编辑器 2.5.3 图形编辑器 2.5.4 菜单编辑器 2.5.5 字符串表编辑器 2.5.6 工具栏编辑器 2.6 版本信息编辑器 第 3章从 AppWisard开始 3.1 应用程序类型 3.2 创建简单的Windows应用程序 3.3 AppWizard——生成结果 3.3.1 分类 3.3.2 传递和接收 3.3.3 处理 3.4 实例 第4章 对话框及控件 4.1 对话框 4.1.1 组成与分类 4.1.2 CDiaiog类 4.1.3 创建对话框 4.1.4 通用对话框类 4.2 控件 4.2.1 标准Windows控件 4.2.2 其他控件 4.3 创建基于对话框的应用程序 4.4 控件栏 4.4.1 工具栏 4.4.2 状态栏 4.4.3 对话框栏 4.5 属性单、属性和向导 4.5.1 CPropertyPage类 4.5.2 CPropertySheet类 4.5.3 创建属性单 4.5.4 创建向导 4.6 实例 第5章 文档类和视类 5.1 文档类 5.2 文档模板类 5.3 视类 5.4 文档/视结构 5.5 菜单和加速键 5.5.1 菜单 5.5.2 添加消息处理函数 5.5.3 CMenu类 5.5.4 创建快捷菜单 5.5.5 添加加速键 5.6 实例 第6章 图形处理 6.1 设备环境 6.1.1 图形设备接口 6.1.2 设备环境映射模式 6.2 设备环境类 6.2.1 基类CDC类 6.2.2 用类CPaintDC绘图 6.2.3 用类CClientDC管理客户区 6.2.4 用类CWindowDC管理框架窗口 6.2.5 具有类CMetaFileDC的Windows元文件 6.3 GDI对象 6.3.1 类型 6.3.2 构造 6.3.3 选择 6.3.4 表示和使用颜色 6.4 画笔 6.4.1 分类 6.4.2 创建CPen类对象 6.4.3 选择堆画笔 6.4.4 绘画 6.4.5 实例 6.5 画刷 6.5.1 分类 6.5.2 创建CBrush对象 6.5.3 使用逻辑画刷 6.5.4 实例 6.6 字
第1章 概述 1.1 MFC与C++ 1.2 VC++组件 1.3 安装 1.3.1 环境 1.3.2 安装过程 第2章 开发环境 2.1 主窗口 2.2 工具栏 2.2.1 Shaod工具栏 2.2.2 Build Mini-bar工具栏 2.3 菜单栏 2.3.1 File菜单 2.3.2 Edit菜单 2.3.3 View菜单 2.3.4 tasert菜单 2.3.5 Project菜单 2.3.6 Build菜单 2.3.7 Tools菜单 2.3.8 Window菜单 2. 3.9 Help菜单 2.4 工程工作区和主工作区 2.4.1 CtassView面板 2.4.2 FileView面板 2.4.3 ResourceView面板 2.4.4 主工作区 2.5 资源和资源编辑器 2.5.1 加速键编辑器 2.5.2 对话框编辑器 2.5.3 图形编辑器 2.5.4 菜单编辑器 2.5.5 字符串表编辑器 2.5.6 工具栏编辑器 2.6 版本信息编辑器 第 3章从 AppWisard开始 3.1 应用程序类型 3.2 创建简单的Windows应用程序 3.3 AppWizard——生成结果 3.3.1 分类 3.3.2 传递和接收 3.3.3 处理 3.4 实例 第4章 对话框及控件 4.1 对话框 4.1.1 组成与分类 4.1.2 CDiaiog类 4.1.3 创建对话框 4.1.4 通用对话框类 4.2 控件 4.2.1 标准Windows控件 4.2.2 其他控件 4.3 创建基于对话框的应用程序 4.4 控件栏 4.4.1 工具栏 4.4.2 状态栏 4.4.3 对话框栏 4.5 属性单、属性和向导 4.5.1 CPropertyPage类 4.5.2 CPropertySheet类 4.5.3 创建属性单 4.5.4 创建向导 4.6 实例 第5章 文档类和视类 5.1 文档类 5.2 文档模板类 5.3 视类 5.4 文档/视结构 5.5 菜单和加速键 5.5.1 菜单 5.5.2 添加消息处理函数 5.5.3 CMenu类 5.5.4 创建快捷菜单 5.5.5 添加加速键 5.6 实例 第6章 图形处理 6.1 设备环境 6.1.1 图形设备接口 6.1.2 设备环境映射模式 6.2 设备环境类 6.2.1 基类CDC类 6.2.2 用类CPaintDC绘图 6.2.3 用类CClientDC管理客户区 6.2.4 用类CWindowDC管理框架窗口 6.2.5 具有类CMetaFileDC的Windows元文件 6.3 GDI对象 6.3.1 类型 6.3.2 构造 6.3.3 选择 6.3.4 表示和使用颜色 6.4 画笔 6.4.1 分类 6.4.2 创建CPen类对象 6.4.3 选择堆画笔 6.4.4 绘画 6.4.5 实例 6.5 画刷 6.5.1 分类 6.5.2 创建CBrush对象 6.5.3 使用逻辑画刷 6.5.4 实例 6.6 字

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧