![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MFC/C++/VC
文章平均质量分 62
leaf6094189
我坚持要走程序员这条道。
展开
-
error LNK2019: unresolved external symbol
引用模板类时,出现下面错误error LNK2019: unresolved external symbol "public: __thiscall CImageSegment::CImageSegment(void)" (??0?$CImageSegment@F@@QAE@XZ) referenced in function "public: void __thiscall CSegme原创 2013-11-12 15:56:40 · 1237 阅读 · 0 评论 -
WCHAR与CHAR的转换
如果工程属性chart set项有两种字符编码方式:Multi-Byte 、Unicode。不同的编码方式对字符的处理方式是不同的。今天在编码的时候出现字符编码转换的问题,解决后记录为此博文。用到一个函数,它的参数必须是char*类型,而我工程属性设置了Unicode(默认)。如果强制类型转换:CString s = “abc”;char *ch;ch = (c原创 2013-02-20 19:50:15 · 665 阅读 · 0 评论 -
MFC多线程及线程同步
MFC 多线程及线程同步一、MFC对多线程编程的支持 MFC中有两类线程,分别称之为工作者线程和用户界面线程。二者的主要区别在于工作者线程没有消息循环,而用户界面线程有自己的消息队列和消息循环。 工作者线程没有消息机制,通常用来执行后台计算和维护任务,如冗长的计算过程,打印机的后台打印等。用户界面线程一般用于处理独立于其他线程执行之外的用户输入,响应用户及系统所产生的事转载 2012-12-14 10:22:09 · 722 阅读 · 0 评论 -
CHotKey热键的使用
2010-05-13 14:58 CEdit热键设置控件在应用程序中使用热键Windows操作系统提供了许多热键,比如常用的热键:Win+E打开资源管理器,Win+F打开查找对话框,F1打开帮助等等。使用这些热键可以使我们的操作更加方便。那么,怎样在自己的应用程序中添加和使用热键呢?下面以VC++为例来说明。MFC提供了CHotKeyCtrl类,由 CHotKeyCtrl 类表转载 2012-11-08 18:16:51 · 1489 阅读 · 0 评论 -
程序调试向main()函数传入参数
在工程属性中debugging有一项Command Arguments 在这里输入的是参数开头为“-”,不然输入是文件。ProcessShellcommand()函数会首先去打开这个文件。 这里跟dos界面启动.exe程序中,传入参数一样的格式。原创 2012-11-07 15:26:22 · 889 阅读 · 0 评论 -
IE8 与 VS2005 冲突问题解决方法
IE8 与 VS2005 冲突问题解决方法问题表现为:MFC类向导添加类时,出现“当前页面的脚本发生错误”,进入MFC类向导后上方有一个小黄条“此网站的某个加载项运行失败。请检查"Internet选项"中的安全设置是否存在潜在冲突”,基类下拉框无项值,无法成功添加MFC类。针对这一问题解决办法是:添加一注册表项:HKEY_CURRENT_USER/Software/Micros转载 2012-11-07 15:19:27 · 681 阅读 · 0 评论 -
new delete操作符
char *buff =new char[reslen];char *utfbuff =new char[reslen];;......delete buff; //不会报错delete utfbuff;针对char,int等这些基本类型,delete与delete[]一样,都能释放内存。但是new delete 或者new [] delete []应该在编码的时原创 2012-10-23 15:23:04 · 578 阅读 · 0 评论 -
GetLastError()错误编号及意义
〖0〗-操作成功完成。〖1〗-功能错误。〖2〗-系统找不到指定的文件。〖3〗-系统找不到指定的路径。〖4〗-系统无法打开文件。〖5〗-拒绝访问。〖6〗-句柄无效。〖7〗-存储控制块被损坏。〖8〗-存储空间不足,无法处理此命令。〖9〗-存储控制块地址无效。〖10〗-环境错误。〖11〗-试图加载格式错误的程序。〖12〗-访问码无效。〖13〗-数据无效转载 2012-09-25 16:18:40 · 1075 阅读 · 0 评论 -
ClistCtrl高亮显示某一项
今天遇到一个小小的问题,就是高亮显示ListCtrl某一项,通过查阅MSDN,找到了相应函数,即:SetItemState,下面是MSDN中对该函数的相关说明.------------------------------------------------------------------------------------------------------------------转载 2012-09-12 16:45:49 · 3321 阅读 · 0 评论 -
解决字体大小的改变影像显示对话框大小的问题
对话框资源中的尺寸数值是对话框单位(一种字体无关单位),不是像素,要转换成像素,可以借助于 MapDialogRect 来转换。 如果想手动计算,用下面的算法: pixelX = MulDiv(dialogX, 对话框水平基本单位, 4) pixelY = MulDiv(dialogY, 对话框垂直基本单位, 8) 算法里的“对话框水平基本单位”和“对话框垂直基本单位”转载 2012-09-27 11:25:46 · 1237 阅读 · 0 评论 -
CString to dword的转换用sscanf方法
CString str = "123";DWord dw;可以用这样一种方法:char ch[1024];ch = (LPSTR)(LPCSTR)str;dw = atol(ch); //包含#include "stdlib.h"今天找到一中很好的方法:sscanf(str,"%d",&dw);原创 2013-02-25 16:12:51 · 1077 阅读 · 0 评论 -
VC资源动态库
(一)随着计算机应用的普及,应用软件跨国使用越来越频繁,如何实现应用软件的国际化,成为许多程序员关心的问题。这种国际化问题相对使用某一种语言的用户来说,就是本地化问题。本地化的含义比仅仅翻译菜单栏和对话框的文本内容要广泛得多,如特定文化背景的位图和图标对不同的人来说,可能会有不同的含义。在Windows系统中,应用程序开发者可以通过利用VC动态链接库,只用一套源代码就能简洁地支持多种文字。转载 2013-05-03 10:38:51 · 1142 阅读 · 0 评论 -
使用标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast、和const_cast
使用标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast、和const_caststatic_cast用法:static_cast ( expression ) 该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。它主要有如下几种用法:①用于类层次结构中基类和子类之间指针转载 2013-05-09 14:34:51 · 587 阅读 · 0 评论 -
error C2248: 'CObject::operator =' : cannot access private member declared in class 'CObject'
碰到这个棘手的问题,我知道这个MFC底层的错误,可我对底层知之剩少。昨天看了网上的资料,可看不懂,今天又看了同样的东西,看明白了。先看一段示例代码: 1 #define C2248_SWITCH 0 2 3 struct A 4 { 5 int a; 6 }; 7 8 struct B 9 {10 CArrayA,原创 2013-10-16 09:37:56 · 1467 阅读 · 0 评论 -
函数不定参数的定义与解析
void ErrMsg(LPTSTR szFormat,...){ static TCHAR szBuffer[2048]={0};const size_t NUMCHARS = sizeof(szBuffer) / sizeof(szBuffer[0]);const int LASTCHAR = NUMCHARS - 1;va_list pArgs;va原创 2013-06-26 10:36:25 · 928 阅读 · 0 评论 -
MFC文件操作
CFile是MFC对文件操作的基类,它直接提供非缓冲的二进制磁盘输入/输出设备,并直接地通过派生类支持文本文件和内存文件。最常用的是CFile的派生类CStdioFile。nOpenFlags可组合为以下值:CFile::modeCreate 创建一个新的文件,如果文件存在将文件截取成长度为0。 ·CFile::modeNoTruncate 此标志总是与mo原创 2013-06-20 10:46:37 · 780 阅读 · 0 评论 -
C#调用ocx控件
一个问题纠结了好几天了,终于找到答案了。C#语言编写的应用程序作为容器,调用C++的Active控件,需要从控件获得字符串。如果用char*作为形参,在C#容器中,形参会是sbyte类型,得到的只是一个字节。见:http://bbs.csdn.net/topics/380170713经过测试,BSTR*作为字符串传出形参,BSTR作为字符串传入形参。是最易接受的。BSTR*在C#中解析原创 2013-06-17 19:57:09 · 1486 阅读 · 0 评论 -
c++定时器
定时器有两种方式:一:MFC基于CWnd的Timer,指定定时器ID,响应WM_TIMER消息函数OnTimer就OK了。二:基于windows API的Timer,设定定时器nIDEvent: TIMECAPS tc;if (timeGetDevCaps(&tc, sizeof(TIMECAPS)) == TIMERR_NOERROR){//分辨率的值不能原创 2013-06-05 11:11:30 · 1028 阅读 · 0 评论 -
VC设置文本字体_很全面
VC中字体设置单独地改变某个静态文本的字体,需要首先用CreateFont来建立一个字体对象,然后调用控件的SetFont,就可以了。改静态文体的ID,如:IDC_STATIC1 在OnInitDialog中添加如下代码: CFont * f; f = new CFont; f->CreateFont(16, // nHeight 0, // nWidth 0,转载 2013-05-14 17:03:11 · 1305 阅读 · 0 评论 -
Doxygen具体语法解释
1. 模块定义(单独显示一页)/** * @defgroup 模块名 模块的说明文字 * @{ */ ... 定义的内容 ... /** @} */ // 模块结尾/** * @defgroup 模块名 模块的说明文字 * @{ */ ... 定义的内容 ... /** @} */ // 模块结尾2. 分组定义(在一页内分组显示)/**转载 2013-05-27 10:26:59 · 1331 阅读 · 0 评论 -
EnumDisplayMonitors—多屏显示的实现
在编程中要用到相关的结构体和函数,这些都已经包装好,在multimom.h头文件中,该头文件VC自带有。在要用的的地方包含该头文件,注意在包含前面要加上一句宏定义:#define COMPILE_MULTIMON_STUBS 几个重要的结构体和函数 EnumDisplayMonitors( ) 该函数对当前用户系统中所包含的显示器进行枚举。应用程序就是通过与该原创 2013-05-09 17:27:54 · 4341 阅读 · 0 评论 -
ProcessShellCommand()解析
ProcessShellCommand()本文链接:http://user.qzone.qq.com/278288976/blog/1196240170在我们用向导创建MFC应用程序时,在App::InitInstance()中总会出现下面这样的代码到底是什么意思呢,我差了很多资料终于使其漏出庐山真面目。 CCommandLineInfo c转载 2012-08-31 13:53:31 · 812 阅读 · 0 评论 -
MFC自画控件
CMyWinCtrl::OnPaint(){CPaintDC dc(this);CDC dcMem;CDC *pDC = &dc;CBitMap bmp;dcMem.CreateCompatibleDC(&dc) &;bmp.CreateCompatibleBitmap(&dc, clientRect.Width(), clientRect.Height()原创 2012-07-16 13:49:01 · 842 阅读 · 1 评论 -
窗口坐标统一问题
遇到这样一个问题:在CMyDialog中有CStatic资源,现在想把CMyDialog中的成员变量CMyWnd手动创建,然后通过MoveWindow移到CStatic所在区域。这样就需要知道CStatic相对于CMyDialog的坐标。通过这样一种方法:GetWindowRect(CStatic.m_hWnd,&rect); //获得Static相对于系统(屏幕)的坐标Scr原创 2012-05-11 18:03:21 · 916 阅读 · 0 评论 -
MFC设置窗口背景颜色(很全很强大)
如何修改frame窗口的背景颜色? MDI窗口的客户区是由frame窗口拥有的另一个窗口覆盖的。为了改变frame窗口背景的颜色,只需要这个客户区的背景颜色就可以了。你必须自己处理WM_ERASEBKND消息。下面是工作步骤: 创建一个从CWnd类继承的类,就叫它CMDIClient吧; 在CMDIFrameWnd中加入CMDIClient变量;(具体情况看下面的代码转载 2012-05-11 17:52:54 · 36876 阅读 · 0 评论 -
MFC DestroyWindow窗口对象和窗口句柄的销毁
考虑单窗口情况: 假设自己通过new创建了一个窗口对象pWnd,然后pWnd->Create。则销毁窗口的调用次序: 1. 手工调用pWnd->DestroyWindow(); 2. DestroyWindow会发送WM_DESTROY; 3. WM_DESTROY对应的消息处理函数是OnDestroy(); 4. DestroyWindow会发送转载 2012-05-28 14:34:02 · 6241 阅读 · 0 评论 -
MFC对话框的创建和销毁顺序
非 模态对话框相对于模态对话框,他的创建和销毁过程和模态对话框有一定的区别,先看一下MSDN的原文:When you implement a modeless dialog box, always override the OnCancel member function and call DestroyWindow from w转载 2012-05-28 14:36:34 · 4841 阅读 · 0 评论 -
CImageList的使用简介
图像列表控制(CImageList)是相同大小图像的一个集合,每个集合中均以0为图像的索引序号基数,图像列表通常由大图标或位图构成,其中包含透明位图模式。可以利用WINDOWS32位应用程序接口函数API来绘制、建立和删除图像,并能实现增加、删除、替换和拖动图像等操作。图像列表控制提供了控制图像列表的基本方法,这些方法在WINDOWS95及以后版本才能实现。一、 图像控制的对象结构1 图像转载 2012-05-08 14:11:37 · 482 阅读 · 0 评论 -
CSpinButtonCtrl使用
CSpinButtonCtrl:旋转按扭控件,也称上下控件。 一个旋转按扭控件通常会与另一个控件相伴使用,可称之为“伙伴控件”。 使用CSpinButtonCtrl控件需注意四点: 1)Alignment:选择一种对齐方式 2)Auto Buddy:自动选择一个伙伴控件 3)Set Buddy Intege原创 2012-04-08 23:35:21 · 1259 阅读 · 0 评论 -
C++类型转换
C风格的强制类型转换(Type Cast)很简单,不管什么类型的转换统统是:TYPE b = (TYPE)a。C++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用。const_cast,字面上理解就是去const属性。static_cast,命名上理解是静态类型转换。如int转换成char。dynamic_cast,命名上理解是动态类型转换。如子类和父类之间的多态类转载 2012-03-22 11:11:58 · 387 阅读 · 0 评论 -
MFC常用控件-CEdit ,CTreeCtrl,CComboBox等控件
1.最近几天自己写了一个日志管理软件(为自己使用的),主要的记录每天个人的一些情况,如作息时间,做了些什么事,和一些总结,心得体会等. 但在实现的过程中,由于有好几个月没有用VC++编了,有些控件的使用都不太熟悉了,所以在这里使用到的通用控件的使用方法在这里总结一下. (a) CEdit控件 这个控件主要是文本输入,如用户名,密码; CEdit常转载 2011-10-29 09:49:49 · 3779 阅读 · 0 评论 -
动态生成控件(CButton, CComboBox, CTreeCtrl, CListCtrl, CTabCtrl, CEdit)、字体设置、常见设置
一、动态生成控件1.CButton Create(_T("查询"), WS_CHILD|BS_PUSHBUTTON, rect, this, 1);2.CComboBox Create(WS_CHILD|WS_VISIBLE|WS_VSCROLL|CBS_DROPDOWNLIST, rect, this, 1);3.CTreeCtrl Create(WS_V转载 2012-04-01 14:03:59 · 2452 阅读 · 0 评论 -
窗口的定位
主要用到两个函数:MoveWindow或者SetWindowPos BOOL SetWindowPos(HWND hWnd , HWND hWndlnsertAfter , int X , int Y , int cx , int cy , UNIT uFlags);hWnd:窗口句柄。 hWndlnsertAfter:在z序中的位于被置位的窗口前的窗口句柄。该参数必须为一原创 2012-05-16 13:12:41 · 1251 阅读 · 0 评论 -
什么是回调函数
今天一句话让我明白了:想让别人的函数调用你自己定义的函数,当别人的函数又不能动。 我之前自己的理解是:回调函数往往在这样的情况下出现,在函数形参中传递另一函数指针。原创 2012-06-05 09:55:53 · 595 阅读 · 0 评论 -
MFC中的数据结构
MFC 的Collections Classes 中有许多适用于各种数据类型(如Byte、Word、DWord、Ptr)以及各种数据结构(如数组、串行)的现成类别。如果我们尽可能把这些现成的类别应用到程序的数据结构上面,就可以节省许多开发时间:MFC Collection Classes分为三种类型,用来管理一大群对象:■ Array:数组,有次序性(需依序处理),可动态增减大转载 2012-05-17 10:54:11 · 4553 阅读 · 0 评论 -
多台显示器的显示处理
多台显示器显示有两种模式:1.克隆显示; 2.扩展显示。 typedef struct tagMONITORINFO{ DWORD cbSize; RECT rcMonitor; //A RECT structure that specifies the display monitor rectangle RECT rcWork; //A原创 2012-07-12 09:27:29 · 676 阅读 · 0 评论 -
C++标准库
在工作中不断地发现bug,修改bug,周而复始。发现自己的技术在那里原地踏步。我应该在高效地完成工作安排的任务之后,努力安排自己的业余时间来学习。首先沉静下来,系统地学习计算机基本知识,然后是工程、设计模式方面,再后是专业应用领域、及算法。希望自己能主动、坚持朝这个方向前进。 C++标准库非常大。在C++标准中,关于标准库的规格说明占了密密麻麻300多页,这还不包括标准C库,后者只是 "作转载 2012-06-26 15:03:46 · 1057 阅读 · 0 评论 -
文件查找
MFC提供CFileFind类; 123456789101112131415161718192021222324252627282930313233343536373839404142434445原创 2012-06-25 14:55:17 · 596 阅读 · 0 评论 -
动态分配二维数组
如何在C/C++中动态分配二维数组在C/C++中动态分配二维数组可以先申请一维的指针数组,然后该数组中的每个指针再申请数组,这样就相当于二维数组了,但是这种方法会导致每行可能不相邻,从而访问效率比较低。如何申请连续的二维数组了?本文将分别三个方面讲解:一.动态申请列大小固定的二维数组二.C语言中动态申请连续的二维数组三.C++语言中动态申请连续的二维数组 一.动态申请列大小转载 2012-06-19 10:04:55 · 972 阅读 · 0 评论 -
关于WM_Paint 消息解析
1. 系统何时发送WM_PAINT消息? 系统会在多个不同的时机发送 WM_PAINT 消息:当第一次创建一个窗口时,当改变窗口的大小时,当把窗口从另一个窗口背后移出时,当最大化或最小化窗口时,等等,这些动作都是由系统管理的,应用只是被动地接收该消息,在消息处理函数中进行绘制操作;大多数的时候应用也需要能够主动引发窗口中的绘制操作,比如当窗口显示的数据改变的时候,这一般是通过原创 2012-05-24 15:34:14 · 680 阅读 · 0 评论