
MFC
文章平均质量分 61
Arcsinsin
这个作者很懒,什么都没留下…
展开
-
CString转换成const char*的一种有效方法
在Visual Studio 200X下,CString直接转换成const char* 有点困难,下面是自己用的一种可行方案://得到目录路径CString mPath=dlg.GetPathName();//将目录路径转换成绝对路径以便cvLoadImage调用int m=mPath.GetLength();for(int index=0;index{转载 2013-08-08 22:32:12 · 2361 阅读 · 0 评论 -
MFC对话框及窗口函数调用顺序
1、模式对话框的创建过程: 1) DoModal() 重载函数,重载DoModal()成员函数。 2) PreSubclassWindow() 重载函数,允许首先子分类一个窗口。 3) OnCreate() 消息响应函数,响应WM_CREATE消息,发送此消息以告诉一个窗口已经被创建。 4) OnSi原创 2013-08-13 16:55:24 · 1636 阅读 · 0 评论 -
MFC创建模态对话框与非模态对话框 DoModal Invalidate
CDialog::DoModalvirtual int DoModal();返回值:整数值,指定了传递给CDialog::EndDialog 的nResult参数值。该函数用于关闭对话框。如果函数不能创建对话框,则返回-1;如果出现其它错误,则返回IDABORT。说明:调用该成员函数使用模态对话框并返回对话框结果。当对话框处于活动状态时,该函数处理与用户的交互。这使原创 2013-07-10 17:00:09 · 19417 阅读 · 1 评论 -
MFC——ComBox用法大全
Combo Box (组合框)控件很简单,可以节省空间。从用户角度来看,这个控件是由一个文本输入控件和一个下拉菜单组成的。用户可以从一个预先定义的列表里选择一个选项,同时也可以直接在文本框里面输入文本。下面的例子简要说明如何利用 MFC CComboBox Class来操作字符串列表。 1、定义控件对应变量假定已经创建了一个Dialog,并且从控件工具箱将 Combo Box 控件原创 2013-07-12 00:09:31 · 1318 阅读 · 0 评论 -
CEdit获取文本
用函数 CEdit关联变量m_editCString str;m_edit.GetWindowText(str);这样所有CEdit的内容都到str中了原创 2013-07-12 00:21:36 · 1842 阅读 · 0 评论 -
关于opencv中图像的通道数(channels)问题
无论是读入还是读出图像时,都要对图像的类型,位数,以及通道数进行相关的设置,其中通道数(channels)较令人费解: 整理一下OpenCV中文论坛里关于图像通道的问题,如下: (1)图像的通道指的是什么?是不是灰度图的通道数为1,彩色图的通道为3?(zhuker)正确!基本上,描述一个像素点,如果是灰度,那么只需要一个数值来描述它,就是单通道。如果原创 2013-07-13 09:54:34 · 6062 阅读 · 0 评论 -
DECLARE_DYNAMIC/IMPLEMENT_DYNAMIC
MPLEMENT_DYNAMIC是实现“运行时类型识别”宏,与之相对应的是DECLARE_DYNAMIC(声明“运行时类型识别”宏)。也就是说你在.CPP文件中如果看见有IMPLEMENT_DYNAMIC,则在.H文件中必定有DECLARE_DYNAMIC的声明。 DECLARE_DYNAMIC/DEClARE_DYNAMIC是为了确定运行时对象属于哪一个类而定义的宏。 DEClARE_D原创 2013-07-10 15:45:43 · 1560 阅读 · 0 评论 -
MFC 点击按钮,弹出另一个对话框
方法一:模态对话框资源视图--Dialog--右键--添加资源--新建--对话框-,然后在已经生成的对话框中(解决资源视图中的dialog下的新生成的那个)右键--添加类。例如:添加CMyNewDlg类,在所要调的代码中(按钮点击方法所在的文件代码),先加头文件#include "CMyNewDlg.h ",之后在按钮点击方法中:void COnclickDlg::OnBnClic原创 2013-07-11 16:47:38 · 1580 阅读 · 0 评论 -
-CvCreateImage函数 cvcopy函数
cvCreateImage是openCV中的一个函数。OpenCV是Intel公司支持的开放计算机视觉库。cvCreateImage:创建头并分配数据IplImage* cvCreateImage( CvSize size, int depth, int channels );参数说明:size 图像宽、高.depth 图像元素的位深度,可以是下面的原创 2013-07-13 15:41:45 · 2571 阅读 · 0 评论 -
OpenCV如何获取视频当前的一帧图像
CvCapture 是视频获取结构 被用来作为视频获取函数的一个参数比如CvCapture* cap;IplImage* cvQueryFrame( cap );从摄像头或者文件中抓取并返回一帧————————————————————————Opencv读取视频代码#include "stdafx.h"#include"highgui.h"int main(int a原创 2013-07-13 11:05:37 · 44494 阅读 · 6 评论 -
滚动条消息(WM_VSCROLL和WM_HSCROLL)
滚动条消息(WM_VSCROLL和WM_HSCROLL)(1)当用户单击滚动条或者是拖动滑块时,Windows会向窗口过程发送WM_VSCROLL消息(垂直滚动时)或者是WM_HSCROLL消息(水平滚动时)。在滚动条上的任何鼠标动作会产生两条消息:一条是在鼠标键按下时,另一条是在鼠标键松开时。(2)和其他的消息一样,WM_VSCROLL和WM_HSCROLL消息也都伴随着原创 2013-07-13 09:47:37 · 5648 阅读 · 0 评论 -
MFC中全局变量的定义及使用
举个例子,很快就明白:LoginDlg.cpp#include "stdafx.h"#include "LoginDlg.h"//下面在源文件cpp文件里定义了4个全局变量,包含了两个控件变量int Iden;int Loginok;CString m_user;CString m_password;CLoginDlg::CLoginDlg(void) { Ide原创 2013-07-12 00:55:05 · 3025 阅读 · 0 评论 -
DoDataExchange函数和UpdataData函数
MSDN是这样描述的:Called by the framework to exchange and validate dialog data.大意是框架调用此函数来改写与确认对话框数据。到是看了下DoDataExchange函数里的DDX型函数,似乎明白了DoDataExchange函数的作用。最近看书的效果很明显哇。按我的理解,DoDataExchange函数其实是一项数据动态原创 2013-07-10 16:09:13 · 1444 阅读 · 0 评论 -
谈谈MVC模式
1.如何设计一个程序的结构,这是一门专门的学问,叫做"架构模式"(architectural pattern),属于编程的方法论。MVC模式就是架构模式的一种,它对我的启发特别大。我觉得它不仅适用于开发软件,也适用于其他广泛的设计和组织工作。下面是我对MVC模式的一些个人理解,不一定正确,主要用来整理思路。2.MVC是三个单词的首字母缩写,它们是Model(原创 2013-08-21 15:23:47 · 1399 阅读 · 0 评论 -
MFC鼠标响应、鼠标画线
鼠标响应关键就是对两个函数进行操作:OnLButtonDown和OnLButtonUp;1、使用MFC AppWizard(exe)建立一个单文档MFC工程2、首先要在CxxxView类的定义里加上后续必备的数据成员class CDrawView : public CView{。。。。。。。。。。。。private: CPoint m_ptOrigi转载 2013-08-09 18:13:01 · 11427 阅读 · 1 评论 -
怎样在VS2010中打开VS2012的项目
VS2012中对C#的支持度非常好,不管是编写方便程度(不需要插件就能高亮代码及代码自动提示功能),还对MFC的一些功能优化很多。 我们可以修改两个工程文件来把VS2012的工程文件一直到VS2010中去。 首先当然是修改解决方案文件(.sln文件)。 使用记事本打开,把里面的Microsoft Visual Studio Solution File, Forma原创 2013-08-22 15:34:08 · 1459 阅读 · 0 评论 -
ClientToScreen 和ScreenToClient 用法
ClientToScreen( )是把窗口坐标转换为屏幕坐标ScreenToClient( )是把屏幕坐标转换为窗口坐标屏幕坐标是相对于屏幕左上角的,而窗口坐标是相对于窗口用户区左上角的VC下,有些函数使用窗口坐标,有些使用屏幕坐标,使用时要分清。一个窗体分为两部分:系统区和客户区象标题和菜单之类的是系统区,由系统来控制,客户区就是你的地盘喽!!!Width, He原创 2013-08-09 20:39:24 · 2834 阅读 · 0 评论 -
MFC判断鼠标光标在某个矩形框内
POINT point;GetCursorPos(&point); if(rc.PtInRect(point)) { /*要进行的操作*/}原创 2013-08-09 20:45:37 · 4945 阅读 · 0 评论 -
MFC中的消息响应(左键按下鼠标)和(移动鼠标)
p.s. 以下两种方法一起使用的时候,运行起来有错误哇~1. 左键按下鼠标:右键view类,添加消息句柄,WM_LBUTTONDOWN,添加并编辑,加入代码,可以实现在矩形区域内点击鼠标左键,弹出确认框的功能: int x=point.x; int y=point.y; if(x>=0&&x=0&&y转载 2013-08-09 21:02:28 · 14646 阅读 · 0 评论 -
LoadCursor LoadImage
1: 修改方法一 重载CView里的OnMouseMove函数 . 重载方法 : “View” -> “ClassWizard” (Ctrl + W) -> 右侧Messages栏选择”WM_MOUSEMOVE” , 然后点”Add Function” , 点”OK” . 添加代码 : 在 CDocTestView::O原创 2013-08-09 20:51:56 · 3488 阅读 · 0 评论 -
MFC中release版本和debug版本区别
最近MFC写了个程序,生成release版,原来正常,后来删掉了些控件再编译运行,结果竟然报内存读写错误,debug却是正常的。后来将“Project Settings” 中 “C++/C ” 项目下优化选项改为Disbale(Debug),就又能正常运行了。DEBUG和RELEASE 版本差异及调试相关问题【转】转载 2013-08-22 23:02:31 · 1390 阅读 · 0 评论 -
MFC Button按钮的用法
设置按钮为可见或不可见:GetDlgItem(IDC_CHECK1)->ShowWindow(SW_SHOW);GetDlgItem(IDC_CHECK1)->ShowWindow(SW_HIDE);设置按钮为可用或不可用:先声明Button变量,然后,m_ButtonPreview.EnableWindow(TRUE);m_ButtonSave.EnableWindow(原创 2013-08-12 22:48:09 · 1934 阅读 · 0 评论 -
MFC中变量的命名方法
MFC命名规则匈牙利命名法关键是:标识符的名字以一个或者多个小写字母开头作为前缀;前缀之后的是首字母大写的一个单词或多个单词组合,该单词要指明变量的用途。前缀类型a数组 (Array)b布尔值 (Boolean)by字节 (Byte) == 8 bit原创 2013-08-22 16:08:38 · 8220 阅读 · 1 评论 -
CString转char * ,string
CString 头文件#include string 头文件#include CString 转char *CString cstr;char *p = (LPSTR)(LPCTSTR)cstr;string 转 CStringCString.format(”%s”, string.c_str());char 转 CStringCString转载 2013-09-15 19:43:47 · 1217 阅读 · 0 评论 -
MFC中CString转const char *
CString转const char *是一件麻烦事,但是在做项目中经常遇到,所以这里做个笔记。//CString转const char* 麻烦 LPCTSTR p=pathName.GetBuffer(); DWORD dwMinSize; dwMinSize=WideCharToMultiByte(CP_ACP,NULL,p,-1,NULL,0,NULL,FALSE); c原创 2013-12-25 16:44:53 · 8363 阅读 · 0 评论 -
InvokeHelper函数的用法
ActiveX控件的方法和属性操作与生成的C++类成员函数相关联都是通过InvokeHelper函数的调用来完成的,InvokeHelper函数的第一个参数是由Component Gallery(控件提供者)提供的。因为经过这样的处理,所以我们如果要调用ActiveX控件的方法或对其属性进行取和设置操作,只需调用生成的C++类对应的成员函数便可。下面对InvokeHelper单独说明:转载 2013-12-26 11:20:43 · 23267 阅读 · 0 评论 -
Visual Studio使用小技巧
1、vs常用工作环境配置使用vs之前,需要进行一些常规的配置,以便更加方便自己的使用提高工作效率。字体应该配置为Consolas等宽字体,另外项背景色应设置为自定义淡蓝色(84,91,205),一说这颜色能保护眼睛,确实看的时间长了,感觉是比原来的白色舒适很多。2、使用VC6生成office开发的COM对象类打开vc6工作环境,任意新建一个MFC工程,然后在MFC类向导转载 2014-03-09 15:48:06 · 6335 阅读 · 0 评论 -
LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
连接器LNK是通过调用cvtres.exe完成文件向coff格式的转换的,所以出现这种错误的原因就是cvtres.exe出现了问题。在电脑里面搜索一下cvtres.exe,发现存在多个文件,使用最新的cvtres.exe替换老的文件即可,替换之前记得备份一下,如果不对,可以替换回来。例如:我的电脑里面安装了vs2010,最近更新了系统,打了一些补丁,结果就出原创 2014-03-09 10:51:07 · 1219 阅读 · 0 评论 -
CppUnit 快速使用指南
背景CppUnit 是个基于 LGPL 的开源项目,最初版本移植自 JUnit,是一个非常优秀的开源测试框架。CppUnit 和 JUnit 一样主要思想来源于极限编程(XProgramming)。主要功能就是对单元测试进行管理,并可进行自动化测试。这样描述可能没有让您体会到测试框架的强大威力,那您在开发过程中遇到下列问题吗?如果答案是肯定的,就应该学习使用这种技术:测试代码没转载 2014-03-10 16:58:50 · 1165 阅读 · 0 评论 -
Visual Studio 2010下配置PC-Lint 9.0i
http://blog.youkuaiyun.com/jbcjay/article/details/7389543http://blog.youkuaiyun.com/whatday/article/details/7890092http://blog.youkuaiyun.com/orbit/article/details/824505转载 2014-03-09 15:47:16 · 2714 阅读 · 0 评论 -
VS2010报 f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\occcont.cpp 中断错误
有一段时间没有用VS2010了,现在要用了,突然报了上述的那个错误。其实是控件没有注册的问题。在vs2010的资源视图中,一个一个的点击,会有一个ActiveX控件注册问题的提示。我的提示的是VideoPlay.ocx这个以前实验室师兄写的控件。但是我记得很早就注册过了的啊。难道是我有一段时间没用VS2010,自己有什么文件更新了吗?控件的位置在C:\windows\syste原创 2014-03-24 16:11:10 · 14408 阅读 · 2 评论 -
MFC中Pictrue控件显示图片+播放视频
点击打开链接转载 2014-05-07 18:11:17 · 7873 阅读 · 0 评论 -
MFC对话框添加状态栏
方法一:1、添加String Table资源,IDS_PANEL1和IDS_PANEL2的字符串资源。2、添加成员变量: public: CStatusBar m_wndStatusBar;3、定义 static UINT indicators[]= { IDS_PANEL1,转载 2014-05-12 20:44:14 · 1599 阅读 · 0 评论 -
MFC单文档子对话框如何获得View类的变量
在子对话框中,我们往往需要View类的变量或者使View类同步更新。那如何获得?目前我知道的有两种方法。1. 从View类一直传下来。无论有调用有几层的关系,只要是最后那层需要的变量,不管上一层是否需要都必须要声明变量并且传递。这样做的缺点是声明了多余的变量。2. extern 外部变量的方式把需要的View里的变量,在View内声明为全局变量,然后在子对话框头文件中,包含Vi原创 2013-12-12 10:18:32 · 4934 阅读 · 2 评论 -
VC++中如何复制对话框资源
法1:在你的工程中添加另一个工程的rc文件,这时资源视图中就会出现两个rc,从后加的rc中拷贝资源到你自己工程的rc中就可以了。 法2:vc中如何拷贝一个工程的对话框 资源到另一个工程中?这是一个很专业也很有用的问题。其实VC的设计者早就为我们考虑了这个问题。在VC6环境下,选择Class视图,选中想要克隆的对话框所对应的类,例如CAboutDlg,点击鼠标转载 2013-11-12 18:46:36 · 1541 阅读 · 0 评论 -
为CListBox加上智能水平滚动条
在用MFC开发软件过程中,经常会遇到MFC基本控件满足不了我们的需要的时候,这时候就需要根据实际需求派生或重写MFC基本控件。这种情况我不只一次碰到了。以下是为CListBox加上智能水平滚动条,其思想是值得好好学习的。为CListBox加上智能水平滚动条在MFC中,用列表框(CListBox)来显示多个字符串是一种很方便的方法。但缺省的列表框水平滚动条不够智能——这里智能的含义是转载 2013-11-09 10:31:31 · 4105 阅读 · 0 评论 -
MFC控件位置调整和坐标确定
在mfc工程中控件或者窗口位置的调整是经常遇到的,特别是基于对话框的工程。位置的调整包括坐标、长度和宽度的变化,一般在窗口类的OnSize函数中实现。控件位置的调整涉及的函数有:GetWindowRect()、ScreenToClient()、GetClientRect()、MoveWindow()或SetWindowPos(),功能意义如下:GetWindowRect():获得窗口在原创 2013-10-27 21:36:20 · 4662 阅读 · 1 评论 -
EasySize的使用
EasySize类范例程序(EasySize_demo,EasySize_src)下载地址http://www.codeproject.com/KB/dialog/easysize.aspx 使用说明步骤一a将#include EasySize.h加载入stdafx.hb或者将#include EasySize.h加载入TestCurveDlg.h中转载 2013-11-17 19:30:51 · 7004 阅读 · 0 评论 -
CStatic控件的基本使用(文本、颜色、图标等)
如何动态设置CStatic的相关属性VC++2010 在窗体上放上ID为IDC_STATIC的CStatic控件,另放一按钮,点击按钮设置静态控件的内容和其它状态,代码如下:void CstaticProDlg::OnBnClickedButton1(){ // TODO: 在此添加控件通知处理程序代码 CStatic* p=(CStatic*)G原创 2013-07-24 17:55:06 · 4133 阅读 · 0 评论 -
MFC多线程编程之二——MFC中的多线程开发
五、MFC对多线程编程的支持MFC中有两类线程,分别称之为工作者线程和用户界面线程。二者的主要区别在于工作者线程没有消息循环,而用户界面线程有自己的消息队列和消息循环。工作者线程没有消息机制,通常用来执行后台计算和维护任务,如冗长的计算过程,打印机的后台打印等。用户界面线程一般用于处理独立于其他线程执行之外的用户输入,响应用户及系统所产生的事件和消息等。但对于Win32的API编程转载 2013-11-19 22:02:16 · 9422 阅读 · 2 评论