Windows(COM/VC/WTL)
文章平均质量分 86
renwotao2009
努力程度之低,离拼天赋还远的很
展开
-
关于vs中debug和release的区别
遇到 Debug 成功但 Release 失败,显然是一件很沮丧的事,而且往往无从下手。如果你看了以上的分析,结合错误的具体表现,很快找出了错误,固然很好。但如果一时找不出,以下给出了一些在这种情况下的策略。 1. 前面已经提过,Debug 和 Release 只是一组编译选项的差别,实际上并没有什转载 2013-03-23 08:22:07 · 3863 阅读 · 0 评论 -
COM编程入门第二部分——深入COM服务器
本文为刚刚接触COM的程序员提供编程指南,解释COM服务器内幕以及如何用C++编写自己的接口。继上一篇COM编程入门之后,本文将讨论有关 COM服务器的内容,解释编写自己的COM接口和COM服务器所需要的步骤和知识,以及详细讨论当COM库对COM服务器进行调用时,COM服务器运行转载 2011-10-15 10:01:48 · 845 阅读 · 0 评论 -
COM技术初探(三)-- 一个真正的COM
作者: venture一、实现ISmipleMath,IAdvancedMath接口和DllGetClassObject()1.1 实现ISmipleMath和IAdvancedMath接口让我们将原来的CMath 类(CMath其实就是"COM技术初探(二)COM基础知识"里的那个CMath类)修改来实现ISmipleMath接口和IAdvancedMath接口。修改的地转载 2011-11-04 23:40:52 · 1043 阅读 · 0 评论 -
COM高手总结的八个经验和教训
在日常工作中,我看到过许多由不同开发人员编写的 COM 代码。我为许多富于创造性的使用 COM 的工作方式感到惊讶,有一些使 COM 工作的巧妙代码可能连Microsoft 都没有想到。同样,看到一些错误一次又一次地重犯,使我免不了心灰意懒。这些错误很多都与线程和安全有关,完全不成比例,而这也正是 COM 文档资料中最缺少的两个领域。如果不仔细计划,它们也是最可能遇到的并可能会绊住您的两个领域。转载 2011-10-22 12:27:15 · 901 阅读 · 0 评论 -
COM技术初探(二)
三、纯手工创建一个COM组件1、从建工程到实现注册在这一过程中我们将完成三个步骤:创建dll的入口函数,定义接口文件,实现注册功能1.1创建一个类型为win32 dll工程创建一个名为MathCOM的win32 dll工程。在向导的第二步选择"转载 2011-10-18 22:18:34 · 845 阅读 · 0 评论 -
进程间通信的11中方法
转自:http://www.cppblog.com/SpringSnow/archive/2009/02/03/72928.html进程间通信有以下方法Using named objectsWaiting for multiple objectsWaiting in a message loopUsing mutex objectsUsing semaphore objec转载 2013-01-28 21:53:51 · 719 阅读 · 0 评论 -
工作小记
在工作中遇到listview item 鼠标放上去后显示阴影的问题,使用mousemove 和mouseleave消息实现,经测试,发现:当连续响应mousemove消息时,mouseleave可能没有被响应。也就是说保存在成员变量的item index值可能连续被更新。解决:在mousemove中遍历listview,获取当前item的id来判断设置阴影其它item一概不设置为阴影。在mou原创 2013-01-29 19:51:38 · 677 阅读 · 0 评论 -
VC++窗口子类化
原文章地址:http://www.vckbase.com/index.php/wv/1658.html一.前言 在Widows编程中,如果我们想在窗口程序执行时改变它所包含的控件(对话框中的按钮、下拉菜单等等)的某些行为,采用窗口子类化技术是一个不错的选择。可以使用对己有控件派生子类的方式定义一个子类,而控件的消息处理则在新定义的子类里定义。适当使用子类化技术创建出容易使用的新窗口类,往往转载 2012-12-15 23:30:33 · 890 阅读 · 0 评论 -
窗口管理内幕
本文转自:http://www.vckbase.com/index.php/wv/1645Raymond Chen是微软最早会讲故事的工程师,我在美国的时候有幸能够跟他请教窗口管理器,这在我的编程生涯中起到了很大的作用,之后我将交谈的内容仔细的整理后,才写出这篇文章。在讨论窗口管理之前,我们先讨论窗口管理器中的一些基本设计要点,然后再通过一些代码来说明各种类型的功能,最后,利用Windows模转载 2012-12-12 23:12:14 · 790 阅读 · 0 评论 -
BSTR 字符串
BSTR是“Basic String”的简称,微软在COM/OLE中定义的标准字符串数据类型。 对于VC++,Windows头文件wtypes.h和WinNT.h中定义如下: typedef /* [wire_marshal] */ OLECHAR *BSTR;typ转载 2011-10-15 10:07:40 · 1133 阅读 · 0 评论 -
COM编程入门第一部分——什么是COM,如何使用COM
本文的目的是为刚刚接触COM的程序员提供编程指南,并帮助他们理解COM的基本概念。内容包括COM规范简介,重要的COM术语以及如何重用现有的COM组件。本文不包括如何编写自己的COM对象和接口。 COM即组件对象模型,是Component Object Model 取前三个转载 2011-10-15 07:52:37 · 834 阅读 · 0 评论 -
关于WTL中对WM_PAINT中的处理
本文转自:http://blog.csdn.net/kesummer/article/details/5937053 WTL8.0中的atlcrack.h对窗口消息进行了解码,因为windows消息一般由wParam和lParam传递,这样使用起来不方便。但对WM_PAINT解码成OnPaint(HDC hDC),hDC一直都为NULL,查看了atlcrack.h(也只能查看其代码了,因为没有转载 2011-11-06 13:52:30 · 1515 阅读 · 0 评论 -
同样愚蠢的错误:关于C2533错误
今天写了类如下class A{public: A();private:int m_int ;}A(){ m_int = 0;}悲剧的错误就发生了,总是有C2533的编译器错误可怜的我尽然没找到为什么错了,设置连类都没有仔细看,罪过啊原因:类声明少了分号后又查了网: 构造函数不能有返回类型(甚至不能有 void 返回类型)原创 2012-05-14 15:50:45 · 1017 阅读 · 0 评论 -
VC++技巧 在控制台程序中隐藏控制台窗口
大家都知道,当编写一个win32 console application时,当运行此类程序的时候默认情况下会有一个类似DOS窗口的console窗口,但是有的时候我们只想在程序中运行一段功能代码,不希望显示这个console窗口,让代码执行完毕之后程序自动退出.下面就介绍一下,如何隐藏win32 console application的console窗口因为此种方法是通过设置编译器的链接开转载 2010-04-11 18:10:00 · 2612 阅读 · 0 评论 -
COM技术初探(一)
作者: venture目录 目录一、COM是一个更好的 C++ 1. COM 是什么 2. 从 C++ 到 DLL 再到 COM 2.1 C++ 2.2 DLL 2.3转载 2011-10-15 13:54:18 · 661 阅读 · 0 评论 -
无法解析,该符号在函数 ___tmainCRTStartup 中被引用
error LNK2019: 无法解析的外部符号 _main,该符号在函数 ___tmainCRTStartup 中被引用. http://blog.163.com/anby1314125@126/blog/static/2887540420093953543843/ 本来程序是没有链接错误的。在vc2005下,单步跟踪调试时,结果出现了错误。怎么也改不掉。在网上google了一下。解决了转载 2011-11-04 22:51:18 · 8369 阅读 · 0 评论 -
IDispatch接口原理与应用
IDispatch接口原理与应用目录:IDispatch接口原理与应用...1目录:...1前言:...1IDispatch接口的定义:...1创建支持IDispatch接口的COM对象:...4标准方式调用IDispatch接口的方法:...5采用ATL智能指针类调用I转载 2011-11-16 21:57:49 · 845 阅读 · 0 评论 -
工作中总结
界面响应的问题:(转)1 昨天一直在调一段代码,流程是这样的:我在某个界面程序里先放置了一个对话框A,用户选择是或否。选择是后,会再弹出一个对话框B,并触发一个事件,然后再启动一个对话框C。这些对话框是模态的。 逻辑感觉很对,没有问题。但是界面的异常让我是头疼。A对话框选择是后,B对话框显示不完全,在C对户框显示的时候,文字显示又有异常。检查了一下,原来EndDialo原创 2013-01-28 21:34:25 · 780 阅读 · 0 评论 -
纯SDK方式截屏并且保存为BMP格式 .
网上MFC例子不少.在写一个BHO的时候好多都不可以用了 以下是纯SDK方式写的函数名称可见函数功能//截图代码void Screenshots(){ HBITMAP hDesktopCompatibleBitmap=NULL; HDC hDesktopCompatibleDC=NULL; HDC hDesktopDC=NULL; HWND hDesktop转载 2011-11-25 21:14:27 · 973 阅读 · 0 评论 -
父窗口隐藏、最小化时对子窗口(Parent或者Owner关系)的影响
文章转自:http://www.cnblogs.com/cswuyg/archive/2012/07/09/2582186.html半年多以前就遇到这个问题,当时由于时间关系没有做详细分析,又用其他方式打补丁解决问题,最近又遇到,总算不懒惰,写个demo看看到底怎么回事。一、 窗口的Parent、Owner关系 窗口有两种可能的上下级关系,一种是Owner,一种是parent。转载 2012-12-11 19:53:36 · 1584 阅读 · 0 评论 -
MFC子窗口和父窗口(SetParent,SetOwner)
文章转自:http://www.cnblogs.com/BeyondTechnology/archive/2011/03/25/1995934.html一、概念和区别 在windows系统中,每个窗口对象都对应有一个数据结构,形成一个list链表。系统的窗口管理器通过这个list来获取窗口信息和管理每个窗口。这个数据结构中有四个数据用来构建list,即child、sibling、par转载 2012-12-11 19:52:21 · 1329 阅读 · 0 评论 -
子窗口
1 没有父窗口的主窗口,被称为 top-level窗口2 主窗口所包含的窗口被称为子窗口3 子窗口被它的父窗口所剪裁,超越它父窗口的部分将不可见4 当窗口被销毁时,其子窗口被自动销毁5 当父窗口被移动时,其子窗口将随之移动另一种父窗口关系:所有者和被所有者关系6 被所有的窗口不被它们的所有者窗口剪裁7 被所有的窗口永远位于它们的所有者窗口之上子类化一个窗口1 S原创 2012-12-05 22:10:17 · 842 阅读 · 0 评论 -
Visual C++开发工具与调试技巧整理
<br />1.如何在Release状态下进行调试:<br />Project->Setting=>ProjectSetting对话框,选择Release状态。C/C++标签中的Category选General,Optimizations选Disable(Debug),Debut info选Program Database。在Link标签中选中Generate debug info复选框。<br /> 注:只是一个介乎Debug和Release的中间状态,所有的ASSERT、VERIFY都不起作用,函数调转载 2010-06-12 22:51:00 · 672 阅读 · 0 评论 -
MFC如何设置对话框的背景和字体颜色
<br />--- 方法一:调用CWinApp类的成员函数SetDialogBkColor来实现。 <br /><br />---- 其中函数的第一个参数指定了背景颜色,第二个参数指定了文本颜色。下面的例子是将应用程序对话框设置为蓝色背景和红色文本,步骤如下: <br /><br />---- ① 新建一个基于Dialog的MFC AppWizard应用程序ExampleDlg。 <br /><br />---- ② 在CExampleDlgApp ::InitInstance()中添加如下代码: <br转载 2010-06-14 10:14:00 · 1313 阅读 · 0 评论 -
VC的若干实用小技巧(四)
Visual C++6.0(5.0)开发工具功能非常强大,但是对于初学者来说,却有很多细节的问题需要注意。作者搜集整理了以下一些实用小技巧,希望对初学者有所帮助。 一,给控件设置焦点的两个方法 1.变量 m_edit1.SetFocus(); 2.控件ID GetDlgItem(IDC_EDIT1)->SetFocus(); 二,设置菜单某项的字体为粗体 CMenu* pMainMenu = AfxGetMainWnd()->GetMenu(); CMenu* pSubMenu = NULL; int i;转载 2010-06-04 17:50:00 · 734 阅读 · 0 评论 -
VC的若干实用小技巧(一)
将本人刚刚找到的一些VC的使用技巧贴出来,大家分享Visual C++6.0(5.0)开发工具功能非常强大,但是对于初学者来说,却有很多细节的问题需要注意。作者搜集整理了以下一些实用小技巧,希望对初学者有所帮助。 1:使用vc开发项目时,常会遇到这种情况: 即明明只改动了一个文件,却要把整个项目全部重新编译连接一次。刚刚连接好,一运行,又提示重新编译连接一次,非常讨厌。这是因为出现了未来文件的缘故。 解决方法: 找出对应文件夹下的debug目录,将未来文件全部delete, 再r转载 2010-06-04 17:46:00 · 939 阅读 · 0 评论 -
VC的若干实用小技巧(三)
Visual C++6.0(5.0)开发工具功能非常强大,但是对于初学者来说,却有很多细节的问题需要注意。作者搜集整理了以下一些实用小技巧,希望对初学者有所帮助。 1:使用中文VC(VC++在中文平台下可以使用中文,但编译后那些按钮上的、对话框上的中文都成ASCII码了) 因为VC++在安装时是默认按单字节字符安装的,而中文字符是双字节编码,自然就不能正确显示了。 解决方法: 将VC++光盘上DEVSTUDIO/SHAREDIDE/BIN/IDE路径下的中文资源语言模块Appwzchs.dll拷贝至硬盘De转载 2010-06-04 17:49:00 · 709 阅读 · 0 评论 -
VC6.0给控制台程序exe文件添加图标
(1)插入图标文件并保存为.rc文件插入—>资源—>ICon,引入,选择.ico图标文件,确定,然后点击保存按钮将图标保存为.rc文件,例如(ico.rc)(2)添加rc文件到工作空间并编译程序切换到FileView,右击"文件名files",选择添加文件到工程,定位到刚创建的ico.rc文件,确定,此时工作空间中会多出一个ico.rc资源(3)编译,debug文件夹中exe文件图标即被替换了原创 2010-05-22 23:07:00 · 6816 阅读 · 1 评论 -
Invalidate()函数
InvalidateRect只是增加重绘区域,在下次WM_PAINT的时候才生效InvalidateRect函数中的参数TRUE表示系统会在你画之前用背景色将所选区域覆盖一次,默认背景色为白色,可以通过设置BRUSH来改变背景色。Invalidate()之后:(MFC的,顺便了)OnPaint()->OnPrepareDC()->OnDraw()所以只是刷新在OnPaint()和OnDraw()函数中的绘图语句。其它地方没有影响。Invalidate标记一个需要重绘的无效区域,并不意味着调用该函数后就立刻进转载 2010-07-02 19:19:00 · 737 阅读 · 0 评论 -
动态链接库基础学习二
动态加载动态链接库使程序在需要时加载动态链接库时加载。尤其是很多动态链接库需要调用时,大大的加快了程序启动的时间。比隐式连接动态链接库更节省内存资源。首先我们接着重写上次add按钮的代码: void CDllTestDlg::OnBtnAdd() { // TODO: Add your control notification handler code here原创 2010-04-21 11:46:00 · 1229 阅读 · 0 评论 -
VC释放EXE资源文件
<br />1、工程A要释放的程序是一个简单的MessageBox,源码如下:#include <windows.h> int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd ) { MessageBox(NULL,"资源文件释放实例!","测试",MB_OK); return 0; } <br /> 编译生成MsgBox.e转载 2010-06-16 12:41:00 · 1589 阅读 · 0 评论 -
理解MFC中的“资源”概念
<br />Visual C++ 支持十种资源:加速键、位图、光标、对话框、HTML、图标、菜单、串表、工具条和版本信息。 <br /> 各种资源就是堆数据而已,最终都会被嵌入到EXE文件里的数据区中。需要的时候就通过函数加载到内存中使用。和数据库一样的。各种资源通过ID来唯一确定,就像数据库用关键字来确定一样。不同的资源由于类型不一样可以使用等值的ID,如同数据库里的每一个表单里的关键字值不唯一,但不同表单的关键字是允许一样的。 <br /> 资源销毁,指的是让资源根据它的使用转载 2011-05-13 13:45:00 · 854 阅读 · 0 评论 -
VC中动态改变控件和对话框字体(大小)
1 VC的对话框字体设置对所有控件都有效,你不能单独地改变某个静态文本的字体。对于你的问题,需要首先用CreateFont来建立一个字体对象,然后调用控件的SetFont,就可以了。 例子: 1、改静态文体的ID,如:IDC_STATIC1转载 2011-10-16 09:49:08 · 3181 阅读 · 0 评论 -
Visual C++开发工具与调试技巧整理 .
文章来源:http://www.ttadd.com/diannao/HTML/235896.html 1.如何在Release状态下进行调试 Project->Setting=>ProjectSetting对话框,选择Release状态。C/C++标签中的Category选General,Optimizations选Disable(Debug),Debut info选Program D转载 2012-04-08 10:12:13 · 639 阅读 · 0 评论 -
Visual C++编译器常用选项设置 .
文章来源:http://www.ttadd.com/diannao/HTML/235941.html 编译参数的设置。主要通过IDE的菜单项Project->Settings->C/C++页来完成。我们可以看到这一页的最下面Project Options中的内容,一般如下: /nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /转载 2012-04-08 10:10:53 · 778 阅读 · 0 评论 -
窗口刷新问题(WM_PAINT、BeginPaint、EndPaint的说明)
在某些情况下,显示区域的一部分被临时覆盖,Windows试图保存一个显示区域,并在以后恢复它,但这不一定能成功。在以下情况下,Windows可能发送WM_PAINT消息: Windows擦除覆盖了部分窗口的对话框或消息框。 菜单下拉出来,然后被释放。 显示工具提示消息。 在某些情况下,Windows总是保存它所覆盖的显示区域,然后恢复它。这些情况是: 鼠标光标穿越显示转载 2012-04-08 08:45:59 · 1081 阅读 · 0 评论 -
windows动画窗体
文章转自:http://www.cppblog.com/shly/archive/2011/10/16/158412.html 同往常一样,先放一章效果图,这鸭子是会飞的哦。效果类似常见的QQ宠物、360精灵之类的。不说废话了,还是说重点。================================================== 要实现这种效果转载 2011-12-18 22:13:18 · 765 阅读 · 0 评论 -
在对话框(CDialog)中使用分割窗(CSplitterWnd)
可以使用以下三个步骤在对话框中创建分割窗:1. In the OnCreate function or your CDialog, register a new WindowClass by calling "AfxRegisterWndClass". 在你的CDialog类的OnCreate函数中使用AfxRegisterWndClass注册一个新的窗口类。2.转载 2011-11-28 21:29:44 · 2801 阅读 · 0 评论 -
dll源代码调试全攻略~包括ISAPI,API HOOK,GINA等dll的源代码调试方法~
本文转自:http://blog.csdn.net/kesummer/article/details/2580114先明白一点的是,只要有模块(exe,dll,sys等是模块)对应的正确符号文件,我们都可以使用代码去调试。1:普通dll 首先写一个exe加载要调试的dll,下好断点后再按f5,会弹出一个框,让你输入调用该dll的程序,我们只要填入加载该dll的exe的路径即可。或者在p转载 2011-11-06 13:56:28 · 961 阅读 · 0 评论 -
WM_COPYDATA实现进程间数据共享
本文转自:http://www.cppblog.com/TechLab/archive/2005/12/30/2272.html 实现进程间数据共享除了常用的内存文件映射外,对于一些非文件的数据共享可以直接使用消息WM_COPYDATA。如果需要在进程A传递数据到进程B,简单的实现如下:在进程A中:CString strDataToSend = _T( "Hello" );转载 2011-11-27 13:53:25 · 705 阅读 · 0 评论