
MFC
丸子头
这个作者很懒,什么都没留下…
展开
-
treectrl的个性化排序
CTreeCtrl有几种方式对其子项进行排序InsertItem allows to insert the child item alphabetically, when specifying TVI_SORT for hInsertAfter可以实现对插入节点按照字母顺序进行排序,前提是在参数hInsertAfter中指定为TVI_SORT.SortChildre原创 2014-12-04 14:31:24 · 1809 阅读 · 0 评论 -
CString 是一种很有用的数据类型
原文地址:http://blog.youkuaiyun.com/xiaoxiongli/article/details/1671873CString 是一种很有用的数据类型。它们很大程度上简化了MFC中的许多操作,使得M FC在做字符串操作的时候方便了很多。不管怎样,使用CString有很多特殊的技巧,特别是 对于纯C背景下走出来的程序员来说有点难以学习。这篇文章就来讨论这些技巧。 使用CSt转载 2012-07-11 20:58:07 · 2931 阅读 · 0 评论 -
DestroyWindow
考虑单窗口情况: 假设自己通过new创建了一个窗口对象pWnd,然后pWnd->Create。则销毁窗口的调用次序: 1. 手工调用pWnd->DestroyWindow(); 2. DestroyWindow会发送WM_DESTROY; 3. WM_DESTROY对应的消息处理函数是OnDestroy(); 4. DestroyWind转载 2012-07-11 20:53:57 · 1236 阅读 · 0 评论 -
虚函数PostNcDestroy功能
CWnd::PostNcDestroyvirtual void PostNcDestroy( );参数:在窗口被销毁以后,缺省的OnNcDestroy成员函数调用这个函数。派生类可以利用这个函数来执行自定义的清除工作,比如删除指针。虚函数PostNcDestroy 在视图窗口关闭时最后调用的成员函数,它与CFrameWnd::Pos转载 2012-07-11 20:37:22 · 9327 阅读 · 0 评论 -
Clistctrl多行删除总结
备注:第五种方法已经试过,其余没试过,感觉是对的(第二种方法是错误的 )CListCtrl选中行有两种属性情况,如果设置了Single Selection为TRUE,则只能单选,否则为多选(默认)。方法一:int CListCtrl::GetSelectionMark();返回值:返回选中索引号,否则返回-1说明:这个函数可以处理单行的情况,但是转载 2012-07-12 11:15:38 · 5336 阅读 · 0 评论 -
CString 在_UNICODE宏定义下和普通ASCII编码下的不同
CString在普通ASCII编码情况下,系统默认是跟char*差不多的方式来存储(个人觉得)。例如,声明和赋值一个CString可以这样:char* charStr = "Kenko";CString cstr = charStr;因为在ASCII编码下,CString会把后边这个指针的内存位置,作为输入流,逐个字符的读入到CString中。 但转载 2012-07-11 20:29:01 · 1719 阅读 · 0 评论 -
TCITEM结构体
Specifies or receives the attributes of a tab item. It is used with the TCM_INSERTITEM, TCM_GETITEM, and TCM_SETITEM messages. This structure supersedes the TC_ITEM structure.用于指定或者接受tab控件的条目的属性转载 2012-07-04 11:42:27 · 2680 阅读 · 0 评论 -
[原创]MFC分割窗口后如何去掉子窗口滚动条
原址:http://hi.baidu.com/kuliuheng/blog/item/d5cecd1cd8388d1834fa4145.html这是一个困扰了我很久的问题,也许我是因为我没有认真的去想这个问题吧——当分割了单文档窗口之后,改变左子窗口大小总会出现一个滚动条,甚是奇怪!就像这样: 想来想去,感觉左边这个子View转载 2012-04-23 10:12:00 · 7102 阅读 · 5 评论 -
视图添加控件、控件响应
将控件设置为CView的变量需要重载CView的OnCreate函数,对控件变量进行Create。如果需要相应控件相关的消息,要根据创建的ID写好消息映射。----------------------------------------------------------------------------------向视图添加控件的基本过程如下:转载 2012-05-05 11:04:47 · 1164 阅读 · 0 评论 -
MFC 之 对话框编程入门
原文地址: http://my.oschina.net/zhongxhua/blog/15273下面我们来设计这个程序的UI,首先在“视图”菜单中选择“工具箱”,这个工具箱窗口中,列出了很多常用的Windows控件(如按钮、复选框、编辑框、标签等),点击一个控件,此时鼠标变为十字型,像使用画图工具一样在设计器上绘出该控件,也可以同过拖拽的方法将控件直接拖到UI设计器中的对话框上转载 2012-05-05 09:46:35 · 1187 阅读 · 0 评论 -
CFormView和CView区别
建立一个"单文档"的工程中,用户视图的基类改为CView,在编程中就有了ondraw函数(成员函数),而在CFormView情况下就没有ondraw函数(成员函数),CFormView是CView类的派生类,在CFormView类里可以放很多控件,即“带有菜单并可以添加控件的工程”。 View必须和document一起工作,CView不能在资源编辑器中编辑,但是CFormView可以,一般转载 2012-05-05 09:37:11 · 5755 阅读 · 0 评论 -
CHeaderCtrl用法
CListCtrl的表头可以单独使用,类CHeaderCtrl封装了这一功能. 1. 构造表头 和所有控件一样,都通过Create函数创建对象,Create函数的原型如下: virtual BOOL Create(DWORD dwStyle,const RECT& rect,CWnd* pParentWnd,UINT nID) 参数转载 2012-07-02 21:23:58 · 1171 阅读 · 0 评论 -
CTime和DWORD类型的相互转换
1.CTime对象转换为DWORD类型CTime time=CTime::GetCurrentTime(); //获取当前时间DWORD timedw = time.GetTime(); //CTime->DWORD2.DWORD类型变量转换为CTime对象CTime time1(timedw); //DWORD->CTimeCString strTime;s转载 2012-07-17 08:49:59 · 2037 阅读 · 0 评论 -
OnPaint 与 OnDraw 的关系
原文地址:http://blog.youkuaiyun.com/abidepan/article/details/7956220OnPaint是WM_PAINT消息的消息处理函数,在OnPaint中调用OnDraw,一般来说,用户自己的绘图代码应放在OnDraw中。OnPaint()是CWnd的类成员,负责响应WM_PAINT消息。OnDraw()是CVIEW的成员函数,没有响应消息的功能.当视图转载 2012-11-23 11:36:09 · 712 阅读 · 0 评论 -
VS可增加调试效率的伪符号getlasterror
可增加调试效率的伪符号 在调试的时候我们经常因为某个函数的执行错误而大费周折,还要在回过头来添加一个GetLastError()获取出错原因,非常麻烦。其实使用Visual Studio的伪符号@ERR就可以完成这个功能,我们等函数执行完,并确定它出错了,那我们就可以在Visual Studio的WATCH窗口里加上@ERR,马上可以看到出错的错误码了。如果我们还想知道错误码的转载 2014-09-26 16:34:43 · 2051 阅读 · 0 评论 -
LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
连接器LNK是通过调用cvtres.exe完成文件向coff格式的转换的,所以出现这种错误的原因就是cvtres.exe出现了问题。在电脑里面搜索一下cvtres.exe,发现存在多个文件,使用最新的cvtres.exe替换老的文件即可,替换之前记得备份一下,如果不对,可以替换回来。例如:我的电脑里面安装了vs2010,最近更新了系统,打了一些补丁,结果就出转载 2014-08-07 14:02:18 · 543 阅读 · 0 评论 -
规则dll
分为两类: (1)静态链接到MFC的规则DLL 静态链接到MFC的规则DLL与MFC库静态链接,将MFC库的代码直接生产在.dll文件中。在调用这种DLL的接口时,MFC使用DLL的资源。因此,在静态链接到MFC的规则DLL中不需要进行模块状态的切换。 使用这种方法生成的规则DLL其程序较大,也可能包含重复的代码。 (2)动态链接到MFC的规则DLL 动态链接到转载 2014-08-06 16:17:34 · 845 阅读 · 0 评论 -
LINK : fatal error LNK1123: 转换到COFF 期间失败文件无效或损坏
终极解决方案:VS2010在经历一些更新后,建立Win32 Console Project时会出“error LNK1123” 错误,解决方案为将 项目|项目属性|配置属性|清单工具|输入和输出|嵌入清单 “是”改为“否”即可,但是没新建一个项目都要这样设置一次。在建立VS2010 Win32 Project项目时,按照上面解决方案依然发生了“error LNK1123”错误,经过上网查资转载 2014-07-24 15:14:14 · 673 阅读 · 0 评论 -
Ctreectrl在初始化(OnInitDialog)中SetCheck的问题
SetCheck 对于对话框中的TreeView控件,如果想在初始化(OnInitDialog)中SetCheck,必须:m_tree.ModifyStyle( TVS_CHECKBOXES, 0 );m_tree.ModifyStyle( 0, TVS_CHECKBOXES );m_tree.SetCheck(hItem, TRUE);即即使在对话框编辑器中为TreeVi转载 2013-07-17 10:15:07 · 1666 阅读 · 2 评论 -
消息反射机制
常用MFC消息映射宏说明1、DECLARE_MESSAGE_MAP:在头文件中声明源文件中所含有的消息映射 2, BEGIN_MESSAGE_MAP:标记源文件消息映射的开始 3,END_MESSAGE_MA:标记源文件消息映射的结束 4,ON_COMMAND:将特定命令的处理委派给类的一个成员函数 5,ON_CONTROL:映射一个函数到一个定制控制通知消息,转载 2013-07-14 14:24:22 · 855 阅读 · 1 评论 -
防止对话框程序按Enter和ESC退出的对策
写在前面的话:最近刚好在写一个基于对话框的东西。这是个很简单的问题,记得曾经在刚刚接触MFC的时候就有遇到这个问题,只记得是要取消系统的默认,但是去具体答不出来,找出来贴上。发现我自己一个人在那边的那段苦闷的,毫无方向的日子,其实我还是学了一些东西的,永远不要只迷茫,迷茫着往前走就行了。。一般情况下编写的对话框程序,用户在运行的时候,如果不注意按下了ENTER或者E转载 2013-07-08 21:12:32 · 1231 阅读 · 0 评论 -
NM_CUSTOMDRAW的自绘如树的节点颜色list某行颜色的改变
自绘树控件的关键之处在于NM_CUSTOMDRAW消息,比如tree节点的颜色,list某行的字体的颜色可以看到在CTree 的NM_CUSTOMDRAW消息处理函数里有这样一句:void CNewTreeCtrl::OnCustomDraw(NMHDR *pNMHDR, LRESULT *pResult){ NMTVCUSTOMDRAW *ptvTreeCtrl=(NMTVCUS转载 2013-06-16 20:34:40 · 4221 阅读 · 0 评论 -
win7系统下的系统能做到的美化---tree的“+”“-”和控件的win7风格
1 dialog中的.tree的“+”“-” win7下的资源管理器确是三角形,看起来比较好看 ,实现方法是windowTheme的问题, 在OnInitDialog()中调用SetWindowTheme(GetDlgItem(IDC_TREE1)->m_hWnd, L"Explorer", NULL);当然别忘了加载lib文件,#pragma comment(lib, "UxThem原创 2013-01-22 10:34:58 · 1226 阅读 · 0 评论 -
动态设置不同的行字体颜色
有时可能需要设置某行的文字为特殊颜色,以表示某种特殊含义,如有些为警告信息,有些为普通信息。NM_CUSTOMDRAW ------http://msdn.microsoft.com/en-us/library/ms930820.aspxNM_CUSTOMDRAW#ifdef LIST_VIEW_CUSTOM_DRAW lpNMCustomDraw = (LPNMLV原创 2013-01-12 11:59:55 · 2382 阅读 · 2 评论 -
ON——NOTIFY的例子
转帖:http://topic.youkuaiyun.com/u/20100117/15/a922e441-3861-48a2-a396-af0e3065cf59.html我在CView视图里动态加入2个控件CMFCTabCtrl,CListCtrl两个控件,其中CListCtrl又是CMFCTabCtrl子控件。现在的问题是CListCtrl的消息怎么捕获?我的动态创建代码如下: .h转载 2012-05-03 15:54:23 · 1986 阅读 · 0 评论 -
ON_NOTIFY
原文地址: http://blog.youkuaiyun.com/wzyzb/article/details/3974360TN061: ON_NOTIFY and WM_NOTIFY Messages这个技术文章介绍了关于新WM_NOTIFY消息, 还描述了建议使用的一种在你的MFC应用程序中处理WM_NOTIFY消息的方法。Windows 3.x 的 通告消息在Window转载 2012-05-03 15:40:45 · 885 阅读 · 0 评论 -
框架调用处理程序的方式
:来自MSDN消息的发送和接收请看该过程的发送部分以及框架的响应方式。大多数消息因用户与程序之间的交互而产生。命令通过鼠标单击菜单项或工具栏按钮或通过敲击快捷键生成。用户也通过其他方式生成 Windows 消息,例如移动窗口或调整窗口大小。当发生诸如程序启动或终止、窗口获取或失去焦点等事件时,将发送其他 Windows 消息。控件通知消息由鼠标单击或用户与某一控件(如对转载 2012-03-05 10:34:58 · 598 阅读 · 0 评论 -
Create OnCreate OnInitialUpdate OnCreateClient 构造函数之间关系
1.OnCreate在OnCreateClient之前执行,一些操作只能放在OnCreateClient中执行,比如分割窗口。2.OnCreat在主框架自身被创建时调用,而OnCreateClient使创建客户区窗口(即m_hWndMDIClient)时被调用。在建窗时执行 OnCreate()时候被自动调用。 作用是建CView object,只有当你想改变CCreateContex转载 2012-03-05 10:11:33 · 1321 阅读 · 0 评论 -
修改MFC标题栏上的图标和修改MFC窗口标题
经过测试直接在BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)中添加cs.style &= ~FWS_ADDTOTITLE;SetTitle(L"框架名称");就可以了后面为转发:MFC程序的默认的标题是“无标题-title”,其中title是应用程序的名称,我们应如何修改MFC窗口标题来符合自己的要求? MFC原创 2012-02-28 20:53:57 · 992 阅读 · 0 评论 -
MFC框架类、文档类、视图类相互访问的方法
转发地址:http://www.cnblogs.com/youthlion/archive/2012/02/02/2335616.html1、获取应用程序指针 CMyApp* pApp=(CMyApp*)AfxGetApp();2、获取主框架指针 CWinApp 中的公有成员变量 m_pMainWnd 就是主框架的指针 CMainFrame* pMainFram转载 2012-02-24 10:33:42 · 552 阅读 · 0 评论 -
typedef 的用法
*****以下是参考部分***** 此部分参考自:http://blog.sina.com.cn/u/572f7666010008dm 用途一: 定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如: char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针, // 和一个字符变量; 以转载 2011-11-29 15:19:08 · 425 阅读 · 0 评论 -
PeekMessage&&GetMessage
PeekMessage与GetMessage的对比相同点:PeekMessage函数与GetMessage函数都用于查看应用程序消息队列,有消息时将队列中的消息派发出去。不同点:无论应用程序消息队列是否有消息,PeekMessage函数都立即返回,程序得以继续执行后面的语句(无消息则执行其它指令,有消息时一般要将消息派发出去,再执行其它指令)。GetMessage函转载 2011-10-27 16:46:19 · 450 阅读 · 0 评论 -
NMHDR Structure
Contains information about a notification message.Syntax: typedef struct tagNMHDR { HWND hwndFrom; UINT_PTR idFrom; UINT code;原创 2011-05-25 15:47:00 · 575 阅读 · 0 评论 -
DLL笔记
引言 动态链接库(DLL)是WINDOWS平台的基础,Windows API中的所有函数都包含在D L L中。有3个最重要的D L L是K e r n e l 3 2 . d l l,它包含用于管理内存、进程和线程的各个函数; U s e r 3 2 . d l l,它包含用于执行用户界面任务(如窗口的创建和消息的传送)的各个函数; G D I 3 2 . d l l,它包含用于画图转载 2011-10-20 16:08:03 · 612 阅读 · 0 评论 -
vc6++Release和Debug
1、 如何快速地规范代码缩进格式选中所需要规范的代码,按shift+F82、 如何在Release状态下进行调试Project->Setting=>ProjectSetting对话框,选择Release状态。C/C++标签中的Category选General,Optimizations选Disable(Debug),Debut info选Pr转载 2011-10-20 15:58:51 · 3453 阅读 · 0 评论 -
AssertValid和Dump
AssertValid函数是用来判断表达式的合法性或正确性,如果不正确或不合法则终止程序并返回相应的提示信息 如AssertValid(t==0);//用来判断t是否等于0,如果t!=0则终止程序Dump函数一般用来显示debug信息的,其函数中的内容一般在debug时,在d转载 2011-09-22 09:53:01 · 4126 阅读 · 0 评论 -
在MFC下如何定义全局变量和全局函数
用MFC制作的工程由很多文件构成,它不能象一般C++程序那样随意在类外定义全局变量,在这里要想定义能被工程内多个文件共享的全局变量和函数必须用一些特殊方法才行。实际上有多种方法可以实现,这里只介绍两种方法。9 h& q& `8 U9 J# n" }( ^3 G; @3 G1 E' R- c: w/ h 一、在应用程序类中定义0l6 I5 }( ~) H& c! S& u 用MF转载 2012-03-24 10:16:52 · 607 阅读 · 0 评论 -
WM_DESTROY ,WM_CLOSE,WM_QUIT
WM_DESTROY 是关闭程序的WM_CLOSE 是关闭窗口的WM_QUIT 是关闭消息环的以下说明程序是如何退出的: 使用者选按,于是发出 WM_CLOSE。 CMyFrameWnd 并没有设置WM_CLOSE 处理常式,于是交给预设之处理常式。预设函数对于WM_CLOSE 的处理方式是呼叫 ::DestroyWindow, 并因而发出WM_DESTROY。 预设之WM_DE转载 2012-03-24 10:09:08 · 727 阅读 · 0 评论 -
CArchive类
CArchive没有基类。CArchive允许以一个永久二进制(通常为磁盘存储)的形式保存一个对象的复杂网络,它可以在对象被删除时,还能永久保存。可以从永久存储中装载对象,在内存中重新构造它们。使得数据永久保留的过程就叫作“串行化”。可以把一个归档对象看作一种二进制流。象输入/输出流一样,归档与文件有关并允许写缓冲区以及从硬盘读出或读入数据。输入/输出流处理一系列ASCII字符,但是归档文转载 2012-03-08 12:05:19 · 803 阅读 · 0 评论 -
MFC 消息类型
1、命令消息(WM_COMMAND) 所有派生自 CCmdTarget 的类都有资格接受WM_COMMAND。 2、Window消息(WM_xxx) 所有派生自 CWnd 的类都有资格接受 WM_xxx。 3、控件消息(WM_NOTIFY) 控件向其父窗口通知消息。 消息处理 1、WM_xxx 消息处理 窗口类(自身)处理→基类处理→CWnd∷DefWi转载 2012-05-03 15:37:19 · 490 阅读 · 0 评论