
C & C++
whyabc
这个作者很懒,什么都没留下…
展开
-
C++ HMAC_SHA1加密算法源码
下载地址:http://download.youkuaiyun.com/detail/yanzhibo/4963059调用方法: void CEncypDlg::OnBnClickedOk(){ // TODO: 在此添加控件通知处理程序代码 char *text = "Hi There"; unsigned char* key = (unsigned char*)"...2013-01-05 17:00:00 · 1953 阅读 · 0 评论 -
CMapStringToPtr添加与释放
// 创建MapStringToPtrCMapStringToPtr m_prjFiles;CStringList m_fileList;m_fileList.AddTail(_T("C:\\a"));m_fileList.AddTail(_T("C:\\b"));m_fileList.AddTail(_T("C:\\c"));// 遍历CStringList变量,添加到...2011-07-30 09:33:00 · 335 阅读 · 0 评论 -
怎样去掉 CPropertySheet 的帮助,应用按钮
怎样去掉 CPropertySheet 的帮助按钮, 今天修改一程序, 要求去掉 CPropertSheet 上的帮助按钮, 按照MSDN上写的: m_psh.dwFlags &= ~PSH_HASHELP 就OK了, 运行起来一看, 咦, 还在, TNND. 再查MSDN, 原来每个页面都要 ~PSH_HASHELP 一下, 然后就: 再运行, 再看, 还是在, 真BT, 在网...2011-07-25 19:03:00 · 188 阅读 · 0 评论 -
BYTE to CString
BYTE byteArray[100]; // with some valuesCString strByte;for ( int i = 0; i < 64; i++ ){strByte.Format( "%02x", byteArray[i]);// output the string}2011-08-23 20:06:00 · 168 阅读 · 0 评论 -
_tprintf printf printf wprintf _stprintf sprintf sprintf swprintf
TCHAR.H Routine _UNICODE & _MBCS Not Defined _MBCS Defined_UNICODE Defined_tprintfprintfprintfwprintf_stprintfsprintfsprintfswprintfswprintf之间的区别 _tprintf只是输出到Co...2011-08-22 08:52:00 · 297 阅读 · 0 评论 -
ZeroMemory、memset 和 “={0}”
ZeroMemory 、memset 和 “={0}” 三者用于清零操作的区别:首先是ZeroMemory 和memset 的区别:1、ZeroMemory 是微软的SDK 提供的,memset 属于C Run-time Library 提供的。因此ZeroMemory 只能用于Windows系统,而memset 还可用于其他系统。2、ZeroMemory 是一个宏,只是用于把一段...2011-04-29 13:27:00 · 94 阅读 · 0 评论 -
VC三种类型的DLL区别
1、Regular statically linked to MFC DLL (标准静态链接MFC DLL) 编译时链接代码,占用空间大,不依赖于其它的DLL 2、Regular using the shared MFC DLL(标准动态链接MFC DLL) 编译时不链接代码,占用空间小,依赖于其它的DLL 以上两种都能被MFC 程序和win32程序使用 3、Extension MFC DLL(...2010-06-16 14:00:00 · 151 阅读 · 0 评论 -
VC++ Ping IP地址
// // Ping.h // #pragma pack(1) #define ICMP_ECHOREPLY 0 #define ICMP_ECHOREQ 8 #define REQ_DATASIZE 32 // Echo 请求数据的大小 class CPing { publ...2010-01-08 14:57:00 · 213 阅读 · 0 评论 -
CListCtrl
CListCtrl m_lstParam;// 设置样式m_lstParam.SetExtendedStyle (m_lstParam.GetExtendedStyle()|LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT);// 初始化列表char *szRevNoColumn[]={"坐标(X/B)","坐标(Y/L)"};...2009-06-26 16:55:00 · 120 阅读 · 0 评论 -
解决头文件相互包含问题的方法
所谓超前引用是指一个类型在定义之前就被用来定义变量和声明函数。一般情况下,C/C++要求所有的类型必须在使用前被定义,但是在一些特殊情况下,这种要求无法满足,例如,在类CMyView中保留了一个非模式对话框对象指针,该对象用于显示/修改一些信息。为了实现对话框"应用"按钮,把对话框做的修改立刻更新到view界面上,为此,需要在对话框类中需要保存view类的指针,这样定义关系就变成如下的代码: #i...2009-12-14 15:54:00 · 103 阅读 · 0 评论 -
vector、list、deque区别
vector 表示一段连续的内存区域每个元素被顺序存储在这段内存中对vector的随机访问比如先访问元素5 然后访问15然后再访问7等等效率很高,因为每次访问离vector起始处的位移都是固定的。但是在任意位置而不是在vector末尾插人元素则效率很低 ,因为它需要把待插入元素右边的每个元素都拷贝一遍。类似地删除任意一个而不是vector 的最后一个元素效率同样很低。...2009-12-14 10:04:00 · 107 阅读 · 0 评论 -
CStatic字体设置
CFont font;font.CreateFont(36,0,0,0,700,0,0,0, ANSI_CHARSET,OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH|FF_DONTCARE, "arial");GetDlgItem("IDC_L...2010-03-11 10:56:00 · 424 阅读 · 0 评论 -
GetBuffer()与ReleaseBuffer()使用
GetBuffer可以获得一个字符数组让你能够方便的对其进行操作,调用GetBuffer以后必须调用ReleaseBuffer释放,否则不能对该CString对象进行操作 譬如 CString str = "abcd" char * lpBuf = str.GetBuffer(0); lpBuf[1] = 'e'; int nLen = str.GetLength(); // 出...2010-03-10 14:47:00 · 173 阅读 · 0 评论 -
TCHAR,CHAR,LPSTR,LPCSTR,char这几个数据类型有何不同
#ifdef UNICODE typedef wchar_t TCHAR; #else typedef unsigned char TCHAR; #endif typedef unsigned char CHAR; typedef unsigned wchar_t ...2010-03-09 12:03:00 · 130 阅读 · 0 评论 -
VC判断是否数字和小数
int IsNumIsNumOrDecimal(CString str){ if (str.IsEmpty()) return - 1; // 空字符 int nDot = 0; //数值只能是0到9及小数点组成 for (int i = 0; i < str.GetLength(); i++) { char ...2009-11-21 16:23:00 · 333 阅读 · 0 评论 -
Const用法小结 [ C/C++ const], 好文章。const值得仔细推敲。对付面试很有用的
1. const常量,如const int max = 100; 优点:const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查,而对后者只进行字符替换,没有类型安全检查,并且在字符替换时可能会产生意料不到的错误(边际效应)2. const 修饰类的数据成员。如:class A{const int size;… }const数据成员只在某个对象生存期内是常量,而对于整个类...2009-10-19 15:59:00 · 111 阅读 · 0 评论 -
Visual C++中实现双缓冲
双缓冲的原理可以这样形象的理解:把电脑屏幕看作一块黑板。首先我们在内存环境中建立一个“虚拟“的黑板,然后在这块黑板上绘制复杂的图形,等图形全部绘制完毕的时候,再一次性的把内存中绘制好的图形“拷贝”到另一块黑板(屏幕)上。采取这种方法可以提高绘图速度,极大的改善绘图效果。 // 在OnPaint()函数中可以如下所述实现双缓冲,其主要步骤分为四步:void CGDIPlusCtrl::...2009-09-27 10:00:00 · 155 阅读 · 0 评论 -
SPin控件增减小数
// 初始化BOOL CGraphCtrDlg::OnInitDialog(){ CDialog::OnInitDialog(); m_spin.SetRange(0.1,10); // 设置范围 m_spin.SetBuddy(GetDlgItem(IDC_TXTY)); // Spin控件绑定Edit控件 m_spin...2009-09-23 16:58:00 · 452 阅读 · 0 评论 -
标准C++ 与MFC 6.0 中字符串的分割
#include <string>#include <vector>#include <iostream>using namespace std; typedef basic_string<char>::size_type S_T;static const S_T npos = -1;////trim指示是否保...2011-07-31 13:31:00 · 125 阅读 · 0 评论 -
关于char, wchar_t, TCHAR, _T(),L,宏 _T、TEXT,_TEXT、L
char :单字节变量类型,最多表示256个字符,wchar_t :宽字节变量类型,用于表示Unicode字符,它实际定义在<string.h>里:typedef unsigned short wchar_t。为了让编译器识别Unicode字符串,必须以在前面加一个“L”,定义宽字节类型方法如下: wchar_t c = `A' ; wcha...2011-08-05 10:34:00 · 111 阅读 · 0 评论 -
关于MFC 主菜单Alt无响应
今天用MFC编写一个程序,因为要创建菜单,删除了窗体上的默认按钮和标签控件之后,就直接去创建菜单了,创建了几个主菜单,每个主菜单下面又创建了子菜单。主菜单和子菜单都添加了访问键(即在菜单名称后加了(&访问键字母))。然后绑定到了窗体,就去调试查看效果,结果Alt+访问键一点响应也没有,从网上找了好久,也有很多人遇到这个问题,但是都没有解决。后来看网上有个人说把项目删了,又...2013-03-31 14:48:00 · 259 阅读 · 0 评论 -
hmac_sha1.c源码, C语言中的HMAC_SHA1加密方法
/****************************************************************//* 802.11i HMAC-SHA-1 Test Code *//* Copyright (c) 2002, David Johnston ...2013-01-05 16:48:00 · 797 阅读 · 1 评论 -
函数指针
【函数指针】在程序运行中,函数代码是程序的算法指令部分,它们和数组一样也占用存储空间,都有相应的地址。可以使用指针变量指向数组的首地址,也可以使用指针变量指向函数代码的首地址,指向函数代码首地址的指针变量称为函数指针。1.函数指针定义函数类型 (*指针变量名)(形参列表);“函数类型”说明函数的返回类型,由于“()”的优先级高于“*”,所以指针变量名外的括号必不可少,后面的“形参列表...2013-05-25 13:20:00 · 96 阅读 · 0 评论 -
(转)内存管理:_CrtDumpMemoryLeaks和_CrtSetBreakAlloc
1._CrtDumpMemoryLeaks确定自程序开始执行以来是否发生过内存泄漏,如果发生过,则转储所有已分配对象。如果已使用 _CrtSetDumpClient 安装了挂钩函数,那么,_CrtDumpMemoryLeaks每次转储 _CLIENT_BLOCK 块时,都会调用应用程序所提供的挂钩函数。 CrtDumpMemoryLeaks()就是显示当前的内存泄漏。 注意是“当前”...2013-05-24 15:53:00 · 169 阅读 · 0 评论 -
CreateThread()、_beginthreadex()及、AfxBeginThread()的联系和区别
操作系统中线程是非常重要的概念,所以关于线程的创建常常有些困扰人的内容。好像创建线程的函数很多,那么他们之间的有什么联系与区别呢?首先,需要说明的是这三个函数都与CreateThread。CreateThread函数是Windows的一个API函数。主要的作用是创建一个线程。_beginthreadex函数是C/C++运行库提供的函数,从 _beginthreadex函数的源代码,可以看出它的主...2013-05-01 16:40:00 · 127 阅读 · 0 评论 -
AfxBeginThread和CreateThread具体区别
具体说来,CreateThread这个 函数是windows提供给用户的 API函数,是SDK的标准形式,在使用的过程中要考虑到进程的同步与互斥的关系,进程间的同步互斥等一系列会导致操作系统死锁的因素,用起来比较繁琐一些,初学的人在用到的时候可能会产生不可预料的错误,建议多使用AfxBeginThread,是编译器对原来的CreateThread函数的封装,用与MFC编程(当然,只要修改了项目属...2013-05-01 16:38:00 · 240 阅读 · 0 评论 -
Windows下用C语言获取进程cpu使用率,内存使用,IO情况
process_stat.h: /** @file* @brief 进程统计信息函数的声明* @author 张亚霏* @date 2009/05/03* @version 0.1**/#ifndef PROCESS_STAT_H#define PROCESS_STAT_H#ifdef __cplusplusextern "C" {#e...2013-05-01 16:29:00 · 464 阅读 · 0 评论 -
VC 多线程编程
一、问题的提出编写一个耗时的单线程程序: 新建一个基于对话框的应用程序SingleThread,在主对话框IDD_SINGLETHREAD_DIALOG添加一个按钮,ID为IDC_SLEEP_SIX_SECOND,标题为“延时6秒”,添加按钮的响应函数,代码如下:voidCSingleThreadDlg::OnSleepSixSecond(){Sleep(6000);//延时...2013-05-01 16:15:00 · 107 阅读 · 0 评论 -
MFC 界面线程和工作者线程
MFC 界面线程和工作者线程每个系统都有线程,而线程的最重要的作用就是并行处理,提高软件的并发率。针对界面来说,还能提高界面的响应力。线程分为界面线程和工作者线程,界面实际就是一个线程画出来的东西,这个线程维护一个“消息队列”,“消息队列”也是界面线程和工作者线程的最大区别,这个词应该进到你的脑子里,根深蒂固的!如果在界面线程的某个地方停住,这说明它处理不了窗口消...2013-05-01 16:06:00 · 156 阅读 · 0 评论 -
如何正确的关闭MFC线程
前言: 近日在网上看到很多人问及如何关闭一下线程,但是我看网上给出的并不详细,而且有些方法还是错误的。小弟在此拙作一篇,不谈别的,只谈及如何正确的关闭MFC的线程,至于Win32和C RunTime的线程暂不涉及。一.关于MFC的线程 1.MFC的线程有两种,一种称为Work线程,一种称为UI线程。一般情况下Work线程与UI线程的区别主要在于UI线程有消息队列(并不是有没有界面...2013-05-01 16:03:00 · 263 阅读 · 0 评论 -
进度条Dialog线程
1.创建相应进度条Dialog#include "stdafx.h"#include "ReadTiff.h"#include "ProgressDlg.h"// CProgressDlg 对话框UINT ThreadFunc(LPVOID lpParam)//线程函数{CProgressCtrl* pInfo=(CProgressCtrl*)lpParam;//线程函数参数for(...2013-05-01 15:51:00 · 172 阅读 · 0 评论 -
CoInitialize与CoInitializeEx,AfxOleInit()的不同
OleInitialize和CoInitialize的区别CoInitialize CoInitializeEx 是用来初始化COM运行环境的,就象练武的人在练武前先划了个圈,在圈里摆上了兵器()OleInitialize是初始化Ole的运行环境,Ole是在Com的基础上作的扩展,是ActiveX运行的基础。就向是在刚才的圈子里撑起了个钢丝,要表演钢丝上的表演一样。也就是说调用了...2012-11-13 14:00:00 · 189 阅读 · 0 评论 -
_WIN32_WINNT 0x0500 导致 CFileDialog 异常问题
在开发项目中,回归测试,发现没有改动的模块中的CFileDialog对象初始化后就会导致程序异常或宕机。经过查资料和实践,发现CFileDialog 为何抛出异常与一个MFC的宏定义有关,如果_WIN32_WINNT 0x0500 这个宏被定义那么就不能再用cfiledialg 了,把这个宏定义去掉则OK如果程序中确实需要这个宏,可以通过下面几个方案来解决: 1.不要使用...2012-11-12 21:31:00 · 191 阅读 · 0 评论 -
VC WMP控件关于获取媒体时长 00的问题。
在VC下,使用Windows media player控件播放媒体列表时,只有播放列表里的第一个媒体在调用get_durationString()方法获取媒体长度时的结果为00:00,网上都说获取这个长度的方法是异步的,得到的结果是不准确的,需要处理一个等待消息。最后,我在添加媒体到播放列表时,随意调用媒体的一个get方法,结果在用get_durationString()获取媒体长度时就可以...2013-04-24 11:53:00 · 211 阅读 · 0 评论 -
Release版本下SetItem的错误
TCITEM tcItem; tcItem.mask = TCIF_TEXT |TCIF_IMAGE; GetItem(nPage, &tcItem); tcItem.pszText = lpszText; // 成员pszText指向的缓冲区的大小。 // 如果不设置这个成员,则会在release版本下出现错误。 tcItem.cchTextMax = strl...2013-04-17 21:03:00 · 147 阅读 · 0 评论 -
VC获取CListCtrl的LVITEM
char szBufItem[SIZE_DIRECSOURCE_NAME]; LVITEM lvItem={0}; lvItem.mask = LVIF_IMAGE |LVIF_TEXT |LVIF_STATE |LVIF_PARAM; lvItem.iItem= nIndex; //指定哪一行 lvItem.iSubItem = 0; lvItem.pszTex...2013-04-17 14:58:00 · 223 阅读 · 0 评论 -
warning :OnDestroy or PostNcDestroy in derived class will not be called
应用程序中使用指针创建了对话框,在析构函数中使用delete时,会出现以下警告:Warning: calling DestroyWindow in CDialog::~CDialog --OnDestroy or PostNcDestroy in derived class will not be called. 我们在释放指针的时候应该先通过对话框指针调用DestroyWindow...2013-04-16 09:58:00 · 176 阅读 · 0 评论 -
VC MDI 子窗口或嵌入窗体获得焦点后,用Alt快捷键弹出主窗口菜单无响应以及
对于在对话框程Dlg1序中嵌入对话框Dlg2的程序来说,定义好系统菜单热键,按键Alt+“菜单项(如F)”会弹出下拉菜单,但如果焦点放在Dlg2中时,再次按键Alt+F时,没有再次弹出下拉菜单(即热键无效),而快捷键(先按键按下Alt放开Alt,然后才按键F菜单有效)有效,其实原因在于焦点在Dlg2中了,按键Alt+F被Dlg2拦截没有发送到Dlg1中,因此只需在Dlg2中的PreTransla...2013-04-03 14:54:00 · 402 阅读 · 0 评论 -
函数指针
【函数指针】 在程序运行中,函数代码是程序的算法指令部分,它们和数组一样也占用存储空间,都有相应的地址。可以使用指针变量指向数组的首地址,也可以使用指针变量指向函数代码的首地址,指向函数代码首地址的指针变量称为函数指针。1.函数指针定义函数类型 (*指针变量名)(形参列表);“函数类型”说明函数的返回类型,由于“()”的优先级高于“*”,所以指针变量名外转载 2013-05-25 13:20:31 · 641 阅读 · 0 评论 -
(转)内存管理:_CrtDumpMemoryLeaks和_CrtSetBreakAlloc
1._CrtDumpMemoryLeaks确定自程序开始执行以来是否发生过内存泄漏,如果发生过,则转储所有已分配对象。如果已使用 _CrtSetDumpClient 安装了挂钩函数,那么,_CrtDumpMemoryLeaks每次转储 _CLIENT_BLOCK 块时,都会调用应用程序所提供的挂钩函数。 CrtDumpMemoryLeaks()就是显示当前的内存泄漏。 注意转载 2013-05-24 15:53:31 · 804 阅读 · 0 评论