摘要:一、获得绘图的窗口句柄方法(详细参数及其调用可以看考MSDN):1、 HWND FindWindow(LPCTSTR lpClassName, LPCTSTR lpWindowName)HWND FindWindowEx(HWND hwndParent, HWND hwndChildAfter,LPCTSTR lpClassName, LPCTSTR lpWindowName)2、 HWND WindowFromPoint(POINT& Point)3、 BOOL CALLBACK EnumChildProc(HWND hwnd,LPARAM lParam) BOOL CALLBACK
阅读全文
随笔分类 - VC/MFC
摘要:http://my.oschina.net/u/131904/blog/39804在mfc工程中控件或者窗口位置的调整是经常遇到的,特别是基于对话框的工程。位置的调整包括坐标、长度和宽度的变化,一般在窗口类的OnSize函数中实现。控件位置的调整涉及的函数有:GetWindowRect()、ScreenToClient()、GetClientRect()、MoveWindow()或SetWindowPos(),功能意义如下:GetWindowRect():获得窗口在屏幕上的矩形坐标,调整控件位置时必须首先获得该屏幕坐标;ScreenToClient():转换屏幕坐标到客户区坐标,如果为子窗口,
阅读全文
摘要:MFC应用程序中处理消息的顺序1.AfxWndProc() 该函数负责接收消息,找到消息所属的CWnd对象,然后调用AfxCallWndProc2.AfxCallWndProc() 该函数负责保存消息(保存的内容主要是消息标识符和消息参数)供应用程序以后使用, 然后调用WindowProc()函数3.WindowProc() 该函数负责发送消息到OnWndMsg()函数,如果未被处理,则调用DefWindowProc()函数4.OnWndMsg() 该函数的功能首先按字节对消息进行排序,对于WM_COMMAND消息,调用OnCommand()消息 响应函数,对于WM_NOTIFY消息 调用On
阅读全文
摘要:在参考文献基础上。补充和完善了。Matlab与C/C++混合编程接口及应用 摘要:Matlab具有很强的数值计算和分析等能力,而C/C++是目前最为流行的高级程序设计语言,两者互补结合的混合编程在科学研究和工程实践中具有非常重要的意义。从Matlab调用C/C++代码及C/C++调用m文件两方面,深入地研究了它们之间混合编程的原理和实现机制,并且给出了具体条件下的混合编程方法和步骤。实验表明,给出的Matlab与C/C++混合编程接口及应用方法是有效、实用的。 1引言 Matlab是当前应用最为广泛的数学软件,具有强大的数值计算、数据分析处理、系统分析、图形显示甚至符号运算等功能[1]。...
阅读全文
摘要:Visual Studio 2008 环境变量的配置(改为:Visual Studio 2008 中程序路径配置 更合理)在调试 Visual Studio 2008 程序时,经常有一些动态链接库(即 dll 文件)需要加载到工程里,这样才能依赖第三方库进行程序调试。这些动态链接库,往往都是测试版本或是开发中的版本,或者会有若干个版本;这个时候,如果直接把 dll 所在目录加到 PATH 里,则会有潜在冲突的危险;如果直接拷贝到 Visual Studio 的目录下,假如测试工程太多,每次有新版本的动态链接库更新时,你需要更新若干次,拷贝、粘贴苦不堪言。在开发过程中,究竟怎样来让 Visual
阅读全文
摘要:Visual Studio 2008 和 Windows 环境变量对设置 相对路径很重要,这样便于代码的移植,即使换一台计算机,代码不用更改配置,直接就能用。 可以在项目的“工具”“属性页”对话框中任何接受字符串的位置使用这些宏。这些宏不区分大小写。关于如何自己定义环境变量详见我的另一文章:http://blog.csdn.net/jtop0/article/details/7574139宏说明$(RemoteMachine)在“调试”属性页上设置为 Remote Machine 属性的值。有关更多信息,请参见更改用于 C/C++ 调试配置的项目设置。$(Configuration)当前项目配
阅读全文
摘要:在vs2008的Project->Property设置里经常会看到类似$(IntDir)、$(OutDir)、$(ProjectName) 的预定义宏。以vc2008为例,有时候我们在引用别的库时需要在项目设置里添加额外的头文件和库文件路径,我们不想每个路径都用一大堆的“../.. /include”或绝对路径表示,因为不但繁琐而且万一路径改变每处都要修改,不方便维护,我们希望能自定义类是$(myDir) = c:/myPrj/include的宏。有人说: “vcproj工程设置文件里,完全可以定义一个变量 VAR=whatwhatwhat,然后"$(VAR)",类似
阅读全文
摘要:Combo Box (组合框)控件很简单,可以节省空间。从用户角度来看,这个控件是由一个文本输入控件和一个下拉菜单组成的。用户可以从一个预先定义的列表里选择一个选项,同时也可以直接在文本框里面输入文本。下面的例子简要说明如何利用 MFC CComboBox Class来操作字符串列表。 1、定义控件对应变量假定已经创建了一个Dialog,并且从控件工具箱将 Combo Box 控件拖放到上面。打开 Class Wizard,添加控件对应变量,如:CComboBox m_cbExamble;在后面的代码中会不断使用这个变量。2、向控件添加 Items 1) 在Combo Box控件属性的Data
阅读全文
摘要:续第一篇:MFC总结之CListCtrl用法及技巧(一) http://blog.csdn.net/zwgdft/article/details/7560592 本篇重点介绍:禁止拖动表头、让第一列居中显示、设置行高与字体、虚拟列表技术、点击表头时进行归类、向上与向下移动、动态调整大小问题、避免闪烁问题。6、禁止拖动表头 重载OnNotify消息响应函数,屏蔽两个消息通知码:HDN_BEGINTRACKW 和HDN_DIVIDERDBLCLICKW。示例如下: [cpp] view plaincopyprint?BOOLCXXXX::OnNotify(WPARAMwParam,LPARAMlP
阅读全文
摘要:本文根据本人在项目中的应用,来谈谈CListCtrl的部分用法及技巧。当初学习时,查了很多资料,零零碎碎的作了些记录,现在主要是来做个总结,方便以后查阅。主要包括以下十三点内容:基本操作、获取选中行的行号、复选框操作、动态设置选中行的字体颜色、设置选中行的背景颜色、禁止拖动表头、让第一列居中显示、设置行高与字体、虚拟列表技术、点击表头时进行归类、向上与向下移动、动态调整大小问题、避免闪烁问题。 分为两篇来进行总结。本篇重点总结:基本操作、获取选中行的行号、复选框操作、动态设置选中行的字体颜色、设置选中行的背景颜色1、基本操作 分别从下面四点来介绍CListCtrl的基本操作: ①设置列表视图.
阅读全文
摘要:在MFC中滑动条(CSliderCtrl)是个常用的控件,用法如下: 主要要方法有:1、设置、取得滑动范围:void SetRange( int nMin, int nMax, BOOL bRedraw = FALSE ); void GetRange( int& nMin, int& nMax ) const;2、设置、取得按下左右箭头滑动间隔:int SetLineSize( int nSize ); int GetLineSize( ) const;3、设置、取得按下PgUp、PgDown时滑动间隔:int SetPageSize( int nSize ); int Ge
阅读全文
摘要:动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的。 一、创建动态控件: 为了对照,我们先来看一下静态控件的创建。 放置静态控件时必须先建立一个容器,一般是对话框,这时我们在对话框编辑窗口中,从工具窗口中拖出所需控件放在对话框中即可,再适当修改控件ID,设置控件属性,一个静态控件就创建好了,当对话框被显示时,其上的控件也会显示。 静态控件不需要调用Create()函数来创建。 而创建动态控件有很大不同,以下以按钮为例,看一下动态控件的创建过程: 1.建立控件ID号: ID号是控件的标识,创建控件前必须先为它设置一个ID号。 打开资源中的“S...
阅读全文
摘要:http://blog.sina.com.cn/s/blog_6163bdeb0100pcld.html为窗口或其中的控件添加提示框,可以使用MFC的类CToolTipCtrl,使用方法如下1.在窗口的类定义中添加变量说明:class CTooltipTestDlg : public CDialog{…public:CToolTipCtrl m_tt;…}2.在对话框的OnInitDialog()函数中添加如下代码EnableToolTips(TRUE);m_tt.Create(this);m_tt.Activate(TRUE);CWnd* pW=GetDlgItem(IDC_CHECK1);
阅读全文
摘要:很多的界面设计都需要有Tip提示,下面描述一下Tip的简单使用方法: 1. 首先要New一个CToolTipCtrl的对象m_pContentTip 2. 调用CToolTipCtrl的create函数,指定其父窗口。可以为某个控件,也可以为this。一般设为this。m_pContentTip->Create( this, TTS_ALWAYSTIP );3. AddTool。此函数是设置与某个控件关联的Tip文本。此处可以为多个控件添加不同的提示信息。 m_pButtonTip->AddTool( GetDlgItem( 控件ID ), 文本 ); //#add 一定要用Add
阅读全文
摘要:今天在网上看到一篇VC项目管理的文章,感觉非常有用。特别是对大、中型项目的规范化、条理化管理非常有帮助,特转贴这里。VC 2005 解决方案的目录结构设置和管理Roger (roger2yi@gmail.com)一个中等规模的解决方案通常都会包含多个项目,其中一些项目产出静态库,一些产出动态库,一些用于单元测试,还有的产出最终的应用程序执行档。除此以外,根据项目的需求,还会使用一些第三方的库。所以为解决方案设置一个合理的目录结构,不但可以使得代码管理更井井有条,项目成员之间也更容易相互配合,更重要的是能够使得最终应用程序的安装包制作,源代码打包发布和转移变得十分容易。解决方案与项目:从VC6之
阅读全文
摘要:HANDLE hMutex;hMutex = ::CreateMutex(NULL, FALSE, NULL);::WaitForSingleObject(hMutex, INFINITE); // 1::WaitForSingleObject(hMutex, INFINITE); // 2好多初学者都认为,设置为FALSE就是没有获得获得信号。。 其实这是错误的。真确的理解是:CreateMutex()函数的第二个参数是FALSE,表示刚刚创建的这个Mutex不属于任何线程也就是没有任何线程拥有他,一个Mutex在没有任何线程拥有他的时候,他是处于激发态的, 所以处于有信号状态。当你调用::
阅读全文
摘要:如何终止线程的运行(C/C++)想要终止线程的运行,可以使用以下方法:1、线程函数返回(最好使用该方法)。2、通过调用ExitThread函数,线程将自行撤消(最好不使用该方法)。3、同一个进程或另一个进程中的线程调用TerminateThread函数(应避免使用该方法)。4、ExitProcess和TerminateProcess函数也可以用来终止线程的运行(应避免使用该方法)。下面将详细介绍终止线程运行的方法:1-4,并说明线程终止运行时会出现何种情况:5。1、线程函数返回始终都应该将线程设计成这样的形式,即当想要线程终止运行时,它们就能够返回。这是确保所有线程资源被正确地清除的唯一办法。
阅读全文
摘要:原因:#pragma comment (lib,"xxx.lib")//默认和引用的CPP文件在一个文件夹中解决方法1:将xxx.lib和调用pragma comment的源文件放在一个目录(注意是调用它的源文件,不是头文件)。解决方法2:也可以在xxx.lib前加上全路径名如:#pragma comment(lib, "c:\\windows\\system32\\xxx.lib")。解决方法3:修改项目属性中,配置属性--》连接器-->常规--》附加库目录 中加上xxx.lib所在目录。解决方法4:工具--》选项--》项目和解决方案--》vc+
阅读全文
摘要:我用VC做TOOL TIP很多次了,但每次都要再研究一遍.虽然说学而时习,应该的,但主要还是由于自己懒.今天一定要记下来.以后再用的时候,就是参考.也请阅读此文的朋友记下来,将来查阅用.用VC实现TOOL TIP.比较复杂,其实也简单,但MFC帮助一些窗口实现,而另一些窗口又不实现,倒搞得复杂了.最开始我用WM_MOUSEMOVE消息,然后用CToolTipCtrl::Pop,这个方法太笨.不建议用.除非需要自定义.MFC对TOOL TIP的支持不错的.缺省情况CFrameWnd支持很好.然后是CWnd.主要体现在TTN_NEEDTEXT消息的支持和OnToolHitTest的支持.TTN_N
阅读全文
摘要:设置VS2008和IE8 调试ATL控件VS2008设置篇:设置VS2008 通过IE8 调试ATL的ActiveX控件的步骤如下:(1)设置项目属性通过菜单项 “项目—》你的项目属性”如下图:(2)在弹出的属性页对话框中选中“配置属性—》调试”,在右边填入下列参数:命令:C:\Program Files\Internet Explorer\iexplore.exe(你的IE8执行文件位置)工作目录:$(InputDir)FileUploader.htm(其中FileUploader.htm更换成VS为你生成的Html文件名。附加:否。(指示调试器不要附加现有IE进程,而是新建一个)其它选项采
阅读全文