上一页 1 2 3 4 5 6 ··· 8 下一页
摘要: 1 volatile有些变量是用volatile关键字声明的。当两个线程都要用到某一个变量且该变量的值会被改变时,应该用volatile声明,该关键字的作用是防止优化编译器把变量从内存装入CPU寄存器中。如果变量被装入寄存器,那么两个线程有可能一个使用内存中的变量,一个使用寄存器中的变量,这会造成程序的错误执行。 volatile的意思是让编译器每次操作该变量时一定要从内存中真正取出,而不是使用已经存在寄存器中的值,如下: volatile BOOL bStop = FALSE; 在一个线程中: while( !bStop ) { ... } bStop = FALSE; return; 在另 阅读全文
posted @ 2011-04-21 11:12 maxweii 阅读(496) 评论(0) 推荐(0) 编辑
摘要: DWORD WaitForSingleObject( HANDLE hHandle, DWORD dwMilliseconds );参数: hHandle是一个事件的句柄,第二个参数dwMilliseconds是时间间隔。如果事件是有信号状态返回WAIT_OBJECT_0,如果时间超过dwMilliseconds值但时间事件还是无信号状态则返回WAIT_TIMEOUT。 hHandle可以是下列对象的句柄: Change notification Console input Event Job Memory resource notification Mutex Process Semapho 阅读全文
posted @ 2011-04-17 18:05 maxweii 阅读(1086) 评论(0) 推荐(0) 编辑
摘要: 位置断点: 就是普通的按F9设置的断点,没什么好说的.临时改变变量值:1)通过“即时窗口”(调试->窗口->即时),可以在程序运行过程中(当然是在断点状态下),临时改变某个变量的取值(比如在即时窗口中输入Width = 32,然后回车使其生效,左边局部变量会将改的值显示为红色)!2)直接在局部变量的值上双击,再输入要改的值3)鼠标停留在要改的变量上,在弹出的变量值上单击,输入要改的值优点:可以不必为调试变量的每一个取值而不停地终止测试/修改代码/重新调试,尤其当需要反复测试一个变量的正常取值时。数据断点: 注意,这个技巧仅对C++程序调试有效(或者说native程序),而且你只能在 阅读全文
posted @ 2011-04-15 20:20 maxweii 阅读(3303) 评论(0) 推荐(0) 编辑
摘要: 可重入函数主要用于多任务环境中,一个可重入的函数简单来说就是可以被中断的函数,也就是说,可以在这个函数执行的任何时刻中断它,转入OS调度下去执行另外一段代码,而返回控制时不会出现什么错误;而不可重入的函数由于使用了一些系统资源,比如全局变量区,中断向量表等,所以它如果被中断的话,可能会出现问题,这类函数是不能运行在多任务环境下的。可重入函数简介 也可以这样理解,重入即表示重复进入,首先它意味着这个函数可以被中断,其次意味着它除了使用自己栈上的变量以外不依赖于任何环境(包括static),这样的函数就是purecode(纯代码)可重入,可以允许有该函数的多个副本在运行,由于它们使用的是分离的栈, 阅读全文
posted @ 2011-04-14 23:54 maxweii 阅读(799) 评论(0) 推荐(1) 编辑
摘要: 默认情况下,窗口是不响应 WM_MOUSELEAVE 和 WM_MOUSEHOVER 消息的,所以要使用 _TrackMouseEvent 函数来激活这两个消息。调用这个函数后,当鼠标在指定窗口上停留超过一定时间或离开窗口后,该函数会 Post 这两个消息到指定窗口。使用方法:1. 在对话框类中定义一个变量来标识是否追踪当前鼠标状态,之所以要这样定义是要避免鼠标已经在窗体之上时,一移动鼠标就不断重复产生 WM_MOUSEHOVER 。 BOOL _bMouseTrack=TRUE ;2. 在 OnMouseMove 中调用 _TrackMouseEvent 函数 if (_bMouseTrac 阅读全文
posted @ 2011-04-14 17:56 maxweii 阅读(13421) 评论(0) 推荐(0) 编辑
摘要: 设备相关位图 在Windows中有两种类型的位图:DDB位图(与设备相关位图)及DIB位图(与设备无关位图).与设备相关位图(DDB)是一种内部位图格式,它由MFC库6.0版本CBitmap类定义,有一个与之关联的Windows数据结构. DDB中不包括颜色信息,显示时是以系统的调色板为基础进行各位的颜色映射.例如,如果当前的显示设备是256色模式,那么DDB必然也是256色的。在256色以下的位图中存储的像素值是系统调色板的索引,其颜色依赖于系统调色板。由于DDB高度依赖输出设备,所以DDB只能存在于内存中,它要么在视频内存中,要么在系统内存中。它显示的图像依计算机显示系统的设置不同而不同, 阅读全文
posted @ 2011-04-09 11:42 maxweii 阅读(1631) 评论(0) 推荐(0) 编辑
摘要: VA绝对是我们平时用的最多也是最有用的插件。伴随着IDE的升级,VA也在不断出着新版本,而每次我都忍不住亲身体验一番,因此写下了这篇文。下文将对VA近期的若干重要版本在功能方面做些横向对比,相信得出的结论能让大家在对VA的版本选择问题上获得帮助。1557:对宏的支持不好,经常无法提示;跟以前的所有版本一样,注释超过一定行数就被“...”代替了,郁闷。1561:比以前版本最大的改进就是注释能够显示完全,超爽;对宏的支持也好多了。但是在有些情况下宏的提示还是有问题,并且goto不到源代码(这个问题上VA似乎已经尽力做到最好了,呵呵)。不过这一版本绝对是VC6的最佳选择。1626和1640:VA工具 阅读全文
posted @ 2011-04-08 16:45 maxweii 阅读(645) 评论(0) 推荐(0) 编辑
摘要: 一、在对话框视图中加入CTabCtrl控件,资源ID:IDC_TAB,变量名:m_Tab 二、在OnInitDialog()中加入以下代码: m_Tab.InsertItem(0,"窗口1"); m_Tab.InsertItem(1,"窗口2"); // 创建子窗口实例(事先创建好),将父窗口设为m_Tab // CChileDlg1 m_dlgChile1; // CChileDlg2 m_dlgChile2; m_dlgChile1.Create(IDD_DIALOG_CHILD1,GetDlgItem(IDC_TAB)); m_dlgChile2. 阅读全文
posted @ 2011-04-06 16:04 maxweii 阅读(619) 评论(0) 推荐(0) 编辑
摘要: __declspec(dllexport)我相信写WIN32程序的人,做过DLL,都会很清楚__declspec(dllexport)的作用,它就是为了省掉在DEF文件中手工定义导出哪些函数的一个方法。当然,如果你的DLL里全是C++的类的话,你无法在DEF里指定导出的函数,只能用__declspec(dllexport)导出类。但是,MSDN文档里面,对于__declspec(dllimport)的说明让人感觉有点奇怪,先来看看MSDN里面是怎么说的:不使用 __declspec(dllimport) 也能正确编译代码,但使用 __declspec(dllimport) 使编译器可以生成更好 阅读全文
posted @ 2011-04-06 14:36 maxweii 阅读(725) 评论(0) 推荐(0) 编辑
摘要: 本文以MDI应用程序为例说明如何在已有的VC++工程中使用BCG界面库,我的开发环境为VS2003。 1,将BCG/BCGCBPro目录路径添加到“项目属性->C/C++ ->常规 ->附加包含目录”中,同时将BCG/Bin目录路径添加到“项目属性->链接器 ->常规 ->附加库目录”中。2,确保在CWinApp派生类(设为CMyApp)的InitInstance()成员函数中调用AfxOleInit();3,在ExitInstance()函数中添加: CleanState(); BCGCBProCleanUp();4,在stdafx.h中添加 #inclu 阅读全文
posted @ 2011-04-06 10:05 maxweii 阅读(1278) 评论(1) 推荐(0) 编辑
摘要: 1。先来介绍REPORT类型的CListCtrl: 首先使用下面的语句设置CListCtrl的style: DWORD SetExtendedStyle( DWORD dwNewStyle ); 其中 LVS_EX_CHECKBOXES 表示添加CheckBox LVS_EX_FULLROWSELECT 表示选择整行 LVS_EX_GRIDLINES 表示添加表格线 如果设置了LVS_EX_CHECKBOXES属性,则可以用 BOOL GetCheck( int nItem ) const; 来得到某一行是否Checked。 可以先用下面的语句来删除以前的东西: for(int k=2;k&g 阅读全文
posted @ 2011-04-03 00:44 maxweii 阅读(340) 评论(0) 推荐(0) 编辑
摘要: 调试了几天,感觉SVN要简单得很,前几天搞CVS一直有问题,很是郁闷,所有改用SVN了SVN又有两种方式,svnserve服务方式和apache方式,如果用svnserve方式的话推荐直接用Setup-Subversion-1.6.13.msi(目前最新版)哪果用apache方式的话 推荐用VisualSVN-Server-2.1.5.msi(目前最新版) ,比较用Subversion的话调试还是有点费劲建立库: svnadmin create e:\svn\softsvnserve支持多库多端口,好玩意:sc create svnservice binpath= "C:\Progr 阅读全文
posted @ 2011-04-01 16:59 maxweii 阅读(522) 评论(0) 推荐(0) 编辑
摘要: MFC 消息类型:三种 1、命令消息(WM_COMMAND) 所有派生自 CCmdTarget 的类都有资格接受WM_COMMAND。 2、Window消息(WM_xxx) 所有派生自 CWnd 的类都有资格接受 WM_xxx。 3、控件消息(WM_NOTIFY) 控件向其父窗口通知消息。 消息处理:1、WM_xxx 消息处理 窗口类(自身)处理→基类处理→CWnd∷DefWindowProc()处理; 其所对应的宏一般为在消息 WM_ 前面加上 ON_。 2、命令消息处理 命令消息来自命令用户界面对象(菜单、加速键或工具栏按钮)发出的WM_COMMAND消息; ㈠、WM_COMMAND消息 阅读全文
posted @ 2011-04-01 15:54 maxweii 阅读(655) 评论(0) 推荐(0) 编辑
摘要: Visual Assist X的用法2009-04-07 18:02Visual Assist X的用法open file in solution 打开文件中的解决办法open Corresponding file 打开相应文件list methods in current file 列表方法在当前文件file symbol 文件标记find references 找到参考资料find references in file 找到参考文件clone find references results 寻找克隆结果find previous by context 找到以前的前后关系goto imple 阅读全文
posted @ 2011-04-01 09:43 maxweii 阅读(1785) 评论(0) 推荐(0) 编辑
摘要: 在Visual C++6.0 中增加了日期时间拾取控件(Date Time Picker简称DTP控件)和月历控件,对应的类为CDateTimeCtrl,CMonthCalCtrl.这两个控件允许用户选择日期、时间和月份并可对其进行操作。 两者区别: CDateTimeCtrl 拥有一个子月历控件,可通过CMonthCalCtrl* GetMonthCalCtrl() const;获取. 再DTP控件中,用户可调整现实的日期。缺省时,用户可单击控件的右边的下拉按钮,即可弹出月历控件以供用户选择日期,通过风格的改变还可在DTP控件内显示时间。 在月历控件中,用户可按击控件左右两边的箭头按钮,可前 阅读全文
posted @ 2011-03-31 14:04 maxweii 阅读(6354) 评论(0) 推荐(0) 编辑
摘要: 1.概论1.什么是静态连接库,什么是动态链接库 静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib 中的指令都全部被直接包含在最终生成的 EXE 文件中了。但是若使用 DLL,该 DLL 不必被包含在最终 EXE 文件中,EXE 文件执行时可以“动态”地引用和卸载这个与 EXE 独立的 DLL 文件。静态链接库和动态链接库的另外一个区别在于静态链接库中不能再包含其他的动态链接库或者静态库,而在动态链接库中还可以再包含其他的动态或静态链接库。静态链接库与静态链接库调用规则总体比较如下。 对于静态链接库(比较简单):首先,静态链接库的使用需要库的开发者提供生成库 阅读全文
posted @ 2011-03-29 00:49 maxweii 阅读(1365) 评论(0) 推荐(0) 编辑
摘要: 在MFC的SDI和MDI文档结构中能很方便的嵌入多视图,而有时候则要在对 话框中嵌入多视图,下面是方法。 插入三个对话框,ID分别为IDD_VIEW1_FORM,IDD_VIEW2_FORM,IDD_VIEW3_FORM 把三个对话框的属性Style设为Child,Border设为None,映射 CView1,CView2,CView3分别对应三个对话框,CView1,CView2,CView3都派生自CFormView。在对话框中加入三个成员变量:1 CView1 *m_pView1; 2 CView2 *m_pView2; 3 CView3 *m_pView3;映射对话框WM_INITDI 阅读全文
posted @ 2011-03-24 11:11 maxweii 阅读(6128) 评论(0) 推荐(0) 编辑
摘要: 1、下载,我是在http://www.xpblue.com/down/11486.html下载的,http://sourceforge.net/projects/wtl也可以,不过我没打开。下载:WTL80.exe(886.84KB) 2、下载的文件是一个自解压文件,解压到任意目录,我是解压到d:\wtl80,80为版本号,面有几个子目录samples, include, AppWizMobile, AppWizCE, AppWiz,还有一个txt文件和htm文件。其中include是头文件,samples是几个示例,AppWiz*是各种向导文件。3、安装方法,可以自动安装,也可以手动安装,据 阅读全文
posted @ 2011-03-24 00:12 maxweii 阅读(896) 评论(0) 推荐(0) 编辑
摘要: 很多的界面设计都需要有Tip提示,下面描述一下Tip的简单使用方法: 1. 首先要New一个CToolTipCtrl的对象m_pContentTip 2. 调用CToolTipCtrl的create函数,指定其父窗口。可以为某个控件,也可以为this。一般设为this。 m_pContentTip->Create( this, TTS_ALWAYSTIP );3. AddTool。此函数是设置与某个控件关联的Tip文本。此处可以为多个控件添加不同的提示信息。 m_pButtonTip->AddTool( GetDlgItem( 控件ID ), 文本 ); //#add 一定要用Ad 阅读全文
posted @ 2011-03-23 15:20 maxweii 阅读(1634) 评论(0) 推荐(0) 编辑
摘要: 文本界面的控制台应用程序开发是深入学习C++、掌握交互系统的实现方法的最简单的一种手段。然而,Visual C++的C++专用库却没有TC所支持的文本(字符)屏幕控制函数,为此本系列文章从一般控制步骤、控制台窗口操作、文本(字符)控制、滚动和移动、光标、键盘和鼠标等几个方面讨论控制台窗口界面的编程控制方法。 在众多C++开发工具中,由于Microsoft本身的独特优势,选用Visual C++已越来越被众多学习者所接受。显然,现今如果还再把TC作为开发环境的话,不仅没有必要,而且也不利于向Windows应用程序开发的过渡。然而,Visual C++的C++专用库却没有TC所支持的文本屏幕(控制 阅读全文
posted @ 2011-03-22 15:14 maxweii 阅读(778) 评论(1) 推荐(0) 编辑
摘要: 指向类成员的指针,印象中似乎很少用到,重新学习C++的过程中,才发现自己是忽视了一个很重要的东东,以前我一直认为类的成员函数不能作为回调函数,所以很多C程序都始终无法移植到C++上来,现在才知道,这是对指向类成员的指针不了解的缘故。 1、指向非静态成员的指针 其实指向非静态的类成员的指针很容易,它们与普通指针唯一的区别是,他们受类的限制。如下: class A { int _val; int val(); }; int (A::*p_val) = &A::_val; int ( A::*p_func )() = &A::val; 看到了吗,是的,和普通的指针的区别是,指向类成员 阅读全文
posted @ 2011-03-22 14:01 maxweii 阅读(608) 评论(0) 推荐(1) 编辑
摘要: 摘要: 本文针对HOOK技术在VC编程中的应用进行讨论,并着重对应用比较广泛的全局HOOK做了阐述。 一、引言 Windows操作系统是建立在事件驱动机制之上的,系统各部分之间的沟通也都是通过消息的相互传递而实现的。但在通常情况下,应用程序只能处理来自进程内部的消息或是从其他进程发过来的消息,如果需要对在进程外传递的消息进行拦截处理就必须采取一种被称为HOOK(钩子)的技术。钩子是Windows操作系统中非常重要的一种系统接口,用它可以轻松截获并处理在其他应用程序之间传递的消息,并由此可以完成一些普通应用程序难以实现的特殊功能。基于钩子在消息拦截处理中的强大功能,本文即以VC++ 6.0为编程 阅读全文
posted @ 2011-03-22 13:25 maxweii 阅读(3438) 评论(0) 推荐(0) 编辑
摘要: 1 简介:ATL 提供了2个智能指针的模板包装类,CComPtr<> 和 CComQIPtr<>,这两个类都在 <atlbase.h> 中声明。CComQIPtr<> 包含了 CComPtr<>的所有功能,因此我们可以完全用 CComQIPtr<> 来使用智能接口指针,唯一要说明的一点就是:CComQIPtr<> 由于使用了运算符的重载功能,它会自动帮我们调用QueryInterface()函数,因此 CComQIPtr<> 唯一的缺点就是不能定义 IUnknown * 指针。 // 智能指针 sm 阅读全文
posted @ 2011-03-22 09:27 maxweii 阅读(556) 评论(0) 推荐(0) 编辑
摘要: 绪论 WTL最终来了,而且提供了我所希望的功能.我在WTL Bytesize(译文)的文章列出WTL主要特征.在本文中,我将描述一下WTL的体系结构,同时我会给出一些简单的例子来演示如何使用它的那些特征.希望能够对您有所帮助.WTL应用程序的类型 WTL有好几种应用程序类型,供您在AppWizard选取. 下表对这些应用程序进行了描述. 这种弹性构成了WTL体系结构的一部分.应用程序类型描述SDI Application单文本界面 – 只有一个窗口Multiple Threads SDI单个进程拥有一个或多个窗口MDI Application多文本界面 – 在框架内,您可以有零个或多个子窗口D 阅读全文
posted @ 2011-03-21 14:09 maxweii 阅读(1566) 评论(0) 推荐(0) 编辑
摘要: Question:什么是IDL和MIDL?Answer:IDL是接口定义语言。MIDL是Microsoft的IDL编译器。在用IDL对接口和组件进行了描述后,可以用MIDL进行编译,生成相应的代理和存根DLL的C代码。一个例子:import “unknown.idl” ///用于将其他IDL文件中的定义包含到当前文件中///Interface IX[ ///注意是[ ]不是 {}object, ///所定义的接口是一个COM接口uuid(32bb8323-b41b-11cf-a6bb-0080c7b2d682), ///相应的接口IIDhelpstring(“IX Interface”), / 阅读全文
posted @ 2011-03-21 00:33 maxweii 阅读(30765) 评论(0) 推荐(0) 编辑
摘要: 本文由冯学礼上传,本站所提供的文章、照片、插画、设计作品,如需使用,请与原作者联系,版权归原作者所有。本站所转载文章的描述和观点并不意味着本站已经证实或赞同,如有侵权,请与本站联系,我们将尽快处理.一、 基础 GDI的绘图函数基本上都是有状态的,所有的函数都要求一个HDC类型的句柄。这个HDC的获得有几个途径BeginPaint,GetWindowDC, GetDC.他们的参数都只需要一个HWND就差不多了。记得调用了BeginPaint后要调用EndPaint进行清理,调用GetWindowDC和GetDC后要调ReleaseDC进行清理。在MFC代码中常常遇到的CDC CPaintDC C 阅读全文
posted @ 2011-03-19 22:20 maxweii 阅读(638) 评论(0) 推荐(0) 编辑
摘要: COM组件有三个最基本的接口类,分别是IUnknown、IClassFactory、IDispatch。 COM规范规定任何组件、任何接口都必须从IUnknown继承,IUnknown包含三个函数,分别是 QueryInterface、AddRef、Release。这三个函数是无比重要的,而且它们的排列顺序也是不可改变的。QueryInterface用于查询组件实现的其它接口,说白了也就是看看这个组件的父类中还有哪些接口类,AddRef用于增加引用计数,Release用于减少引用计数。引用计数也是COM中的一个非常重要的概念。大体上简单的说来可以这么理解,COM组件是个DLL,当客户程序要用它 阅读全文
posted @ 2011-03-18 13:54 maxweii 阅读(7102) 评论(3) 推荐(3) 编辑
摘要: VC++中利用MSXML解析XML文档一、XML 简介 XML(Xtensible Markup Language,即扩展标记语言)的发展起源于1996年。当时,出版界巨头和Web业内人士经过共同讨论,提出了创建SGML(Standard Generalized Markup Language,即标准通用标识语言)子集(HML)的建议。该子集专用于Web,具有可扩展(或可扩充)性,并且能利用结构化标记语言的所有高级功 能,但摒弃了SGML的复杂性。XML规范的第一份草稿于1996年11月发布后不久,1997年1月首个XML解析器就面世了。随后,便出现了XML的 应用以及新的规范和解析器。HTM 阅读全文
posted @ 2011-03-17 22:41 maxweii 阅读(7919) 评论(0) 推荐(0) 编辑
摘要: 导读: 从本篇文章开始,将全面阐述__try,__except,__finally,__leave异常模型机制,它也即是Windows系列操作系统平台上提供的SEH模型。主人公阿愚将在这里与大家分享SEH( 结构化异常处理)的学习过程和经验总结。 深入理解请参阅<<windows 核心编程>>第23, 24章.SEH实际包含两个主要功能:结束处理(termination handling)和异常处理(exception handling)每当你建立一个try块,它必须跟随一个finally块或一个except块。一个try 块之后不能既有finally块又有except 阅读全文
posted @ 2011-03-17 10:08 maxweii 阅读(1065) 评论(0) 推荐(0) 编辑
摘要: 一、简介这是一个自己写C++垃圾自动回收器,用到的都是标准C++语法。采用了引用计数加mark-sweep的方法。在没有循环引用的情况下,引用计数可以保证垃圾实时得到回收;对于有循环引用的情况下,计数就不能回收了,这时就要用mark-sweep的方法。其实完全使用mark- sweep的方法也是可以的,但有了引用计数,可以回收大量的非循环引用垃圾,减少最后的mark-sweep时的工作量。考虑到大家的15分钟阅读热情,在说细节之前,先show一下这个指针怎么使用。顺便提一下,这个指针可以在Windows+MSVC和Linux+GCC下编译,使用。代码下载在http://download.csd 阅读全文
posted @ 2011-03-16 14:57 maxweii 阅读(741) 评论(0) 推荐(0) 编辑
摘要: COM接口指针很危险,因为使用过程中需要每一个使用者都要严格并且正确的AddRef和Release,一旦出现问题,就会造成对象不能被正常释放,或者对象被重复删除,造成程序崩溃。所以使用COM接口,必须小心翼翼才行。但是,即使所有的代码中,都正确的AddRef和Release,也不一定能保证万无一失,例如:void SomeApp( IHello * pHello ){IHello* pCopy = pHello;pCopy->AddRef(); OtherApp();pCopy->Hello();pCopy->Release();}看起来好像无懈可击,但是假设OtherApp 阅读全文
posted @ 2011-03-16 14:06 maxweii 阅读(378) 评论(0) 推荐(0) 编辑
摘要: __declspec(novtable) 在C++中接口中广泛应用. 不容易看到它是因为在很多地方它都被定义成为了宏. 比如说ATL活动模板库中的ATL_NO_VTABLE, 其实就是__declspec(novtable). __declspec(novtable) 就是让类不要有虚函数表以及对虚函数表的初始化代码, 这样可以节省运行时间和空间. 但是这个类一定不允许生成实例, 因为没有虚函数表, 就无法对虚函数进行调用. 因此, __declspec(novtable)一般是应用于接口(其实就是包含纯虚函数的类), 因为接口包含的都是纯虚函数, 不可能生成实例. 我们把 __declspe 阅读全文
posted @ 2011-03-16 10:41 maxweii 阅读(1310) 评论(0) 推荐(1) 编辑
摘要: 在C++中,有三种类型的循环语句:for, while, 和do...while, 但是在一般应用中作循环时, 我们可能用for和while要多一些,do...while相对不受重视。 但是,最近在读我们项目的代码时,却发现了do...while的一些十分聪明的用法,不是用来做循环,而是用作其他来提高代码的健壮性。 1. do...while(0)消除goto语句。通常,如果在一个函数中开始要分配一些资源,然后在中途执行过程中如果遇到错误则退出函数,当然,退出前先释放资源,我们的代码可能是这样:version 1boolExecute(){//分配资源int*p=newint;boolbOk( 阅读全文
posted @ 2011-03-16 10:25 maxweii 阅读(261) 评论(0) 推荐(0) 编辑
摘要: 刚才发现论坛上面有网友问:如何通过编程实现修改EXE文件的图标,类似于 熊猫烧香 的效果!自己也对这个比较感兴趣网上找了找,找到了两种方法,可以满足大家都要求了,这里面收集转载过来,大家可以实践下,看看好不好用,起码有代码可以参考:方法一:通过API编程实现:这个问题以前在CSDN上解答过,但是当时只是提了提几个要用到的函数,自己并没有去动手写实现。前几天和某人讨论这个问题,他认为只有通过PE内部的资源偏移才好改,熊猫烧香就是这么搞的,而我坚持API也可以的观点。后来我想了想觉得这个问题值得记住,并自己亲手把它写出来并试验成功。贴出代码来给大家分享: EnableDebugPrivilge(S 阅读全文
posted @ 2011-03-15 14:33 maxweii 阅读(7151) 评论(2) 推荐(1) 编辑
摘要: 如果一个Custom Control控件没有和一个自定义的窗口类进行关联,这将导致你的对话框创建失败,无法现实出来。要使用Custom Control,我们必须先写一个自定义的窗口类,例如CPieChartCtrl,派生自CWnd,然后,在程序开始对这个窗口类进行注册,BOOL CPieChartCtrl::RegisterWindowClass(){WNDCLASS wndcls;HINSTANCE hInst = AfxGetInstanceHandle();if (!(::GetClassInfo(hInst, BITMAPVIEWER_CLASSNAME, &amp;wndcl 阅读全文
posted @ 2011-03-15 12:56 maxweii 阅读(759) 评论(0) 推荐(0) 编辑
摘要: 如果你想让VS6, VS2003,的MFC程序拥有XP风格(#add VS2005自动为xp风格)那么就学习下面的方法吧注:此方法必须是用VC6编译,vs2005转换编译vc6.0的会报错, 自动是xp风格(那么2005如何使用vc6风格呢?)微软同学永远是个把简单问题复杂化的孩子,这不,当年为了在 Windows XP 中同时支持两套控件风格(新的 XP 风格和旧的 95/98 风格),“发明”了 .manifest 这么个玩意,使以前的老程序也能自动使用上新的控件风格。然而在 VS 里,微软并不是总是默认帮我们自动生成这个破玩意儿。最早的办法就是手写一个 .manifest XML 文件, 阅读全文
posted @ 2011-03-14 17:28 maxweii 阅读(791) 评论(0) 推荐(0) 编辑
摘要: 一般我们写的程序都是以单个进程的方式来运行的,比较少涉及到多进程。特别是在windows下,因为Windows是按照线程来分配CPU时间片的,线程是最小的调度单位,所以在Windows下更多的用到多线程,在同一个进程里创建多个线程来执行不同的任务,达到充分利用CPU的目的。线程之间可以共享进程的资源,比如内存、变量,但是多线程有一个不好的地方,由于这些线程是在同一个进程空间里执行,所以只要一个线程奔溃,整个进程也就奔溃了,程序就退出了。多进程由于是在不同的进程空间里,一个进程奔溃,不会影响到其它的进程,但是进程之间要交换信息的话,就比较麻烦了,不像多线程可以简单的通过一个全局变量来通讯。为了解 阅读全文
posted @ 2011-03-08 09:51 maxweii 阅读(1195) 评论(0) 推荐(0) 编辑
摘要: 在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。 其格式一般为: #Pragma Para 其中Para 为参数,下面来看一些常用的参数。 (1)message 参数。 Message 参数是我最喜欢的一个参数,它能够在编译信息输出窗 口中输出相应的信息,这对于源代码信息的控制是非常重要的。其使用方法为: #Pragma message. 阅读全文
posted @ 2011-02-28 16:55 maxweii 阅读(290) 评论(0) 推荐(0) 编辑
摘要: 为了实现菜单的自绘,花了我几个小时,其实真正解决后又发现很简单。实现菜单的自绘只需要三个步骤:第一步:将所有菜单项设置为MF_OWNERDRAW,即自绘模式第二步:在WM_MEASUREITEM消息中设置菜单项的大小第三步:在WM_DRAWITEM消息中进行菜单项的绘制问题首先出现在了第一步,我要绘制的是一个上下文菜单,即右键菜单,要将菜单项设置为MF_OWNERDRAW,需要用到ModifyMenu函数,起始由于ModifyMenu函数的参数设置错误,导致程序怎么也响应不了WM_MEASUREITEM和WM_DRAWITEM消息,所以建议在使用ModifyMenu时对返回值进行检查。void 阅读全文
posted @ 2011-02-25 00:48 maxweii 阅读(1723) 评论(0) 推荐(0) 编辑
摘要: 如果你想在Windows平台上构建服务器应用,那么I/O模型是你必须考虑的。Windows操作系统提供了选择(Select)、异步选择(WSAAsyncSelect)、事件选择(WSAEventSelect)、重叠I/O(Overlapped I/O)和完成端口(Completion Port)共五种I/O模型。每一种模型均适用于一种特定的应用场景。程序员应该对自己的应用需求非常明确,而且综合考虑到程序的扩展性和可移植性等因素,作出自己的选择。我会以一个回应反射式服务器(与《Windows网络编程》第八章一样)来介绍这五种I/O模型。我们假设客户端的代码如下(为代码直观,省去所有错误检查,以下 阅读全文
posted @ 2011-02-22 23:48 maxweii 阅读(746) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 ··· 8 下一页