- 博客(21)
- 收藏
- 关注
原创 VC6.0和VS2003对CWinThread类消息映射的不同
在CWinThread类中,vc6.0中添加消息,在消息映射中添加ON_MESSAGE(MsgId,OnFun),消息处理函数的格式为:LRESULT OnFun(WPARAM wParam,LPARAM lParam);在vs2003中,消息映射为:ON_THREAD_MESSAGE(MsgId,OnFun),消息处理函数的格式为:void OnFun(WPARAM wParam,L
2011-06-03 15:42:00 652
转载 MFC子窗口和父窗口(SetParent,SetOwner)
<br />一、概念和区别 <br /> 在windows系统中,每个窗口对象都对应有一个数据结构,形成一个list链表。系统的窗口管理器通过这个list来获取窗口信息和管理每个窗口。这个数据结构中有四个数据用来构建list,即child、sibling、parent、owner四个域。<br /> 所以我们可以看到,窗口之间的关系有两种:owner-owned 关系和 parent-child关系。前者称之为拥有/被拥有关系,后者称之为父/子关系。在这篇文字中,我把owner窗口称之所有者窗
2011-05-17 18:17:00 550
转载 CString类的GetBuffer,ReleaseBuffer 函数
<br /><br />CString str = "abcde/0cde";<br />输出字符串的值为: abcde<br />而字符串的长度为 s.GetLength() 的值为: 5<br />这是因为CString对象在赋值时只检查到'/0',后面的忽略了, 也就是说实际对象str内容为"abcde".<br />而str真正的存储空间为6(字符串以'/0'结尾).<br />所以说在字符长度和实际的空间是不一样的. 好!别跑!<br />请看下面有趣的程序:<br /> <br />CStrin
2011-05-16 13:13:00 617
转载 常见RGB颜色表
<br /><br />RGB值RGB值RGB值黑色000#000000黄色2552550#FFFF00浅灰蓝色176224230#B0E0E6象牙黑413633#292421香蕉色22720787#E3CF57品蓝65105225#4169E1灰色192192192#C0C0C0镉黄25515318#FF9912石板蓝10690205#6A5ACD冷灰128138135#808A87dougello23514285#EB8E55天蓝135206235#87CEEB石板灰112128105#708069fo
2011-05-12 15:16:00 941
转载 提取CImageList中的图片到CBitmap,图片缩放(转)
<br /><br />功能简介:使用 CImageList 类的 Add 方法将图片资源加入,而后将资源读取出来,图片资源缩放。<br />1. 生成 Bitmap 资源。<br />2. 创建一个 CImageList 对象。<br />3. 将 Bitmap 图片资源加入到 CImageList 中。<br />4. 得到 CImageList 中的图片资源。<br />5. 缩放图片。<br />// 生成 Bitmap 资源<br />CBitmap m_Bitmap;<br />m_Bitma
2011-05-11 17:33:00 1121
原创 OnCreate和PreSubclassWindow摘录
<br /><br />1.在对话框模板添加控件和动态创建控件对PreSubclassWindow和OnCreate调用的不同<br />通过在对话框模板添加控件不会调用控件的OnCreate函数,程序生成对话框最终是调用windows api的CreateDialog或者DialogBox去创建的,这样在对话框创建的时刻,所有控件都是标准的windows控件,所以那时候的消息WM_CREATE也只会触发默认的窗口回调函数,而不会调用到子类的OnCreate。然后要怎么把这个控件替换成自定义的控件,其实只要
2011-05-03 18:10:00 2181
转载 VC中动态添加控件
<br /><br />动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的。<br />一、创建动态控件: 为了对照,我们先来看一下静态控件的创建。 放置静态控件时必须先建立一个容器,一般是对话框,这时我们在对话框编辑窗口中,从工具窗口中拖出所需控件放在对话框中即可,再适当修改控件ID,设置控件属性,一个静态控件就创建好了,当对话框被显示时,其上的控件也会显示。 静态控件不需要调用Create()函数来创建。 而创建动态控件有很大不同,以下以按钮为例,看一下动态控件的创建
2011-05-03 17:33:00 2761
转载 Create your own controls - the art of subclassing
<br /><br />By Chris Maunder<br /><br />An introduction to subclassing the Windows common controls using MFCIntroduction<br />程序员们可以用许多windows通用控件提供的功能方便的编程,这些控件从list到button甚至是进度条都是可以直接拿来用的.即便如此,仍然有时候你所选择的标准控件并不够用.欢迎学习子类化控件这个经典技法. <br /><br />子类化一个窗体控件同子类化
2011-05-03 17:31:00 681
转载 DECLARE_DYNAMIC DECLARE_DYNCREATE DECLARE_SERIAL
<br /><br />DECLARE_DYNAMIC : 对应得类可以用RUNTIME_CLASS宏得到一个CRuntimeClass结构,可以用IsKindof判断其类型,类似于typeof <br /><br /><br />DECLARE_DYNCREATE:表示这个类可以用上面那个CRuntimeClass创建自身, <br /><br />CRuntimeClass * pClass = RUNTIME_CLASS(CMyClass); <br />CMyClass * pObj = (CMyC
2011-05-03 17:28:00 784
转载 OleLoadPicture
用API OleLoadPicture来加载JPG、GIF格式的图片(注:不支持PNG格式,另外GIF只能加载第一帧,且不支持透明) OleLoadPicture 函数实际上创建了一个IPicture类型的COM接口对象,然后我们可以通过这个COM接口来操作图片(实际上你也可以用API OleCreatePictureIndirect来加载图片,不过相比而言OleLoadPicture函数简化了基于流的IPicture对象的创 建)。 下面是示例代码:(注:由于只是用来示例,代码中省去了出错情况的处理)
2011-04-26 14:25:00 870
转载 VC 双缓冲绘图
在图形图象处理编程过程中,双缓冲是一种基本的技术。我们知道,如果窗体在响应WM_PAINT消息的时候要进行复杂的图形处理,那么窗体在重绘时由于过频的刷新而引起闪烁现象。解决这一问题的有效方法就是双缓冲技术。 因为窗体在刷新时,总要有一个擦除原来图象的过程OnEraseBkgnd,它利用背景色填充窗体绘图区,然后在调用新的绘图代码进行重绘,这样一擦一写造成了图象颜色的反差。当WM_PAINT的响应很频繁的时候,这种反差也就越发明显。于是我们就看到了闪烁现象。 我们会很自然的想到,避免背景色的填充是
2011-04-25 13:30:00 438
转载 PreSubclassWindow作用
<br /><br />通常情况下窗口是由用户创建的 <br /><br />CWnd::Create(..) <br />●在此流程中,MFC提供一个机会"PreCreateWindow()供用户在创建前作点手脚 <br /><br />而对于对话框等,窗口是通过subclass方式交给用户的 <br />系统读入对话框模板,建立其中各个子窗口 <br /><br />然后将各子窗口的 消息处理函数替换成 对应的C++对象 的消息处理函数 (Subclass:子类化,或"接管") ,然后,这个子窗口就会按
2011-04-21 09:26:00 619
转载 CToolTipCtrl使用
<br /><br />ToolTip是Win32中一个通用控件,MFC中为其生成了一个类CToolTipCtrl,总的说来其使用方法是较简单的,下面讲一下它的一般用法和高级用法。<br />一般用法步骤:<br />添加CToolTipCtrl成员变量 m_tt。<br />在父窗口中调用EnableToolTips(TRUE);<br />在窗口的OnCreate(或者其他适当的位置)中向ToolTip中添加需要显示Tip的子窗口,并同时指定相应的显示字串CToolTipCtrl::AddTool(pW
2011-04-21 09:21:00 463
转载 CInternetSession的简单使用
<br />CInternetSession<br /> 使用类CInternetSession 创建并初始化一个或多个同时的Internet 会话。如果需要,还可描述与代理服务器的连接。如果Internet连接必须在应用过程中保持着,可创建一个类CWinApp的CInternetSession成员。一旦已建立起Internet 会话,就可调用OpenURL。CInternetSession会通过调用全局函数AfxParseURL来为分析映射URL。无论协议类型如何,CInternetSession 解释
2011-04-19 14:47:00 4532
转载 C++字符串完全指引之二 —— 字符串封装类
<br /><br />原著:Michael Dunn<br /><br />作者:Chengjie Sun<br /><br />原文出处:CodeProject:The Complete Guide to C++ Strings, Part II<br /><br /><br /> 引言<br /><br /> 因为C语言风格的字符串容易出错且不易管理,黑客们甚至利用可能存在的缓冲区溢出bug把C语言风格的字符串作为攻击目标,所以出现了很多字符串封装类。不幸的是,在某些场合下我们不知道该使用哪个字符串
2011-04-19 09:36:00 681
转载 C++字符串完全指引之一 —— Win32 字符编码
<br /><br />原著:Michael Dunn<br /><br />翻译:Chengjie Sun<br /><br /><br />原文出处:CodeProject:The Complete Guide to C++ Strings, Part I<br /><br /> 引言<br /><br /> 毫无疑问,我们都看到过像 TCHAR, std::string, BSTR 等各种各样的字符串类型,还有那些以 _tcs 开头的奇怪的宏。你也许正在盯着显示器发愁。本指引将总结引进各种字符类型的
2011-04-19 09:34:00 1009
转载 skin magic
典型组合是3个文件: SkinMagicTrial.h 头文件,在需要换肤的类定义文件中包含 SkinMagicTrial.lib 静态库文件,在需要换肤的类定义文件中引入 SkinMagicTrial.dll 动态库文件,放在项目输出目录(exe所在目录)或系统目录中 参考SkinMagic的Demo例程就能看出用法很简单 // 初始化SkinMagic库 InitSkinMagicLib( AfxGetInstanceHandle(), _T("MYEXE") , NULL,NUL
2011-04-18 11:25:00 441
转载 分割文件名 _splitpath() 函数
<br />_splitpath 函数分割路径为:驱动器,目录,文件名(五扩展名),扩展名. 使用_makepath 完成驱动器,目录,文件名(五扩展名),扩展名合成一个全路径.<br />//设你用文件对话框取得了一个路径 c:/file/a.c 存储在 char path[]中.<br /><br />char drive[4];//驱动器号 MAX_DRIVER<br />char dir[MAX_PATH];//目录<br />char title[MAX_PATH];//文件标题<br />cha
2011-04-18 11:19:00 579
转载 GetModuleFileName 函数
<br /><br />GetModuleFileName<br />HMODULE hModule = ::GetModuleHandle(NULL);<br />if (hModule != NULL)<br />{<br /> ::GetModuleFileName(hModule, strRet.GetBuffer(MAX_PATH), MAX_PATH);<br /> strRet.ReleaseBuffer();<br />}<br />GetModuleFileName函数在 开发
2011-04-18 10:55:00 766
转载 VC通过命令行参数禁止用户双击运行exe
<br /><br /> 由于项目需要,需要在主程序中调用一个外部A.exe程序,而A.exe程序因为通过开发商提供的SDK来编写的,并且无法与现有项目的开发平台兼容,不得已只有通过主程序利用CreateProccess来调用。但是前段时间发现一个问题,如果用户直接在主程序目录下双击运行A.exe,可能会导致程序界面某些地方显示出现问题。<br /> 基于上面的问题,要想办法做到:用户双击运行主程序目录下的A.exe后,A.exe不会直接运行,只有通过主程序相应的菜单操作,传入特定的命令行参数
2011-04-18 10:47:00 914
转载 ActiveX调用 js脚本方法
<br />Q:<br />ActiveX中如何调用Script函数?如何访问Document,Browser,浏览器地址,Cookie...<br /><br />A:<br />在ATL写的ActiveX中,重载IOleObject::SetClientSite()方法。<br />http://support.microsoft.com/kb/181678/en-us<br />在MFC写的ActiveX中,重载COleObject::OnSetClientSite()方法。<br />http://
2011-04-18 09:10:00 3614
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人