- 博客(59)
- 资源 (6)
- 收藏
- 关注
转载 GetEnvironmentStrings和GetEnvironmentVariable
环境变量是进程中一组变量信息,环境变量分为系统环境变量、用户环境变量和进程环境变量。系统有全局的环境变量,在进程创建时,进程继承了系统的全局环境变量、当前登录用户的用户环境变量和父进程的环境变量。进程也可以有自己的环境变量。设置和获取所在进程的环境变量使用API函数GetEnvironmentStrings、GetEnvironmentVariable和SetEnvironmentVariab
2013-08-26 14:53:28 1345
转载 AfxGetApp()和GetSafeHwnd()
AfxGetApp()这个函数在VC当中很常见,主要是用来获取当前App的CWinApp类指针。一般情况下将其强制类型转换成你自己写的App类就可以调用里面的方法了。我通常把一些重要的工程一开始就需要初始化的并且在其它地方类中都要用到的变量或函数定义在C***App类中,然通过此函数获得这些变量或函数。如果你定义为取全局变量,只需在需要的地方用extern声名即可。如果把变量在你的
2013-08-22 08:46:25 549 1
转载 用VC++实现应用程序窗口的任意分割
我们在使用OutLook或者NetAnt等工具的时候,一般都会被其复杂的界面所吸引,在这些界面中窗口被分割为若干的区域,真正做到了窗口的任意分割。 那么我们自己如何创建类似的界面,也实现窗口的任意的分割呢?要解决这个问题,在Visual C++6.0编程中就需要使用到MFC提供的CSplitterWnd类。CSplitterWnd看上去像是一种特殊的框架窗口,每个窗口都被相同的或者不同的视图所填充
2013-06-28 10:47:06 844
转载 VC里的"#define new DEBUG_NEW"
以下代码常常在一个类文件的开头出现,是什么意思呢?#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif先看MSDN里的解释:RemarksAssists in finding memory leaks. You can use
2013-06-26 12:02:56 530
转载 VC实现文件拖拽
使用过QQ的人都知道,只要把文件拖拽到消息框中就可以传送文件了。那么这种功能是如何实现的呢?其实很简单,只需要响应一个WM_DROPFILES消息就可以了。 在基于对话框的程序中,默认是没有这个消息的,按下Ctrl+W,弹出类向导对话框,选择Class Info标签,在Message fileter下拉列表中选择Window,然后再点击Message Maps标签,就出现WM_DROPF
2013-06-09 10:47:54 463
转载 一个程序只运行一个实例
我们在使用《金山词霸》时发现,在《金山词霸》已经运行了的情况下,再次点击《金山词霸》的图标,那么它不会再运行另外一个《金山词霸》,而是将已有的《金山词霸》给激活,始终只能运行一个《金山词霸》的实例。在我们的程序当中如果要实现类似《金山词霸》的功能,就要解决两个问题,首先是要判断该程序已有一个实例在运行,其次是要将已运行的应用程序实例激活,同时退出第二个应用程序实例。对于第一个问题,我们可以通过设置
2013-06-09 10:11:22 717 1
原创 GDI GDI+ 双缓冲解决闪烁
最近工作遇到绘制控件的问题,该控件会不断刷新,其所在的view可能贴图,也可能用纯色的画刷刷。这样就产生了问题了,控件狂闪,特别是有背景图的时候。该控件绘制的时候用的是GDI,过程中考虑到圆滑处理等又用到了GDI+。现在用双缓冲解决闪烁问题。 一 、GDI 双缓冲这样做: CDC MemDC; //首先定义一个显示设备对象 CBitmap MemBitmap;//定义一个位图对象
2013-06-06 11:08:54 4183
转载 调用约定
在windows平台上的C++编程中经常会看到一些__stdcall, __cdecl, WINAPI, CALLBACK等等关键字在函数前面,在.NET中还有__clrcall, __thiscall等关键字,有时加不加它们都可以,但是有时必须加上,不然编译不过。本文要讨论的就是这些关键字:调用约定(Calling Convention),有时也叫做“函数调用约定”或者“调用规范”。本文采用MS
2013-06-05 10:16:57 465
转载 UpdateData、Invalidate、InvalidateRect和UpdateWindow及RedrawWindow
原文地址:UpdateData、Invalidate、InvalidateRect和UpdateWindow及RedrawWindow作者: 蒋佩钊(jk-3126)Invalidate和UpdateWindow的区别按引:Invalidate在消息队列中加入一条WM_PAINT消息,其无效区为整个客户区。而UpdateWindow直接发送一个WM_PAINT消息,其无效区范围
2013-06-03 17:20:39 581
转载 产生一定范围内的不重复随机数
如何产生不重复的随机数?最容易想到的方法,是逐个产生这些随机数,每产生一个,都跟前面的随机数比较,如果重复,就重新产生。这是个很笨的方法,且比较次数呈线性增长,越往后次数越多。其实这些比较是多余的,完全可以不进行比较,只要反过来,按顺序产生这些数,但随机产生它们的位置。例如下面产生100个100以内不重复随机数的代码:int a[100];for(i=0; i
2013-05-22 10:54:19 1314
转载 CArchive 原理
CArchive 原理FMD(http://www.fmdstudio.net) MFC 提供CArchive类实现数据的缓冲区读写,同时定义了类对象的存储与读取方案。 以下对CArchvie 的内部实现作分析。 1.概述 2.内部数据 3.基本数据读写 4.缓冲区的更新 5.指定长度数据段落的读写 6.字符串的读写 7.CObject派生对象的
2013-05-06 17:25:03 511
转载 INI文件编程,WINAPI函数WritePrivateProfileString,GetPrivateProfileString
GetPrivateProfileString::WritePrivateProfileString( _T("Options"), _T("Name"), m_strName, pApp->m_szIni );INI文件编程,WINAPI函数WritePrivateProfileString,GetPrivateProfileString 在我们写的程
2013-05-06 17:11:46 636
转载 XML
本文用一个详细的例子说明了TiXml的使用方法。如写、查找、插入、替换、加载、遍历等常见操作。首先简单介绍一下TinyXml,要看详细的在网上搜搜了^_^:TinyXML是一个简单小巧,可以很容易集成到其它程序中的C++ XML解析器。简单地说,TinyXML解析一个XML文档并由此生成一个可读可修改可保存的文档对象模型(DOM)。TinyXML使用文档对象模型(DOM),这意味着
2013-03-29 13:56:26 528
转载 工具条研究手记(5)- 自定义工具条的实现
/*****************************************************************//* 工具条研究手记(5)- 自定义工具条的实现 *//*****************************************************************/一、简介
2013-03-28 13:15:09 977
转载 vc++6.0编辑窗口怎么才能插入而不覆盖后面的代码
你看看你编译器右下角是不是如图所示:OVR是黑色显示的。你按一下键盘上得插入(insert)看到OVR变成灰色就行了~~~
2013-03-27 16:27:18 1364
转载 .net 和MFC 比较
1,MFC是在API的基础上封装出来的一个类库,给C++程序员在Windows上快速开发用的。.Net类库是在Windows非托管API的基础上封装出来的一个托管类库,给程序员在各种Windows平台上跨平台开发用的。2,只是两个不同平台的编程,一个是NET平台,一个是WIN323,.net的基类是基于.net运行时库的,通过运行时库对操作系统和硬件进行
2013-03-22 11:41:58 1459
转载 FILETIME的使用
typedef struct _FILETIME { DWORD dwLowDateTime; DWORD dwHighDateTime;} FILETIME, *PFILETIME, *LPFILETIME; typedef struct _SYSTEMTIME { WORD wYear; WORD wMonth; WORD
2013-03-21 11:12:14 1191
转载 Json
一,Json的规格1) 并列的数据之间用逗号(",")分隔。2) 映射用冒号(":")表示。3) 并列数据的集合(数组)用方括号("[]")表示。4) 映射的集合(对象)用大括号("{}")表示。json只有这四种格式规格"北京市的面积为16800平方公里,常住人口1600万人。上海市的面积为6400平方公里,常住人口1800万。"这
2013-03-21 10:51:59 652
转载 __declspec(dllimport)
是时候总结一下__declspec(dllimport)的作用了。可能有人会问:__declspec(dllimport)和__declspec(dllexport)是一对的,在动态链接库中__declspec(dllexport)管导出,__declspec(dllimport)管导出,就像一个国家一样,有出口也有进口,有什么难理解的呢?这是一种很自然的思路,开始我也是这样理解。
2013-03-21 10:48:26 963
转载 OnCreate
OnCreate是一个消息响应函数,是响应WM_CREATE消息的一个函数,而WM_CREATE消息是由Create函数调用产生的的。 在view类中,Create 是虚函数由框架调用,是用来“生成一个窗口的子窗口”。 而OnCreate 函数是用来“表示一个窗口正在生成”。 一个窗口创建(Create)之后,会向操作系统发送WM
2013-03-04 21:14:02 492
原创 precreatewindow
在现有应用程序中更改窗口属性若要更改框架应用程序(用应用程序向导创建的)所使用的默认窗口属性,请重写窗口的 PreCreateWindow 虚拟成员函数。PreCreateWindow 允许应用程序访问通常由 CDocTemplate 类内部管理的创建进程。框架在即将创建窗口前调用 PreCreateWindow。通过修改传递给 PreCreateWindow 的结构 CREATE
2013-03-04 20:57:56 407
转载 最常见的20种VC++编译错误信息集合
最常见的20种VC++编译错误信息集合再网上看到的,大部分都比较常见,对初学者挺有用~~~ 1、fatal error C1010: unexpected end of file while looking for precompiled header directive。 寻找预编译头文件路径时遇到了不该遇到的文件尾。(一般是没有#include "stdafx.h
2013-03-04 20:52:18 362
转载 浅谈OOP
浅谈OOP(面向对对象的程序设计)OOP: (Object Oriented Programming)面向对对象的程序设计。所谓“对象”就是一个或一组数据以及处理这些数据的方法和过程的集合。有关OOP的一些定义: 对象(Object):包含一定的数据结构和状态的实体。 操作(Operation):作用于对象的行为,如访问和处理对象的状态。 封装(Encapsulatio
2013-03-02 16:52:43 344
转载 白乔原创:VC之美化界面篇
本文专题讨论VC中的界面美化,适用于具有中等VC水平的读者。读者最好具有以下VC基础:1. 大致了解MFC框架的基本运作原理;2. 熟悉Windows消息机制,熟悉MFC的消息映射和反射机制;3. 熟悉OOP理论和技术;本文根据笔者多年的开发经验,并结合简单的例子一一展开,希望对读者有所帮助。 1. 美化界面之开题篇相信使用过《金山毒霸》、《
2013-02-28 00:50:37 1013
转载 WM_CTLCOLOR消息
参考文章:白乔原创:VC之美化界面篇 在每个控件开始绘制之前,都会向其父窗口发送WM_CTLCOLOR通告消息,在该消息的处理函数中,可以设置控件显示文本的前景色、背景色以及字体。该消息处理函数还要求返回一个画刷的句柄,用于在控件具体的绘制之前擦除其客户区。 WM_CTLCOLOR映射消息处理函数为afx_msg HBRUSH OnCtlColor(CD
2013-02-28 00:46:22 709
转载 关于WM_ERASEBKGND和WM_PAINT的深刻理解
WM_ ERASEBKGND消息 参考文章:白乔原创:VC之美化界面篇 Windows在窗口的具体绘制之前,会发送WM_ERASEBKGND消息通知该窗口檫除背景。默认情况下,会以窗口的默认背景色清除窗口。 消息响应函数为:afx_msg BOOL OnEraseBkgnd(CDC* pDC)。 以下Demo为对话框加载了一副位图背景。1、首先导入一副位图
2013-02-28 00:45:38 1112
转载 c++中的VERIFY具体的语法
原型:VERIFY( booleanExpression )参数:一个逻辑表达式作用:在DEBUG调试状态下,确保逻辑表达式的参数为真,否则将弹出错误提示并终止程序运行。比如:VERIFY(num==0);当程序在DEBUG调试模式运行到这里时,判断变量num是否等于0,如果是,则程序继续往后面运行;如果不是,则弹出错误,并终止程序运行。
2013-02-27 23:53:40 4710
转载 VC++无闪烁刷屏技术
VC++无闪烁刷屏技术 在实现绘图的过程中,显示的图形总是会闪烁,笔者曾经被这个问题折磨了好久,通过向高手请教,搜索资料,问题基本解决,现将文档整理出来以供大家参考.1.显示的图形为什么会闪烁 我们的绘图过程大多放在OnDraw或者OnPaint函数中,OnDraw在进行屏幕显示时是由OnPaint进行调用的。当窗口由于任何原因需要重绘时,总是先用背景色将显示区清除,然后才调用O
2013-02-27 23:50:55 540
转载 BSCMAKE: error BK1513 : nonincremental update requires all .SBR files
BSCMAKE: warning BK4502 : truncated .SBR file './Debug/BCMenu.sbr' not in Debug/HelpTip.bsc BSCMAKE: error BK1513 : nonincremental update requires all .SBR files 解决方案:1.删掉debug文件夹后再编译2.bui
2013-02-27 23:48:26 1622
转载 GetMessage和PeekMessage的区别
在Win32中使用GetMessage和PeekMessage都可以获取对应该程序产生的消息。他们有什么区别呢?GetMessage的一般用法是GetMessage(&msg,NULL,0,0);这样可以接受所有的消息,GetMessage在没有产生消息的时候并不返回,而是一直在等待,直到一个消息返回;当消息不是WM_QUIT时,返回一个非零值,也就是说,当是WM_QUIT
2013-02-27 21:50:06 386
转载 CToolTipCtrl使用详细解说
很多的界面设计都需要有Tip提示,下面描述一下Tip的简单使用方法:1. 首先要New一个CToolTipCtrl的对象m_pContentTip2. 调用CToolTipCtrl的create函数,指定其父窗口。可以为某个控件,也可以为this。一般设为this。m_pContentTip->Create( this, TTS_ALWAYSTIP );3. Add
2013-02-27 21:34:44 389
转载 #pragma pack(n) 对齐用法详解
什么是对齐,以及为什么要对齐: 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开始存取。其
2013-02-27 20:55:54 301
转载 预编译(来自百度百科)
预编译又称为预处理,是做些代码文本的替换工作处理#开头的指令,比如拷贝#include包含的文件代码,#define宏定义的替换,条件编译等就是为编译做的预备工作的阶段主要处理#开始的预编译指令预编译指令指示了在程序正式编译前就由编译器进行的操作,可以放在程序中的任何位置。常见的预编译指令有:(1)#include 指令该指令指示编译器将xxx.xx
2013-02-26 20:51:54 297
转载 二叉树相关问题
复习下二叉树,创建二叉树,分别以先序,中序,后续三种遍历访问二叉树,输出二叉树的叶子节点及叶子节点的个数,并输出二叉树的高度[cpp]#include #include #include #include using namespace std; typedef struct BiTNode { char data; struct
2013-02-26 20:04:48 359
转载 写一个函数,完成内存之间的拷贝。[考虑问题是否全面](转)
在网上找了个题目如题目,本来以为就跟字符串的复制一样,一个while就行了,看了答案才知道,内存处理没有那么简单,因为我们时刻要小心内存处理问题。但是看了代码,想了半天才想同原理,真是惭愧啊!本来打算准备用个坐标轴来描述这个原理的,只是我个人比较懒的去画,就简单的说下,以明示自己下次不能犯这样的错误了。方法一:void* mymemcpy( void *dest,
2013-02-26 09:38:18 609
转载 有关(int&)和(int)的区别
[cpp] view plaincopy#include "stdafx.h" #include using namespace std; int _tmain(int argc, _TCHAR* argv[]) { float a = 1.0f; coutint)a cout
2013-02-26 09:35:15 291
原创 MFC之序列化
序列化是指对象将其状态保存在一个字节流中,并用该字节流重建对象。实例化实现了文档数据的保存和装入的幕后工作,MFC通过序列化实现了应用程序的文档读写功能。序列化的基本思想是:一个类应该能够对自己的成员变量的数据进行读写操作,对象可以通过读操作而重新创建。即对象可以将其当前状态(由其成员变量的值表示)写入永久性存储体(通常指磁盘)中,以后可以从永久性存储体中读取(载入)对象的状态,从而重建对
2013-02-26 09:25:03 590
原创 面试总结与分析(二)
1.char str1[] = "abc"; char str2[] = "abc"; const char str3[] = "abc";const char str4[] = "abc"; const char *str5 = "abc"; const char *str6 = "abc"; char *str7 = "abc"; char *str8 = "a
2013-02-26 09:23:28 348
转载 c++的隐式转换和强制转换
问:下列哪种方法使B隐式转化为A?A) class B : public A { ……}B公有继承自A,并且可是间接继承;这样B类对象可以转化成A类对象;B) class B { operator A( ); }B实现了隐式转化为A的转化,转换函数,不能有返回值和参数,并且为非静态,非有元函数;这样当遇到语句A=B的时候,B就调用poerator A()方法转换成A类型;
2013-02-26 08:58:15 763
转载 CreateCompatibleDC用法
CreateCompatibleDCCreates a memory device context that is compatible with the device specified by pDC. 假如需要对屏幕进行比较多的gdi函数操作,如果每一步操作都直接对屏幕dc进行操作,那出现的大多数可能性都是屏幕的闪烁。一个很好的解决方法就是使用内存dc,将这些操作全部先
2013-02-25 19:58:29 469
设备端口状态采集软件
2016-06-17
TTS语音朗读软件
2016-06-17
管线流动控件
2013-08-27
用vb写的通讯录,有简单的功能:添加、修改、删除、查询等。此外,还添加了密码录入的安全功能,确保了信息的保密性。
2009-07-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人