请问如何在SDI的主框架类中获得视图类的指针?多谢。

liuyuan_buaa 2002-05-09 10:59:17
请问如何在CMainFrame中获得视图类的指针?
比如我的视图类是CTestView,用下面的代码编译不通过

CTestView* m_pWnd=(CTestView*)GetActiveWindow();

编译器老说CTestView类没有声明,把CTestView
的头文件包含进去也不行,又会出其它的错误。不知
是怎么回事?

...全文
1120 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
pcman1990 2002-05-09
  • 打赏
  • 举报
回复
GetActiveView()
ytweiwei 2002-05-09
  • 打赏
  • 举报
回复

MFC类中获得其他类指针(上)

当用visual c++的Application Wizard生成除了以外的应用程序时,将自动产生视图类,文档类,主帧窗口类,应用程序类等等.

一般说来,程序的核心数据及操作在文档类中实现.跟界面有关的数据及操作在视图类中实现.当需要

在某个类中使用不属于该类的数据时,必须要取得概述据所属的类的指针.从视图类获得文档类的指针

是很容易的,用GetDocument()即可,这在一般的MFC文当中有介绍,也是编程中纪委常用的操作,比如视图类

在进行重画等操作时,往往要用到文档类中的数据.然而只是从视图类中获得文档类得指针是远远不够的,

每个类都有获得其他类指针的一套方法.现归纳如下.

为方便说明,现假设已用app wizard生成了一个SDI应用程序test,包含如下几个类:

CTestApp,CTestDoc,CTestView,CMaimFrame

1:从视图类获得文档类指针

如前所述,在视图类中需要引用文档类的地方之前,使用如下语句:

CTestDoc *pDoc=(CTestDoc *)GetDocument();

以后便可使用pDoc指针访问文档类.

此处的强制类型转换在test应用程序中并不需要,因为该程序只有一个视图类,并且在InitInstance()

重用SDI文档模板进行了装配.你可以在Test.cpp种的InitInstance()方法中看到如下语句:

CSingleDocTemplate *pDocTemplate;

pDocTemplate=new CSingleDocTemplate(IDR_MAINRAME,RUNTIME_CLASS(CTestDoc),RUNTIME_CLASS(CMainFrame),RUNTIME_CLASS(CTestView));

AddDocTemplate(pDocTemplate);

以及TestView.h中的定义:

inline CTestDoc *CTestView::GetDocument()

{return (CTestDoc *)m_pDocument;}

简而言之,就是说CTestView的GetDocument()函数自然而然的认为CTestDoc是与它"相配"的.当生成了一个具有多个视图类的应用程序时,(如用CSplitterWnd将窗口分为两栏,但这两栏并非从同一种视图类派生就属于这种情况。具体实现在本文讨论范围之外),只有一个视图类能与唯一的文档类用文档模板进行装配,那么在另外一个未经装配的类中要取得文档类的指针,则需进行强制类型转换。

2:从文档类取得视图类指针

CDocument类提供了两个函数用于视图类的定位: GetFirstViewPosition()和 GetNestView(),

virtual POSITION GetFirstViewPosition() const;

virtua CView * GetNextView (POSITION& rPosition )const;

  注意:GetFirstView()括号中的参数用的是引用方式,因此执行后值可能改变.

  GetFitstViewPosition()用于返回第一个视图位置(返回的并非视图类指针,而是一个POSITION类型值),GetNextView()有两个功能:返回下一个视图类的指针以及用引用调用和方式来改变传入的POSITION类型参数的值。很明显,在Test程序中,只有一个视图类,因此只需将这两个函数调用一次即可得到CTestView的指针如下(需定义一个POSITION结构变量来辅助操作):

  CTestView*pTestView;

POSITISONpos=GetFirstViewPosition();

pTestView=GetNextView(pos);

这样,便得到了CTestView类的指针pTestView.执行完这几句后,变量pos=NULL,因为没有下一个视图类,自然也没有下一个视图类的POSITION.

但是这几条语句太简单,不具有太强的通用性和安全特征,当象前面说的那样,当要在多个视图类中返回某个指定类的指针时,我们需要遍历所有视图类,直到找到指定类为止。判断一个指针指向的是否是某个类的实例时,可用IsKindOf()成员函数是行检查,如:

  pView->IsKindof(RUNTIME-CLASS(CTestView));

即是检查pView所指是否是CTestView类。

  有了以上基础,我们可以从文档类取得任何类的指针。为了方便,我们将其作为一个文档类和成员函数,它有一个参数,表示要获得哪个类的指针,它返回的就是这个类的指针。实现如下:

  CView * CTestDoc:: GetView(CRuntimeClass*pClass)

{CView*pView;POSITIONpos=GitFirstViewPosition();while(pos!=NULL){pView=GitNextView(pos);

if(pView->IsKindOf(pClass))break;}

if(!pView->IsKindof(pClass)){AfxMessageBox("Connot locate the View.");

return NULL;}

return pView;}

  其中用了两次视图类的成员函数IsKindOf()判断,是因为退出while循环有三种可能:

1.pos为NULL,即已经不存在下一个视图供操作;

2.pView已符合要求;

3.1和2同时满足。这是因为Get-NextView()的功能是将pos改变成下一个视图的位置同时返回当前视图指针,因此pos是pView的下一个视图类的POSITION,完全有可能即是pos==NULL又是pView符合需要。当所需的视图是最后一个视图类时就如此。因此需采用两次判断。

  使用该函数应遵循如下格式(以取得CTestView指针为例):

CTestView*pTestView=(CTestView*)GetView(RUNTIME-CLASS(CTestView));

RUNTIME-CLASS()是一个宏,可以简单地理解它的作用:

  将类和名字转化为CRuntimeClass类指针。

  至于强制类型转换也是为了安全特性考虑的,因这从同一个基类派生的类之间以及它们与基类之间的指针类型是互相兼容的。这种强制类型转换也许并不必要,但能避免一些可能出现的麻烦。

3:从一个视图类取得另一个视图类的指针

综合1和2,很容易得出视图类之间互相获得指针的方法:就是用文档类作中转,先用1的方法得到文档类的指针,再用2的方法,以文档的视图定位函数:

(假设要从CTestAView中取得指向其它视图类的打针)

CView*CTestAView::GetView

(CRuntimeClass*pClass)

{CTestDoc*pDoc*pDoc=

(CTestDoc*)GetDecument();

CView*pView;

POSITION pos=pDoc->GetFistViewPosition();

while(pos!=NULL){

pView=pDoc->GetNextView(pos);

if( pView->IsKindOf(pClass) )

break; }

if(!pView->IsKindOf(pClass)){

AfxMessageBox("Connot Iocate the View.");

return NULL;}

return pView;}

这个函数和2中的GetView()相比,一是多了第一名以取得文档类指针,二是在GetFirstViewPosition()和GetNextView()前加上了文档类指针,以表示它们是文档类成员函数。

有了此函数要从CTestAView中取得CTestBView的打针时,只需如下:

CTestBView

CTestBView*pTestBView=(CTestBView*)

GetView(RUNTIME-CLASS(CTestBView));

4。从主帧窗口类获得视图类指针

对本文所举的Test这种SDI程序来说,这是很简单的,只需用CFrameWnd类的GetAcTIVEvIEW()成员函数即可。格式如下:

CFrameWnd::GetActiveView()

但将此函数应用在MDI应用程序的CMDIFrameWnd类中时,并不象所想的样获得当前活动子窗口的视图类,而是返回NULL。这是一个概念性问题。在MDI程序中,CMDIFrameWnd没有和任何视图类发生关系,也就是说没有视图类直接隶属于它,只有子窗口类CMDIChildWnd才是所有子窗口视图类的父窗口。而子帧窗口的父窗口才是CFrameWnd。因此,在MDI程序中获得活动视图类的正确方法应为:先获得活动子帧窗口,再从子帧窗口中获得活动视图类:(以下这段代码与VC++的InfoViewer中GetActiveView的示范代码类似,并有详细说明, 限于篇幅,此处不一一说明)

//获得活动子帧窗口

CMDIChildWnd*pChild=(CMDIChildWnd*)

GetActiveFrame();

//或:CMDIChildWnd*pChild=MDIGetActive();

//获得活动子帧窗口的活动视图

CMyView*pView=(CMyView*)pChild->GetAetiveView();

5从视图类中获得主帧窗口类指针

用函数CWnd::GetParentFrame()

可达到目的。它的工作原理是在父窗口链中搜索,直到找到 CFrameWnd或其派生类为止,并返回其指针 。用法在 InfoViewer中有详细介绍。

6在任何类中获得应用程序类

用 MFC全局函数AfxGetApp()可做到。

7从应用程序类中获得生帧窗口类

CWinThread类有一个数据成员叫 m-pMainWnd,由于 CWinApp类由zCWinThread 类派生而来,我们的应用程序类又由CWinApp 派生而来,所以我们的 CTestAPP类也有一个m-pMainWnd 成员, 它所指向的即是CMainFrame 类。(需进行合适的强制类型转换)。

例:在应用程序类中对生帧窗口类的一个整型变量nIntVar 赋值:

((CMainFrame*)m-pMainWnd)->nIntVar=100;

几点注意:

有了以上几种指针获取方法,已以因以在类中方便地获得其它类的指针,使程序更加灵活高效。但有两点需注意:

1在类 A中获得类 B的指针时,类 A应包含类B 的头文件

例:在 CTestView中欲获得 CMainFrame的指针,应在 TestView.cpp文件头部加入 #include"MainFrm.h"。否则通不过编译。

2在很多时候要进行强制类型转换,并要注意括号的括法

由于派生类和父类指针类型的兼容,使明确区分各个类变得十分重要。在拿不准的时候,最好加上强制类型转换。比如:

CTestBView*pTestBView=(CTestBView*)

GetView(RUNTIME_CLASS(CTestBView));

使获得的类指针强 成 CTestBView*型而非 CView*型。

另外由于指针成员运算符“->”的运算优先级高于强制类型转换,因此括号的定法很重要。见例:

(CMainFrame*)m-pMainWnd->nIntVar=100;

这样的写法是不正确的, 相当于(CMainFrame*) 类型转换在对nIntVar 进行转换,将在编译时出错,告知无法将整型转换成CMainFrame* 型。正确的写法是:

((CMainFrame*)m-pMainWnd)->nIntVar=100

这无疑上个微不足道的小问题,然而也正因为它微小且不易觉,如果不注意的话, 可能会浪费掉不少时间.
第一部分 Visual C++ 2010开发与新特性 第1章 Visual C++ 2010开发环境简介 1 1.1 Visual C++ 2010简介 1 1.2 Visual C++ 2010下载安装指南 1 1.3 Visual C++ 2010要特点与 1.3 新特性 3 1.4 Visual C++ 2010开发环境操作 1.4 指南 6 1.4.1 创建Visual C++应用程序 6 1.4.2 Visual C++ 2010菜单介绍 9 1.5 Visual C++ 2010 MFC简介 12 1.6 Visual C++ 2010 CLR简介 13 1.7 Visual C++ 2010 64位编程 14 1.8 支持新的C++语言标准 14 1.8.1 支持新的C++语言标准 1.8.1 (C++ 0x) 14 1.8.2 Lambda表达式 15 1.8.3 静态断言static_assert 17 1.8.4 auto关键字 18 1.8.5 右值引用 19 1.8.6 安全数据型 22 1.8.7 移动构造 23 1.9 支持开发并行程序 26 1.9.1 运行库支持native代码 26 1.9.2 调试和分析工具 29 1.10 对MFC的增强 31 1.10.1 任务对话框CTaskDialog 31 1.10.2 重启管理器(Restart 1.10.2 Manager)支持 33 1.10.3 支持新的用户界面风格 34 第2章 MFC应用程序框架 37 2.1 用MFC向导生成应用程序 37 2.1.1 生成的程序框架 37 2.1.2 生成的应用程序型 43 2.1.3 向导生成工程文件简介 46 2.2 应用程序框架分析 46 2.2.1 框架简介 47 2.2.2 MFC应用程序运行流程 50 2.2.3 应用程序窗口 51 2.2.4 消息机制与消息循环 59 2.3 文档与视图 65 2.3.1 文档结构分析 65 2.3.2 视图结构分析 65 2.3.3 文档与视图的关系 67 2.3.4 SDI应用程序分析 69 2.3.5 MDI应用程序分析 69 2.4 工具栏与状态栏 69 2.4.1 工具栏 70 2.4.2 状态栏 78 2.5 MFC新功能--Office 2007 2.5 风格程序分析 85 2.6 MFC新功能--Visual Studio 2.6 风格程序分析 90 2.7 MFC新功能--Windows资源 2.7 管理器风格程序分析 98 2.8 应用程序框架对象分析 100 2.8.1 视图对文档的调用 100 2.8.2 在框架获得当前的文档 2.8.2 视图对象指针 101 2.8.3 获得应用程序对象的指针 101 2.8.4 从应用对象中获得框架 2.8.4 对象的指针 101 2.9 小结 102
相关网站 7 设置窗口最大最小 7 设置窗口标题 7 去掉菜单 7 修改应用程序图标 7 系统只能允许一个程序运行 7 在状态栏中添加时间 8 研究调用存储过程 8 得到本机的IP地址 9 vc调用chm文件 10 最高窗口的实现 10 防止Edit框中的Password不保密 11 在同一系统中显示GB字符和BIG5字符 12 改变颜色(整个窗体的控件) 13 改变工程表头栏 13 ◆如何找开一个DiaLog的窗口◆ 13 ◆得到系统中设置的窗口颜色◆ 14 ◆如何让点下去的菜单成为V状态◆ 14 ◆如何调用WINDOWS的颜色板◆ 14 ◆如何产生一个MDI的窗口◆ 15 ◆如何让一个文本控件显示出值◆ 15 ◆如何让一个控件显示出相应的值◆ 16 ◆在调试中怎么样MESSAGEBOX一个数字◆ 16 ◆如何控制控件的焦点◆ 16 ◆如何对析构函数中对象进行释放◆ 16 ◆如何关闭一个模态窗口◆ 17 ◆如何将一个提示的声音发到声卡上◆ 17 ◆如何得到打开exe的带的参数◆ 17 ◆如何在框架上建立一个工具条◆ 17 ◆如何生成一个窗口下方的状态条◆ 18 ◆如何让Cscrollview控制其可以流动区域大小◆ 19 ◆MFC中控件的一些基本控制方法◆ 19 ◆如何让一个数字型变量化为字符型变量◆ 19 ◆如何使用“拉动条”,“上下选择”◆ 19 ◆如何使用postmessage来异步触发某事件◆ 21 ◆如何使用Sendmessage来异步触发某事件◆ 22 ◆如何修改父的相关控件属性◆ 22 ◆如何在程序中得到控件的名◆ 22 ◆如何控制菜单的事件程序◆ 22 ◆如何使用控件中的数据录入的控制属性◆ 23 ◆哪些函数是文档、视图相互处理用的◆ 23 ◆如何建立一个基于对话框一程序◆ 23 ◆如何建立一个线程◆ 24 ◆如何让窗口产生一个图标(从应用程序资源中取出)◆ 24 ◆如何得到一个edit的录入的值◆ 24 ◆如何启动TIMER事件◆ 25 ◆如何使用ctrllist控件实现表格◆ 25 ◆如何从INI文件中得到值◆ 25 ◆如何将图标文件写到窗口中◆ 26 ◆如何得到本机的IP地址◆ 26 ◆如何使用全局变量◆ 26 ◆如何让一个字符加上回车、换行◆ 26 ◆如何定义、使用结构◆ 26 ◆如何在任意程序中显示MessageBox◆ 27 ◆如何在程序判断出debug状态◆ 27 ◆当对话框中有一个滚动条是,当滚动滚动条时的消息控制函数◆ 27 ◆将一个CWnd指针转换成一个控件ID(整数)注意用GetDlgItem()函数是从一个控件ID转换成一个CWnd的指针◆ 28 ◆如果在对话框中自定义一个消息的方法,假设对话框名为CXX◆ 28 ◆消息传递◆ 29 ◆在一个函数引用另外的一个对话框◆ 29 ◆全局函数的申明问题◆ 29 ◆在应用程序中*APP.CPP中的InitInstance()的事件◆ 29 ◆给执行文件加一个图标◆ 30 ◆如何在全局函数中通过传入的窗口句柄操作窗口◆ 30 ◆如何使桌面文字背景透明?◆ 30 ◆怎样才能在VC里产生一个唯一的字符串◆ 31 ◆如何隐藏进程(在系统状态栏和进程列表里不可见)◆ 31 ◆如何得到一个确定大小的视?◆ 31 ◆如何实现点击窗口任意地方拖动窗口?◆ 32 ◆如何在启动时阻止MDI应用程序创建一个新文档?◆ 33 ◆如何在多文档MFC程序中制作独立的File|New菜单?◆ 33 ◆如何检测视是否处于分割状态?◆ 34 ◆如何使程序保持极小状态?◆ 34 ◆如何确定当前进程实例是否为唯一实例?◆ 35 ◆如何向一个文档附加多个视?◆ 35 ◆如何获得文件的图标、属性、大小、型等参数?◆ 36 ◆如何得到鼠标下面的窗口?◆ 37 ◆设置鼠标的形状◆ 38 ◆在对话框中设置编辑EDIT的值◆ 38 1. 如何获取应用程序的实例句柄? 38 2. 如何通过代码获得应用程序窗口的指针? 38 3. 如何在程序中获得其他程序的图标? 38 4. 如何编程结束应用程序?如何编程控制windows的重新引导? 39 5.怎样加载其他的应用程序? 39 6. 确定应用程序的路径 39 7. 获得各种目录信息 40 8. 如何自定义消息 40 9. 如何改变窗口的图标? 40 10. 如何改变窗口的 缺省风格? 40 11. 如何将窗口居中显示? 41 12. 如何让窗口和 MDI窗口一启动就最大化和最小化? 41 13. 如何使程序保持极小状态? 41 14. 如何限制窗口的 大小? 41 15. 如何使窗口不可见? 41 16. 如何使窗口始终在最前方? 41 17、如何创建一个字回绕的CEditView 42 18、通用控件的显示窗口 42 19、移动窗口 42 20、重置窗口的大小 42 21、如何单击除了窗口标题栏以外的区域使窗口移动 43 22、如何改变视窗的背景颜色 43 23、如何改变窗口标题 44 24、如何防止框窗口在其说明中显示活动的文档名 44 25、如何获取有关窗口正在处理的当前消息的信息 45 26、如何创建一个不规则形状的窗口 45 27、如何在代码中获取工具条和状态条的指针 47 28、如何使能和禁止工具条的工具提示 47 29、如何设置工具条标题 48 30、如何创建和使用无模式对话框 48 31、如何在对话框中显示一个位图 49 32、如何改变对话或窗体视窗的背景颜色 49 33、如何获取一个对话控件的指针 50 34、如何禁止和使能控件 50 35、如何改变控件的字体 50 36、如何在OLE控件中使用OLE_COLOR数据型 51 37、在不使用通用文件打开对话的情况下如何显示一个文件列表 51 38、为什么旋转按钮控件看起来倒转 51 39为什么旋转按钮控件不能自动地更新它下面的编辑控件 52 40、如何用位图显示下压按钮 52 41、如何一个创建三态下压按钮 52 42、如何动态创建控件 52 43、如何限制编辑框中的准许字符 53 44、如何改变控件的颜色 54 45、当向列表框中添加多个项时如何防止闪烁 55 46、如何向编辑控件中添加文本 55 47、如何访问预定义的GDI对象 55 48、如何获取GDI对象的属性信息 56 49、如何实现一个橡皮区矩形 56 50、如何更新翻转背景颜色的文本 58 51、如何创建一个具有特定点大小的字体 58 52、如何计算一个串的大小 59 53、如何显示旋转文本 59 54、如何正确显示包含标签字符的串 60 55、串太长时如何在其末尾显示一个省略号 60 56、如何快速地格式化一个CString对象 61 57、为什么即使调用EnableMenuItem菜单项后,菜单项还处于禁止状态 61 58、如何给系统菜单添加一个菜单项 61 59、如何确定顶层菜单所占据的菜单行数 62 60、在用户环境中如何确定系统显示元素的颜色 62 问:如何控制窗口框架的最大最小尺寸? 63 问:如何改变窗口框架的颜色? 63 问:如何将应用程序窗口置于屏幕正中? 64 问:VC6.0对VC5.0的兼容性? 64 问:打印和打印机的问题? 64 问:CRichEditCtrl滚动条的问题? 65 问:从数据库中读大于32k的内容? 65 问:如何获得CRichEditCtrl中字符的位置? 66 问:如何限制mdi子框架最大化时的大小? 66 问:如何切换视口而不破坏它们? 66 问:改变列表控制时发生闪烁现象? 68 问:处理列表控件可见项的问题? 68 问:产生线程的问题? 68 问:CFile使用了缓冲区吗? 69 问:DAO的密码? 69 问:如何知道CListBox什么时候滚动了? 70 问:视口的不活动性如何处理? 70 问:如何使用COleClientItem的IDispatch接口? 70 问:关于用户自定义的消息使用? 71 问:在打开一个文档时退出? 71 问:在CListCtrl控件中多选择项的删除? 71 问:工作线程的登录状态? 72 问:如何控制菜单的大小? 72 问:改变LVIS_SELECTED的状态颜色? 73 问:如何只存储文档的某一部分? 73 问:保存工具条菜单有bug吗? 73 问:Tip of the day的bug 73 问:如何让我的mfc应用程序可以在最上面? 74 问:如何增加视图中ActiveX控件的事件处理函数? 75 问:如何创建一个动态的Tree控件? 75 问:SDI程序开始时不打开文档? 75 问:List控件中整栏选择? 75 问:如何重载MRU文件? 76 问:CImageList控件中图象橙色被显示为黄色? 76 问:无法正确改变应用程序的图标? 78 问:工具条状态的问题? 78 问:在SDI应用程序中使用Active控件? 79 问:有RichEdit控件的对话框无法正常显示? 79 问:DLL中的模板成员函数? 79 问:CFormView中的上下文帮助? 80 问:CArchive的WriteObject函数问题? 80 问:RegisterWindowMessage中的BroadcastSystemMessage如何处理? 80 问:CListCtrl中选择变化时如何获得通知? 81 问:如何向ATL-COM对象传送一个数组? 81 问:如何选择CTreeCtrl中的节点文本进行编辑? 82 问:如何改变默认的光标形状? 82 问:如何用键盘滚动分割的视口? 83 问:如何在线程中处理状态条? 83 问:如何阻止WINDOWS关闭? 83 问:如何使一个按钮Disable? 83 问:怎样从MFC扩展动态链结库(DLL)中显示一个对话框? 84 问:想隐藏用户界面怎么办? 85 问:如何实现SDI与MDI的转换? 85 问:CDC中的竖排文本? 86 问:如何激活变灰的弹出菜单? 86 问:线程消息? 87 问:TreeCtrl控制的显示速度太慢? 87 怎样使窗口总是浮现在最上面? 88 改变拖放时的光标外形? 89 如何定位到最新的记录上? 90 MVC和Doc-View? 90 被禁止(Disable)的控件如何改变其文本或背景色? 90 有ODBC的查找函数吗? 91 多个MRU菜单的问题 91 校验框问题 93 CFormView的Fold按钮 94 视的背景色 94 隐藏控件台程序 94 修改SDI窗口标题 95 焦点问题 95 从一个OCX调用另一个OCX的方法。 95 得到视 96 字符转化时间 96 二进制还是文本方式? 99 发送消息 99 怎样知道菜单运行时的状态 99 DLL编译出错 100 通用控件的显示窗口 100 如何禁止和使能控件 100 如何在OLE控件中使用OLE_COLOR数据型 100 在不使用通用文件打开对话的情况下如何显示一个文件列表 100 为什么旋转按钮控件看起来倒转 101 为什么旋转按钮控件不能自动地更新它下面的编辑控件 101 如何动态创建控件 101 如何显示旋转文本 101 在TreeList中使用Edit功能 102 TreeList control中使用check box 103 有关属性对话框(property sheet )的几个提示 108 在MFC加入"这是什么?"的帮助提示 111 精通工具条 112 如何改变视窗的背景颜色 112 为MFC应用程序添加全屏幕显示功能 112 VC常用数据型使用转换详解 114 用Visual C++操作INI文件 117 单文档加入背景图 119 更新窗体方法 120 更改窗口控件的能动和不能动(以按钮控件为例) 120 窗口响应键盘事件 120 密码框输入受保护 121 最高窗口的实现 122 实现窗口动态写入汉字和改变汉字颜色形状 123
相关网站 7 设置窗口最大最小 7 设置窗口标题 7 去掉菜单 7 修改应用程序图标 7 系统只能允许一个程序运行 7 在状态栏中添加时间 8 研究调用存储过程 8 得到本机的IP地址 9 vc调用chm文件 10 最高窗口的实现 10 防止Edit框中的Password不保密 11 在同一系统中显示GB字符和BIG5字符 12 改变颜色(整个窗体的控件) 13 改变工程表头栏 13 ◆如何找开一个DiaLog的窗口◆ 13 ◆得到系统中设置的窗口颜色◆ 14 ◆如何让点下去的菜单成为V状态◆ 14 ◆如何调用WINDOWS的颜色板◆ 14 ◆如何产生一个MDI的窗口◆ 15 ◆如何让一个文本控件显示出值◆ 15 ◆如何让一个控件显示出相应的值◆ 16 ◆在调试中怎么样MESSAGEBOX一个数字◆ 16 ◆如何控制控件的焦点◆ 16 ◆如何对析构函数中对象进行释放◆ 16 ◆如何关闭一个模态窗口◆ 17 ◆如何将一个提示的声音发到声卡上◆ 17 ◆如何得到打开exe的带的参数◆ 17 ◆如何在框架上建立一个工具条◆ 17 ◆如何生成一个窗口下方的状态条◆ 18 ◆如何让Cscrollview控制其可以流动区域大小◆ 19 ◆MFC中控件的一些基本控制方法◆ 19 ◆如何让一个数字型变量化为字符型变量◆ 19 ◆如何使用“拉动条”,“上下选择”◆ 19 ◆如何使用postmessage来异步触发某事件◆ 21 ◆如何使用Sendmessage来异步触发某事件◆ 22 ◆如何修改父的相关控件属性◆ 22 ◆如何在程序中得到控件的名◆ 22 ◆如何控制菜单的事件程序◆ 22 ◆如何使用控件中的数据录入的控制属性◆ 23 ◆哪些函数是文档、视图相互处理用的◆ 23 ◆如何建立一个基于对话框一程序◆ 23 ◆如何建立一个线程◆ 24 ◆如何让窗口产生一个图标(从应用程序资源中取出)◆ 24 ◆如何得到一个edit的录入的值◆ 24 ◆如何启动TIMER事件◆ 25 ◆如何使用ctrllist控件实现表格◆ 25 ◆如何从INI文件中得到值◆ 25 ◆如何将图标文件写到窗口中◆ 26 ◆如何得到本机的IP地址◆ 26 ◆如何使用全局变量◆ 26 ◆如何让一个字符加上回车、换行◆ 26 ◆如何定义、使用结构◆ 26 ◆如何在任意程序中显示MessageBox◆ 27 ◆如何在程序判断出debug状态◆ 27 ◆当对话框中有一个滚动条是,当滚动滚动条时的消息控制函数◆ 27 ◆将一个CWnd指针转换成一个控件ID(整数)注意用GetDlgItem()函数是从一个控件ID转换成一个CWnd的指针◆ 28 ◆如果在对话框中自定义一个消息的方法,假设对话框名为CXX◆ 28 ◆消息传递◆ 29 ◆在一个函数引用另外的一个对话框◆ 29 ◆全局函数的申明问题◆ 29 ◆在应用程序中*APP.CPP中的InitInstance()的事件◆ 29 ◆给执行文件加一个图标◆ 30 ◆如何在全局函数中通过传入的窗口句柄操作窗口◆ 30 ◆如何使桌面文字背景透明?◆ 30 ◆怎样才能在VC里产生一个唯一的字符串◆ 31 ◆如何隐藏进程(在系统状态栏和进程列表里不可见)◆ 31 ◆如何得到一个确定大小的视?◆ 31 ◆如何实现点击窗口任意地方拖动窗口?◆ 32 ◆如何在启动时阻止MDI应用程序创建一个新文档?◆ 33 ◆如何在多文档MFC程序中制作独立的File|New菜单?◆ 33 ◆如何检测视是否处于分割状态?◆ 34 ◆如何使程序保持极小状态?◆ 34 ◆如何确定当前进程实例是否为唯一实例?◆ 35 ◆如何向一个文档附加多个视?◆ 35 ◆如何获得文件的图标、属性、大小、型等参数?◆ 36 ◆如何得到鼠标下面的窗口?◆ 37 ◆设置鼠标的形状◆ 38 ◆在对话框中设置编辑EDIT的值◆ 38 1. 如何获取应用程序的实例句柄? 38 2. 如何通过代码获得应用程序窗口的指针? 38 3. 如何在程序中获得其他程序的图标? 38 4. 如何编程结束应用程序?如何编程控制windows的重新引导? 39 5.怎样加载其他的应用程序? 39 6. 确定应用程序的路径 39 7. 获得各种目录信息 40 8. 如何自定义消息 40 9. 如何改变窗口的图标? 40 10. 如何改变窗口的 缺省风格? 40 11. 如何将窗口居中显示? 41 12. 如何让窗口和 MDI窗口一启动就最大化和最小化? 41 13. 如何使程序保持极小状态? 41 14. 如何限制窗口的 大小? 41 15. 如何使窗口不可见? 41 16. 如何使窗口始终在最前方? 41 17、如何创建一个字回绕的CEditView 42 18、通用控件的显示窗口 42 19、移动
目录 (1) 如何通过代码获得应用程序窗口的 指针? 5 (2) 确定应用程序的路径 6 (3) 如何在程序中获得其他程序的 图标? 6 (4) 获得各种目录信息 7 (5) 如何自定义消息 8 (6) 如何改变窗口的图标? 8 (7) 如何改变窗口的缺省风格? 8 (8) 如何将窗口居中显示? 9 (9) 如何让窗口和 MDI窗口一启动就最大化和最小化? 10 (10) 如何限制窗口的大小? 10 (11) 如何使窗口不可见? 10 (12) 如何创建一个字回绕的CEditView 10 (13) 如何使程序保持极小状态? 11 (14) 移动窗口 11 (15) 通用控件的显示窗口 12 (16) 重置窗口的大小 12 (17) 如何单击除了窗口标题栏以外的区域使窗口移动 12 (18) 如何改变视窗的背景颜色 14 (19) 如何改变窗口标题 15 (20) 如何防止框窗口在其说明中显示活动的文档名 17 (21) 如何获取有关窗口正在处理的当前消息的信息 17 (22) 如何在代码中获取工具条和状态条的指针 18 (23) 如何使能和禁止工具条的工具提示 18 (24) 如何创建一个不规则形状的窗口 19 (25) 如何获取应用程序的 实例句柄? 23 (26) 如何编程结束应用程序? 23 (27) 如何创建和使用无模式对话框 24 (28) 如何防止框窗口在其说明中显示活动的文档名 26 (29) 如何在代码中获取工具条和状态条的指针 27 (30) 怎样加载其他的应用程序? 27 (31) 如何在代码中获取工具条和状态条的指针 28 (33) 如何设置工具条标题 29 (34) 如何使窗口始终在最前方? 30 (35) 如何在对话框中显示一个位图 30 (36) 如何改变对话或窗体视窗的背景颜色 30 (37) 如何获取一个对话控件的指针 32 (38) 如何禁止和使能控件 33 (39) 如何改变控件的字体 33 (40) 如何在OLE控件中使用OLE_COLOR数据型 35 (41) 在不使用通用文件打开对话的情况下如何显示一个文件列表 35 (42) 为什么旋转按钮控件看起来倒转 36 (43) 为什么旋转按钮控件不能自动地更新它下面的编辑控件 37 (44) 如何用位图显示下压按钮 37 (45) 如何一个创建三态下压按钮 38 (46) 如何动态创建控件 38 (47) 如何限制编辑框中的准许字符 38 (48) 如何改变控件的颜色 40 (49) 当向列表框中添加多个项时如何防止闪烁 43 (50) 如何向编辑控件中添加文本 43 (51) 如何访问预定义的GDI对象 44 (52) 如何获取GDI对象的属性信息 45 (53) 如何实现一个橡皮区矩形 46 (54) 如何更新翻转背景颜色的文本 49 (55) 如何创建一个具有特定点大小的字体 50 (56) 如何计算一个串的大小 51 (57) 如何显示旋转文本 52 (58) 如何正确显示包含标签字符的串 54 (59) 如何快速地格式化一个CString对象 55 (60) 串太长时如何在其末尾显示一个省略号 55 (61) 为什么即使调用EnableMenuItem菜单项后,菜单项还处于禁止状态 56 (62) 如何给系统菜单添加一个菜单项 56 (63) 如何确定顶层菜单所占据的菜单行数 58 (64) 在用户环境中如何确定系统显示元素的颜色 59 (65) 如何查询和设置系统参数 59 (66) 如何确定当前屏幕分辨率 60 (67) 如何使用一个预定义的Windows光标 60 (68) 如何检索原先的Task Manager应用程序使用的任务列表 61 (70) 在哪儿创建临文件 63 (71) 我怎样才能建立一个等待光标? 64 (73) 如何访问桌面窗口 65 (74) 什么是COLORREF? 我该怎样用它? 66 (75) AppWizard所产生的STDAFX文件是干什么用的? 66 (76) 我在我的程序中是了CDWordArray。我向它添加了约10,000个整数,这使得它变得非常非常慢。为什么会这么糟? 67 (77) 我该如何改变MDI框架窗口的子窗口的大小以使在窗口以一定的大小打开? 67 (78) 在我的程序的某些部分,我可以调用 MessageBox 函数来建立一个信息对话框,例如在视。 67 (79) 我需要在我的程序中设置全局变量,以使文档中的所有都能访问。我应该吧它放到哪儿? 68 (80) 我听说MFC可以发现内存漏洞,我怎样使用该特性? 68 (81) 我怎样才能在我的应用程序中循环浏览已经打开的文档? 68 (82)才能在我的应用程序中循环浏览已经打开的视? 68 (83)数PreCreateWindow是干什么用的? 69 (84)该怎样防止MFC在窗口标题栏上把文档名预置成应用程序名? 69 (85) 我应该怎样防止MFC在窗口标题栏上添加文档名? 69 (86)我应该如何改变视窗口的大小? 69 (87)我有一无模式对话框。我怎样才能在窗口退出时删除CDialog对象? 69 (88)为什么把“delete this”放在PostNcDestroy中而不是OnNcDestroy? 69 (89) File菜单中的MRU列表是从哪儿来的?列表中的名字放在哪儿了?我怎样才能改变列表中项目的最大值? 70 (90) 我在菜单中添加了新的项。但是,当我选该项时,在状态栏上没有出现任何提示信息。为什么? 70 (91) 我怎样才能在应用程序的缺省系统菜单中加上一些东西? 70 (92) 我建立了一个对话框。但是当我显示该对话框时,第一个编辑框总是不能获得焦点,我必须单击它来使它获得焦点。我怎样才能使第一个编辑框在对话框打开时就获得焦点? 71 (93) 我怎样才能使一个窗口具有“always on top”特性? 71 (94) 我要为我的form view添加文档模板。我先建立了对话框模板,然后使用ClassWizard建立了基于CFormView的新,它也是从CDocument继承来的。我还建立了相应的资源并在InitInstance中添加了新的文档模板。但是,当我试图运行该程序时,出现了Assertion信息。为什么? 71 (95) 我在一对话框中有一列表框,我需要tabbed列表框中的项目。但是,当我处理含有tab字符(用AddString添加的)的列表项时,tab被显示成小黑块而没有展开。哪儿出错了? 72 (96) 我建立了一个应用程序,并使用了CRecordset。但是,当我运行该程序时,它试图要访问数据库,并给出“Internal Application Error”对话框。我应该怎样做? 72 (97) 我用ClassWizard建立了一个。但是,我把名字取错了,我想把它从项目中删除,应该如何做? 73 (98) 当我打开应用程序中的窗口时,我要传递该窗口的矩形尺寸。该矩形指定了窗口的外围大小,但是当我调用GetClientRect时,所得到的尺寸要比所希望的值要小(因为工具栏和窗口边框的缘故)。有其它方法来计算窗口的尺寸吗? 73 (99) 我在文档设置了一个整型变量。但是,当我试图把该变量写入Serialize函数中的archive文件中时,出现了型错误。而文档中的其它变量没有问题。为什么? 73 (100) 如何控制菜单的大小? 74 (101) 改变LVIS_SELECTED的状态颜色? 75 (102) 如何只存储文档的某一部分? 76 (103) 保存工具条菜单有bug吗? 76 (104) Tip of the day的bug 76 (105) 如何可以让我的程序可以显示在其它的窗口上面? 77 (106) 如何控制窗口框架的最大最小尺寸? 79 (107) 如何改变窗口框架的颜色? 81 (108) 如何将应用程序窗口置于屏幕正中? 82 (1)当文档被修改时,如何在标题上加上标志'*'? 82 (2)VC6.0对VC5.0的兼容性? 83 (3)打印和打印机的问题? 83 (4)CRichEditCtrl滚动条的问题? 84 (5)从数据库中读大于32k的内容? 84 (6)如何获得CRichEditCtrl中字符的位置? 86 (7)如何限制mdi子框架最大化时的大小? 86 (8)如何切换视口而不破坏它们? 87 (9)改变列表控制时发生闪烁现象? 91 (10)处理列表控件可见项的问题? 91 (11)产生线程的问题? 91 (12)CFile使用了缓冲区吗? 94 (13)DAO的密码? 94 (15)视口的不活动性如何处理? 96 (16)如何使用COleClientItem的IDispatch接口? 97 (17)关于用户自定义的消息使用? 98 (18)在打开一个文档时退出? 99 (19)在CListCtrl控件中多选择项的删除? 99 (20)工作线程的登录状态? 99 (21)如何增加视图中ActiveX控件的事件处理函数? 101 (22)如何创建一个动态的Tree控件? 102 (23)SDI程序开始时不打开文档? 102 (24)List控件中整栏选择? 103 (25)如何重载MRU文件? 104 (26)CImageList控件中图象橙色被显示为黄色? 106 (27)无法正确改变应用程序的图标? 110 (28)工具条状态的问题? 110 (29)在SDI应用程序中使用Active控件? 112 (30)有RichEdit控件的对话框无法正常显示? 112 (31)DLL中的模板成员函数? 112 (32)CFormView中的上下文帮助? 114 (33)CArchive的WriteObject函数问题? 115 (34)RegisterWindowMessage中的BroadcastSystemMessage如何处理? 115 (35)CListCtrl中选择变化时如何获得通知? 117 (36)如何向ATL-COM对象传送一个数组? 118 (37)如何选择CTreeCtrl中的节点文本进行编辑? 119 (38)如何改变默认的光标形状? 120 (39)如何用键盘滚动分割的视口? 121 (40)如何在线程中处理状态条? 123 (41)如何阻止WINDOWS关闭? 124 (42)如何使一个按钮Disable? 124 (43)怎样从MFC扩展动态链结库(DLL)中显示一个对话框? 125 (44)想隐藏用户界面怎么办? 127 (45)如何实现SDI与MDI的转换? 128 (46) CDC中的竖排文本? 130 (47)如何激活变灰的弹出菜单? 131 (48)线程消息? 132 (49)TreeCtrl控制的显示速度太慢? 133 (50)关于工具条? 135 (51)关于线程消息? 136 (52)关于控件的焦点? 136 (53)如何捕获键盘按键? 138 (54)怎样实现3D效果? 138 (55)怎样建立客户CSocket? 138 (56)Disable一个非模态对话框的客户区? 140 (57)关于使用SetClassLong和SetCapture问题 140 (58)动画控件? 142 (59)错误声明的消息? 143 (59)怎样模拟鼠标动作? 144 (60)改变对话框标题字体? 145 (61)怎样知道CWinThread对象的状态? 146 (62)如何调整控件对话框条的大小? 146 (63)如何顶端显示CStatic文字? 147 (64)消息句柄出了什么事? 147 (65)树形控件为何闪烁? 148 (66)怎样才能关闭树形控件中的滚动条? 149 (67)如何建立一个带滚动条的窗口? 149 (68)如何实现对话框的拖放? 150 (69)TrackMouseEvent()怎么了 151 (70)奇怪的组合框控件 152 (71)关于使用MS SANS SERIF字体 152 (72)为什么DLL在字符串表中找不到字符串 157 (73)关于复选框的文本颜色 158 (74)系列化与版本的问题 159 (75)在一个控件内检测并使用ON_COMMAND消息 162 (76)为何MDI程序中有子窗口打开时应用程序不能关. 163 (77)滚动视中LPtoDP失败 165 (78)ODBC许可问题 166 (79)怪异的字体 167 (80)自画列表框样例 170 (81)CWnd::GetMenu()的问题 173 (82)用MFC制作弹出窗口 174 (83)怎样取消一个弹出式菜单 175
第1章 窗口 1.1 实例1:通过HWND获得CWnd指针 1.2 实例2:获得应用程序窗口的指针 1.3 实例3:获得指定点的窗口 1.4 实例4:最大化和最小化窗口 1.5 实例5:关闭窗口 1.6 实例6:设置窗口的大小和位置 1.7 实例7:居中显示窗口 1.8 实例8:顶层显示窗口 1.9 实例9:设置窗口图标 1.10 实例10:获得和设置窗口的标题 1.11 实例11:显示或隐藏窗口的标题栏 1.12 实例12:改变窗口形状 1.13 实例13:设置窗口的透明区域 1.14 实例14:透明窗口 1.15 实例15:窗口闪烁 1.16 实例16:图片窗口 1.17 实例17:动画窗口 1.18 实例18:桌面窗口 1.19 实例19:最小化桌面所有窗口 1.20 实例20:获取任务栏窗口 1.21 实例21:显示或隐藏任务栏 1.22 实例22:枚举桌面所有顶层窗口 第2章 菜单和光标 2.1 实例23:动态添加和删除菜单项 2.2 实例24:在系统菜单中添加和删除菜单项 2.3 实例25:禁用关闭按钮 2.4 实例26:启用和禁用菜单项 2.5 实例27:设置菜单项的检查状态 2.6 实例28:快捷菜单 2.7 实例29:获取光标的坐标 2.8 实例30:限制光标的移动范围 2.9 实例31:自定义光标 2.10 实例32:等待光标 第3章 控制栏 3.1 实例33:创建工具栏 3.2 实例34:设置工具栏标题 3.3 实例35:停靠工具栏 3.4 实例36:设置工具栏位图 3.5 实例37:为工具栏按钮添加文本标签 3.6 实例38:为工具栏按钮添加下拉箭头 3.7 实例39:为工具栏按钮设置热点图像 3.8 实例40:启用或禁用工具栏的工具提示 3.9 实例41:在工具栏中添加组合框 3.10 实例42:创建状态栏 3.11 实例43:在状态栏中添加进度条 3.12 实例44:显示或隐藏工具栏和状态栏 3.13 实例45:使用组合栏 第4章 对话框 4.1 实例46.创建模式对话框 4.2 实例47:创建非模式对话框 4.3 实例48:关闭模式对话框 4.4 实例49:关闭非模式对话框 4.5 实例50:在模式对话框中使用OK和Cancel按钮 4.6 实例51:在非模式对话框中使用OK和Cancel按钮 4.7 实例52:在对话框中添加最大化和最小化按钮 4.8 实例53:使基于对话框的程序不在任务栏中显示 4.9 实例54:使对话框大小可调整 4.10 实例55:居中显示对话框 4.11 实例56:不显示对话框 4.12 实例57;全屏显示对话框 4.13 实例58:改变对话框的背景颜色 4.14 实例59:改变对话框中控件的颜色 4.15 实例60:在对话框中输出文本 4.16 实例61:在对话框中加载菜单 4.17 实例62:在对话框中加载工具栏 4.18 实例63:在对话框中加载视图 4.19 实例64:使用Enter键控制对话框中控件的输入焦点 4.20 实例65:屏蔽对话框按Esc或Enter键退出 4.21 实例66.设置应用程序中对话框的默认颜色 4.22 实例67:创建消息对话框 4.23 实例68:实现对话框在桌面工作区的停靠 4.24 实例69:在客户区中移动对话框 第5章 框架和文档视图 5.1 实例70:禁止框架窗口在标题中显示文档名 5.2 实例71:设置文档的标题 5.3 实例72-设置框架窗口的标题 5.4 实例73:设置框架窗口初始时大小 5.5 实例74:设置MDI子框架窗口初始时大小 5.6 实例75:最小化框架窗口 5.7 实例76:设置框架窗口最大化时的大小和位置 5.8 实例77:保存或恢复框架窗口的状态 5.9 实例78:删除SDI框架窗口中的菜单 5.10 实例79:删除MDI框架窗口中的菜单 5.11 实例80:改变视图的背景颜色 5.12 实例81:改变MDI框架窗口的背景颜色 5.13 实例82:使MDI启动时不生成新的子窗口 5.14 实例83:排列MDI子框架窗口 5.15 实例84:在SDI中切换多视图 5.16 实例85:在SDI中动态切分窗口 5.17 实例86:在SDI中静态切分窗口 5.18 实例87:滚动视图的使用 5.19 实例88:列表视图的使用 5.20 实例89:树视图的使用 5.21 实例90:HTMI视图的使用 5.22 实例91:在视图获得文档指针 5.23 实例92:在框架获得当前视图指针 5.24 实例93:新建或打开文档 5.25 实例94:创建新的框架窗口 5.26 实例95:实现单文档-多视图结构 5.27 实例96:在应用程序中遍历文档模板 5.28 实例97:在文档中遍历视图 第16章 通用控件 6.1 实例98:通过控件ID获取控件窗口指针 6.2 实例99:通过控件窗口指针获取控件ID 6.3 实例100:获取指定点的控件指针 6.4 实例101:遍历控件 6.5 实例102:根据父窗口的大小改变控件的大小和位置 6.6 实例103:显示或隐藏控件 6.7 实例104:启用或禁用控件 6.8 实例105:改变控件的颜色 6.9 实例106:设置控件的焦点 6.10 实例107:为控件添加工具提示 6.11 实例108:在编辑框中追加文本 6.12 实例109:在编辑框中实现多行显示 6.13 实例110:限制编辑框输入文本的长度 6.14 实例111:限制编辑框只能输入数字 6.15 实例112:将编辑框中输入的字符转换为大写(小写) 6.16 实例113:在按钮上显示图标 6.17 实例114:实现位图按钮 6.18 实例115:设置和获取单选按钮的选中状态 6.19 实例116:设置和获取一组单选按钮的选中状态 6.20 实例117:组合框的使用 6.21 实例118:实现带自动完成功能的组合框 6.22 实例119:设置组合框中列表框的宽度 6.23 实例120:在组合框中显示文件列表 6.24 实例121:在列表框中添加水平滚动条 6.25 实例122:进度条的使用 6.26 实例123:滑块的使用 6.27 实例124:旋转按钮的使用 6.28 实例125:在列表控件中插入列 6.29 实例126:设置列表控件的显示方式 6.30 实例127:设置列表控件的背景图片 6.31 实例128:在列表控件中整行选中 6.32 实例129:在列表控件中显示网格线 6.33 实例130:在列表控件中使用复选框 6.34 实例131:在列表控件中排序表项 6.35 实例132:在树控件中插入项 6.36 实例133:在树控件中添加连线和按钮 6.37 实例134:从树控件中删除项. 6.38 实例135:展开和选择树提件项 6.39 实例136:设置树控件中项的图像 6.40 实例137:遍历树控件 6.41 实例138:如何使用标签控件 6.42 实例139:日期时间控件的使用 6.43 实例140:显示RichEdit控件 第7章 GDI 7.1 实例141:通过HDC获取CDC指针 7.2 实例142:创建屏幕DC 7.3 实例143:选择预定义的GDI对象 7.4 实例144:获取文本的长度和高度 7.5 实例145:在长文本末端显示省略号 7.6 实例146:设置文本的对齐方式 7.7 实例147:设置背景模式 7.8 实例148:绘制图形 7.9 实例149:画笔的使用 7.10 实例150:字体的使用 7.11 实例151:实现“橡皮筋”功能 7.12 实例152:显示位图资源 7.13 实例153:显示位图文件 7.14 实例154:用桌面背景填充指定区域 7.15 实例155:坐标映射 7.16 实例156:获取其他程序的图标 第8章 文件 8.1 实例157:获取或设置文件的属性 8.2 实例158:获取文件的信息 8.3 实例159:实现文件夹对话框 8.4 实例160:在列表框或组合框中显示文件和目录列表 8.5 实例161:复制文件 8.6 实例162:移动文件 8.7 实例163:删除文件 8.8 实例164:重命名文件 8.9 实例165:查找文件 8.10 实例166:使用Shell操作文件 8.11 实例167:获取应用程序的目录 8.12 实例168:获取或设置进程的当前目录 8.13 实例169:获取Windows目录和System目录 8.14 实例170:创建临时文件 8.15 实例171:创建目录 8.16 实例172:删除目录 8.17 实例173:逐行读取文本文件 8.18 实例174:在INI文件中读写数据 8.19 实例175:获取INI文件的全部段名 8.20 实例176:获取INI文件指定段的全部键名和键值 第9章 打印 9.1 实例177:通过打印对话框 …… 第10章 多线程 第11章 网络 第12章 ADO数据库 第13章 动态链接库 第14章 系统 第15章 设备管理 第16章 数据型及转换 ......

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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