C++/MFC
文章平均质量分 64
DavidHsing
折腾过 ASP/JSP/PHP/VB/Delphi/Java,个人爱好C /MFC,工作Java。5年J2EE/金融系统开发经验。
展开
-
#pragma 指令解析
在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C ++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。 其格式一般为: #Pragma Para 其中Para 为参数,下面来看一转载 2007-08-26 13:54:00 · 1285 阅读 · 0 评论 -
CFile 和 CStdioFile 区别以及 CString 中的 '/r/n'
MSDN:Difference between text mode file and binary mode fileFile I/O operations take place in one of two translation modes, text or binary, depending on the mode in which the file is opened. Data fil转载 2007-08-26 14:12:00 · 3363 阅读 · 0 评论 -
DoDataExchange 函数简单说明
void CDlgSelectCS::DoDataExchange(CDataExchange* pDX)...{ CDialog::DoDataExchange(pDX); DDX_Text(pDX, IDC_EDIT_SCR, m_ScrCS_Name); DDX_Text(pDX, IDC_EDIT_DEST, m_DestCS_Name);}转载 2007-08-26 14:14:00 · 1610 阅读 · 0 评论 -
匈牙利命名法
命名规范和C/C++源代码书写通则: 1、在所有命名中,都应使用标准的英文单词或缩写。不得使用拼音或拼音缩写,除非该名字描述的是中文特有的内容,如半角、全角, 声母、韵母等。 2、所有命名都应遵循达意原则,即名称应含义清晰、明确。 3、所有命名都不易过长,应控制在规定的最大长度以内。 4、所有命名都应尽量使用全称。 5、如果命名使用缩写,则应该使用《通用缩写表》(见附录)中转载 2007-08-26 14:02:00 · 4223 阅读 · 0 评论 -
VC++中进程间相互通信的十一种方法
进程通常被定义为一个正在运行的程序的实例,它由两个部分组成: 一个是操作系统用来管理进程的内核对象。内核对象也是系统用来存放关于进程的统计信息的地方 另一个是地址空间,它包含所有的可执行模块或DLL模块的代码和数据。它还包含动态分配的空间。如线程堆栈和堆分配空间。每个进程被赋予它自己的虚拟地址空间,当进程中的一个线程正在运行时,该线程可以访问只属于它的进程的内存。属于其它进程的内存则是隐藏转载 2007-09-04 14:28:00 · 1325 阅读 · 1 评论 -
谈谈 Unicode 编码,简要解释 UCS、UTF、BMP、BOM 等名词
这是一篇程序员写给程序员的趣味读物。所谓趣味是指可以比较轻松地了解一些原来不清楚的概念,增进知识,类似于打RPG游戏的升级。整理这篇文章的动机是两个问题: 问题一: 使用Windows记事本的“另存为”,可以在GBK、Unicode、Unicode big endian和UTF-8这几种编码方式间相互转换。同样是txt文件,Windows是怎样识别编码方式的呢? 我很早前就发现转载 2007-09-04 09:41:00 · 1387 阅读 · 0 评论 -
MFC程序的消息处理顺序
MFC应用程序中处理消息的顺序1.AfxWndProc() 该函数负责接收消息,找到消息所属的CWnd对象,然后调用AfxCallWndProc2.AfxCallWndProc() 该函数负责保存消息(保存的内容主要是消息标识符和消息参数)供应用程序以后使用,然后调用WindowProc()函数3.WindowProc() 该函数负责发送消息到OnWndMsg转载 2007-09-06 15:13:00 · 950 阅读 · 0 评论 -
XML 入门精解之结构与语法
我们暂且使用“记事本”来创建我们的XML文件吧。先看一个XML文件: 例1 〈?xml version="1.0" encoding="gb2312" ?〉 〈参考资料〉 〈书籍〉 〈名称〉XML入门精解〈/名称〉 〈作者〉张三〈/作者〉 〈价格 货币单位="人民币"〉20.00〈/价格〉 〈/书籍〉 〈书籍〉 〈名称〉XML转载 2007-09-06 09:47:00 · 868 阅读 · 0 评论 -
C++箴言:用传引用给const取代传值
缺省情况下,C++ 以传值方式将对象传入或传出函数(这是一个从 C 继承来的特性)。除非你特别指定其它方式,否则函数的参数就会以实际参数(actual argument)的拷贝进行初始化,而函数的调用者会收到函数返回值的一个拷贝。这个拷贝由对象的拷贝构造函数生成。这就使得传值(pass-by-value)成为一个代价不菲的操作。例如,考虑下面这个类层级结构: class P转载 2007-09-06 15:00:00 · 999 阅读 · 0 评论 -
FTP 协议解析与实现
正文: 一、FTP通信原理简述 1.1 FTP简介 FTP是基于TCP/IP协议的一个应用协议。主要实现在不同的计算机之间的数据共享。FTP 采用的是C/S模式。客户既可以下载文件也可以上传文件。当然,FTP给用户一定的权限。用户只能在权限下使用。目前,FTP的服务器种类很多,比如常用的SERV-U,客户端程序也很多,比如:CuteFTP。WINDOWS也提供了一个FTP客户程序转载 2007-09-10 11:00:00 · 7562 阅读 · 0 评论 -
常见的重要电脑英语及其缩写
PC:Personal Computer,个人计算机、个人电脑,又称微型计算机或微机。 NC: Network Computer,网络计算机。 MPC: Multimedia Personal Computer,多媒体个人电脑。 MMX: 是MultiMedia eXtensions(多媒体扩展)的缩写,是第六代CPU芯片的重要特点。MMX技术是在CPU中加入了特转载 2007-09-06 10:08:00 · 1287 阅读 · 0 评论 -
HTTP 协议基础
HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送WWW方式的数据,关于HTTP协议的详细内容请参考RFC2616。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求,请求头包含请求的方法、URI、协议版本、以及包含请求修饰符、客户信息和内容的类似于MIME的消息结构。服务器以一个状态行作为响应,相应的内容包括消息协议的版本,成功或者错转载 2007-09-07 09:38:00 · 790 阅读 · 0 评论 -
stdafx.h 的作用
Standard Application Fram Extend没有函数库,只是定义了一些环境参数,使得编译出来的程序能在32位的操作系统环境下运行。Windows和MFC的include文件都非常大,即使有一个快速的处理程序,编译程序也要花费相当长的时间来完成工作。由于每个.CPP文件都包含相同的include文件,为每个.CPP文件都重复处理这些文件就显得很傻了。为避免转载 2007-11-09 21:11:00 · 894 阅读 · 0 评论 -
用 VC 纯资源 dll 解决国际化问题
一步一步教你用VC纯资源dll解决国际化问题这的确是个老话重谈了,因为这里面确实也没有什么可以称的上技术含量的,只是实现起来有点烦琐,不过我还是要写出来,希望刚接触这方面的同行们不至于走太多的弯路。 由于MFC应用程序也有自己的资源文件,当你调用MFC函数比如 CString::LoadString 或其它 LoadIcon 时,MFC应用程序框架首先跟踪搜索EXE文件的资源,然后才是DLL转载 2007-11-09 21:25:00 · 1929 阅读 · 0 评论 -
C++ 中 const 关键字使用详解
const是用于保护程序的健壮性,减少程序隐患。const的用法比较复杂,总结起来又分为以下两种:1:在定义变量时使用: a: const int a=100; 最简单的用法,说明变量a是一个常变量; b: int const b=100; 与a功能相同; c: const int *a=&b; 指向常数的指针,即指针本身的值是可以 改变的,但指向的内转载 2007-11-09 21:30:00 · 1041 阅读 · 0 评论 -
Sizeof 与 Strlen 的区别与联系
1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。 该类型保证能容纳实现所建立的最大对象的字节大小。 2.sizeof是算符,strlen是函数。 3.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以/0结尾的。 sizeof还可以用函数做参数,比如: short f(); printf("%转载 2007-11-09 21:44:00 · 843 阅读 · 0 评论 -
Visual C++ 头文件互相包含的解决方案
方法一:利用友元类 我一共有两个类,由于要在两个类的头文件里互相应用对方,所以,在每一个类的头文件里面现包含另一个类的头文件,然后在该类的定义中声明另一个类为友元类。如下: #include "B.h" class CA: public CDialog { friend class CB; public: C转载 2007-11-09 21:52:00 · 7955 阅读 · 2 评论 -
ASCII 码对照表
在Web开发时,如下的ASCII码只要加上&#和;就可以变成Web可以辨认的字符了在处理特殊字符的时候特别有用,如: 单引号在数据库查询的时候是杀手,但是如果转换成(注意:转换后的机构 有:&# +字符的ASCII码值+; 三个部分组成)再来存数据库,就没有什么影响了。其他的字符与ASCII码的转载 2007-11-09 21:57:00 · 2184 阅读 · 0 评论 -
VC++ 替换 exe 可执行文件的图标
替换exe可执行文件的图标:1、首先取得源资源的指针;2、利用UpdateResource函数进行替换; void CDlgTest2Dlg::OnBTNUpdateResource() ...{ // TODO: Add your control notification handler code here HMODULE hExe; HANDLE hUpdate转载 2007-11-09 22:06:00 · 3031 阅读 · 2 评论 -
正则表达式之道
本文来自 http://net.pku.edu.cn/~yhf/tao_regexps_zh.html 正则表达式之道原著:Steve Mansour sman@scruznet.com Revised: June 5, 1999(copied by jm /at/ jmason.org from http://www.scruz.net/%7esman/regex转载 2007-11-09 20:30:00 · 1115 阅读 · 0 评论 -
C++中的 explicit 关键字
C++中的explicit关键字用来修饰类的构造函数,表明该构造函数是显式的,既然有"显式"那么必然就有"隐式",那么什么是显示而什么又是隐式的呢?如果c++类的构造函数有一个参数,那么在编译的时候就会有一个缺省的转换操作:将该构造函数对应数据类型的数据转换为该类对象,如下面所示: class MyClass...{public:MyClass( int num );}.转载 2007-11-09 21:32:00 · 736 阅读 · 0 评论 -
全面解读 WM_NOTIFY
摘要:控件通知消息有很多种,但是有一种是很常用,但是又不是很容易掌握的,那就是WM_NOTIFY,我试着对此做一下比较全面的论述,有不对的地方,还希望各路大虾批评指正。 控件通知消息 在《深度解析VC中的消息(上)》中,我们提到了消息的分类有3种:窗口消息、命令消息和控件通知消息,我们这里要谈的是最后一种:控件通知消息。 控件通知消息,是指这样一种消息,一个窗口内的子转载 2007-11-09 21:40:00 · 903 阅读 · 0 评论 -
__cdecl与 __fastcall与 __stdcall调用约定
调用约定:__cdecl __fastcall与 __stdcall,三者都是调用约定(Calling convention),它决定以下内容:1)函数参数的压栈顺序,2)由调用者还是被调用者把参数弹出栈,3)以及产生函数修饰名的方法。1、__stdcall调用约定:函数的参数自右向左通过栈传递,被调用的函数在返回前清理传送参数的内存栈,2、_cdecl是C和C++程序的缺省调转载 2007-11-09 22:01:00 · 856 阅读 · 0 评论 -
C/C++ 头文件一览
C、传统 C++#include //设定插入点#include //字符处理#include //定义错误码#include //浮点数处理#include //文件输入/输出#include //参数化输入/输出#include //数据流输入/输出#include //定义各种数据类型最值常量#include转载 2007-11-09 22:04:00 · 945 阅读 · 0 评论 -
VC常用数据类型使用转换详解
CString ,BSTR ,LPCTSTR之间关系和区别CString是一个动态TCHAR数组,BSTR是一种专有格式的字符串(需要用系统提供的函数来操纵,LPCTSTR只是一个常量的TCHAR指针。CString 是一个完全独立的类,动态的TCHAR数组,封装了 + 等操作符和字符串操作方法。typedef OLECHAR FAR* BSTR;typedef const char *转载 2008-02-01 17:40:00 · 1057 阅读 · 0 评论 -
BCGControlBar Pro V9.56 中文向导
大名鼎鼎的 BCGControlBar,功能介绍就不多说了,Microsoft 都采用的界面库。 如果您不知道,那么可能您不是本文的读者。 可惜其安装版存在一些问题,比如 Pro V9.56 版在 Visual Studio 2008 下安装之后无法启动向导;英文向导界面样式不对;没有中文向导。 本软件正是为这两点而做,压缩包附详细安装说明。 花了不少心原创 2008-02-28 10:24:00 · 1878 阅读 · 2 评论 -
仅通过崩溃地址找出源代码的出错行
I386平台C函数调用边界的栈分配 当调用一个函数时,主调函数将参数以声明中相反的顺序压栈,然后将当前的代码执行指针(eip)压栈,然后跳转到被调函数的入口点。在被调函数中,通过将ebp加上一个偏移量来访问函数参数,以声明中的顺序(即压栈的相反顺序)来确定参数偏移量。被调函数返回时,弹出主调函数压在栈中的代码执行指针,跳回主调函数。再由主调函数恢复到调用前的栈。 函数的返回值不同于函转载 2008-03-08 19:55:00 · 1523 阅读 · 0 评论 -
VC++的链接错误LNK2001
在VC/MFC社区中经常看到有人问一些编译错误怎么解决的问题,很多错误都是VC++的链接错误LNK2001,所以把这篇我记不得从什么地方获得的文章贴出来,也许对大家有点帮助。在此要感谢本文的原始作者,为他的专业精神! 学习VC++时经常会遇到链接错误LNK2001,该错误非常讨厌,因为对于编程者来说,最好改的错误莫过于编译错误,而一般说来发生连接错误时转载 2008-03-08 20:18:00 · 1900 阅读 · 1 评论 -
Bat 批处理之 for/f 详解
含有/F的for格式:FOR /F ["options"] %%i IN (file) DO commandFOR /F ["options"] %%i IN ("string") DO commandFOR /F ["options"] %%i IN (command) DO command这个可能是最常用的,也是最强的命令,主要用来处理文件和一些命令的输出结果。fi转载 2007-12-28 01:18:00 · 35241 阅读 · 6 评论 -
BSTR、char* 和 CString 之间的转换
(1) char*转换成CString 若将char*转换成CString,除了直接赋值外,还可使用CString::Format进行。例如:char chArray[] = "This is a test"; char * p = "This is a test"; 或LPSTR p = "This is a test"; 或在已定义Unicode应的用转载 2008-04-04 12:54:00 · 1079 阅读 · 0 评论 -
Cool! XDialogHeader
注:本文为本人原创,转载请注明出处 http://blog.csdn.net/DavidHsing/,谢谢! 一直以来,倾心于 Nullsoft Install System 安装程序,想实现上面的横幅 (banner) 效果。 Delphi 等爱好者就不要继续往下看了,第三方的组件 TmxGradientBckgndPanel 完全可以满足你们的要求(如果原创 2008-04-15 16:38:00 · 1269 阅读 · 0 评论 -
部分 MFC 类的中文解释
CArchive类:用于二进制保存档案 CArc转载 2008-05-11 20:24:00 · 2041 阅读 · 0 评论 -
error C2660: 'Gdiplus::GdiplusBase::operator new'
今天编译一个使用 GDI+ 的程序,报错说error C2660: “Gdiplus::GdiplusBase::operator new”: 函数不接受 3 个参数挺纳闷。找到解决方案,原来是微软的 DEBUG_NEW 和 GDI+ 不匹配造成的。完整的解决方案地址:Microsoft Foundation Classes DEBUG_NEW Does Not Wor原创 2008-05-12 10:02:00 · 3155 阅读 · 0 评论 -
Visual C++ 使用技巧
1.检测程序中的括号是否匹配 把光标移动到需要检测的括号(如大括号{}、方括号[]、圆括号()和尖括号 2.查看一个宏(或变量、函数)的宏定义 把光标移动到你想知道的一个宏上,就比如说最常见的DECLARE_MAP_MESSAGE上按一下F12(或右键菜单中的Go To Defition Of...),如果没有建立Browse files,会出现提示对话框,确定,然转载 2008-05-12 14:13:00 · 1462 阅读 · 0 评论 -
Visual C++ 项目文件说明
VC项目文件说明.opt 工程关于开发环境的参数文件。如工具条位置等信息;.aps (AppStudio File),资源辅助文件,二进制格式,一般不用去管他;.clw ClassWizard信息文件,实际上是INI文件的格式,有兴趣可以研究一下.有时候ClassWizard出问题,手工修改CLW文件可以解决.如果此文件不存在的话,每次用ClassWizard的时候绘提示你是否重转载 2008-05-12 14:33:00 · 1121 阅读 · 0 评论 -
Visal C++ 中用于调试程序的几个宏
一、TRACE宏 当选择了Debug目标,并且afxTraceEnabled变量被置为TRUE时,TRACE宏也就随之被激活了。但在程序的Release版本中,它们是被完全禁止的。下面是一个典型的TRACE语句: int nCount =9; Cstring strDesc("total"); TRACE("Count =%d,Description =%s/n",nCount,转载 2008-05-12 15:07:00 · 1160 阅读 · 0 评论 -
CString.Format 用法
Format 指定输出格式,后面跟要输出的变量 目前 printf 支持以下格式: %c 单个字符 %d 十进制整数 %f 十进制浮点数 %o 八进制数 %s转载 2008-07-27 19:32:00 · 26776 阅读 · 3 评论 -
Visual C++ 与 Kaspersky 冲突的解决方案
之前俺一直坚持用 Norton,随俺的 IBM 笔记本预装的正版,也即将过期,于是换到了传说中的 Kaspersky。其他都还好好的,就是在启动 Visual C++ 2008 调试程序的时候出问题了,程序总是出不来。第一感觉就是被 Kaspersky 中断了,于是暂停 Kaspersky,果然好了。治标不治本,根本的解决办法还是只有把 Visual Studio 加入到 Kas原创 2008-05-12 17:02:00 · 1018 阅读 · 0 评论 -
Visual Studio History Cleaner
新完成作品:Visual Studio History Cleaner。 主要功能,清除 Visual Studio 的“最近的文件”和“最近的项目”等。 用到的技术: 1、动态创建对话框横幅;2、对话框仿 Vista 阴影效果;3、自动吸附对话框到屏幕边缘;4、CListCtrl 和 CHeaderCtrl 的扩展应用;5、注册表的操作;6原创 2008-07-30 16:51:00 · 7562 阅读 · 0 评论 -
VC编程增加热键功能
热键分菜单热键、应用程序热键和系统级热键。一、菜单热键:直接在菜单中包含 &X 即可,X是任意你想使用的字符键。示例:About菜单项的Caption可以这么写:“&About”或者“关于(&A)”都表示用A来调用该菜单项,不区分大小写。二、应用程序热键:非基于对话框的:在Resource View的Accelerator中添加相应ID和按键即可。基于模态对话框的:参见微软知识库Q222829和Q转载 2008-08-05 11:24:00 · 2457 阅读 · 0 评论