自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 资源 (3)
  • 收藏
  • 关注

转载 CreateThread, AfxBeginThread,_beginthread, _beginthreadex

CreateThread, AfxBeginThread,_beginthread, _beginthreadex的区别时间:2009-09-29 22:42:23来源:网络 作者:未知 点击:546次 CreateThread是Windows的API函数(SDK函数的标准形式,直截了当的创建方式,任何场合都可以使用),提供操作系统级别的创建线程的操作,且仅限于工作者线程。不调用MFC和RTL的函

2010-04-14 09:39:00 897

原创 CListCtrl 限制列宽的最小值

在CListCtrl中的效应拖拉列宽消息,在其中判断列宽是否小于需要限制宽度,如果是,使用Postmessage的方法重新设置它的列宽。

2010-02-23 16:45:00 1164

原创 SetProcessWorkingSetSize 的应用

  SetProcessWorkingSetSize(GetCurrentProcess(),-1,-1);  应用此api以设置系统最小划分内存。

2010-01-07 11:10:00 875

原创 Link 的时候,运行时库冲突的解决方法。

      VC的项目工程的多模块Link过程中,经常会出现一些运行时库冲突的问题,很不好解决。 如:libcmt.lib、msvcrt.lib等。解决的时候经常是等目标代码link结果出来了,发现库冲突才去解决。然后N多的模块,根本就不知道究竟是哪里出现了问题。       这个时候最好的解决方法就是,把所有需要参加Link的Lib先从硬盘移调到别处。然后开始Link,这时Linker会

2009-12-17 14:52:00 872

转载 Visual C++中的C运行时库浅析(lib dll)

Visual C++中的C运行时库浅析(lib dll)一、历史  C运行时库就是C run-time library,诞生于20世纪70年代,是C而非C++语言世界的概念,C程序运行时需要这些库中的函数。  C语言是所谓的“小内核”语言,就其语言本身来说很小(不多的关键字,程序流程控制,数据类型等)。所以,C语言内核开发出来之后,Dennis

2009-12-17 14:14:00 2207 1

转载 C++ 类中的静态变量和静态成员函数

静态数据成员:下面看一个例子:#include class Point{public:void output(){}static void init(){  } };void main( void ){Point pt;pt.init();pt.output(); }这样编译是不会有任何错误的。下面这样看#include class Point{public:void output(){  }st

2009-06-22 10:40:00 6762 6

转载 ::new(buf) class();

 BYTE buf[sizeof(CYourClass)]; // 栈上的内存块,或者用全局的也可以 BYTE* buf = new BYTE[sizeof(CYourClass)]; ::new(buf) CYourClass(); // 这句就是调用构造函数 CYourClass* p = (CYourClass*)buf; // 现在可以用p了

2009-05-22 11:14:00 809

原创 #pragma region和#pragma endregion关键字

 #pragma region和#pragma endregion关键字使用#pragma region和#pragma endregion关键字,来定义可以扩展和收缩的代码区域的开头和结尾。例如,可以修改为#pragma endregion  这样就可以把这些代码行收缩为一行,以后要查看其细节时,可以再次扩展它。

2009-05-11 14:55:00 18607 5

原创 MapFileAndCheckSum

 当我们完成一个工程,编译成可执行文件后,一般是不希望这个可执行文件被人改动的,那么这里就讲述一下这是如何做到的。    其实这并不难,只要一个API函数就可以完成,这就是MapFileAndCheckSum。这个函数的作用是1)映象文件,2)从映象文件中接受原始的校验和,它是在编译时有编译器写入文件的,3)计算文件的校验和。如果文件在编译后被改动,那么原始的校验和就会和计算得出的校验和不同,由此

2009-05-05 09:16:00 3631

转载 堆和栈的区别

  堆和栈的区别(转过无数次的文章) 一、预备知识—程序的内存分配    一个由C/C++编译的程序占用的内存分为以下几个部分    1、栈区(stack)—   由编译器自动分配释放   ,存放函数的参数值,局部变量的值等。其    操作方式类似于数据结构中的栈。    2、堆区(heap)   —   一般由程序员分配释放,   若程序员不释放,程序结束时可能由OS回    收

2009-05-04 09:40:00 616

转载 预编译头文件的使用

 《预编译头文件的使用  》关键字:预编译,/Yu,/Yc,/Yx本文介绍VC6的预编译功能的使用,由于预编译详细使用比较的复杂,这里只介绍几个最重要的预编译指令: /Yu, /Yc,/Yx,/Fp。其它的详细资料可以参考:      MSDN->Visual Studio D6.0Document -> Visual C++6.0 Document         ->VC++ Pr

2009-04-27 10:59:00 629

原创 判断char 的数字或者字母

 isdigit:判断字符是否是数字(0 – 9) isalpha:判断字符是否是字母(A – Z or a – z) isxdigit:判断是否是十六进制字符(A – F, a – f, or 0 – 9) isalnum:判断是否是数字和字母(A – Z, a – z, or 0 – 9)

2009-04-02 14:08:00 3629

转载 各种DLL

 1、 DLL的概念DLL(Dynamic Linkable Library),动态链接库,可以向程序提供一些函数、变量或类。这些可以直接拿来使用。静态链接库与动态链接库的区别:(1)静态链接库与动态链接库都是共享代码的方式。静态链接库把最后的指令都包含在最终生成的EXE文件中了;动态链接库不必被包含在最终EXE文件中,EXE文件执行时可以“动态”地引用和卸载这个与EX

2009-04-02 11:14:00 887

转载 #pragma 指令

 一一:#pragma warning指令该指令允许有选择性的修改编译器的警告消息的行为指令格式如下:#pragma warning( warning-specifier : warning-number-list [; warning-specifier : warning-number-list...]#pragma warning( push[ ,n ] )#pragma warning

2009-04-01 16:09:00 932

转载 GetTextExtentPoint32

GetTextExtentPoint32  函数功能:该函数计算指定的正文字符串的高度和宽度。  函数原型:BOOL GetTextExtentPoint32(HDC hdc, LPCTSTR lpString, int cbString, LPSIZE lpSize);  参数:  hdc:设备环境句柄。  lpString:指向正文字符串的指针。此字符串不必以/0结束,因为cbString

2009-03-30 10:34:00 2319

转载 windows system info

(1).SendMessage(Application->Handle,WM_SYSCOMMAND,SC_MONITORPOWER,1);//关闭显示器SendMessage(Application.Handle,WM_SYSCOMMAND,SC_MONITORPOWER,-1);//打开显示器SendMessage(hWnd, WM_SYSCOMMAND, SC_MONITORP

2009-03-21 23:13:00 1332

转载 _CrtDumpMemoryLeaks()的作用 检测内存泄漏

 _CrtDumpMemoryLeaks()的作用2007-03-22 10:11CrtDumpMemoryLeaks()就是显示当前的内存泄漏。      注意是“当前”,    也就是说当它执行时,      所有未销毁的对象均会报内存泄漏。          因此尽量让这条语句在程序的最后执行。它所反映的是检测到泄漏的地方。一般用在MFC中比较准确,在Init

2009-02-25 17:25:00 4749

转载 重绘闪烁

 在作界面的时候经常碰到一些比较复杂的作图情况,由于作图过于复杂和频繁,所以时常出现闪烁的情况,几经磨练,虫虫找到一些防止闪烁的方法,写下来和大家共享。         1、将Invalidate()替换为InvalidateRect()。                 Invalidate()会导致整个窗口的图象重画,需要的时间比较长,而InvalidateRect()仅仅重画Rect区域

2009-01-19 10:30:00 1230 1

转载 MSDN的一个例子 有获取到各种操作系统

 MSDN的一个例子   有获取到64位系统 #include    #include    #include    #define   BUFSIZE   80 typedef   void   (WINAPI   *PGNSI)(LPSYSTEM_INFO); int   __cdecl   _tmain() {       OSVERSIONINFOEX   osvi;       SYST

2008-12-31 14:43:00 981

转载 AfxLockTempMaps()

  在看《VC.net技术内幕(第六版)》中第23.10.2节“自动化组件DLL”时,发现以下代码:P549:组件接口方法中有如下代码:=====================================================================...AfxLockTempMaps();CWnd* pTopWnd = CWnd::FromHandle(::Get

2008-12-19 17:43:00 1834

转载 关键字 mutalbe

     mutalbe的中文意思是“可变的,易变的”,跟constant(既C++中的const)是反义词。    在C++中,mutable也是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中。    我们知道,如果类的成员函数不会改变对象的状态,那么这个成员函数一般会声明成const的。但是,有些时候,我们需要在const的函数里

2008-11-27 09:09:00 612

转载 运行时生成多个控件的多种消息响应

 比如:button 的Click消息1.在头文件中声明消息响应函数afx_msg void OnButton(UINT id)2.添加宏映射ON_COMMAND_RANGE(IDC_BUTTON1,IDC_BUTTON10,OnButton)3.编写消息响应函数CTest::OnButton(UINT id){    switch(id)    {        case IDC_BUTTON1

2008-11-20 15:18:00 633

转载 判断一个变量是什么类型

 CString str = "字符串";//其实str是什么无所谓 const type_info &typeif = typeid(str); CString strType; strType.Format("%s",typeif.name()); AfxMessageBox(strType);//输出str的类型名

2008-11-20 09:25:00 983

转载 Windows 命令与快捷方式

 (1)开始→运行→命令集锦winver---------检查Windows版本 wmimgmt.msc----打开windows管理体系结构(WMI) wupdmgr--------windows更新程序 wscript--------windows脚本宿主设置 write----------写字板 winmsd---------系统信息 wiaacmgr-------扫描仪和照相机向导 win

2008-11-18 17:04:00 708

转载 CPU流水线

 对于CPU来说,它的工作可分为获取指令、解码、运算、结果几个步骤。其中前两步由指令控制器完成,后两步则由运算器完成。按照传统的方式,所有指令按顺序执行,先由指令控制器工作,完成一条指令的前两步,然后运算器工作,完成后两步,依此类推……很明显,当指令控制器工作时运算器基本上处于闲置状态,当运算器在工作时指令控制器又在休息,这样就造成了相当大的资源浪费。于是CPU借鉴了工业生产中被广泛应用的流水线设

2008-11-17 10:03:00 1508

转载 虚函数执行慢的原因。

1 要转差一次虚函数表。 2 和流水线相关是说得通的,究其原因还是因为存在动态跳转,这会导致分支预测失败,流水线排空。 设想一下,如果说不是虚函数,那么在编译时期,其相对地址是确定的,编译器可以直接生成jmp/invoke指令; 如果是虚函数,多出来的一次查找vtable所带来的开销,倒是次要的,关键在于,这个函数地址是动态的,譬如 取到的地址在eax里,则在call eax之后的那些已经

2008-11-17 09:29:00 920

转载 #pragma

 pragma指令简介在编写程序的时候,我们经常要用到#pragma指令来设定编译器的状态或者是指示编译器完成一些特定的动作。一.message参数message它能够在编译消息输出窗口中输出相应的消息,这对于源代码信息的控制非常重要的,使用方法为:#pragma message(“消息文本”)当编译器遇到这条指令时就在编译输出窗口中将消息文本打印出来。当我们在程序中定义了许多

2008-11-14 11:05:00 585

转载 #pragma once与 #ifndef的区别

 为了避免同一个文件被include多次1   #ifndef方式2   #pragma once方式在能够支持这两种方式的编译器上,二者并没有太大的区别,但是两者仍然还是有一些细微的区别。    方式一:    #ifndef__SOMEFILE_H__    #define__SOMEFILE_H__    ... ... //一些声明语句   

2008-11-14 11:02:00 426

转载 const  & Pointer

const char *const * keywords const char const * keywords const char *const  keywords const char const keywords 请问以上四种定义, 所得出的变量有什么区别,各代表什么?(请从维数、用途等方面简要说明)    1. ( (const char) *const) * keyword

2008-11-11 15:03:00 668

转载 dynamic_cast详解

 作为四个内部类型转换操作符之一的dynamic_cast和传统的C风格的强制类型转换有着巨大的差别。除了dynamic_cast以外的转换,其行为的都是在编译期就得以确定的,转换是否成功,并不依赖被转换的对象。而dynamic_cast则不然。在这里,不再讨论其他三种转换和C风格的转换。首先,dynamic_cast依赖于RTTI信息,其次,在转换时,dynamic_cast会检查转换的sour

2008-11-11 11:44:00 1990

转载 拖动文件到窗体

 你一定要在窗口初始化时,允许拖放,才不会出现禁止标志,如下代码     //允许文件拖放     DragAcceptFiles(   TRUE   );    当有文件拖入你的窗口时会响应这个函数     afx_msg   void   OnDropFiles(   HDROP   hDropInfo   );     你只要重载窗口中的这个函数,     //Get   File

2008-11-11 11:34:00 528

转载 MFC中PretranslateMessage的实现

 MFC中PretranslateMessage的实现在MFC里面,Pretranslatemessage是一个很重要的虚函数。这个函数的作用这里就不谈了,很多地方都有涉及,这里只谈一下其实现的机制。谈到PretranslateMessage的实现,便不得不谈到MFC消息循环的实现。MFC通过CWinApp类中的Pumpmessage函数实现消息循环,但是实际的消息循环代码位于CWin

2008-11-08 17:32:00 586

转载 涉及道PE的小程序。

 看雪有啊 我都摘过来吧 http://bbs.pediy.com/showthread.php?p=389887 前两天看到这么一个程序。代码如下: #include int main() {     const short int c1 = 49920;     const int c2 = 1073742008;     int (*pf)() = (int (*

2008-11-05 09:46:00 562

转载 简单打印实例

 BOOL PrintChitty() //打印函数     { HDC PrintDC;      DOCINFO docin;           docin.cbSize = sizeof(DOCINFO);      docin.lpszDocName = "TestDoc";      docin.lpszOutput = NULL;     

2008-10-16 14:13:00 769

转载 VC打印实践浅谈

 经常看到VC论坛中一些朋友问关于打印的问题,好多是问过好多遍的,其实搜索一下原来的帖子可以找到好多,而且都是给了正确的解决方法的。但我搜了一下文档中心,发现好象关于一下我要讲的内容的还没有。所以我决定把自己在做程序时遇到的问题,及实现方法和心得体会写下来,重在交流。文中如有疏漏之处,请各位朋友及时指出,以免我落个误人误己的下场。 在做打印模块时,经常会出于不同的目的改变打印机的默认配置。

2008-10-15 14:07:00 2972

转载 打印 DEVMODE 结构体 简述

 DEVMODE结构具有如下形式:typedef struct _devicemode{ /* dvmd */  TCHAR  dmDeviceName[32];  WORD   dmSpecVersion;  WORD   dmDriverVersion;  WORD   dmSize;  WORD   dmDriverExtra;  DWORD  dmField

2008-10-15 11:08:00 4061

原创 修改CListCtrl Item 样式。OnCustomdraw

 afx_msg void OnNMCustomdrawList1(NMHDR *pNMHDR, LRESULT *pResult);ON_NOTIFY(NM_CUSTOMDRAW, IDC_LIST1, &C_CodeList::OnNMCustomdrawList1)void C_CodeList::OnNMCustomdrawList1(NMHDR *pNMHDR, LRESULT *pRe

2008-10-14 14:08:00 2343

原创 CListCtrl 中使用 DrawItem MeasureItem 注意事项

//-- declarationprotected:    //{{AFX_MSG(CMyListCtrl)    afx_msg void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct);   //-- Message    //}}AFX_MSG    virtual void DrawItem( LPDRAWITEMSTRUCT lp

2008-10-09 10:18:00 3657 2

原创 CListCtrl 当拖拉Header的分割线的时候不会绘改变每栏的大小。

CListCtrl,佷多时候会有要求到每列的宽不能被拖动。重写OnNotify函数,屏掉以下五个消息。其中  HDN_DIVIDERDBLCLICK 是屏蔽Header双击。 如果不屏掉这个,双击header以后会出现宽度问题。BOOL CPreDloadEMUList::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult) {    /

2008-10-09 09:55:00 1074

转载 CListCtrl的基础使用 缩略图

 CListCtrl使用详解增加一个:SetItemState(-1,   0,   LVIS_SELECTECD);  //取消所有选中 1。先来介绍REPORT类型的CListCtrl:首先使用下面的语句设置CListCtrl的style: DWORD SetExtendedStyle( DWORD dwNewStyle );其中 LVS_EX_CHECKBOXES 表

2008-10-07 16:34:00 1070

PEID exe查看工具

这个工具可以看到某个exe是用什么平台或者语言开发的. 有些加过壳的会看不出来了.

2009-10-27

纯 GDIPlus GDI+ 实现双缓存源码 消除闪烁 简单SampleCode

实用GDI实现双缓存消除闪烁大家应该很熟悉了.其实使用GDI+来消除双缓存的原理和GDI是一样的.只是使用的对象和操作有一点不一样而已. 从之前的Code里面抽出一点来说明GDI+的双缓存的实现. 适合编程新手或者GDIPlus新手.

2009-09-01

Dbgview OutputDebugString信息获取工具

当Release版出现问题又不知道怎么定位的时候,此工具极其有用.IDE获取不到OutputDebugString的信息.那使用Dbgview可以很好解决这个问题. 我都是使用这个工具.

2009-05-20

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除