MFC
一只笨鸟
勤能补拙,笨鸟先飞!
展开
-
PreCreateWindow作用
在现有应用程序中更改样式 如果是正在现有应用程序中更改窗口属性,则遵循本文其余部分的说明。 若要更改框架应用程序(用应用程序向导创建的)所使用的默认窗口属性,请重写窗口的 PreCreateWindow 虚拟成员函数。PreCreateWindow 允许应用程序访问通常由 CDocTemplate 类内部管理的创建进程。框架在即将创建窗口前调用 PreCreateWindow。通过修转载 2016-04-21 15:22:44 · 4647 阅读 · 0 评论 -
MFC状态栏编程
首先在indicators数组的ID_SEPARATOR项之后插入一个名为ID_INDICATOR_CLOCK的ID。然后找到并双击名为String Table的字符串资源,打开字符串资源编辑窗口。接着在编辑窗口内按Insert键以插入一个新的字符串,请指定字符串的ID为ID_INDICATOR_CLOCK,内容为00:00:00。状态栏将根据字符串的长度来确定相应窗格的缺省宽度,所以指定为00:转载 2015-10-29 16:47:56 · 396 阅读 · 0 评论 -
VS2010 使用 CFileDialog 选择文件
VS2010 使用 CFileDialog 选择文件1、仅能选择单个文件 // TODO: Add your control notification handler code here CFileDialog findFileDlg(TRUE, // TRUE是创建打开文件对话框,FALSE则创建的是保存文件对话框 ".h264", // 默认的打开文件的类型转载 2015-10-28 11:02:49 · 2394 阅读 · 0 评论 -
MFC使用SendMessage()发送自定义消息实现进程间通信
MFC使用SendMessage()发送自定义消息实现进程间通信1.新建两个对话框项目,分别在StdAfx.h中添加自定义消息#define WM_CONTROLPRINT WM_USER+10012.发送端,获得其他窗口句柄的方法FindWindow();void CAaDlg::OnButtonsend() { // TODO: Add your cont转载 2015-10-14 10:01:54 · 1159 阅读 · 1 评论 -
MFC/VC中当鼠标经过按钮等控件时出现文字提示功能
MFC/VC中当鼠标经过按钮等控件时出现文字提示功能在VC中,也常常为一些图片按钮添加一些功能提示。下面讲解实现过程:该功能的实现主要是用CToolTipCtrl类。该类在VC msdn中有详细说明。首先在对话框的头文件中加入初始化语句:public:下,加入:CToolTipCtrl m_Mytip;然后在初始化对话框函数中加入:m_Mytip.Create(转载 2015-09-24 10:58:32 · 2680 阅读 · 0 评论 -
CxImage的编译及简单使用举例
CxImage的编译及简单使用举例1、 从http://sourceforge.net/projects/cximage/下载最新的CxImage 702源码;【邮件中已备份】2、 解压缩后,以管理员身份打开CxImageFull_vc10.sln工程,在编译之前先将每个工程属性的Character Set由原先的Use Unicode Character Set改为U转载 2015-10-12 14:20:28 · 457 阅读 · 0 评论 -
SetFilePointer设置文件指针使用示例(可用于读取大文件!!!)
SetFilePointer设置文件指针使用示例#include "stdafx.h"int _tmain(int argc, _TCHAR* argv[]){ _tsetlocale(LC_CTYPE, _T("")); HANDLE hFile; CHAR buffer[256] = {}; DWORD nByte;转载 2015-10-26 14:38:11 · 3794 阅读 · 0 评论 -
将CString中的空格给清除掉
CString str2="";for(i=0;i{ if(str[i]!=' ') str2+=str[i];}return str;转载 2015-09-22 16:49:41 · 2238 阅读 · 0 评论 -
MFC关于 Dialogbar的操作(包括显示和隐藏,不同于常规Dialog)
MFC关于 Dialogbar的操作 一、添加并显示Dialogbar:1.新建一个单文档MFC项目,打开资源视图,添加一个DialogBar2.为DialogBar添加一个类MyDlgBar3.打开MainFrm.h添加CDialogBar m_wndDlgBar;4.打开MainFrm.cpp在OnCreate()函数里添加if (!m_wndDlgBa转载 2015-10-10 15:51:22 · 3128 阅读 · 0 评论 -
MFC中App,Doc,MainFrame,View各指针的互相获取
MFC中App,Doc,MainFrame,View各指针的互相获取// App中获取其它三项指针void CSDIApp::OnApp(){ // App // Doc CDocument *pDoc = ((CFrameWndEx *)m_pMainWnd)->GetActiveDocument();//成员变量CFrameWndEx m_pMainW转载 2015-10-10 14:35:46 · 578 阅读 · 0 评论 -
TextOut清除 解决TextOut输出重叠
TextOut清除 解决TextOut输出重叠问题描述:先调用TextOut(0,0,"123456789");在程序视图中如期出现了字符串“123456789”。接着,在次调用TextOut(0,0,"987654");但是此时程序视图中除了显示“987654”之外,还有上一次字符的尾巴,看上去就像两次调用的结果重叠了,后面一次覆盖在前一次的上面。解决方法:在每次TextOut输转载 2015-10-13 16:22:10 · 4615 阅读 · 7 评论 -
vc 使用CFileDialog打开或保存文件
vc 使用CFileDialog打开或保存文件vc 使用CFileDialog打开或保存文件 今天是我的生日,也祝福自己生日快乐,以后要淡化生日。 //一。单选的“浏览文件对话框”void one_select_file(CString &strPath,CString &strFile,BOOL open_save){//单选的“浏览文件对话框”//CFile转载 2015-10-14 11:48:30 · 2097 阅读 · 0 评论 -
WM_PAINT 消息与 OnDraw、OnPaint()
OnDraw只有CView才有,其他窗口都是在OnPaint里画。void CView::OnPaint(){// standard paint routineCPaintDC dc(this);OnPrepareDC(&dc);OnDraw(&dc);}这是MFC的代码,说明对于CView类,OnPaint会调用用户自己写的虚函数OnDraw;但是如果用户自己转载 2016-05-03 16:21:20 · 385 阅读 · 0 评论 -
谈谈基类与子类的this指针(C++)
谈谈基类与子类的this指针(C++)引入 定义一个类的对象,首先系统已经给这个对象分配了空间,然后会调用构造函数(说明:假设存在构造函数)。一个类有多个对象,当程序中调用对象的某个函数时,有可能要访问到这个对象的成员变量。而对于同一个类的每一个对象,都是共享同一份类函数。对象有单独的变量,但是没有单独的函数,所以当调用函数时,系统必须让函数知道这是哪个对象的操作,从而确定成转载 2016-04-19 14:26:31 · 3639 阅读 · 0 评论 -
MultiByteToWideChar和WideCharToMultiByte用法详解
MultiByteToWideChar和WideCharToMultiByte用法详解标签: translationwincenull语言bufferdelete2012-03-22 14:12 7510人阅读 评论(0) 收藏 举报 分类: 编码(20) 版权声明:本文为博主原创文章,未经博主允许不得转载。部分参考:转载 2016-04-11 11:51:31 · 335 阅读 · 0 评论 -
MFC为何不响应WM_CHAR消息的解释理解
MFC为何不响应WM_CHAR消息的解释理解 WM_CHAR必须由WM_KEYDOWN经过TranslateMessage得到,如果你当前拥有焦点的控件无法进行输入,则收不到WM_CHAR消息 然WM_KEYDOWN消息是当一个非系统键被按下时该消息发送给具有键盘焦点的窗口。 也就是说具有焦点的窗口才能响应WM_KEYDOWN .MF转载 2016-04-14 10:22:28 · 535 阅读 · 0 评论 -
CString转换为char*,在多字节与宽字节两种情况下
CString str("我爱中国"); //一、多字节字符集情况下CString转换为char* //char *s=(LPSTR)(LPCTSTR)str; //二、Unicode字符集情况下CString转换为char* //① int n = str.GetLength(); //按字符计算,str的长度 int len = WideCharToMultiByt原创 2016-04-08 17:24:28 · 5406 阅读 · 1 评论 -
_T("")的由来及意义
C++支持两种字符串,即常规的ANSI编码(使用""包裹)和Unicode编码(使用L""包裹),这样对应的就有了两套字符串处理函数,比如:strlen和wstrlen,分别用于处理两种字符串。 微软将这两套字符集及其操作进行了统一,通过条件编译(通过_UNICODE和UNICODE宏)控制实际使用的字符集,这样就有了_T("")这样的字符串,对应的就有了_tcslen这样的函数。转载 2016-04-12 09:41:27 · 840 阅读 · 0 评论 -
MFC中将CEdit设置光标当前位置在编辑框最后
CString strInfo;m_Edit.GetWindowText(strInfo);int nLength = strInfo.GetLength();m_Edit.SetSel(nLength,nLength, FALSE);m_Edit.SetFocus();转载 2015-11-23 17:20:52 · 15337 阅读 · 0 评论 -
自定义MFC打开保存对话框的扩展名
首先考虑打开对话框。第一步是要弄清,打开对话框是什么时候(在哪)弹出来的?默认情况下,CDTriNetApp调用CWinApp::OnFileOpen方法处理FileOpen事件:ON_COMMAND(ID_FILE_OPEN, &CWinApp::OnFileOpen)CWinApp::OnFileOpen又调用CDocManager::OnFileOpen处理FileOpen事件:转载 2015-12-10 12:08:12 · 713 阅读 · 0 评论 -
MFC单文档打开文件默认后缀名修改
做单文档程序时,默认打开文档后缀为(*.*)。如果我们需要自定义打开后缀时,需要对文档模板相关函数做重载。[cpp] view plaincopyclass CMySingleDocTemplate : public CSingleDocTemplate { public: CMySingleDocTemplate(转载 2015-12-10 11:12:19 · 1673 阅读 · 0 评论 -
Invalidate和UpdateWindow,UpdateData区别联系
Invalidate和UpdateWindow的区别按引:Invalidate在消息队列中加入一条WM_PAINT消息,其无效区为整个客户区。而UpdateWindow直接发送一个WM_PAINT消息,其无效区范围就是消息队列中WM_PAINT消息(最多只有一条)的无效区。效果很明显,调用Invalidate之后,屏幕不一定马上更新,因为WM_PAINT消息不一定在队列头部,而调用转载 2015-10-29 14:58:59 · 986 阅读 · 0 评论 -
VC_16位色和24位色转换宏
16位色和24位色转换宏#include typedef unsigned long DWORD;typedef unsigned char BYTE;typedef unsigned short WORD;// 24位色和16位色转换宏// by cheungmine#define RGB888toRGB565(r,g,b转载 2015-09-22 10:22:32 · 613 阅读 · 0 评论 -
MFC获取系统当前时间
MFC获取系统当前时间1.使用CTime类 CString str; //获取系统时间 CTime tm; tm=CTime::GetCurrentTime(); str=tm.Format("现在时间是%Y年%m月%d日 %X");MessageBox(str,NULL,MB_OK); 2: 得到系统时间日期(使用GetLocalTime)转载 2015-11-09 16:04:45 · 338 阅读 · 0 评论 -
MFC 串口发送文件
MFC 串口发送文件以下代码在龚建伟的串口源码代码上修改而来!因为龚建伟的串口源码发送文件错误,故作了下修改,可以发送文件了,希望可以帮助到需要的童鞋们!经过调试,终于把这段代码给写好啦!先通过一个button 打开一个文件,然后通过文件函数,把打开的文件读到一个指针buffer中,再利用串口函数把读到的数据发送出去。在此注意:用串口发送函数时,用这个函数(因为是指针数据,转载 2015-10-23 15:41:33 · 3311 阅读 · 0 评论 -
什么是客户区/非客户区?
问题:什么是客户区/非客户区?窗口(框架/frame)的客户区和视图(view)的客户区的区别?这些都是初学者很容易迷惑的地方,我也是很迷惑,不过经过一番折腾终于弄明白这些问题了。对于这些问题,我想只用两个图片来说明最直观!如下:1。在一个MDI(多文档)应用程序中每个概念如下图所标示:窗口框架的客户区就是指图转载 2015-09-15 13:59:47 · 851 阅读 · 0 评论 -
CPicture类的使用方法
一个使用该类来实现的简单的图片浏览程序(MFC程序)我们需要添加和修改的地方加起来不超过5行,但是功能相对(5行代码)来说已经是"太强大"了,它可以浏览包括BMP,JPEG,GIF,ICON,TIF等格式在内的好多种图像了。1) 生成一个多文档的MFC应用程序,选择视图的基类为CScrollView. 其它使用默认值2) 将CPicture类有头文件及源文件加入至工程中.3) 在文档类转载 2015-09-15 14:13:00 · 2382 阅读 · 0 评论 -
ProcessShellCommand(cmdInfo)函数功能
ProcessShellCommand(cmdInfo)函数功能文档commandcmdnulltablemfcProcessShellCommand()本文链接:http://user.qzone.qq.com/278288976/blog/1196240170在我们用向导创建MFC应用程序时,在App::InitInstance()中总会出现下面这样的代码到底是什么意思呢,转载 2015-10-16 16:39:43 · 526 阅读 · 0 评论 -
OnInitUpdate、OnUpdate、OnDraw与OnPaint!
OnInitUpdate、OnUpdate、OnDraw与OnPaint! OnDraw,一般是收到WM_PAINT消息时调用,所以应用程序一般通过Invalidate产生WM_PAINT消息来间接调用OnDraw。当窗体无效等情况下,window也会产生WM_PAINT消息,这时OnDraw 也被间接调用。 OnUpdate 是CView提供的一个方法,一般当文档修改时调用,应用程序转载 2015-09-14 14:24:47 · 1423 阅读 · 0 评论 -
MFC常见问题解惑
MFC常见问题解惑OnCreate InitDialog区别:WM_CREATE的时候窗口还没有建立,你可以给成员变量赋值,也可以修改窗口的基本内容比如风格,但是不能对窗口控件操作,因为窗口还没有建立。 INITDIALOG时候窗口已经建立,你可以移动窗口,修改风格等等,也可以给成员变量赋值,通常你要先建立(OnCreate)一个窗体,然后再对他进行初始化(转载 2015-10-16 11:41:00 · 368 阅读 · 0 评论 -
如何为按钮或者图片控件添加超链接?
按钮或图片控件的响应函数中添加ShellExecute(NULL, NULL, _T("http://www.baidu.com"), NULL, NULL, SW_SHOWNORMAL);原创 2015-09-29 16:00:08 · 1445 阅读 · 0 评论 -
MFC给按钮添加图片
MFC给按钮添加图片VC中对话框上编辑里,通过控件方式无法给按钮设定图片的,需写代码实现,还好代码量不大,哈哈!首先建立基于对话框的MFC应用程序工程testDlg,添加按钮,ID为IDC_BUTTON_TEST,接下来一,首先建立位图句柄[cpp] view plaincopy// 方法一:加载非资源图片 HBITMAP转载 2015-09-29 15:44:14 · 669 阅读 · 0 评论 -
学习MFC框架如何创建的过程
温故而知新,学习MFC框架如何创建的过程很久没有使用MFC了,以至于都忘记MFC框架复杂的窗口、文档、视的创建过程了。下面我们跟踪一个MFC MDI的应用程序,来温习或学习一下。 使用AppWizard创建一个MDI应用程序,我创建的应用程序叫MDITest,这样MFC生成了如下的类:类名作用转载 2015-09-14 10:41:19 · 407 阅读 · 0 评论 -
MFC里CHECKBOX用法
MFC里CHECKBOX用法 勾选时...做某种算法不勾选时 做另一种算法if ( BST_CHECKED == IsDlgButtonChecked( IDC_CHECK1 ) ){// 勾选}else{}IDC_CHECK1是CheckBox控件。 函数功能:该函数可以确定某个按钮控制是否有选中标志,或者三态按钮控制是否为灰色转载 2015-09-28 17:07:50 · 1227 阅读 · 0 评论 -
打造完美的DialogBar
打造完美的DialogBar打造完美的DialogBarJohn.Y DialogBar相比Dialog有很多优势。因CDialogBar继承于CControlBar,因此其可以Docking在窗口一边,而把CView挤压开,但是 CDialogBar 的使用并不是很容易,因为 MFC 里面并没有提供直接可以使用的CDialogBar,我们需要自己动手,打造自己的转载 2015-09-10 16:38:13 · 541 阅读 · 0 评论 -
MFC中怎样检测电脑设备管理器中的串口是否存在?
怎样检测电脑的串口是否存在?程序在初始化的时候,自动检测系统的串口是否存在或者被占用,可以使用如下的方法:在基于对话框的设计中,我们采用MSComm控件作为串口接口使用,但该控件没有提供检测所使用串口是否存在的函数,所以我们在程序初始化的时候如果使用了系统中不存在的串口(如,在有些笔记本中,COM1是不存在的),系统会异常,造成系统初始化不正常。为了解决这个问题,同时使我们的程序有更好的交转载 2015-09-16 09:13:25 · 4264 阅读 · 0 评论 -
CString/string/int转化
利用MFC进行编程时,我们从对话框中利用GetWindowText得到的字符串是CString类型,CString是属于MFC的类。而一些标准C/C++库函数是不能直接对CString类型进行操作的,所以我们经常遇到将CString类型转化char*等等其他数据类型的情况。这里总结备忘于此!首先要明确,标准C中是不存在string类型的,string是标准C++扩充字符串操作的一个类。但是转载 2015-09-16 17:14:05 · 382 阅读 · 0 评论 -
初识MFC文档视图程序中多视图间的数据交互
初识MFC文档视图程序中多视图间的数据交互最近又在MFC下折腾了,折腾了一天做了个分隔窗口的单文档视图程序,分隔出了2个窗口,每个窗口都放了一个CFormView视图。接着就需要考虑这两个CFormView视图之间的数据交互了。举个简单的例子(在单文档视图程序中),比如我在View1中点击一个按钮,设置View2中CEdit的值。要实现这个功能,有一个简便的方法,就转载 2015-10-23 11:28:16 · 2298 阅读 · 0 评论 -
MFC中静态文本框(CStatic)响应鼠标单击事件
1、将静态文本框的属性Notify设置为Ture;2、将静态文本框的ID改为其他的;原创 2015-09-18 15:36:50 · 4918 阅读 · 0 评论 -
MFC单文档打开文件
打开文件类之间关联在向导创建的应用程序中,程序的默认菜单有“文件”、“编辑”、“视图”和“帮助”。当运行程序后,打开“文件”菜单中的“打开”命令时,应用程序会自动打开相应的“打开”文件通用对话框。之所以有这功能,是因为向导创建的应用程序框架中,自动将“打开”菜单命令与CWinApp的OnFileOpen成员函数相关联。当用户在通用“打开”文件对话框中指定一个文件后,应用程序将调用文档对象的转载 2015-10-21 17:13:10 · 3048 阅读 · 0 评论