编程语言
ddl007
这个作者很懒,什么都没留下…
展开
-
引用类型参数的初始化及可能出现的问题
引用转载请注明出处,谢谢!使用引用类型进行返回值的传递经常可以看到,其优点非常明显,如果引用的是对象,可以减少对象传递过程中的对象构造/析构等操作(EffectiveC++ 第三版,第20款),减少CPU资源消耗。但在使用应用的过程中,有些问题也需要注意,下面示例说明。数据结构:struct data_header{ int type; int le原创 2012-09-06 10:27:42 · 1279 阅读 · 0 评论 -
c# 中读写ini文件(C#操作文本文件、C#读写文本文件)
在程序所在位置建立测试文件test.ini,其内容为:USERNAME = 小李USERAGE = 28USERSEX = 男USERADDR = 地球村 //默认新建windows 窗口工程,在Form1.cs中添加如下命名空间using System.IO; //在窗口上添加两个按钮,分别取名"读取"、"写入"。 //在public partial clas原创 2009-11-01 23:18:00 · 1024 阅读 · 2 评论 -
CTime与DWORD之间的转换
CTime t(2009,7,1,16,58,50); //时间类型赋值DWORD dwTime = t.GetTime(); //将CTime状换为DWORD类型 CTime time(dwTime);//将DWORD转换为CTimetime.GetDay();time.GetYear();....................... time.Format("原创 2009-07-01 16:54:00 · 1290 阅读 · 0 评论 -
磁盘设备类型获取函数
//将该部分内容保存到.cpp文件中可直接编译运行,用于辨别驱动器的类型! #define MEDIA_INFO_SIZE sizeof(GET_MEDIA_TYPES)+15*sizeof(DEVICE_MEDIA_INFO)#define IOCTL_STORAGE_QUERY_PROPERTY CTL_CODE(IOCTL_STORAGE_BASE, 0x0500, MET原创 2009-08-28 16:29:00 · 2064 阅读 · 1 评论 -
多项大数相乘后果不可预知性的问题所在!
举例:DWORD dwNum01 = 0xFFFFFFFE;int Num02 = 10000;ULONGLONG u64Res = dwNum01 * 10000 * 512; 此时,u64Res 的值并不是0xFFFFFFFE * 10000 * 512,而是(0xFFFFFFFE * 10000 * 512)%0xFFFFFFFF,也就是说在这个赋值的过程中发生了溢出原创 2009-06-22 09:33:00 · 625 阅读 · 0 评论 -
VC Debug程序可以运行,而Realse版本运行出错
可能的情况为:1 内存泄露,导致堆栈破坏。2 程序在编译时,默认的堆栈设置过小,在程序运行的时候申请的内存大于默认的限制,导致异常。 Project -> Setting -> Link -> Categroy -> Output -> Reserve 可设置默认堆栈大小原创 2009-06-19 10:18:00 · 1122 阅读 · 1 评论 -
vector 在vc.net中的使用
//分区表解析动态链接库//sptt.h文件 #ifdef SEARCHPARTITION #else#define SEARCHPARTITION extern "C" _declspec(dllimport)#endif #include typedef struct _PARTINFO_{ int fstype; unsigned long int原创 2009-06-08 11:11:00 · 735 阅读 · 0 评论 -
GetLastError()返回消息的显示!
LPVOID lpMsgBuf; FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, GetLastError(), 0, // Default原创 2009-06-02 11:57:00 · 703 阅读 · 0 评论 -
MultiByteToWideChar的与WideCharToMultiByte的参数详解
MultiByteToWideChar的与WideCharToMultiByte的参数详解2008年11月25日 星期二 09:31第一个就是宽字符到多字节字符转换函数,函数原型如下: int WideCharToMultiByte( UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar, LPSTR原创 2009-02-23 19:34:00 · 1782 阅读 · 0 评论 -
ANSI和Unicode互转
VC++ ANSI和Unicode互转,以及MultiByteToWideChar和WideCharToMultiByte用法!将ANSI转换到Unicode (1)通过L这个宏来实现,例如: CLSIDFromProgID( L"MAPI.Folder",&clsid); (2)通过MultiByteToWideChar函数实现转换,例如: char原创 2009-02-23 19:28:00 · 956 阅读 · 0 评论 -
关于代码测试及编程习惯的一二三!
我这里说的代码测试其实可以说是模块测试,当一个程序的模块很多时,各个模块的结构及接口设计往往比较繁琐,无论是为一个模块写一个类,还是为一个模块添加一个函数,似乎对于整个软件来说犹如九牛一毛,同时在基础设计阶段,只是定义各个结构及接口,并无实际功能代码的添加,因此,就很容易出现一种现象,就是不进行基本测试。 也许很多人都会想,一个没有功能实现的空类、函数,测试什么呢?等等原创 2009-11-20 10:05:00 · 631 阅读 · 0 评论 -
C/C++强制类型转换中的安全隐患一例
最近写一个小程序,遇到一个莫名的问题,在调用某一个方法后,与之相关的结构体数据内容被修改。起初以为是方法写的有问题,但该方法已经在多个实例中运行良好,没有出过类似问题。仔细的对比了之前对该方法调用的过程,发现有所不同之处。数据结构体:struct test_data{ int item_num; unsigned int item_offset原创 2012-09-05 10:36:21 · 1604 阅读 · 1 评论 -
简单的回调函数实现
C回调函数简单实现原创 2011-05-06 16:53:00 · 646 阅读 · 0 评论 -
C++模板继承在g++编译中应注意的问题(if you use `-fpermissive', G++ will accept your code, but allowing the use ...)
`-fpermissive', G++ will accept your code, 在使用模板继承的时候,如子类中有调用父类的成员函数和变量的情况,则需要用用this来调用......原创 2010-12-06 23:38:00 · 26430 阅读 · 1 评论 -
字符串转64位(strtol,_atoi64)
字符串转64位(strtol,_atoi64)原创 2010-06-18 17:23:00 · 15904 阅读 · 0 评论 -
xml解析
xml解析类原创 2010-06-09 16:29:00 · 644 阅读 · 0 评论 -
EnterCriticalSection 与 LeaveCriticalSection
The EnterCriticalSection function waits for ownership of the specified critical section object. The function returns when the calling thread is granted ownership. VOID EnterCriticalSection( LPCRI原创 2010-05-27 17:27:00 · 555 阅读 · 0 评论 -
多线程中内存分配的一些看法
多线程中内存分配原创 2010-07-15 16:40:00 · 766 阅读 · 0 评论 -
char十六进制字符并显示
char数组十六进制字符并显示,sprintf函数。原创 2010-06-25 16:16:00 · 1583 阅读 · 0 评论 -
C++ 变长数组,不定长数组
在C++编程中,经常的遇到一种情况: 需要定义一个数组,但数组的长度不定,因为这个长度是根据某些其他条件确定的,这时就需要定义一个变长的数组。这时可以按如下样式进行定义,以先是定义一个不定长结构体数组: 结构体为 struct myarry { int t1; int t2;原创 2009-12-21 23:41:00 · 11332 阅读 · 4 评论 -
头文件互相包含问题
在C++中,关于CPP的头文件互相包含的问题很让人头疼,其实我们谁也不愿意弄的结构混乱,难以理解,但有时又是有必须的。 假定当前有两个头文件分别为 A.h 和 B.h,内容分别如下: A.h内容为: #ifndef _A_H_ #define _A_H_ #endif #include "B.h"原创 2009-11-24 11:37:00 · 1760 阅读 · 0 评论 -
如何判断操作系统所在磁盘
1:首先找到系统所在分区 ,使用函数为 UINT GetWindowsDirectory( LPTSTR lpBuffer, // address of buffer for Windows directory UINT uSize // size of directory buffer);获取哪一个分区是系统分区。2:根据分区获取该分区对应的物理磁盘原创 2009-01-23 16:22:00 · 1904 阅读 · 0 评论 -
VC++技术内幕(第四版)笔记(第3章)
/********************************************/第三章:从“Hello,world!”着手学习AppWizard1,视图:从用户角度看,视图是一个普通的窗口;从程序员角度看,试图是一个从MFC库中CView类所派生的类的对象。视图对象的行为完全由类的成员函数和数据成员决定,其中包括派生类的特定成员和基类的继承而来的成员。2,CEx03aVi转载 2006-10-28 04:49:00 · 801 阅读 · 0 评论 -
VC++技术内幕(第四版)笔记(第13章)
第十三章:工具栏和状态栏 1,工具栏是CToolBar类一个对象,状态栏是CStatusBar类的对象.CToolBar类和CStatusBar类均由CControlBar类派生.CControlBar类则由CWnd类派生.CControlBar类所支持的控制栏窗口位于主框架窗口内,并且这些控制栏窗口能够随着主框架窗口的尺寸改变或移动自动调整自己的尺寸与位置.控制栏对象的构造与析构以及窗口转载 2006-10-28 05:00:00 · 891 阅读 · 0 评论 -
VC++技术内幕(第四版)笔记(第12章)
/***************************************/第十二章:菜单、键盘加速键、复文本编辑控件和属性表1,主框架窗口包含标题栏和菜单栏,而各种各样的子窗口(包括工具栏窗口、状态栏窗口和视图窗口)覆盖着主框架窗口的客户区域。应用程序通过框架和视图之间的消息传递来控制框架和视图之间的相互作用。2,MFC应用程序框架提供了一个非常复杂的命令消息传递系统,这些消息转载 2006-10-28 04:59:00 · 921 阅读 · 0 评论 -
VC++技术内幕(第四版)笔记(第11章)
一)Winsows消息处理1,单线程:程序代码只有一条执行路径。2,单线程程序消息处理过程:MSG message;while(::GetMessage(&message,NULL,0,0)){::TranslateMessage(&message);//翻译如wm_char消息::DispatchMessage(&message);//把消息分发给指定窗口的回调函数}说明:1)os决定哪转载 2006-10-28 04:58:00 · 961 阅读 · 0 评论 -
VC++技术内幕(第四版)笔记(第9章)
第九章:Win32内存管理1,一个程序就是一个EXE文件。Windows中,一旦一个程序被启动的,系统为其创建一个进程。一个进程拥有自己的内存,文件句柄,和其它的系统资源。如果连续两次启动同一个程序,系统为其创建两个独立的进程并发运行(并发:微观交替串行,宏观并行)。说明:1)一个进程(如Windows Wxplorer)可能有多个主窗口(每一个窗口由一个线程支持),也可能没有任何窗口。2)进转载 2006-10-28 04:56:00 · 843 阅读 · 0 评论 -
VC++技术内幕(第四版)笔记(第8章)
/************************************/第八章:使用ActiveX控件 1,ActiveX控件是一个直接插入到C++程序中的软件模块,以前常称OLE控件(OCX),是基于MS-COM技术。2,ActiveX控件与普通Windows控件比较:相同点:ActiveX控件也可看成是一个子窗口(可以看成这样的)。如果想在对话框上加入ActiveX控件,转载 2006-10-28 04:55:00 · 895 阅读 · 0 评论 -
VC++技术内幕(第四版)笔记(第5章)
/**********************************************/第五章:图形设备接口(GDI)、颜色及字体 1,任何时候当程序需要直接在屏幕或打印机上绘图的时候,都需要调用GDI函数,GDI函数包含了一些用于绘制图形、位图以及文本的函数。2,Windows的设备环境是GDI的关键元素,它代表了物理设备。每一个C++设备环境对象都有与之对应的Windows转载 2006-10-28 04:51:00 · 753 阅读 · 0 评论 -
VC++技术内幕(第四版)笔记(第14章)
/****************************/第十四章:可重用框架窗口类1, 可重用基类的设计:为某个工程所设计的类应该能够被提取出来 ,使它进一步一般化后被应用于其他的应用程序。2, 一些重要函数:1)CFrameWnd::ActivateFrame virtual void ActivateFrame( int nCmdShow = -1 );//以nCmdShow作转载 2006-10-28 05:02:00 · 1069 阅读 · 0 评论 -
VC++技术内幕(第四版)笔记(第7章)
/*****************************************/第七章:无模式对话框 和 Windows通用对话框类 1,[无模式对话框]在它处于激活状态下还允许用户在(同一个应用程序中)其它地方工作。 [通用对话框]则是C++和一组Windows的实用对话框之间的程序设计借口,包括File Open,Page Setup,Color等等,它们都是通过COMDLG转载 2006-10-28 04:53:00 · 855 阅读 · 0 评论 -
VC++技术内幕(第四版)笔记(第4章)
/******************************************/第四章:基本事件处理、映射模式和滚动视图1,消息映射:如在视窗中按下鼠标做键,会自动发送WM_LBUTTONDOWN消息,如果要对这消息有所反应的话,需//{{AFX_MSG(CEx04aView) afx_msg void OnLButtonDown(UINT nFlags, CPoint point转载 2006-10-28 04:50:00 · 916 阅读 · 0 评论 -
VC++技术内幕(第四版)笔记(第10章)
1,Windows的位图实际上是一些和显示象素相对应的位阵列。2,GDI位图是设备相关位图,用MS基本类库(MFC)中的CBitmap类表示的,依赖具体的设备。3,DIB社设备无关位图,比GDI位图有许多编程优势。任何运行Windows的机器都可以处理DIB位图。DIB位图通常以.BMP文件形式保留在磁盘中,或作为资源保存在程序的EXE或DLL文件中。WIN32API只直接支持DIB格式文转载 2006-10-28 04:57:00 · 1036 阅读 · 0 评论 -
VC++技术内幕(第四版)笔记(第15章)
/********************************/第十五章:文档与视图的分离 1,SDI应用程序文档类由CDocument类派生,一个文档类可以有一个或多个由CView类派生的视图类。 2,重要成员函数:1)CView::GetDocumentCDocument* GetDocument( ) const;//文档对象是用来保存数据的,而视图对象则是用来显示数据的。//一转载 2006-10-28 05:03:00 · 853 阅读 · 0 评论 -
将WORD类型文件名(即UNICODE编码方式)转化为ANSI编码输出
// 将WORD类型文件名(即UNICODE编码方式),转化为ANSI编码输出 WideCharToMultiByte(CP_ACP, 0, buff->wFileName, 512, t, 512, NULL, FALSE);原创 2008-10-24 12:11:00 · 1642 阅读 · 0 评论 -
DWORD类型的时间转换
DWORD dwtime=0x48ca5e46;CTime t(dwtime);CString str;str.Format("%d",t.GetYear()); MessageBox(str);原创 2008-09-12 15:37:00 · 2282 阅读 · 1 评论 -
VC++技术内幕(第四版)笔记(第6章)
/**************************************/第六章:模式对话框和Windows通用控件1,对话框也是窗口,它不当可以接受消息,而且还可以被移动和关闭,甚至可以在它的客户区中进行绘图操作。2,模式对话框在被关闭之前,用户无法在同一应用程序的其它地方进行工作。模式对话框更易于编程。无模式对话框在它仍保留在屏幕的同时,用户还可以在应用程序的其它窗口进行工转载 2006-10-28 04:52:00 · 840 阅读 · 0 评论 -
VC++技术内幕(第四版)笔记(1~2章)
/***************************************/第一章:Microsoft Windows 和 Visual C++1,Windows应用程序中一定要有WinMain函数,用来完成某些特殊的任务,其中最主要的是创建应用次序的主窗口。2,DOS下,所有次序的目标模块在创建过程中都被静态连接起来。而Windows允许动态连接,即一些特定结构的库(DLL)转载 2006-10-28 04:47:00 · 651 阅读 · 0 评论 -
VC++技术内幕(第四版)笔记(第17章)
/*************************************/第十七章:读和写文档--MDI应用程序1, MFC库中CMDIFrameWnd类封装了主框架窗口和MDI客户窗口所有的函数(包含了所有Windows MDI消息的消息控制函数),因而完全可以管理它的子窗口(由CMDIChildWnd类对象来表示的)。2,MDI应用程序中,任何时候只有一个子窗口处于活动状态。M转载 2006-10-28 05:05:00 · 939 阅读 · 0 评论 -
VC++技术内幕(第四版)笔记(第16章)
/********************************************/第十六章:读和写文档--SDI应用程序一,序列化:1,序列化:对象可以被持续,即当程序退出时候它们被存盘,当程序重启时候它们又可被恢复,对象这种存盘和恢复处理过程称之为序列化。注意:MFC库中,不能利用序列化来代替数据库管理系统。与文档相关的所有对象只能在某个单独的磁盘文件中进行顺序读写,而不支转载 2006-10-28 05:04:00 · 1028 阅读 · 0 评论