怎样在vc程序中实现拖放操作?

zm_stone 2000-03-14 02:19:00
加精
...全文
454 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ZPoint 2000-03-14
  • 打赏
  • 举报
回复
老歌新唱,你可去访问www.softWonder.com

2.MFC中用于对象拖放的类

MFC(Microsoft Foundation ClassLibrary)为实现对象拖放提供了如下三个类。为便于后边的
讨论我们先来熟悉一下这些类。

2.1.COleDataSource。用于启动一次拖放操作,并向系统提供拖放对象的数据。类中的成员
函数有如下三种:

a.设定提供数据的方式和使用的数据格式。提供数据的方式有两种,一种是即时方式,
另一种是延迟方式;即时方式需要在拖动开始之前提供数据;延迟方式不需要立即提供数据,当系
统请求有关数据时,由OnRenderData()等虚函数提供所需的数据。

可以用CacheGlobalData()等函数指定使用即时方式提供数据,也可以用DelayRenderData
()等函数指定使用延时方式提供数据。

b.响应请求,提供数据。应当重载OnRenderFileData()或其他相应的虚函数,以提供有关
数据(后边将详细讨论)。

c.实施拖放操作。调用函数DoDragDrop(),开始实施拖放操作。

2.2.OleDataTarget。用于准备接收拖放对象的目标窗口;一个窗口要想能够接收拖放对象,
必须包含一个COleDataTarget对象,并注册该对象。类中主要成员函数:

a.注册。函数Register()注册该对象,以便使窗口能够接收拖放对象。

b.响应拖放过程中的动作(虚成员函数) 当鼠标首次进入窗口时系统将调用
OnDragEnter(),当鼠标移出窗口时系统将调用OnDragLeave(), 当鼠标在窗口内移动,
系统将重复调用调用OnDragOver(),当对象在窗口内落下调用OnDrop()。

2.3.OleDataObject.用于接收拖放对象,类中主要成员函数有两种:

a.确定可以使用的数据格式。IsDataAvailable()等函数确定指定数据格式是否可用;

b.获取数据。GetData()、GetFileData()等函数用于按指定数据格式获得数据。

3.利用MFC实现对象拖放

要实现一次对象拖放,需要做三方面的工作:对象所在的窗口准备拖放对象并启拖动操作,接受对象的窗口响应有关拖放消息并接受落下的对象,以及拖放完成时的后期处理。以下分别予以
介绍。

3.1. 拖动操作的启动。拖放操作一般是从单击鼠标左键开始。在消息WM_LBUTTONDOWN的响应
函数OnLButtonDown(...)中,首先要判定是否选定了某一对象,如果未选定或选定多个,则不能进
行拖放操作;如果选定了一个对象,则可以进行拖放操作。

要启动一次拖放操作,需要先准备一个COleDataSource对象。注意到类COleClientIten和类
COleServerItem都是从类COleDataSource上派生的,如果选定的是COleClientItem对象或者是
COleServerItem对象,则可以直接使用;否则,需要生成一个COleDataSource对象,值得注意的
是:需要象上文中所说的,应该指定使用的数据格式,并按指定格式提供对象的有关数据。
ZPoint 2000-03-14
  • 打赏
  • 举报
回复
老歌新唱,你可去访问www.softWonder.com
cqjiang 2000-03-14
  • 打赏
  • 举报
回复
MFC的DOC-VIEW框架自带脱放操作,不加任何代码。
haihong 2000-03-14
  • 打赏
  • 举报
回复
THIS IS A PART FROM MSDN:(HAVE SAMPLE)
A tree control (CTreeCtrl) sends a notification when the user starts to drag an item. The control sends a TVN_BEGINDRAG notification message when the user begins dragging an item with the left mouse button and a TVN_BEGINRDRAG notification message when the user begins dragging with the right button. You can prevent a tree control from sending these notifications by giving the tree control the TVS_DISABLEDRAGDROP style.

You obtain an image to display during a drag operation by calling the CreateDragImage member function. The tree control creates a dragging bitmap based on the label of the item being dragged. Then the tree control creates an image list, adds the bitmap to it, and returns a pointer to the CImageList object.

You must provide the code that actually drags the item. This typically involves using the dragging capabilities of the image list functions and processing the WM_MOUSEMOVE and WM_LBUTTONUP (or WM_RBUTTONUP) messages sent after the drag operation has begun. For more information about the image list functions, see CImageList in the Class Library Reference and Image Lists in the Platform SDK. For more information about dragging a tree control item, see Dragging a Tree View Item, also in the Platform SDK.

If items in a tree control are to be the targets of a drag-and-drop operation, you need to know when the mouse cursor is on a target item. You can find out by calling the HitTest member function. You specify either a point and integer, or the address of a TVHITTESTINFO structure that contains the current coordinates of the mouse cursor. When the function returns, the integer or structure contains a flag indicating the location of the mouse cursor relative to the tree control. If the cursor is over an item in the tree control, the structure contains the handle of the item as well.

You can indicate that an item is the target of a drag-and-drop operation by calling the SetItem member function to set the state to the TVIS_DROPHILITED value. An item that has this state is drawn in the style used to indicate a drag-and-drop target.
netsky 2000-03-14
  • 打赏
  • 举报
回复
试试用ole来进行拖放。
929 2000-03-14
  • 打赏
  • 举报
回复
一般是处理WM_DROPFILES消息来完成。在WIN32 API帮助中有SDK的程序片段。
首先窗口用DragAcceptFiles指明自己将接受WM_DROPFILES消息。然后在WM_DROPFILES消息处理过程中对拖放进行处理。其中需要调用DragQueryFile来获得拖放文件的信息。可在帮助中再看看。
下面是API帮助中的程序片段.
For example, an application can call the DragAcceptFiles function when it starts and call a drag-drop function when it receives a WM_DROPFILES message, as shown in the following example.

case WM_CREATE:
DragAcceptFiles(hwnd, TRUE);
break;

case WM_DROPFILES:
DragFunc(hwnd, wParam); /* application-defined function */
break;

case WM_DESTROY:
DragAcceptFiles(hwnd, FALSE);
break;


The following example uses the DragQueryPoint function to determine where to begin to write text. The first call to the DragQueryFile function determines the number of dropped files. The loop writes the name of each file, beginning at the point returned by DragQueryPoint.

POINT pt;
WORD cFiles, a;
char lpszFile[80];

DragQueryPoint((HANDLE) wParam, &pt);

cFiles = DragQueryFile((HANDLE) wParam, 0xFFFF, (LPSTR) NULL, 0);
for(a = 0; a < cFiles; pt.y += 20, a++) {
DragQueryFile((HANDLE) wParam, a, lpszFile, sizeof(lpszFile));
TextOut(hdc, pt.x, pt.y, lpszFile, lstrlen(lpszFile));
}

DragFinish((HANDLE) wParam);
相关网站 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、移动
相关网站 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
资源比较大,分成两部分上传。 第一部分 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 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.1 风格程序分析 85   2.6 MFC新功能——Visual Studio   2.6.1 风格程序分析 90   2.7 MFC新功能——Windows资源   2.7.1 管理器风格程序分析 98   2.8 应用程序框架类对象分析 100   2.8.1 视图类对文档类的调用 100   2.8.2 在框架类获得当前的文档类和视图类对象指针 101   2.8.3 获得应用程序类对象的指针 101   2.8.4 从应用类对象获得主框架类对象的指针 101   2.9 小结 102   第3章 Visual C++ 2010 MFC菜单编程 103   3.1 菜单编程 103   3.1.1 创建菜单 104   3.1.2 创建菜单热键 115   3.1.3 标记菜单 115   3.1.4 给菜单加入图标 119   3.1.5 禁用菜单 121   3.1.6 移除与加载菜单 127   3.2 菜单消息的传输机制 129   3.2.1 菜单消息的分类 129   3.2.2 菜单消息的传输路由 129   3.3 动态菜单操作 131   3.3.1 添加菜单 131   3.3.2 插入菜单 133   3.3.3 删除菜单 135   3.3.4 插入菜单的命令响应 136   3.3.5 修改菜单 137   3.4 小结 140   第4章 Visual C++ 2010 MFC对话框编程 141   4.1 对话框简介 141   4.1.1 对话框的控件简介 141   4.1.2 对话框的种类简介 149   4.1.3 设计对话框 150   4.2 创建与销毁对话框 153   4.2.1 模态对话框 153   4.2.2 非模式对话框 159   4.2.3 属性页对话框 163   4.3 消息对话框 173   4.4 通用对话框 175   4.4.1 文件打开对话框 176   4.4.2 文件保存对话框 178   4.4.3 颜色对话框 179   4.4.4 字体对话框 181   4.4.5 查找对话框 183   4.4.6 页面设置对话框 185   4.4.7 打印对话框 186   4.5 小结 187   第5章 Visual C++ 2010 MFC对话框控件 188   5.1 Visual C++ 2010 Button控件简介与开发 191   5.2 Visual C++ 2010 List Box 控件简介与开发 193   5.3 Visual C++ 2010 Com boBox控件简介与开发 195   5.3.1 创建扩展组合框控件 196   5.3.2 在扩展组合框控件使用   5.3.2 图像列表 197   5.3.3 设置各项的图像 197   5.3.4 处理扩展组合框控件的通知消息 198   5.4 Visual C++ 2010 List控件简介与开发 198   5.4.1 列表控件和列表视图 199   5.4.2 列表项和图像列表 199   5.4.3 回调项和回调屏蔽 200   5.4.4 创建列表控件 200   5.4.5 创建图像列表 201   5.4.6 向控件添加列(报表视图) 204   5.4.7 向控件添加项 205   5.4.8 在列表控件滚动、排列、   5.4.8 排序和查找 205   5.4.9 在列表控件实现工作区 205   5.4.10 处理列表控件的通知消息 206   5.4.11 更改列表控件样式 206   5.4.12 虚拟列表控件 207   5.4.13 列表控件的消息映射 209   5.4.14 列表控件的风格选项及表头设置 210   5.4.15 销毁列表控件 210   5.5 Visual C++ 2010 Edit控件简介与开发 211   5.6 Visual C++ 2010 Rich Edit控件简介与开发 213   5.6.1 Rich Edit控件的字符格式 215   5.6.2 Rich Edit控件的段落格式 215   5.6.3 Rich Edit控件的当前选定内容 215   5.6.4 Rich Edit控件的分词 216   5.6.5 Rich Edit控件的剪贴板操作 216   5.6.6 Rich Edit控件的流操作 216   5.6.7 Rich Edit控件的打印操作 216   5.6.8 无底的Rich Edit控件 217   5.6.9 来自Rich Edit控件的通知 217   5.7 Visual C++ 2010 Progress控件简介与开发 219   5.7.1 进度控件的样式 219   5.7.2 进度控件的设置 219   5.7.3 操作进度控件 220   5.8 Visual C++ 2010 Tree控件简介与开发 220   5.8.1 树控件样式 221   5.8.2 树控件父项和子项 221   5.8.3 树控件项位置 222   5.8.4 树控件项标签 222   5.8.5 树控件标签编辑 223   5.8.6 树控件项的状态 223   5.8.7 树控件图像列表 224   5.8.8 树控件项选择 224   5.8.9 树控件拖放操作 224   5.8.10 树控件项信息 225   5.8.11 树控件通知消息 225   5.9 Visual C++ 2010 DBgrid控件简介与开发 226   5.9.1 示例程序1 226   5.9.2 示例程序2 227   5.10 Visual C++ 2010 Rebar控件简介与开发 228   5.10.1 在Rebar控件使用图像列表 230   5.10.2 在Rebar控件使用对话栏 231   5.10.3 处理Rebar控件的通知消息 231   5.11 Visual C++ 2010 Timer控件简介与开发 232   5.12 Visual C++ 2010 Tab控件简介与开发 234   5.12.1 选项卡和选项卡控件属性 235   5.12.2 选项卡控件的使用方法 235   5.12.3 创建选项卡控件的方法 235   5.12.4 处理选项卡控件通知消息 236   5.12.5 CTabCtrl类简介 236   5.13 Visual C++ 2010 IP控件简介与开发 241   5.14 Visual C++ 2010 Picture控件简介与开发 241   5.15 Visual C++ 2010 Slider控件简介与开发 244   5.15.1 滑块控件样式 244   5.15.2 滑块控件成员函数 245   5.15.3 滑块控件通知消息 246   5.16 Visual C++ 2010 Scroll Bar控件简介与开发 246   5.17 Visual C++ 2010 Hot Key控件简介与开发 248   5.17.1 使用热键控件 248   5.17.2 设置热键 249   5.18 Visual C++ 2010 Animation控件简介与开发 249   5.18.1 使用动画控件 249   5.18.2 动画控件发送的通知 250   5.19 Visual C++ 2010 Spin控件简介与开发 250   5.19.1 数值调节钮的样式 250   5.19.2 数值调节钮成员函数 251   5.20 Visual C++ 2010 GroupBox控件简介与开发 251   5.21 Visual C++ 2010 Data Time Picker控件简介与开发 252   5.21.1 创建日期和时间选择器控件 253   5.21.2 访问嵌入的月历控件 253   5.21.3 在日期和时间选择器控件使用自定义格式字符串 254   5.21.4 在日期和时间选择器控件使用回调字段 254   5.21.5 处理日期和时间选择器控件的通知消息 256   5.22 Visual C++ 2010 Month Canlendar控件简介与开发 256   5.22.1 创建月历控件 257   5.22.2 处理月历控件的通知消息 257   5.22.3 设置月历控件的日状态 257   5.23 Visual C++ 2010 Custom控件简介与开发 258   5.23.1 使用MFC方法定制控件必备的几个基本概念 259   5.23.2 定制自定义控件的3种常见方法 260   5.24 Visual C++ 2010 SysLink控件简介与开发 260   5.25 Visual C++ 2010 Split Button控件简介与开发 261   5.26 Visual C++ 2010 Network Address控件简介与开发 262   5.27 Visual C++ 2010 Check Box控件简介与开发 262   5.28 Visual C++ 2010 Radio Button控件简介与开发 264   5.28.1 为单选按钮控件分组 264   5.28.2 获得被选的单选按钮的文本 264   5.29 Visual C++ 2010 MediaPlayer控件简介与开发 265   5.30 小结 266   第二部分 Visual C++ 2010下MFC开发   第6章 计算机测控系统概述 267   6.1 Visual C++ 2010 SDI开发简介 267   6.1.1 建立应用程序基本框架 267   6.1.2 处理视图 267   6.1.3 处理文档 271   6.1.4 串行化处理 274   6.1.5 SDI应用程序编程思路 275   6.2 Visual C++ 2010 MDI开发简介 277   6.2.1 多文档接口 277   6.2.2 生成程序 278   6.2.3 程序类、文件和代码 279   6.2.4 自定义资源 281   6.3 Visual C++ 2010 View开发 282   6.3.1 生成源文件 283   6.3.2 初始化视图类数据成员 283   6.3.3 加入消息处理功能 285   6.3.4 设计程序资源 290   6.3.5 定制MiniDraw窗口 292   6.3.6 程序清单 293   6.4 Visual C++ 2010 EditView开发 298   6.4.1 生成MiniEdit程序 299   6.4.2 修改程序菜单 300   6.4.3 编辑加速键 301   6.4.4 程序清单 303   6.5 Visual C++ 2010 FormView开发 306   6.5.1 自定义FormDemo程序 307   6.5.2 程序清单 314   6.6 Visual C++ 2010 ScrollView开发 319   6.6.1 加入滚动功能 319   6.6.2 坐标换算 319   6.6.3 限制图形大小 322   6.6.4 改变鼠标光标 325   6.7 Visual C++ 2010 HtmlEditView开发 328   6.8 Visual C++ 2010 HtmlView开发 331   6.9 Visual C++ 2010 ListView开发 335   6.10 Visual C++ 2010 RichEditView开发 335   6.11 VisualC++ 2010 TreeView开发 336   6.12 Visual C++ 2010 Office 2007风格文档视图开发框架 337   Visual C++ 2010 Visual Studio   6.13 2008风格文档视图开发框架 342   6.14 Visual C++ 2010 Windows资源管理器风格文档视图开发框架 346   6.15 小结 350   ……   第7章 VisualC++2010MFC应用程序界面与美化   第8章 VisualC++2010MFC文本与字体   第9章 VisualC++2010MFC图形图像编程   第10章 VisualC++2010MFC动态函数链接库   第11章 VisualC++2010MFCActiveX控件   第12章 VisualC++2010MFC文件与注册表操作   第13章 VisualC++2010MFC数据库开发   第14章 VisualC++2010MFC多线程程序设计   第15章 VisualC++2010MFC网络程序设计   第16章 VisualC++2010MFC进程通信   第三部分 VisualC++2010下MFC与CLR进行开发   第17章 VisualC++2010CLR开发基础   第18章 VisualC++2010CLRWindows窗口编程   第19章 VisualC++2010MFC与.NET交互编程   第四部分 发布VisualC++2010程序   第20章VisualC++2010应用程序部署   第五部分 基于Windows7平台用VisualC++2010开发   第21章 VisualC++2010基于Windows7新特性开发

16,472

社区成员

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

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

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