
MFC客户端
文章平均质量分 64
焦三仙本仙
学无止境,共同进步
展开
-
extern "C" _declspec(dllexport)浅析
extern "C" extern "C"使得在C++中使用C编译方式成为可能。在“C++”下定义“C”函数,需要加extern “C”关键词。用extern "C"来指明该函数使用C编译方式。输出的“C”函数可以从“C”代码里调用使用微软专用的_declspec (dllexport) cpp文件在编译为OBJ文件时要对函数进行重新命名,C语言会把函数name重原创 2013-12-13 09:34:07 · 28715 阅读 · 0 评论 -
MFC框架分析
每个MFC程序都有一个the全局对象,此对象代表了这个应用程序,程序从这里诞生。 1、因theApp是全局对象,所以比winmain更早初始化。 2、theApp的初始化,先引发了其构造函数。因theApp派生于CWinApp,则也引发了CWinApp的构造函数 3、CWinApp中的几条重要的初始化代码:AFX_MODULE_STATE* pModuleState =原创 2013-12-13 17:17:18 · 1152 阅读 · 0 评论 -
MFC创建工程的步骤学习
Create porject.在所有的工程类型中,“MFC AppWizard(exe)”和“MFC AppWizard(dll)”最为常用,它们分别用于生成MFC应用程序和MFC动态链接库;“Win32 Application”和“Win32 Dynamic-Link Library”用于编写完全不借助MFC类库等工具的WIN32应用程序及动态链接库;“Win32 Console Appli原创 2013-09-26 20:07:45 · 1865 阅读 · 0 评论 -
MFC调用c#的dll
一、使用 /clr 编译 MFC 可执行文件或规则 DLL 1、打开“项目属性”对话框,方法是右键单击“解决方案资源管理器”中的项目并选择“属性”。 2、展开“配置属性”旁边的节点并选择“常规”。在右侧窗格中的“项目默认值”下,将“公共语言运行库支持”设置为“公共语言运行库支持 (/clr)”。 3、在相同的窗格中,确保将“MFC 的使用”设置为“在共享 DLL 中使原创 2013-09-26 19:13:14 · 5275 阅读 · 1 评论 -
__declspec(dllimport)的作用究竟是什么?
是时候总结一下__declspec(dllimport)的作用了。可能有人会问:__declspec(dllimport)和__declspec(dllexport)是一对的,在动态链接库中__declspec(dllexport)管导出,__declspec(dllimport)管导出,就像一个国家一样,有出口也有进口,有什么难理解的呢?这是一种很自然的思路,开始我也是这样理解。但是原创 2013-12-13 15:52:52 · 1360 阅读 · 0 评论 -
界面库Prof-UIS初探学习
近试试Prof-UIS界面库(www.prof-uis.com)的用法,其帮助感觉不是很好。结合其Samples,把一些学习笔记记录如下。先说一下Prof-UIS。在运行其Samples或者将这个界面库用到其它Project中之前,需要编译ProfUISDLL(对于静态库ProfUISLIB),但是运行某些Samples,比如Skinable,提示说需要用到ProfSkinDll,于是先编译它原创 2013-12-13 16:58:56 · 1711 阅读 · 0 评论 -
MFC对话框Style说明
Popup:弹出窗口Overlapped:重叠窗口Child:子窗口在它们之间并没有太多内在的差异,但是使用不同的窗口风格,它们的外观是不同的。重叠窗口通常用于建立应用程序主窗口。事实上,有时也叫做“主”窗口或者“框架”窗口。弹出窗口通常以对话框和消息框的形式与用户对话。子窗口通常用在视图(View)中,如在文本编辑器中的文本显示,也用在控件中,如在对话框中的O原创 2013-12-13 10:04:36 · 6600 阅读 · 0 评论 -
vc中ASSERT()和VERIFY()区别
1 ASSERT与VERIFY宏在Debug模式下作用基本一致,二者都对表达式的值进行计算,如果值为非0,则什么事也不做;如果值为0,则输出诊断信息。 2 ASSERT与VERIFY宏在Release模式下效果完全不一样。ASSERT不计算表达式的值,也不会输出诊断信息;VERIFY计算表达式的值,但不管值为0还是非0都不会输出诊断信息。 断言(assertion)用带断言信原创 2013-12-13 17:13:29 · 5759 阅读 · 0 评论 -
CString的Trim()方法和TrimStrat()和TrimEnd()方法
这三个方法用于删除字符串头尾出现的某些字符。Trim()删除字符串头部及尾部出现的空格,删除的过程为从外到内,直到碰到一个非空格的字符为止,所以不管前后有多少个连续的空格都会被删除掉。TrimStart()只删除字符串的头部的空格。TrimEnd()只删除字符串尾部的空格。如果这三个函数带上字符型数组的参数,则是删除字符型数组中出现的任意字符。如Trim("abcd".ToCharArra原创 2013-12-16 10:39:17 · 19912 阅读 · 1 评论 -
make_pair()解析
Utilities 由短小精干的类和函数构成,执行最一般性的工作。 这些工具包括: general types 一些重要的C函数 numeric limitsPairsC++标准程序库中凡是“必须返回两个值”的函数, 也都会利用pair对象 classpair可以将两个值视为一个单元。容器类别map和multimap就是使用pairs来管理其健值/实值(原创 2013-12-30 11:38:03 · 1540 阅读 · 0 评论 -
宏CONTAINING_RECORD
宏CONTAINING_RECORD的用处其实还是相当大的, 而且很是方便, 它的主要作用是: 根据结构体中的某成员的指针来推算出该结构体的指针! 下面从一个简单的例子开始说起: 我们定义一个结构体, 同时类型化:typedef struct{ int a; int b; int c;}ss; 这是一个很简单的结构体, 没什么特殊的原创 2013-12-16 13:56:14 · 911 阅读 · 0 评论 -
Trace调试宏的用法
个人总结:最近看网络编程是碰到了TRACE语句,不知道在哪里输出,查了一晚上资料也没找出来,今天终于在优快云上找到了,真是个高地方啊,方法如下:1.在MFC中加入TRACE语句2.在TOOLS->MFC TRACER中选择 “ENABLE TRACING”点击OK3.进行调试运行,GO(F5)(特别注意:不是执行‘!’以前之所以不能看到TRACE内容,是因为不是调试执行,而是‘!’了原创 2013-12-16 09:29:32 · 2770 阅读 · 0 评论 -
Prof UIS相关
Prof UIS 一款国外的VC++仿XP系统风格的免费界面库控件,含有近20个应用实例,每一个都可以顺利编译,用它生成的菜单类似OFFICE菜单一样,比起传统的窗体视觉舒服多了,VC编程的朋友对照文档好好研究一番,学会用了会让你的程序增色不少。可扩展且面向对象的MFC界面开发工具,支持大多数Microsoft Office主题原创 2013-12-17 09:43:10 · 1281 阅读 · 0 评论 -
Sprintf()的思考和引出的相关问题
Sprintf()为什么不安全?功能把格式化的数据写入某个字符串缓冲区。头文件stdio.h原型int sprintf( char *buffer, const char *format, [ argument] … );参数列表buffer:char型指针,指向将要写入的字符串的缓冲区。format:格式化字符串。[argument]...:可选参数,可以原创 2013-12-17 11:32:14 · 1157 阅读 · 0 评论 -
CWnd与HWND的区别与转换
一、区别HWND是句柄,CWnd是MFC窗体类,CWnd中包含HWND句柄成员对象是m_hWnd.HWND是Windows系统中对所有窗口的一种标识,即窗口句柄。这是一个SDK概念。 CWnd是MFC类库中所有窗口类的基类。微软在MFC中将所有窗口的通用操作都封装到了这个类中,如:ShowWindow等等,同时它也封装了窗口句柄即m_hWnd成员。二、如何得到窗口对象指针CWn原创 2013-12-31 17:21:12 · 1117 阅读 · 0 评论 -
运行目录和工作目录
运行目录就是你执行文件所在目录 是固定不变的, 工作目录是一个环境变量 可在程序运行后随时进行设置更改 工作目录主要影响程序中使用到的相对路径 . 比如说 file.open(../a.txt); 这个a.txt文件的具体位置是根据工作目录来判断的.原创 2013-12-18 18:05:01 · 6767 阅读 · 0 评论 -
MFC 的程序中GetAt()的理解
BYTE 是 1字节长度 的 整型, int 是 4 字节长度 的 整型。 CString::GetAt(0); 就是把 一个 CString 对象里 的字符串 中的第一个字符,把它的ASCII 值 送返回来。例如:BYTE temp;CString m_str( "abcdef" ); // CString 对象里 的字符串 是 "abcdef"temp = m_s原创 2013-12-23 09:54:55 · 19583 阅读 · 1 评论 -
DoDataExchange函数详解
MSDN是这样描述的:Called by the framework to exchange and validate dialog data.大意是框架调用此函数来改写与确认对话框数据。到是看了下DoDataExchange函数里的DDX型函数,似乎明白了DoDataExchange函数的作用。最近看书的效果很明显哇。按我的理解,DoDataExchange函数其实是一项数据动态绑定技术原创 2013-12-23 09:01:34 · 16149 阅读 · 0 评论 -
CTreeCtrl的用法
CTreeCtrl的用法树控制(CTreeCtrl)主要用来显示具有一定层次结构的数据项,如资源管理器中的磁盘目录等,以供用户在其中进行各种选择。树控制中的每个数据项包括数据项名称的文本字符串和用于表示该数据项的图像,每个数据项下面均可包含各种子项,整个结构就象目录树一样。对于包含各种子项的数据项,可通过鼠标双击来展开或合拢,这可以通过控制树的不同风格来实现树控制的不同显示形态。建立控原创 2013-12-23 09:31:29 · 3638 阅读 · 0 评论 -
LONGLONG类型
Int64是有符号 64 位整数数据类型,相当于C++中的long long、 C# 中的 long 和 SQL Server 中的 bigint,表示值介于 -2^63 ( -9,223,372,036,854,775,808) 到2^63-1(+9,223,372,036,854,775,807 )之间的整数。存储空间占 8 字节。用于整数值可能超过 int 数据类型支持范围的情况。原创 2013-12-24 10:56:53 · 5596 阅读 · 0 评论 -
函数GetModuleFileName()
获取当前进程已加载模块的文件的完整路径,该模块必须由当前进程加载。如果想要获取另一个已加载模块的文件路径,可以使用GetModuleFileNameEx函数。原创 2013-12-24 11:39:53 · 1241 阅读 · 0 评论 -
MFC中的菜单操作
1. CreateMenu()和CreatePopupMenu(),这两个函数用来创建一个菜单实例,CreateMenu()创建的是普通的菜单实例,如果想创建弹出式菜单,就要用CreatePopupMenu()函数。2. AppendMenu()向菜单中添加一个子项,这个函数有两个主要的参数。第一个UINT nFlags,这个参数表明了该子项的属性特征,可以这样说,这个参数规定了菜单的样式和功原创 2013-12-24 10:38:44 · 1922 阅读 · 0 评论 -
函数TrackPopupMenu()
函数功能:该函数在指定位置显示快捷菜单,并跟踪菜单项的选择。快捷菜单可出现在屏幕上的任何位置。函数原型:BOOL TrackPopupMenu(HMENU hMenu, UINT uFlags, int x, int y, int nReserved, HWND hWnd, CONST RECT* prcRect);原创 2013-12-24 11:05:34 · 1432 阅读 · 0 评论 -
调试技巧MFC中TRACE宏的使用
个人总结:最近看网络编程是碰到了TRACE语句,不知道在哪里输出,查了一晚上资料也没找出来,今天终于在优快云上找到了,真是个高地方啊,方法如下:1.在MFC中加入TRACE语句2.在TOOLS->MFC TRACER中选择 “ENABLE TRACING”点击OK3.进行调试运行,GO(F5)(特别注意:不是执行‘!’以前之所以不能看到TRACE内容,是因为不是调试执行,而是‘!’了原创 2013-12-25 10:50:46 · 14466 阅读 · 3 评论 -
Prof-UIS(专业图形化界面)学习资料
学习了MFC之后变了几个小程序,但是总是觉得自己的程序界面不够漂亮,看到很多应用程序的界面都做的很漂亮,不免会有些羡慕。于是到网上去找了一些界面库,但是大多都是收费的。最近发现了一个免费的界面库Prof-UIS,而且它给的实例程序界面也十分专业十分漂亮,就下载来使用,但用起来有些复杂,于是我将学习的心得体会写下来,一是怕自己忘记,以便以后使用的时候查阅,二是和大家一起分享。由于水平有限所以写的肯定原创 2013-12-25 10:20:57 · 3276 阅读 · 3 评论 -
构建自己的插件开发框架(c++)
博客《C/C++:构建你自己的插件框架 》,原文的链接:http://blog.chinaunix.net/u/12783/showart_662937.html 。看了一下里面讲的方法,自己倒是可以实现。所以有了构建自己的c/c++插件开发框架的想法。今天先写一下初步的设想。 C/C++插件开发框架的要素 BlueDavy有一篇介绍服务框架要素的文章(链接:http://www.bl原创 2013-12-25 14:31:50 · 3072 阅读 · 0 评论 -
代码规范总结(不断更新...)
代码规范总结: 1、字母o和数字0混用;字母l和数字1混用。看到这样的代码,搞死你没办法,设置密码不错,估计黑客都想去死。密码设成oooo0000olllll111llll111oooooOOOO 2、原创 2014-01-10 09:02:34 · 1523 阅读 · 0 评论 -
MFC逐行读取txt文件中的数据
小测试程序: 1、逐行读取txt文件中的数据,到vector中 2、得到相应的文件路径 源码:// TODO: 在此添加控件通知处理程序代码 //OnOK(); TCHAR path[255]; //桌面目录 SHGetSpecialFolderPath(0,path,CSIDL_DESKTOPDIRECTO原创 2014-01-10 10:56:09 · 32604 阅读 · 1 评论 -
MFC控件随窗体大小变化的实现
VC++之根据对话框大小仅调整控件位置 1、在对话框类中加入成员变量CRect m_rect;用于保存对话框大小变化前的大小; 2、在对话框的OnInitDialog()函数中获取对话框创建时的大小: GetClientRect(&m_rect); 3、在WM_SIZE的响应函数OnSize()中加入以下代码: CWnd *pWnd;原创 2013-12-26 16:30:30 · 1389 阅读 · 0 评论 -
MFC中通过Tooltip类来实现悬浮鼠标显示提示信息
方法一:利用CWnd本身自身支持的tooptip来实现,这种方法适用给控件增加tooltip,非常方便和简单方法如下:1、在窗口中增加消息映射ON_NOTIFY_EX(TTN_NEEDTEXT, 0, SetTipText)SetTipText是个回调函数,名字叫什么无所谓,符合原型就行了,原型下面会说。 2、EnableToolTips(TRUE),使用这个方法调用这个原创 2013-12-26 15:04:35 · 7555 阅读 · 0 评论 -
strcpy,strncpy和strncpy_s的区别
首先说下strcpystrcpy()是依据源串的\0作为结束判断的,不检查copy先的Buffer的Size,如果目标空间不够,就有BufferOverflow问题。strncpy的原型为:char * strncpy(char *dest, char *src, size_t n);其将字符串src中最多n个字符复制到字符数组dest中(它并不像strcpy一样遇到N原创 2013-12-27 09:43:59 · 1397 阅读 · 0 评论 -
error LNK2001: 无法解析的外部符号
error LNK2001: 无法解析的外部符号 "public: void __thiscall XXXt::OnMouseMove(unsigned int,class CPoint)OnMouseMove@XXX@@QAEXIVCPoint@@@Z)..\bin\Plugins\Online/ XXX.dll : fatal error LNK1120: 1 个无法解析的外部命令这样原创 2013-12-27 10:12:51 · 2011 阅读 · 3 评论 -
关于跨线程传递MFC对象指针的探究
参考1、《MFC多线程编程可能》http://jingyan.baidu.com/article/fea4511aa1180bf7bb912512.html 参考2、原创 2013-12-27 13:21:18 · 1870 阅读 · 0 评论 -
MFC中的模态对话框和非模态对话框
MFC中对话框有两种形式,一个是模态对话框(model dialog box),一个是非模态对话框(modeless dialog box)。 一、模态对话框(model dialog box) 就是同步对话框 在程序运行的过程中,若出现了模态对话框,那么主窗口将无法发送消息,直到模态对话框退出才可以发送。 点击模态对话框中的OK按钮,模态对原创 2013-12-27 13:20:25 · 1116 阅读 · 0 评论 -
mfc工程各后缀文件的含义
.dsp 工程文件,文本格式,不可丢失或损坏 .dsw 工作区文件,丢失或损坏时,可点击.dsp文件打开工程,.dsw文件自动重建 .clw ClassWizard信息文件,ini格式,ClassWizard出问题时可删除它再重建 .map 映像信息文件,编制DLL写.def文件时,若不知道函数导出顺序,可在 Prject / Settings原创 2014-01-23 16:36:18 · 5355 阅读 · 0 评论 -
MFC工程exe转换成dll
/*******************************************************************************/.dsp 工程文件,文本格式,不可丢失或损坏 .dsw 工作区文件,丢失或损坏时,可点击.dsp文件打开工程,.dsw文件自动重建 .clw ClassWizard信息文件,ini格式,ClassWizard出原创 2014-01-23 16:35:29 · 7384 阅读 · 0 评论 -
c++内存泄露检测(简单)
C++ 的一个 比较晦涩难懂的特点是你可以重载 new 操作符,并且你甚至可以给它附加参数。通常,操作符 new 只接受拟分配对象的大小: void* operator new(size_t nAlloc) { return malloc(nAlloc); } 但你也可以随心所欲附加参数来重载 new 操作符,原创 2014-01-16 13:56:09 · 1880 阅读 · 0 评论 -
New运算符的重载
首先我们要清楚,为什么我们要重载new,和delete了?这还不是指针造成的,确实指针是一件让人喜欢的东西,用起来如此让人喜欢,让人顺手。然而小程序我们完全可以避免内存泄露问题,大程序就不那么容易了,然而我们有一种特别好的方法可以跟踪我们new,和delete动作,找到未被释放的内存。办法是什么呢?微软给我们提供了一种很好的方法,那就是重载new,和delete。 在实现之前我原创 2014-01-16 15:32:07 · 9631 阅读 · 4 评论 -
MFC多线程同步技术分析
原文链接:Synchronization in Multithreaded Applications with MFC 简介本文探讨基本的同步概念,并实际动手帮助新手掌握多线程编程。本文的重点在各种同步技巧。基本概念在线程执行过程中,或多或少都需要彼此交互,这种交互行为有多种形式和类型。例如,一个线程在执行完它被赋予的任务后,通知另一个线程任务已经完成。然后第二个线程原创 2014-01-25 17:28:56 · 1270 阅读 · 0 评论 -
轴心位置来进行机械诊断转子不对中情况
轴心轨迹和轴心位置结合可以更好地分析更好地对机械故障诊断:原创 2014-01-20 17:33:19 · 2601 阅读 · 0 评论