自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

七七八八

不上不下不三不四

  • 博客(18)
  • 资源 (1)
  • 收藏
  • 关注

原创 关于多线程中传递MFC窗口类指针时ASSERT_VALID出错的另类解决

在多线程设计中,许多人为了省事,会将对话框类或其它类的指针传给工作线程,而在工作线程中调用该类的成员函数或成员变量等等。但是在Debug版本时,在某些情况下,特别是在工作线程中调用pWnd->UpdateData(FALSE)时,会出现错误。这个错误的原因网上有许多地方讲到了,但是,令人失望的是,讲得好的没几篇,都是非要讲什么线程模块状态什么的,让人看得云里雾里(不过,说实话,也就是从这些文章中才

2006-01-25 12:08:00 4738 3

原创 ActiveX控件的MFC设计之旅-第20步

网页知道的并不多,不过似乎关于ActiveX控件在网页中的问题在所有关于ActiveX控件的问题中所占的比重相当的大,而其中最常问的就是,网页中弹出来的安全警告。关于这个问题,并不复杂,网上搜索一下可以找到一大片的回答,真正的是天下文章一大抄了。参考资料:http://www.newebug.com/article/cpp/2207.shtmlhttp://www.ccw.com.cn/htm/a

2006-01-21 16:44:00 1909

原创 ActiveX控件的MFC设计之旅-第19步

当突然发现其实持久化控件属性可以用很简单的方法实现时,实在不是一件很舒服的事,因为也就意味着前面的努力白搞了;幸好,发现这种简单的方法还是有缺陷的,只能用于IPersistStream接口的实现,而无法用于IPersistPropertyBag接口的实现,对于接口对象的持久化有点麻烦,等等。不管怎样,本文还是来讲一讲这种简单的Serialize方法。先从源码分析开始:实现IPersistStrea

2006-01-20 13:23:00 2374

原创 ActiveX控件的MFC设计之旅-第18步

在VB设计ActiveX控件时,UserControl可以访问容器提供的扩展对象Extender,比如VB,就提供了Visible,Tag,Name等等标准的扩展属性和ToolTipText等等其它扩展属性。那么在用MFC设计ActiveX控件时,是否也能利用到这个扩展属性呢?能,COleControl提供了一个函数LPDISPATCH GetExtendedControl()用来获得扩展对象的I

2006-01-19 16:43:00 1774

原创 用自己的文件在运行时持久化控件属性

http://www.codeguru.com/cpp/com-tech/activex/controls/article.php/c5519/Persist ActiveX Controls At Runtime乍一看这标题,吓我一跳,运行时持久化控件,这怎么可能,等看过内容,发现原来是只有CArchive参数的代码段,估计是要用自己的文件来持久化的,纯粹误导嘛;不过这段内容本身还是蛮有意思的,

2006-01-19 13:27:00 1455

原创 ActiveX控件的MFC设计之旅-第17步

刚翻CodeGuru,发现一在运行时显示控件属性页的内容http://www.codeguru.com/cpp/com-tech/activex/controls/article.php/c2649/试着照它的样子做了下来。还有上一步的例子tppb1.添加HRESULT GetPages(CAUUID *pPages)HRESULT CTppbCtrl::GetPages(CAUUID *pPag

2006-01-19 11:16:00 2987

原创 ActiveX控件的MFC设计之旅-第16步

在VB的属性视图中,还有一个有意思的功能是将属性列在不同的类别,如,外观,行为,数据等等。这种功能是怎么来的,我自己的控件中的自定义的属性是不是也能列在这些类别中,我能不能创建自己的类别呢。很简单,在你的控件中实现一个接口ICategorizeProperties就可以了,这个接口只有两个方法        HRESULT MapPropertyToCategory(DISPID dispid,

2006-01-19 10:26:00 1616

原创 ActiveX控件的MFC设计之旅-第15步

在VB和类似的包容器在属性视图中显示控件的属性,特别是枚举类型的属性时,会有一个下拉按钮,当点击该按钮时,会弹出一个列表框,显示一些友好的文字,供用户选择。而对于某些特殊的属性,如字体等,还会弹出一个对话框来供用户设置属性。要添加这种功能,你必须实现IPerPropertyBrowsing接口, typedef struct tagCALPOLESTR { ULONG c

2006-01-18 16:04:00 1695

原创 ActiveX控件的MFC设计之旅-第14步

OLE自动化集合类 在VB中有下面的这种语法Set docs = Application.DocumentsFor Each doc in docs   MsgBox doc.TitleNext在这里docs就是一个集合类,VB中还专门提供了一个Collection对象,可以组建你自己的集合类 当然,集合类还有许多特征,一个集合类都会有下面的几个方法或属性 Count只读属性 Item方

2006-01-17 16:20:00 2373

原创 ActiveX控件的MFC设计之旅-第13步

这一步我们将持久化一个接口,可能有些难度,因为用到了很多前面讲过的东西。在第1步中,我们就实现了一个具有层次结构的控件,但是,我们并没有给这个控件提供持久化,更不用说,持久化控件的所有层次了。在上一步中,实现了一个标准的图片接口(IPictureDisp)的持久化在这一步中,会综合第一步和上一步中的内容,实现一个我们自定义的接口的持久化。仍旧采用上一步中的Topp例子(和上一步的内容基本独立,可以

2006-01-16 15:29:00 2711

原创 ActiveX控件的MFC设计之旅-第12步

通常情况下,内制的图片属性页CLSID_CPicturePropPage能够满足需要,但有时候,也许你想有你自己的属性页来设置你的图片(IPictureDisp)类型的属性,本文将讲述如何做一个图片属性页 以上文中的例子为例(和上面的例子基本独立,可以用新的例子来做,只是懒得弄了) 1.添加Picture属性(get/set methods,LPPICTUREDISP类型),添加成员变量CPi

2006-01-14 12:32:00 2510

原创 ActiveX控件的MFC设计之旅-第11步

一般情况下,我们在设计状态下设计控件时,会打开属性页,然后输入几个值,来初始化控件,然后关闭属性页,这样在属性页中输入的值就保存起来了,然后下次再打开属性页,这些值又会加载进来,这个过程有个术语叫持久化。从表面上看,控件的持久化是在属性页中完成的呢,但事实上控件的持久化需要各方的配合,最终是由控件的容器来完成真正的持久化操作(保存或加载到某种介质,如磁盘文件等)。属性页在控件的持久化中并没有做多少

2006-01-13 14:00:00 2598

原创 ActiveX控件的MFC设计之旅-第10步

在上一步中我们实际是通过IDispatch接口的Invoke方法来访问控件的属性和方法的,虽然有COleDispatchDriver和其它一些辅助函数,但还是有些繁杂,能不能直接得到控件对象的指针,这样就可以直接访问控件了,甚至于控件的内部变量了?答案是肯定了。我们的控件派生自COleControl,COleControl派生自CWnd,CWnd又派生自CCmdTarget,我们的IDispatc

2006-01-12 16:19:00 2260

原创 ActiveX控件的MFC设计之旅-第9步

痛苦,已经写完了,Firefox报了错,只得重来。关于属性页,这里先翻译msdn上一段关于属性页的介绍。用户通过属性页来操作控件的属性,用户可以设置一个或多个属性页,每个属性页上可以显示控件的某些属性。这些属性既可以来自一个控件,也可以来自多个控件,也就是说一个属性页上可以显示多个控件的属性。每个ActiveX控件属性页都是一个进程内对象,拥有它自己的CLSID,每个属性页均实现了IPropert

2006-01-12 13:27:00 3725 1

原创 ActiveX控件中全局变量的一种用法

在一个程序中,用到了好几个相同控件的实例,现在希望能通过某种方法来唯一的标志这些控件实例,以便能为每一个控件提供一个正确的配置文件,这是件很容易的事,但问题是并不希望控件增加什么ID,Name之类的属性,而是希望能在控件内部自行的标志。这是我一个朋友问我的。初看了下,感觉这不太可能吧,后来,想到COleControl中有一个AmbientDisplayName,因此建议给这位朋友了。应该说,在VB

2006-01-11 12:34:00 2823

原创 动态添加的ActiveX控件如何响应事件

今天在csdn上看到一朋友问如何响应动态添加的控件的事件,搜索资料,发现对于一般的应用来说,使用ON_EVENT_RANGE就足以满足需要了,不过,还是希望能够更灵活的实现动态的响应,所以又经过对MFC源码一番探查,发现还是可以的,而且应该也不是很复杂的,下面分别来说说这两种方法例程为Tdax,对话框程序,使用了Microsoft UpDown Control 6.0控件作为控件,添加了Mouse

2006-01-09 16:38:00 7716 4

原创 ActiveX控件的MFC设计之旅-第8步

下面是jiangsheng(蒋晟.MSMVP2004Jan)老大的精彩回贴:    Knowledge  Base  Article  Q157437:  "Fireev.exe Fires  Events  from  a  Second  Thread"   http://support.microsoft.com/support/kb/articles/q157/4/37

2006-01-06 15:46:00 2002

原创 ActiveX控件的MFC设计之旅-第7步

这一步很需要一些COM基础,因为没有这个基础的话,可能会有为什么要做这个,有必要吗,之类的疑问的。这回我们要看看双接口,为MFC设计的控件添加双接口(双接口是什么就不解释了)。这里参考了msdn中的例子acdual,并且应用了例子里面的一些宏,这个例子可以直接搜索msdn找到,还有TN065: Dual-Interface Support for OLE Automation Servers参考。

2006-01-04 12:47:00 2509

crc算法代码(4-32位)

各种crc算法代码,包括直接计算和查表计算,以及查表生成代码

2021-10-09

空空如也

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

TA关注的人

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