- 博客(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
938
原创 CListCtrl 限制列宽的最小值
在CListCtrl中的效应拖拉列宽消息,在其中判断列宽是否小于需要限制宽度,如果是,使用Postmessage的方法重新设置它的列宽。
2010-02-23 16:45:00
1225
原创 SetProcessWorkingSetSize 的应用
SetProcessWorkingSetSize(GetCurrentProcess(),-1,-1); 应用此api以设置系统最小划分内存。
2010-01-07 11:10:00
954
原创 Link 的时候,运行时库冲突的解决方法。
VC的项目工程的多模块Link过程中,经常会出现一些运行时库冲突的问题,很不好解决。 如:libcmt.lib、msvcrt.lib等。解决的时候经常是等目标代码link结果出来了,发现库冲突才去解决。然后N多的模块,根本就不知道究竟是哪里出现了问题。 这个时候最好的解决方法就是,把所有需要参加Link的Lib先从硬盘移调到别处。然后开始Link,这时Linker会
2009-12-17 14:52:00
924
转载 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
2298
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
6844
3
转载 ::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
841
原创 #pragma region和#pragma endregion关键字
#pragma region和#pragma endregion关键字使用#pragma region和#pragma endregion关键字,来定义可以扩展和收缩的代码区域的开头和结尾。例如,可以修改为#pragma endregion 这样就可以把这些代码行收缩为一行,以后要查看其细节时,可以再次扩展它。
2009-05-11 14:55:00
18663
3
原创 MapFileAndCheckSum
当我们完成一个工程,编译成可执行文件后,一般是不希望这个可执行文件被人改动的,那么这里就讲述一下这是如何做到的。 其实这并不难,只要一个API函数就可以完成,这就是MapFileAndCheckSum。这个函数的作用是1)映象文件,2)从映象文件中接受原始的校验和,它是在编译时有编译器写入文件的,3)计算文件的校验和。如果文件在编译后被改动,那么原始的校验和就会和计算得出的校验和不同,由此
2009-05-05 09:16:00
3732
转载 堆和栈的区别
堆和栈的区别(转过无数次的文章) 一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收
2009-05-04 09:40:00
646
转载 预编译头文件的使用
《预编译头文件的使用 》关键字:预编译,/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
661
原创 判断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
3725
转载 各种DLL
1、 DLL的概念DLL(Dynamic Linkable Library),动态链接库,可以向程序提供一些函数、变量或类。这些可以直接拿来使用。静态链接库与动态链接库的区别:(1)静态链接库与动态链接库都是共享代码的方式。静态链接库把最后的指令都包含在最终生成的EXE文件中了;动态链接库不必被包含在最终EXE文件中,EXE文件执行时可以“动态”地引用和卸载这个与EX
2009-04-02 11:14:00
931
转载 #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
1073
转载 GetTextExtentPoint32
GetTextExtentPoint32 函数功能:该函数计算指定的正文字符串的高度和宽度。 函数原型:BOOL GetTextExtentPoint32(HDC hdc, LPCTSTR lpString, int cbString, LPSIZE lpSize); 参数: hdc:设备环境句柄。 lpString:指向正文字符串的指针。此字符串不必以/0结束,因为cbString
2009-03-30 10:34:00
2472
转载 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
1402
转载 _CrtDumpMemoryLeaks()的作用 检测内存泄漏
_CrtDumpMemoryLeaks()的作用2007-03-22 10:11CrtDumpMemoryLeaks()就是显示当前的内存泄漏。 注意是“当前”, 也就是说当它执行时, 所有未销毁的对象均会报内存泄漏。 因此尽量让这条语句在程序的最后执行。它所反映的是检测到泄漏的地方。一般用在MFC中比较准确,在Init
2009-02-25 17:25:00
4850
转载 重绘闪烁
在作界面的时候经常碰到一些比较复杂的作图情况,由于作图过于复杂和频繁,所以时常出现闪烁的情况,几经磨练,虫虫找到一些防止闪烁的方法,写下来和大家共享。 1、将Invalidate()替换为InvalidateRect()。 Invalidate()会导致整个窗口的图象重画,需要的时间比较长,而InvalidateRect()仅仅重画Rect区域
2009-01-19 10:30:00
1268
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
1010
转载 AfxLockTempMaps()
在看《VC.net技术内幕(第六版)》中第23.10.2节“自动化组件DLL”时,发现以下代码:P549:组件接口方法中有如下代码:=====================================================================...AfxLockTempMaps();CWnd* pTopWnd = CWnd::FromHandle(::Get
2008-12-19 17:43:00
1875
转载 关键字 mutalbe
mutalbe的中文意思是“可变的,易变的”,跟constant(既C++中的const)是反义词。 在C++中,mutable也是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中。 我们知道,如果类的成员函数不会改变对象的状态,那么这个成员函数一般会声明成const的。但是,有些时候,我们需要在const的函数里
2008-11-27 09:09:00
636
转载 运行时生成多个控件的多种消息响应
比如: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
666
转载 判断一个变量是什么类型
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
1028
转载 Windows 命令与快捷方式
(1)开始→运行→命令集锦winver---------检查Windows版本 wmimgmt.msc----打开windows管理体系结构(WMI) wupdmgr--------windows更新程序 wscript--------windows脚本宿主设置 write----------写字板 winmsd---------系统信息 wiaacmgr-------扫描仪和照相机向导 win
2008-11-18 17:04:00
736
转载 CPU流水线
对于CPU来说,它的工作可分为获取指令、解码、运算、结果几个步骤。其中前两步由指令控制器完成,后两步则由运算器完成。按照传统的方式,所有指令按顺序执行,先由指令控制器工作,完成一条指令的前两步,然后运算器工作,完成后两步,依此类推……很明显,当指令控制器工作时运算器基本上处于闲置状态,当运算器在工作时指令控制器又在休息,这样就造成了相当大的资源浪费。于是CPU借鉴了工业生产中被广泛应用的流水线设
2008-11-17 10:03:00
1601
转载 虚函数执行慢的原因。
1 要转差一次虚函数表。 2 和流水线相关是说得通的,究其原因还是因为存在动态跳转,这会导致分支预测失败,流水线排空。 设想一下,如果说不是虚函数,那么在编译时期,其相对地址是确定的,编译器可以直接生成jmp/invoke指令; 如果是虚函数,多出来的一次查找vtable所带来的开销,倒是次要的,关键在于,这个函数地址是动态的,譬如 取到的地址在eax里,则在call eax之后的那些已经
2008-11-17 09:29:00
963
转载 #pragma
pragma指令简介在编写程序的时候,我们经常要用到#pragma指令来设定编译器的状态或者是指示编译器完成一些特定的动作。一.message参数message它能够在编译消息输出窗口中输出相应的消息,这对于源代码信息的控制非常重要的,使用方法为:#pragma message(“消息文本”)当编译器遇到这条指令时就在编译输出窗口中将消息文本打印出来。当我们在程序中定义了许多
2008-11-14 11:05:00
634
转载 #pragma once与 #ifndef的区别
为了避免同一个文件被include多次1 #ifndef方式2 #pragma once方式在能够支持这两种方式的编译器上,二者并没有太大的区别,但是两者仍然还是有一些细微的区别。 方式一: #ifndef__SOMEFILE_H__ #define__SOMEFILE_H__ ... ... //一些声明语句
2008-11-14 11:02:00
447
转载 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
700
转载 dynamic_cast详解
作为四个内部类型转换操作符之一的dynamic_cast和传统的C风格的强制类型转换有着巨大的差别。除了dynamic_cast以外的转换,其行为的都是在编译期就得以确定的,转换是否成功,并不依赖被转换的对象。而dynamic_cast则不然。在这里,不再讨论其他三种转换和C风格的转换。首先,dynamic_cast依赖于RTTI信息,其次,在转换时,dynamic_cast会检查转换的sour
2008-11-11 11:44:00
2138
转载 拖动文件到窗体
你一定要在窗口初始化时,允许拖放,才不会出现禁止标志,如下代码 //允许文件拖放 DragAcceptFiles( TRUE ); 当有文件拖入你的窗口时会响应这个函数 afx_msg void OnDropFiles( HDROP hDropInfo ); 你只要重载窗口中的这个函数, //Get File
2008-11-11 11:34:00
565
转载 MFC中PretranslateMessage的实现
MFC中PretranslateMessage的实现在MFC里面,Pretranslatemessage是一个很重要的虚函数。这个函数的作用这里就不谈了,很多地方都有涉及,这里只谈一下其实现的机制。谈到PretranslateMessage的实现,便不得不谈到MFC消息循环的实现。MFC通过CWinApp类中的Pumpmessage函数实现消息循环,但是实际的消息循环代码位于CWin
2008-11-08 17:32:00
622
转载 涉及道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
591
转载 简单打印实例
BOOL PrintChitty() //打印函数 { HDC PrintDC; DOCINFO docin; docin.cbSize = sizeof(DOCINFO); docin.lpszDocName = "TestDoc"; docin.lpszOutput = NULL;
2008-10-16 14:13:00
813
转载 VC打印实践浅谈
经常看到VC论坛中一些朋友问关于打印的问题,好多是问过好多遍的,其实搜索一下原来的帖子可以找到好多,而且都是给了正确的解决方法的。但我搜了一下文档中心,发现好象关于一下我要讲的内容的还没有。所以我决定把自己在做程序时遇到的问题,及实现方法和心得体会写下来,重在交流。文中如有疏漏之处,请各位朋友及时指出,以免我落个误人误己的下场。 在做打印模块时,经常会出于不同的目的改变打印机的默认配置。
2008-10-15 14:07:00
3045
转载 打印 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
4334
原创 修改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
2380
原创 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
3723
原创 CListCtrl 当拖拉Header的分割线的时候不会绘改变每栏的大小。
CListCtrl,佷多时候会有要求到每列的宽不能被拖动。重写OnNotify函数,屏掉以下五个消息。其中 HDN_DIVIDERDBLCLICK 是屏蔽Header双击。 如果不屏掉这个,双击header以后会出现宽度问题。BOOL CPreDloadEMUList::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult) { /
2008-10-09 09:55:00
1128
转载 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
1099
纯 GDIPlus GDI+ 实现双缓存源码 消除闪烁 简单SampleCode
2009-09-01
Dbgview OutputDebugString信息获取工具
2009-05-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人