C++MFC如何在另外一个类改变主窗口的static text 的颜色

Timon---老赵 2020-08-22 11:06:42
在主窗口内通过这个可以改变OnCtlColor,那么如何在另外一个类调用方法改变他的颜色?
...全文
481 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
待续_1006 2021-04-21
  • 打赏
  • 举报
回复
sendmessage给它发绘制消息不行吗?
gz_qmc 2021-04-16
  • 打赏
  • 举报
回复
我听有人说C#是宝马车
我是来看热闹的


Eleven 2021-04-15
  • 打赏
  • 举报
回复
你可以给主窗口发送消息,在消息响应函数中修改颜色变量,然后调用InvalidateRect()刷新static text控件区域即可。
geziliu 2021-04-14
  • 打赏
  • 举报
回复
自己重写static 或网上找现成的static继承他
顾小白xx 2021-04-13
  • 打赏
  • 举报
回复
闪烁 的问题基本上用双缓存就能解决
field_mouse 2020-08-24
  • 打赏
  • 举报
回复
线程里 线程里
void ChangeColorFunction::ChangeColor()
{
	if (MainDlg == NULL)
		return;
	RandColor();
	CWnd *cwnd = CWnd::FromHandle(GetDlgItem(MainDlg, StaticID));
	cwnd->Invalidate(1);
}

void ChangeColorFunction::RandColor()
{
	colorChange = RGB(rand() % 256, rand() % 256, rand() % 256);
}
窗口内
void CStaticTestDlg::OnTimer(UINT_PTR nIDEvent)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	if (nIDEvent == 1)
	{
		changeFunction->ChangeColor();
	}
	CDialogEx::OnTimer(nIDEvent);
}


HBRUSH CStaticTestDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
	HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);

	// TODO:  在此更改 DC 的任何特性

	if (pWnd->GetDlgCtrlID())
	{
		//pDC->SetBkColor(changeFunction->colorChange);//背景色为绿色
		pDC->SetTextColor(changeFunction->colorChange);//文字为红色
	}

	// TODO:  如果默认的不是所需画笔,则返回另一个画笔
	return hbr;
}
走好每一步 2020-08-24
  • 打赏
  • 举报
回复
引用 12 楼 Timon---老赵 的回复:
[quote=引用 11 楼 zgl7903的回复:][quote=引用 9 楼 Timon---老赵 的回复:][quote=引用 4 楼 zgl7903的回复:]先置好想要的状态 Invalidate InvalidateRect 等引发控件窗口的重绘
这个不行,我基本一秒变四五次,不太实用,会闪烁[/quote] 要避免闪烁就双缓冲 [/quote] 有没有简单的,像c#中不就可以直接改变颜色[/quote] c#是宝马车, mfc是牛车,不能比 楼主要弄的,花点费用,可以帮你弄
dd_zhouqian 2020-08-24
  • 打赏
  • 举报
回复
引用 13 楼 schlafenhamster 的回复:
一秒变四五次后 Invalidate 控件
1秒4~5次,200ms/次,定时器够用了
sichuanwww 2020-08-24
  • 打赏
  • 举报
回复
SendMessage
field_mouse 2020-08-24
  • 打赏
  • 举报
回复
我用invalidate 30毫秒一刷新也没见主窗口闪烁。晚上回去整理下代码发出来。
field_mouse 2020-08-24
  • 打赏
  • 举报
回复
建议类里面调用static text 的 invalidate , 同时OnCtlColor 中 调用类的RGB值; postmessage/ sendmessage 发送WM_CTLCOLOR , 我没用成功,找了资料也没见成功的包括高低位
schlafenhamster 2020-08-23
  • 打赏
  • 举报
回复
一秒变四五次后 Invalidate 控件
Timon---老赵 2020-08-22
  • 打赏
  • 举报
回复
引用 11 楼 zgl7903的回复:
[quote=引用 9 楼 Timon---老赵 的回复:][quote=引用 4 楼 zgl7903的回复:]先置好想要的状态
Invalidate InvalidateRect 等引发控件窗口的重绘

这个不行,我基本一秒变四五次,不太实用,会闪烁[/quote]

要避免闪烁就双缓冲

[/quote] 有没有简单的,像c#中不就可以直接改变颜色
zgl7903 2020-08-22
  • 打赏
  • 举报
回复
引用 9 楼 Timon---老赵 的回复:
[quote=引用 4 楼 zgl7903的回复:]先置好想要的状态
Invalidate InvalidateRect 等引发控件窗口的重绘

这个不行,我基本一秒变四五次,不太实用,会闪烁[/quote]

要避免闪烁就双缓冲

Timon---老赵 2020-08-22
  • 打赏
  • 举报
回复
引用 7 楼 schlafenhamster的回复:
定时器 + static重绘
不能用事件触发吗?我的频率比较高
Timon---老赵 2020-08-22
  • 打赏
  • 举报
回复
引用 4 楼 zgl7903的回复:
先置好想要的状态 Invalidate InvalidateRect 等引发控件窗口的重绘
这个不行,我基本一秒变四五次,不太实用,会闪烁
Timon---老赵 2020-08-22
  • 打赏
  • 举报
回复
其他的类返回不同值,改变不同颜色,怎么传给这个函数改变?
schlafenhamster 2020-08-22
  • 打赏
  • 举报
回复
定时器 + static重绘
an_bachelor 2020-08-22
  • 打赏
  • 举报
回复
OnCtlColor是由框架来调用(询问)采用什么颜色,可以通过动态返回不同的值来改变子控件颜色。 所以你不应该尝试去“调用”它,而应该给予它不同的返回值来间接绘制不同的颜色。
加载更多回复(5)
深入浅出MFC(第二版) 目录 第0章 你一定要知道(导读) 这本书适合谁 你需要什么技术基础 你需要什么软硬件环境 让我们使用同一种语言 本书符号习惯 本书例程的取得 范例程序说明 与前版本之差异 如何联络作者 第一篇 勿在浮砂筑高台 第1章 Win32程序基本概念 Win32程序开发流程 需要什么函数库(.LIB) 需要什么头文件(.H) 以消息为基础,以事件驱动之(message based,event driven) 一个具体而微的Win32程序 程序进入点WinMain 窗口之注册与窗口之诞生 消息循环 窗口的生命中枢:窗口函数 消息映射(Message Map)的雏形 对话框的运行 模块定义文件(.DEF) 资源描述档(.RC) Widnows程序的生与死 空闲时间的处理:OnIdle Console程序 Console程序与DOS程序的差别 Console程序的编译链接 JBACKUP:Win32 Console程序设计 MFCCON:MFC Console程序设计 行程与线程(Process and Thread) 核心对象 一个行程的诞生与死亡 产生子行程 一个线程的诞生与死亡 以_beginthreadex取代CreateThread 线程优先级(Priority) 多线程程序设计实例 第2章 C++的重要性质 及其成员——谈封装(encapsulation) 基与派生:谈继承(Inheritance) this指针 虚拟函数与多态(Polymorphism) 与对象大解剖 Object slicing与虚拟函数 静态成员(变量与函数) C++程序的生与死:兼谈构造函数与解构函数 四种不同的对象生存方式(in stack、in heap、global、local static) 执行期型信息(RTTI) 动态生成(Dynamic Creation) 异常处理(Exception Handling) Template Template Functions Template Classes Template的编译与链接 第3章 MFC六大关键技术之仿真 MFC层次结构 Frame 1范例程序 MFC程序的初始化过程 Frame 2范例程序 RTTI(执行期型识别) 别型录网与CRuntimeClass DECLARE_DYNAMIC/IMPLEMENT_DYNAMIC宏 Frame 3范例程序 IsKindOf(型识别) Frame 4范例程序 Dynamic Creation(动态生成) DECLARE_DYNCREATE/IMPLEMENT_DYNCREATE宏 Frame 6范例程序 Persistence(永久保存)机制 Serialize(数据读写) DECLARE_SERIAL/IMPLEMENT_SERIAL宏 没有范例程序 Message Mapping(消息映射) Frame 7范例程序 Command Routing(命令传递) Frame 8范例程序 本章回顾 第二篇 欲善工事先利其器 第4章 Visual C++集成开发环境 安装与组成 四个重要的工具 内务府总管:Visual C++集成开发环境 关于project 关于工具设定 Source Browser Online Help 调试工具 VC++调试器 Exception Handling 程序代码产生器:AppWizard 东圈西点完成MFC程序骨干 威力强大的资源编辑器 Icon编辑器 Cursor编辑器 Bitmap编辑器 工具栏(Toolbar)编辑器 VERSIONINFO资源编辑器 字符串表格(Accelerator)编辑器 菜单(Menu)编辑器 加速键(Accelerator)编辑器 对话框(Dialog)编辑器 Console程序的项目管理 第三篇 浅出MFC程序设计 第5章 总观Application Framework 什么是Application Framework? 侯捷怎么说 我怎么说 别人怎么说 为什么使用Application Framework Microsoft Foundation Classes(MFC) 白头宫女话天宝:Visual C++MFC 纵览MFC General Purpose classes CObject 数据处理(collection classes) 杂项 异常处理(exception handling classes) Windows API classes Application framework classes High level Abstractions Afx全局函数 MFC宏(macros) MFC数据型(data types) 第6章 MFC程序的生死因果 不二法门:熟记MFC的层次结构 需要什么函数库? 需要什么头文件? 简化的MFC程序结构——以Hello MFC为例 Hello程序程序代码 MFC程序的来龙去脉(causal relations) 我只借用两个:CWinApp和CFrameWnd CWinApp——取代WinMain的地位 CFrameWnd——取代WndProc的地位 引爆器——Application object 隐晦不明的WinMain AfxWinInit——AFX内部初始化操作 CWinApp::InitApplication CMyWinApp::InitInstance CFrameWnd::Create产生窗口(并先注册窗口) 奇怪的窗口名称Afx:b:14ae:6:3e8f 窗口显示与更新 CWinApp::Run——程序生命的活水源头 把消息与处理函数连接在一起:Message Map机制 来龙去脉总整理 Callback函数 空闲时间(idle time)的处理:OnIdle Dialog与Control 通用对话框(Common Dialogs) 本章回顾 第7章 简单而完整:MFC骨干程序 不二法门:熟记MFC层次结构 MFC程序的UI新风貌 Document/View支撑你的应用程序 利用Visual C++工具完成Scribble step0 骨干程序使用哪些MFC? Document Template的意义 Scribble的Document/View设计 窗口的诞生 工具栏和状态栏的诞生(Toolbar&Status bar) 鼠标拖放(Drag and Drop) 消息映射(Message Map) 标准菜单File/Edit/View/Window/Help 对话框 改用CEditView 第四篇 深入MFC程序设计 第8章 Document-View深入探讨 为什么需要Document-View(形而上) Document View Document Frame(View Frame) Document Template CDocTemplate管理CDocument/CView/CFrameWnd Scribble Step1的Document——数据结构设计 MFC Collection Classes的选用 CScribbleDoc的修改 文件:一连串的线条 线条与坐标点 Scribble Step 1的View:数据重绘与编辑 CScribbleView的修改 View的重绘操作:GetDocument和OnDraw ClassWizard的辅佐 WizardBar的辅佐 Serialize:对象的档案读写 Serialization以外的档案读写操作 台面上的Serialize操作 台面下的Serialize写档奥秘 台面下的Serialize读档奥秘 DYNAMIC/DYNCREATE/SERIAL三宏 Serializable的必要条件 CObject IsKindOf IsSerializable CObject::Serialize CArchive operator《和operator》 效率考虑 自定SERIAL宏给抽象使用 在CObList中加入CStroke以外的 Document与View交流——为Step4做准备 第9章 消息映射与命令传递 到底要解决什么 消息分 万流归宗Command Target(CCmdTarget) 三个奇怪的宏,一张巨大的网 DECLARE_MESSAGE_MAP宏 消息映射网的形成:BEGIN…/ON…/END…宏 米诺托斯(Minotauros)与西修斯(Theseus) 二万五千里长征——消息的传递 直线上溯(一般Windows消息) 拐弯上溯(WM_COMMAND命令消息) 罗塞达碑石:AfxSig_xx的奥秘 Scribble Step2:UI对象的变化 改变菜单 改变工具栏 利用ClassWizard连接命令项识别码与命令处理函数 维护UI对象状态(UPDATE_COMMAND_UI) 本章回顾 第10章 MFC与对话盒 对话框编辑器 利用ClassWizard连接对话框与其专用 对话框的消息处理函数 对话框数据交换与校验(DDX&DDV) 如何唤起对话框 本章回顾 第11章 View功能的加强与重绘效率的提高 同时修改多个Views:UpdateAllViews和OnUpdate 在View中定义一个hint 把hint传给OnUpdate 利用hint增加重绘效率 可卷动的窗口:CScrollView 大窗口中的小窗口:Splitter 切分窗口的功能 切分窗口的程序概念 切分窗口的实现 本章回顾 第12章 打印与预览 概述 打印操作的后台原理 MFC默认的打印机制 Scribble打印机制的增强 打印机的页和文件的页 配置GDI绘图工具 尺寸与方向:关于映射方式(坐标系统) 分页 页眉与页脚 动态计算页码 打印预览(Print Preview) 本章回顾 第13章 多重文件与多重显示 MDI和SDI 多重显示(Multiple Views) 窗口的动态切分 窗口的静态切分 CreateStatic和CreateView 窗口的静态三叉切分 Graph范例程序 静态切分窗口之观念整理 同源子窗口 CMDIFrameWnd::OnWindowNew Text范例程序 非标准做法的缺点 多重文件 新的Cocument 新的Document Template 新的UI系统 新文件的档案读写操作 第14章 MFC多线程程序设计 从操作系统层面看线程 三个观念:模块、行程和线程 线程优先级(Priority) 线程调度(Scheduling) Thread Context 从程序设计层面看线程 Worker Threads和UI Threads 错误观念 正确态度 MFC多线程程序设计 探索CWinThread 产生一个Worker Thread 产生一个UI Thread 线程的结束 线程与同步控制 MFC多线程程序例程 第15章 定制一个AppWizard 到底Wizard是什么? Custom AppWizard的基本操作 剖析AppWizard Components Dialog Templates和Dialog classes Macros Directives 动手修改Top Studio AppWizard 利用资源编辑器修改IDD_CUSTOM1对话框画面 利用ClassWizard修改IDD_CUSTOM1对话框的对应CCustomlDlg 改写OnDismiss虚拟函数,在其中定义macros 修改text template Top Studio AppWizard执行结果 更多的信息 第16章 站上众人的肩膀——使用Components&activeX Controls 什么是Component Gallery 使用Components Splash screen system Info for About Dlg Tip of the Day Components实际运用:ComTest程序 修改ComTest程序内容 使用ActiveX Controls ActiveX Control基础观念:Properties、Methods、Events ActiveX Controls的五大使用步骤 使用ActiveX Control:OcxTest程序 第五篇 附录 附录A 无责任书评:从摇篮到坟墓Windows的完全学习 无责任书评:MFC四大天王 附录B Scribble Step 5完整原始码 附录C Visual C++5.0MFC范例程序一览 附录D 以MFC重建DBWIN收起
深入浅出MFC(第二版) 目录 第0章 你一定要知道(导读) 这本书适合谁 你需要什么技术基础 你需要什么软硬件环境 让我们使用同一种语言 本书符号习惯 本书例程的取得 范例程序说明 与前版本之差异 如何联络作者 第一篇 勿在浮砂筑高台 第1章 Win32程序基本概念 Win32程序开发流程 需要什么函数库(.LIB) 需要什么头文件(.H) 以消息为基础,以事件驱动之(message based,event driven) 一个具体而微的Win32程序 程序进入点WinMain 窗口之注册与窗口之诞生 消息循环 窗口的生命中枢:窗口函数 消息映射(Message Map)的雏形 对话框的运行 模块定义文件(.DEF) 资源描述档(.RC) Widnows程序的生与死 空闲时间的处理:OnIdle Console程序 Console程序与DOS程序的差别 Console程序的编译链接 JBACKUP:Win32 Console程序设计 MFCCON:MFC Console程序设计 行程与线程(Process and Thread) 核心对象 一个行程的诞生与死亡 产生子行程 一个线程的诞生与死亡 以_beginthreadex取代CreateThread 线程优先级(Priority) 多线程程序设计实例 第2章 C++的重要性质 及其成员——谈封装(encapsulation) 基与派生:谈继承(Inheritance) this指针 虚拟函数与多态(Polymorphism) 与对象大解剖 Object slicing与虚拟函数 静态成员(变量与函数) C++程序的生与死:兼谈构造函数与解构函数 四种不同的对象生存方式(in stack、in heap、global、local static) 执行期型信息(RTTI) 动态生成(Dynamic Creation) 异常处理(Exception Handling) Template Template Functions Template Classes Template的编译与链接 第3章 MFC六大关键技术之仿真 MFC层次结构 Frame 1范例程序 MFC程序的初始化过程 Frame 2范例程序 RTTI(执行期型识别) 别型录网与CRuntimeClass DECLARE_DYNAMIC/IMPLEMENT_DYNAMIC宏 Frame 3范例程序 IsKindOf(型识别) Frame 4范例程序 Dynamic Creation(动态生成) DECLARE_DYNCREATE/IMPLEMENT_DYNCREATE宏 Frame 6范例程序 Persistence(永久保存)机制 Serialize(数据读写) DECLARE_SERIAL/IMPLEMENT_SERIAL宏 没有范例程序 Message Mapping(消息映射) Frame 7范例程序 Command Routing(命令传递) Frame 8范例程序 本章回顾 第二篇 欲善工事先利其器 第4章 Visual C++集成开发环境 安装与组成 四个重要的工具 内务府总管:Visual C++集成开发环境 关于project 关于工具设定 Source Browser Online Help 调试工具 VC++调试器 Exception Handling 程序代码产生器:AppWizard 东圈西点完成MFC程序骨干 威力强大的资源编辑器 Icon编辑器 Cursor编辑器 Bitmap编辑器 工具栏(Toolbar)编辑器 VERSIONINFO资源编辑器 字符串表格(Accelerator)编辑器 菜单(Menu)编辑器 加速键(Accelerator)编辑器 对话框(Dialog)编辑器 Console程序的项目管理 第三篇 浅出MFC程序设计 第5章 总观Application Framework 什么是Application Framework? 侯捷怎么说 我怎么说 别人怎么说 为什么使用Application Framework Microsoft Foundation Classes(MFC) 白头宫女话天宝:Visual C++MFC 纵览MFC General Purpose classes CObject 数据处理(collection classes) 杂项 异常处理(exception handling classes) Windows API classes Application framework classes High level Abstractions Afx全局函数 MFC宏(macros) MFC数据型(data types) 第6章 MFC程序的生死因果 不二法门:熟记MFC的层次结构 需要什么函数库? 需要什么头文件? 简化的MFC程序结构——以Hello MFC为例 Hello程序程序代码 MFC程序的来龙去脉(causal relations) 我只借用两个:CWinApp和CFrameWnd CWinApp——取代WinMain的地位 CFrameWnd——取代WndProc的地位 引爆器——Application object 隐晦不明的WinMain AfxWinInit——AFX内部初始化操作 CWinApp::InitApplication CMyWinApp::InitInstance CFrameWnd::Create产生窗口(并先注册窗口) 奇怪的窗口名称Afx:b:14ae:6:3e8f 窗口显示与更新 CWinApp::Run——程序生命的活水源头 把消息与处理函数连接在一起:Message Map机制 来龙去脉总整理 Callback函数 空闲时间(idle time)的处理:OnIdle Dialog与Control 通用对话框(Common Dialogs) 本章回顾 第7章 简单而完整:MFC骨干程序 不二法门:熟记MFC层次结构 MFC程序的UI新风貌 Document/View支撑你的应用程序 利用Visual C++工具完成Scribble step0 骨干程序使用哪些MFC? Document Template的意义 Scribble的Document/View设计 窗口的诞生 工具栏和状态栏的诞生(Toolbar&Status bar) 鼠标拖放(Drag and Drop) 消息映射(Message Map) 标准菜单File/Edit/View/Window/Help 对话框 改用CEditView 第四篇 深入MFC程序设计 第8章 Document-View深入探讨 为什么需要Document-View(形而上) Document View Document Frame(View Frame) Document Template CDocTemplate管理CDocument/CView/CFrameWnd Scribble Step1的Document——数据结构设计 MFC Collection Classes的选用 CScribbleDoc的修改 文件:一连串的线条 线条与坐标点 Scribble Step 1的View:数据重绘与编辑 CScribbleView的修改 View的重绘操作:GetDocument和OnDraw ClassWizard的辅佐 WizardBar的辅佐 Serialize:对象的档案读写 Serialization以外的档案读写操作 台面上的Serialize操作 台面下的Serialize写档奥秘 台面下的Serialize读档奥秘 DYNAMIC/DYNCREATE/SERIAL三宏 Serializable的必要条件 CObject IsKindOf IsSerializable CObject::Serialize CArchive operator《和operator》 效率考虑 自定SERIAL宏给抽象使用 在CObList中加入CStroke以外的 Document与View交流——为Step4做准备 第9章 消息映射与命令传递 到底要解决什么 消息分 万流归宗Command Target(CCmdTarget) 三个奇怪的宏,一张巨大的网 DECLARE_MESSAGE_MAP宏 消息映射网的形成:BEGIN…/ON…/END…宏 米诺托斯(Minotauros)与西修斯(Theseus) 二万五千里长征——消息的传递 直线上溯(一般Windows消息) 拐弯上溯(WM_COMMAND命令消息) 罗塞达碑石:AfxSig_xx的奥秘 Scribble Step2:UI对象的变化 改变菜单 改变工具栏 利用ClassWizard连接命令项识别码与命令处理函数 维护UI对象状态(UPDATE_COMMAND_UI) 本章回顾 第10章 MFC与对话盒 对话框编辑器 利用ClassWizard连接对话框与其专用 对话框的消息处理函数 对话框数据交换与校验(DDX&DDV) 如何唤起对话框 本章回顾 第11章 View功能的加强与重绘效率的提高 同时修改多个Views:UpdateAllViews和OnUpdate 在View中定义一个hint 把hint传给OnUpdate 利用hint增加重绘效率 可卷动的窗口:CScrollView 大窗口中的小窗口:Splitter 切分窗口的功能 切分窗口的程序概念 切分窗口的实现 本章回顾 第12章 打印与预览 概述 打印操作的后台原理 MFC默认的打印机制 Scribble打印机制的增强 打印机的页和文件的页 配置GDI绘图工具 尺寸与方向:关于映射方式(坐标系统) 分页 页眉与页脚 动态计算页码 打印预览(Print Preview) 本章回顾 第13章 多重文件与多重显示 MDI和SDI 多重显示(Multiple Views) 窗口的动态切分 窗口的静态切分 CreateStatic和CreateView 窗口的静态三叉切分 Graph范例程序 静态切分窗口之观念整理 同源子窗口 CMDIFrameWnd::OnWindowNew Text范例程序 非标准做法的缺点 多重文件 新的Cocument 新的Document Template 新的UI系统 新文件的档案读写操作 第14章 MFC多线程程序设计 从操作系统层面看线程 三个观念:模块、行程和线程 线程优先级(Priority) 线程调度(Scheduling) Thread Context 从程序设计层面看线程 Worker Threads和UI Threads 错误观念 正确态度 MFC多线程程序设计 探索CWinThread 产生一个Worker Thread 产生一个UI Thread 线程的结束 线程与同步控制 MFC多线程程序例程 第15章 定制一个AppWizard 到底Wizard是什么? Custom AppWizard的基本操作 剖析AppWizard Components Dialog Templates和Dialog classes Macros Directives 动手修改Top Studio AppWizard 利用资源编辑器修改IDD_CUSTOM1对话框画面 利用ClassWizard修改IDD_CUSTOM1对话框的对应CCustomlDlg 改写OnDismiss虚拟函数,在其中定义macros 修改text template Top Studio AppWizard执行结果 更多的信息 第16章 站上众人的肩膀——使用Components&activeX Controls 什么是Component Gallery 使用Components Splash screen system Info for About Dlg Tip of the Day Components实际运用:ComTest程序 修改ComTest程序内容 使用ActiveX Controls ActiveX Control基础观念:Properties、Methods、Events ActiveX Controls的五大使用步骤 使用ActiveX Control:OcxTest程序 第五篇 附录 附录A 无责任书评:从摇篮到坟墓Windows的完全学习 无责任书评:MFC四大天王 附录B Scribble Step 5完整原始码 附录C Visual C++5.0MFC范例程序一览 附录D 以MFC重建DBWIN
深入浅出MFC(第二版) 目录 第0章 你一定要知道(导读) 这本书适合谁 你需要什么技术基础 你需要什么软硬件环境 让我们使用同一种语言 本书符号习惯 本书例程的取得 范例程序说明 与前版本之差异 如何联络作者 第一篇 勿在浮砂筑高台 第1章 Win32程序基本概念 Win32程序开发流程 需要什么函数库(.LIB) 需要什么头文件(.H) 以消息为基础,以事件驱动之(message based,event driven) 一个具体而微的Win32程序 程序进入点WinMain 窗口之注册与窗口之诞生 消息循环 窗口的生命中枢:窗口函数 消息映射(Message Map)的雏形 对话框的运行 模块定义文件(.DEF) 资源描述档(.RC) Widnows程序的生与死 空闲时间的处理:OnIdle Console程序 Console程序与DOS程序的差别 Console程序的编译链接 JBACKUP:Win32 Console程序设计 MFCCON:MFC Console程序设计 行程与线程(Process and Thread) 核心对象 一个行程的诞生与死亡 产生子行程 一个线程的诞生与死亡 以_beginthreadex取代CreateThread 线程优先级(Priority) 多线程程序设计实例 第2章 C++的重要性质 及其成员——谈封装(encapsulation) 基与派生:谈继承(Inheritance) this指针 虚拟函数与多态(Polymorphism) 与对象大解剖 Object slicing与虚拟函数 静态成员(变量与函数) C++程序的生与死:兼谈构造函数与解构函数 四种不同的对象生存方式(in stack、in heap、global、local static) 执行期型信息(RTTI) 动态生成(Dynamic Creation) 异常处理(Exception Handling) Template Template Functions Template Classes Template的编译与链接 第3章 MFC六大关键技术之仿真 MFC层次结构 Frame 1范例程序 MFC程序的初始化过程 Frame 2范例程序 RTTI(执行期型识别) 别型录网与CRuntimeClass DECLARE_DYNAMIC/IMPLEMENT_DYNAMIC宏 Frame 3范例程序 IsKindOf(型识别) Frame 4范例程序 Dynamic Creation(动态生成) DECLARE_DYNCREATE/IMPLEMENT_DYNCREATE宏 Frame 6范例程序 Persistence(永久保存)机制 Serialize(数据读写) DECLARE_SERIAL/IMPLEMENT_SERIAL宏 没有范例程序 Message Mapping(消息映射) Frame 7范例程序 Command Routing(命令传递) Frame 8范例程序 本章回顾 第二篇 欲善工事先利其器 第4章 Visual C++集成开发环境 安装与组成 四个重要的工具 内务府总管:Visual C++集成开发环境 关于project 关于工具设定 Source Browser Online Help 调试工具 VC++调试器 Exception Handling 程序代码产生器:AppWizard 东圈西点完成MFC程序骨干 威力强大的资源编辑器 Icon编辑器 Cursor编辑器 Bitmap编辑器 工具栏(Toolbar)编辑器 VERSIONINFO资源编辑器 字符串表格(Accelerator)编辑器 菜单(Menu)编辑器 加速键(Accelerator)编辑器 对话框(Dialog)编辑器 Console程序的项目管理 第三篇 浅出MFC程序设计 第5章 总观Application Framework 什么是Application Framework? 侯捷怎么说 我怎么说 别人怎么说 为什么使用Application Framework Microsoft Foundation Classes(MFC) 白头宫女话天宝:Visual C++MFC 纵览MFC General Purpose classes CObject 数据处理(collection classes) 杂项 异常处理(exception handling classes) Windows API classes Application framework classes High level Abstractions Afx全局函数 MFC宏(macros) MFC数据型(data types) 第6章 MFC程序的生死因果 不二法门:熟记MFC的层次结构 需要什么函数库? 需要什么头文件? 简化的MFC程序结构——以Hello MFC为例 Hello程序程序代码 MFC程序的来龙去脉(causal relations) 我只借用两个:CWinApp和CFrameWnd CWinApp——取代WinMain的地位 CFrameWnd——取代WndProc的地位 引爆器——Application object 隐晦不明的WinMain AfxWinInit——AFX内部初始化操作 CWinApp::InitApplication CMyWinApp::InitInstance CFrameWnd::Create产生窗口(并先注册窗口) 奇怪的窗口名称Afx:b:14ae:6:3e8f 窗口显示与更新 CWinApp::Run——程序生命的活水源头 把消息与处理函数连接在一起:Message Map机制 来龙去脉总整理 Callback函数 空闲时间(idle time)的处理:OnIdle Dialog与Control 通用对话框(Common Dialogs) 本章回顾 第7章 简单而完整:MFC骨干程序 不二法门:熟记MFC层次结构 MFC程序的UI新风貌 Document/View支撑你的应用程序 利用Visual C++工具完成Scribble step0 骨干程序使用哪些MFC? Document Template的意义 Scribble的Document/View设计 窗口的诞生 工具栏和状态栏的诞生(Toolbar&Status bar) 鼠标拖放(Drag and Drop) 消息映射(Message Map) 标准菜单File/Edit/View/Window/Help 对话框 改用CEditView 第四篇 深入MFC程序设计 第8章 Document-View深入探讨 为什么需要Document-View(形而上) Document View Document Frame(View Frame) Document Template CDocTemplate管理CDocument/CView/CFrameWnd Scribble Step1的Document——数据结构设计 MFC Collection Classes的选用 CScribbleDoc的修改 文件:一连串的线条 线条与坐标点 Scribble Step 1的View:数据重绘与编辑 CScribbleView的修改 View的重绘操作:GetDocument和OnDraw ClassWizard的辅佐 WizardBar的辅佐 Serialize:对象的档案读写 Serialization以外的档案读写操作 台面上的Serialize操作 台面下的Serialize写档奥秘 台面下的Serialize读档奥秘 DYNAMIC/DYNCREATE/SERIAL三宏 Serializable的必要条件 CObject IsKindOf IsSerializable CObject::Serialize CArchive operator《和operator》 效率考虑 自定SERIAL宏给抽象使用 在CObList中加入CStroke以外的 Document与View交流——为Step4做准备 第9章 消息映射与命令传递 到底要解决什么 消息分 万流归宗Command Target(CCmdTarget) 三个奇怪的宏,一张巨大的网 DECLARE_MESSAGE_MAP宏 消息映射网的形成:BEGIN…/ON…/END…宏 米诺托斯(Minotauros)与西修斯(Theseus) 二万五千里长征——消息的传递 直线上溯(一般Windows消息) 拐弯上溯(WM_COMMAND命令消息) 罗塞达碑石:AfxSig_xx的奥秘 Scribble Step2:UI对象的变化 改变菜单 改变工具栏 利用ClassWizard连接命令项识别码与命令处理函数 维护UI对象状态(UPDATE_COMMAND_UI) 本章回顾 第10章 MFC与对话盒 对话框编辑器 利用ClassWizard连接对话框与其专用 对话框的消息处理函数 对话框数据交换与校验(DDX&DDV) 如何唤起对话框 本章回顾 第11章 View功能的加强与重绘效率的提高 同时修改多个Views:UpdateAllViews和OnUpdate 在View中定义一个hint 把hint传给OnUpdate 利用hint增加重绘效率 可卷动的窗口:CScrollView 大窗口中的小窗口:Splitter 切分窗口的功能 切分窗口的程序概念 切分窗口的实现 本章回顾 第12章 打印与预览 概述 打印操作的后台原理 MFC默认的打印机制 Scribble打印机制的增强 打印机的页和文件的页 配置GDI绘图工具 尺寸与方向:关于映射方式(坐标系统) 分页 页眉与页脚 动态计算页码 打印预览(Print Preview) 本章回顾 第13章 多重文件与多重显示 MDI和SDI 多重显示(Multiple Views) 窗口的动态切分 窗口的静态切分 CreateStatic和CreateView 窗口的静态三叉切分 Graph范例程序 静态切分窗口之观念整理 同源子窗口 CMDIFrameWnd::OnWindowNew Text范例程序 非标准做法的缺点 多重文件 新的Cocument 新的Document Template 新的UI系统 新文件的档案读写操作 第14章 MFC多线程程序设计 从操作系统层面看线程 三个观念:模块、行程和线程 线程优先级(Priority) 线程调度(Scheduling) Thread Context 从程序设计层面看线程 Worker Threads和UI Threads 错误观念 正确态度 MFC多线程程序设计 探索CWinThread 产生一个Worker Thread 产生一个UI Thread 线程的结束 线程与同步控制 MFC多线程程序例程 第15章 定制一个AppWizard 到底Wizard是什么? Custom AppWizard的基本操作 剖析AppWizard Components Dialog Templates和Dialog classes Macros Directives 动手修改Top Studio AppWizard 利用资源编辑器修改IDD_CUSTOM1对话框画面 利用ClassWizard修改IDD_CUSTOM1对话框的对应CCustomlDlg 改写OnDismiss虚拟函数,在其中定义macros 修改text template Top Studio AppWizard执行结果 更多的信息 第16章 站上众人的肩膀——使用Components&activeX Controls 什么是Component Gallery 使用Components Splash screen system Info for About Dlg Tip of the Day Components实际运用:ComTest程序 修改ComTest程序内容 使用ActiveX Controls ActiveX Control基础观念:Properties、Methods、Events ActiveX Controls的五大使用步骤 使用ActiveX Control:OcxTest程序 第五篇 附录 附录A 无责任书评:从摇篮到坟墓Windows的完全学习 无责任书评:MFC四大天王 附录B Scribble Step 5完整原始码 附录C Visual C++5.0MFC范例程序一览 附录D 以MFC重建DBWIN
目录第1篇 开发基础篇 第1章 VisualC++6.0开发环境 1.1 VisualC++6.0概述 1.2 认识VisualC++集成开发环境 1.3 IDE菜单栏介绍 1.4 工具栏 1.5 输出窗口 1.6 资源编辑器 1.7 VisualC++学习常见问题 1.8 VisualC++学习方法简介 小结 第2章 利用集成开发环境生成程序 2.1 生成项目(project) 2.2 添加和编辑源文件 2.3 建立程序 2.4 运行程序 2.5 调试程序 2,6VisualC+4.生成的项目文件 2.7 编写控制台应用程序 小结 第3章 Windows程序运行原理 3.1 图形界面操作系统的王者——Windows 3.2 什么是多任务操作系统 3.3 Windows应用程序的组成 3.4 建立API的概念 3.4.1 API的发展 3.4.2 标准Win32API函数分 3.5 一个用API编写的Windows程序 3.6 VisualC++应用程序开发框架:MFC 3.6.1 从API到MFC 3.6.2 MFC一个编程框架 小结 第4章 开始使用MFC库 4.1 MFC的起源和发展 4.2 MFC整体库结构 4.3 常用MFC简介 4.3.1 应用程序结构 4.3.2 调试和异常 4.3.3 文件服务 4.3.4 图形处理 4.3 ,5数据库 4.3.6 Internet支持 4.4 一个简单的MFC程序 4.5 文档/视图结构 4.5.1 文档 4.5.2 视图 4.5.3 使用文档/视图结构的好处 4.5.4 单文档(SDI)与多文档(MDI)应用程序 4.6 窗口及其控件栏 4.6.1 子窗口 4.6.2 窗口 4.6.3 工具栏 4.6.4 状态栏 4.7 MFC创建的完整应用程序实例 小结 第5章 菜单与加速键 5.1 消息与事件 5.1.1 事件驱动机制 5.1.2 消息和消息映射 5.1.3 消息处理过程 5.2 菜单和加速键的创建 5.2.1 菜单的创建 5.2.2 加速键的创建 5.3 添加菜单所需的处理函数 5.3.1 添加普通菜单的处理函数 5.3.2 添加弹出式菜单的处理函数 5.4 加载加速键 小结 第6章 AppWizand和ClassWizard 6.1 一个简单应用程序的创建 6.1.1 MFCAppWizard 6.1.2 ClassWizard 6.1.3 程序实例 6.2 程序调试 6.2.1 创建调试实例程序 6.2.2 调试器 小结 第7章 在WindOWS中绘制图像 7.1 绘图的基础知识 7.1.1 映射模式 7.1.2 设备上下文 7.2 图形设备接口(GDI) 7.2.1 设备环境(CDC) 7.2.2 GDI对象 7.3 简单图形的绘制 7.3.1 屏幕绘图的要函数 7.3.2 图形绘制基本原则 7.3.3 画笔 7.3.4 画刷 小结 第2篇 关键控件篇(MFC) 第8章 常用界面控件 8.1 静态文本(staticText)控件 8.1.1 传统控件通知消息 8.1.2 静态控件的使用 8.1.3 CStatic要成员函数 8.2 文本编辑(EditBox)控件 8.2.1 文本编辑控件的使用 8.2.2 CEdit要成员函数 8.3 滚动条(ScroUBar)控件 8.3.1 滚动条控件的使用 8.3.2 CScrollBar要成员函数 8.4 按钮控件 8.4.1 按钮控件的使用 8.4.2 CButton要成员函数 8.5 列表框(List:Box)控件 8.5.1 列表框控件的使用 8.5.2 ClistBox要成员函数 8.6 组合框(Combobox)控件 8.7 图片(Picture)控件 8.8 列表(ListCtrl)控件 8.8.1 Win32新型控件概述 8.8.2 列表控件的使用 8.8.3 ClistCtrl要成员函数 8.9 树形(TreeCtrl)控件 8.9.1 树形控件的使用 8.9.2 CTreeCtrl要成员函数 8.9.3 树形控件的通知消息 8.10 项卡(TabCtrl)控件 8.10.1 选项卡控件的使用 8.10.2 选项卡控件通知消息 8.10.3 选项卡控件的使用 8.11 用实例:进制转换计算器 8.11.1 进制转换计算器功能概述 8.11.2 实例具体实现步骤 小结 第9章 文本和字体 9.1 基础知识介绍 9.2 CFont 9.3 文本输出过程 9.4 字体和文本输出实例 9.5 根据数据绘制相应的柱状图 9.6 根据坐标绘制三角形 小结 第10章 对话框 10.1 对话框的创建 10.1.1 对话框的
* 讀者來函 / 1 * 第㆓版序 / 5 第㆒版序/ 7 目錄/ 13 第0章 你㆒定要知道(導讀) / 27 這本書適合誰/ 27 你需要什麼技術基礎/ 29 你需要什麼軟硬體環境/ 29 讓我們使用同㆒種語言/ 30 本書符號習慣/ 34 磁片內容與安裝/ 34 範例程式說明/ 34 與前版本之差異/ 39 如何聯絡作者/ 40 第㆒篇 勿在浮砂築高臺 - 本書技術前提/ 001 第1章 Win32 程式基本觀念/ 003 Win32 程式開發流程/ 005 需要什麼函式庫(.LIB) / 005 需要什麼表頭檔(.H) / 006 深入淺出 MFC 14 以訊息為基礎,以事件驅動之/ 007 ㆒個具體而微的 Win32 程式/ 009 程式進入點 WinMain / 015 視窗類別之註冊與視窗之誕生/ 016 訊息迴路/ 018 視窗的生命㆗樞 - 視窗函式/ 019 訊息映射(Message Map)雛形/ 020 對話盒的運作/ 022 模組定義檔(.DEF) / 024 資源描述檔(.RC) / 024 Windows 程式的生與死/ 025 閒置時間的處理:OnIdle / 027 * Console 程式 / 028 * Console 程式與DOS 程式的差別/ 029 * Console 程式的編譯聯結/ 031 * JBACKUP:Win32 Console 程式設計/ 032 * MFCCON:MFC Console 程式設計/ 035 * 什麼是 C Runtime Library 的多緒版本/ 038 行程與執行緒(Process and Thread) / 039 核心物件/ 039 ㆒個行程的誕生與死亡/ 040 產生子行程/ 041 ㆒個執行緒的誕生與死亡/ 044 * 以 _beginthreadex 取代CreateThread / 046 執行緒優先權(Priority) / 048 * 多緒程式設計實例/ 050 目 錄 15 第2章 C++ 的重要性質/ 055 類別及其成員 - 談封裝(encapsulation) / 056 基礎類別與衍生類別 - 談繼承(Inheritance)/ 057 this 指標/ 061 虛擬函式與多型(Polymorphism) / 062 類別與物件大解剖/ 077 Object slicing 與虛擬函式/ 082 靜態成員(變數與函式) / 085 C++ 程式的生與死:兼談建構式與解構式/ 088 * ㆕種不同的物件生存方式/ 090 * 所謂 "Unwinding" / 092 執行時期型別資訊(RTTI) / 092 動態生成(Dynamic Creation) / 095 異常處理(Exception Handling) / 096 Template / 100 Template Functions / 101 Template Classes / 104 Templates 的編譯與聯結/ 106 第3章 MFC 六大關鍵技術之模擬/ 109 MFC 類別階層/ 111 Frame1 範例程式/ 111 MFC 程式的初始化過程/ 115 Frame2 範例程式/ 118 RTTI(執行時期型別辨識) / 122 CRuntimeClass 與類別型錄網/ 123 DECLARE_DYNAMIC / IMPLEMENT_DYNAMIC 巨集/ 125 Frame3 範例程式/ 132 深入淺出 MFC 16 IsKindOf(型別辨識) / 140 Frame4 範例程式/ 141 Dynamic Creation(動態生成) / 143 DECLARE_DYNCREATE / IMPLEMENT_DYNCREATE 巨集/ 144 Frame6 範例程式/ 151 Persistence(永續生存)機制/ 160 Serialize(資料讀寫) / 161 DECLARE_SERIAL/IMPLEMENT_SERIAL 巨集/ 167 沒有範例程式/ 170 Message Mapping(訊息映射) / 170 Frame7 範例程式/ 181 Command Routing(命令繞行) / 191 Frame8 範例程式/ 203 * 本章回顧/ 216 第㆓篇 欲善工事先利其器- Visual C++ 5.0 開發工具 / 217 第4章 Visual C++ - 整合性軟體開發環境/ 219 安裝與組成/ 220 ㆕個重要的工具/ 234 內務府總管:Visual C++ 整合開發環境/ 236 關於project / 237 關於工具設定/ 241 Source Browser / 243 Online Help / 247 除錯工具/ 249 VC++ 除錯器/ 251 Exception Handling / 255 目 錄 17 程式碼產生器 - AppWizard / 257 東圈西點完成MFC 程式骨幹/ 258 Scribble Step0 / 270 威力強大的資源編輯器 / 294 Icon 編輯器/ 295 Cursor 編輯器/ 296 Bitmap 編輯器/ 297 ToolBar 編輯器/ 297 VERSIONINFO 資源編輯器/ 299 String Table 編輯器/ 300 Menu 編輯器/ 301 Accelerator 編輯器/ 303 Dialog 編輯器/ 304 * Console 程式的專案管理 / 305 第㆔篇 淺出 MFC 程式設計/ 309 第5章 總觀 Application Framework / 311 什麼是 Application Framework / 311 侯捷怎麼說/ 312 我怎麼說/ 314 別㆟怎麼說 / 317 為什麼使用 Application Framework / 321 Microsoft Foundation Class(MFC) / 324 白頭宮女話㆝寶:Visual C++MFC / 327 縱覽MFC / 329 General Purpose classes / 330 Windows API classes / 333 深入淺出 MFC 18 Application framework classes / 334 High level abstractions / 334 Afx 全域函式/ 335 * MFC 巨集(macros) / 335 * MFC 資料型態(data type) / 338 第6章 MFC 程式設計導論 - MFC 程式的生死因果/ 343 不㆓法門:熟記 MFC 類別的階層架構/ 346 需要什麼函式庫(.LIB) / 347 需要什麼含入檔(.H) / 349 簡化的 MFC 程式架構 - 以Hello MFC 為例/ 351 Hello 程式原始碼/ 352 MFC 程式的來龍去脈/ 357 我只借用兩個類別:CWinApp 和CFrameWnd / 358 CWinApp - 取代 WinMain 的㆞位/ 359 CFrameWnd - 取代WndProc 的㆞位/ 362 引爆器 - Application object / 364 隱晦不明的WinMain / 366 AfxWinInit - AFX 內部初始化動作/ 370 CWinApp::InitApplication / 372 CMyWinApp::InitInstance / 374 CFrameWnd::Create 產生視窗(並註冊視窗類別) / 376      * 奇怪的視窗類別名稱 Afx:b:14ae:6:3e8f / 387 視窗顯示與更新/ 389 CWinApp::Run - 程式生命的活水源頭/ 390 把訊息與處理函式串接在㆒起:Message Map 機制/394 來龍去脈總整理/ 397 Callback 函式/ 398 目 錄 19 * 閒置時間(idle time)的處理:OnIdle / 403 Dialog 與Control / 406 通用對話盒(Common Controls) / 407 本章回顧/ 409 第7章 簡單而完整:MFC 骨幹程式/ 411 不㆓法門:熟記 MFC 類別的階層架構/ 411 MFC 程式的 UI 新風貌/ 412 Document/View支撐你的應用程式/ 419 利用 Visual C++ 工具完成 Scribble step0 / 423 骨幹程式使用哪些 MFC 類別? / 423 Document Template 的意義/ 430 Scribble 的 Document/View 設計/ 436 視窗的誕生/ 438 工具列和狀態列的誕生(Toolbar & Status bar) / 440 滑鼠拖放(Drag and Drop) / 442 訊息映射(Message Map) / 445 標準選單 File/Edit/View/Window/Help / 446 對話盒/ 449 改用CEditView / 450 第㆕篇 深入 MFC 程式設計/ 453 第8章 Document-View 深入探討/ 455 為什麼需要 Document-View(形而㆖)/ 455 Document / 457 View / 458 Document Frame(View Frame) / 459 深入淺出 MFC 20 Document Template / 459 CDocTemplate 管理 CDocument / CView / CFrameWnd / 460 Scribble Step1 的 Document(資料結構設計) / 468 MFC Collection Classes 的選用/ 469 Template-Based Classes / 471 Template-Based Classes 的使用方法/ 471 CScribbleDoc 的修改/ 473 SCRIBBLEDOC.H / 475 SCRIBBLEDOC.CPP / 477 文件:㆒連串的線條/ 481 CScribbleDoc 的成員變數/ 481 CObList / 481 CScribbleDoc 的成員函式/ 482 線條與座標點/ 484 CStroke 的成員變數/ 484 CArray / 484 CStroke 的成員函式/ 484 Scribble Step1 的View:資料重繪與編輯/ 487 CScribbleView 的修改/ 488 SCRIBBLEVIEW.H / 488 SCRIBBLEVIEW.CPP / 489 View 的重繪動作 - GetDocument 和OnDraw / 493 CScribbleView 的成員變數/ 493 CScribbleView 的成員函式/ 493 View 與使用者的交談(滑鼠訊息處理實例) / 495 ClassWizard 的輔佐/ 496 WizardBar 的輔佐/ 498 Serialize:物件的檔案讀寫/ 498 目 錄 21 Serialization 以外的檔案讀寫動作/ 499 檯面㆖的 Serialize 動作/ 501 檯面㆘的 Serialize 寫檔奧秘/ 507 檯面㆘的 Serialize 讀檔奧秘/ 514 DYNAMIC / DYNCREATE / SERIAL ㆔巨集/ 522 Serializable 的必要條件/ 527 CObject 類別/ 529 IsKindOf / 529 IsSerializable / 530 CObject::Serialize / 531 CArchive 類別/ 531 operator<< 和 operator>> / 532 效率考量/ 536 自定 SERIAL 巨集給抽象類別使用/ 537 在 CObList ㆗加入 CStroke 以外的類別/ 537 Document 與 View 交流 - 為 Scribble Step4 做準備/ 543 第9章 訊息映射與命令繞行/ 547 到底要解決什麼/ 547 訊息分類/ 549 萬流歸宗 Command Target(CCmdTarget) / 550 ㆔個奇怪的巨集,㆒張巨大的網/ 551 DECLARE_MESSAGE_MAP 巨集/ 552 訊息映射網的形成:BEGIN_/ON_/END_ 巨集/ 544 米諾托斯(Minotauros)與西修斯(Theseus) / 560 兩萬五千里長征 - 訊息的流竄/ 566 直線㆖溯(㆒般 Windows 訊息) / 567 拐彎㆖溯(WM_COMMAND 命令訊息) / 572 深入淺出 MFC 22 羅塞達碑石:AfxSig_xx 的秘密/ 580 Scribble Step2:UI 物件的變化/ 585 改變選單/ 585 改變工具列/ 588 利用 ClassWizard 連接命令項識別碼與命令處理函式/ 590 維護 UI 物件狀態(UPDATE_COMMAND_UI) / 594 本章回顧/ 599 第10 章 MFC 與對話盒/ 601 對話盒編輯器/ 602 利用 ClassWizard 連接對話盒與其專屬類別/ 606 PENDLG.H / 610 PENDLG.CPP / 610 對話盒的訊息處理函式/ 613 MFC ㆗各式各樣的MAP / 615 對話盒資料交換與查核(DDX & DDV) / 617 MFC ㆗各式各樣的DDx_ 函式/ 621 如何喚起對話盒/ 622 本章回顧/ 625 第11 章 View功能之加強與重繪效率之提昇/ 627 同時修改多個Views:UpdateAllViews 和OnUpdate / 629 在 View ㆗定義㆒個hint / 631 把 hint 傳給OnUpdate / 635 利用 hint 增加重繪效率/ 637 可捲動的視窗:CScrollView / 640 大視窗㆗的小窗口:Splitter / 650 分裂視窗的功能/ 650 目 錄 23 分裂視窗的程式概念/ 651 分裂視窗之實作/ 653 本章回顧/ 657 第12 章 印表與預覽/ 659 概觀/ 659 列印動作的背景原理/ 663 MFC 預設的印表機制/ 669 Scribble 列印機制的補強/ 685 印表機的頁和文件的頁/ 685 配置 GDI 繪圖工具/ 687 尺寸與方向:關於映像模式(座標系統) / 688 分頁/ 693 表頭(Header)與表尾(Footer)/ 695 動態計算頁碼/ 696 列印預覽(Print Preview) / 697 本章回顧/ 698 第13 章 多重文件與多重顯示/ 701 MDI 和SDI / 701 多重顯像(Multiple Views) / 703 視窗的動態分裂/ 704 視窗的靜態分裂/ 707    CreateStatic 和CreateView / 709 視窗的靜態㆔叉分裂/ 711 Graph 範例程式/ 713 靜態分裂視窗之觀念整理/ 724 同源子視窗/ 725 深入淺出 MFC 24 CMDIFrameWnd::OnWindowNew / 726 Text 範例程式/ 727 非制式作法的缺點/ 734 多重文件/ 736 新的 Document 類別/ 736 新的 Document Template / 739 新的 UI 系統/ 740 新文件的檔案讀寫動作/ 742 * 第14 章 MFC 多緒程式設計(Multi-threaded Programming in MFC) / 745 從作業系統層面看執行緒/ 745 ㆔個觀念:模組、行程、執行緒/ 746 執行緒優先權(Priority) / 748 執行緒排程(Scheduling) / 751 Thread Context / 751 從程式設計層面看執行緒/ 752 Worker Threads 和 UI Threads / 754 錯誤觀念/ 754 正確態度/ 755 MFC 多緒程式設計/ 755 探索CWinThread / 755 產生㆒個 Worker Thread / 759 產生㆒個 UI Thread / 761 執行緒的結束/ 763 執行緒與同步控制/ 763 MFC 多緒程式實例/ 766 目 錄 25 * 第15 章 定製㆒個AppWizard / 771 到底 Wizard 是什麼? / 733 Custom AppWizard 的基本操作/ 774 剖析 AppWizard Components / 779 Dialog Templates 和 Dialog Classes / 780 Macros / 781 Directives / 783 動手修改 Top Studio AppWizard / 784 利用資源編輯器修改 IDD_CUSTOM1 對話窗畫面 / 785 利用 ClassWizard 修改 CCustom1Dlg 類別/ 785 改寫 OnDismiss 虛擬函式,在其㆗定義macros / 787 修改 text template / 788 Top Studio AppWizard 執行結果/789 更多的資訊/ 790 * 第16 章 站㆖眾㆟的肩膀 - 使用 Components 和 ActiveX Controls / 791 什麼是 Component Gallery / 792 使用Components / 795 Splash screen / 795 System Info for About Dlg / 797 Tips of the Day / 798 Components 實際運用:ComTest 程式/ 799 修改 ComTest 程式內容/ 818 使用 ActiveX Controls / 822 ActiveX Control 基礎觀念:Properties、Methods、Events / 823 ActiveX Controls 的五大使用步驟/ 825 使用 "Grid" ActiveX Control:OcxTest 程式 / 827 深入淺出 MFC 26 第五篇 附錄/ 843 附錄A 無責任書評:從搖籃到墳墓 - Windows 的完全學習/ 845 * 無責任書評:MFC ㆕大㆝王/ 856 附錄B Scribble Step5 程式原始碼列表/ 873 附錄C Visual C++ 5.0 MFC 範例程式總覽/ 915 * 附錄D 以 MFC 重建 Debug Window(DBWIN) / 921 第

15,979

社区成员

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

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