![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
VC开发
郑再鹏
勇气,智慧与勤奋
展开
-
透明位图实现
透明位图实现 我们在进行程序的界面设计时,常常希望将位图的关键部分,也既是图像的前景显示在界面上,而将位图的背景隐藏起来,将位图与界面很自然的融合在一起,本文介绍了透明位图的制作知识,并将透明位图在一个对话框中显示了出来。 一、实现方法 绘制"透明"位图是指绘制某一位图中除指定颜色外的其余部分,我们称这种颜色为"透明色"。通过将位图的背景色指定为"转载 2005-07-06 12:37:00 · 2189 阅读 · 0 评论 -
Windows多线程编程注意事项
近期开发工作中经常涉及到Windows系统下的多线程编程,下面说一点自己的感悟。一定要把工作线程(Work Thread)和界面线程(UI Thread)分开,工作线程不要涉及到界面操作,否则很容易导致界面的死锁。死锁产生的原因很多都是由于工作线程执行某操作耗时太久,阻塞了界面中的消息循环导致的。所以,一定要把这两种线程分清楚,涉及操作界面的代码一定要由界面线程处理。原创 2008-06-18 23:35:00 · 878 阅读 · 0 评论 -
C++中使用多态的代价
用VC开发一个数据处理项目一年多了,最近性能问题比较突出,于是想尽了办法来优化系统的内存占用。也因此仔细研究了一下虚函数对内存的占用。理论这里就不再多说了,网上有很多相关资料,说明虚函数对内存的占用情况。这里只举一个例子,来说明一下使用C++的多态在提供好的扩展性的同时对系统开销方面带来的代价。class CBase{public:CBase(void);virtual ~CBase(v原创 2006-12-06 15:34:00 · 1268 阅读 · 1 评论 -
关于copy构造函数和operator=
如果自己构造一个类,而且其中涉及到了动态内存分配,则十分有必要给出该类的copy构造函数和operator=。因为这样可以放置内存操作问题。比如创建一个新的类CItem,如下所示。 class CItem { public: CItem(); ~CItem();原创 2006-03-08 17:49:00 · 1593 阅读 · 0 评论 -
CPropertySheet去掉“帮助”等按钮的方法
在CPropertySheet的构造函数中改变m_psh的dwFlags属性,同时,改变该Sheet的每个Page的m_psp的dwFlags属性。代码如下所示: sheet.m_psh.dwFlags &= ~PSH_HASHELP; page.m_psp.dwFlags &= ~PSP_HASHELP; page.m_psp.dwFlags &= ~原创 2006-03-08 17:43:00 · 2707 阅读 · 0 评论 -
关于接口
接口中到底应该有什么?接口中到底该不该放置属性?在项目中我感觉接口中应该只放置接口方法,而且这些方法必须是abstract的,不能有任何实现,这样才是一个接口。而继承自该接口的不同类型的接口实现尽量不要直接继承这个接口,而需要有一个缓冲,即继承自一个派生自该接口的类。这个继承自该接口的类需要添加一些属性,并实现一些常用的接口方法,其他不同类型的接口实现从这个类上派生。这样的好处是可以保证接口就原创 2006-03-08 18:28:00 · 2625 阅读 · 0 评论 -
FlexGrid控件排序方法
首先,指定针对哪一行进行排序;然后设置排序方法即可,1为升序,2为降序。需要注意的是,如果数据量很大,排序之前可以先将FlexGrid控件设置为不可见,排序结束后再恢复为可见;或者SetRedraw(FALSE),排序后设置为TRUE。示例代码如下: m_flexgrid.SetRedraw(FALSE); m_flexgrid.SetCo原创 2006-03-08 17:38:00 · 4461 阅读 · 2 评论 -
设置VC6为默认调试器
安装了VC.Net,则系统默认的调试器就变成了VC.Net,通过修改注册表中的项目可以更改回VC6Win2000:注册表:HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/WinNT/CurrentVersion/AeDebug"C:/Program Files/Visual Studio/Common/MSDev/Bin/msdev.exe" -p原创 2006-03-08 17:44:00 · 2065 阅读 · 0 评论 -
在MDI窗口中放置TabCtrl的方法
在Resource中生成出一个DIALOGBAR,IDD_TAB_DLG_BAR,然后在其上面放置一个TabCtrl,IDC_TAB,然后在MainFrame当中定义一个CDialogBar变量m_wndTabBar,然后在MainFrame的OnCreate当中创建这个CdialogBar,m_wndTabBar.Create(this, IDD_TAB_DLG_BAR, CBRS_BO原创 2006-03-08 17:36:00 · 1406 阅读 · 0 评论 -
关于MO打印时不能正确打印用DC自己画出来的图片的问题的解决方案
MO的DC输出到显示器以及由显示器DC创建的MemoryDC时地图上的图片可以正常显示,但是输出到打印机DC和通过打印机DC创建的MemoryDC时地图上的图片不能正常显示。解决方法是先通过显示器的DC创建一个MemoryDC,然后将MO的DC导到这个内存DC中,然后拷贝到打印机的DC即可。原创 2006-03-08 16:52:00 · 1379 阅读 · 0 评论 -
vector vs deque
STL Deque 容器翻译:JiangMiao 出处: www.sssdf.com 时间: 2005-08-08 注: 转载请保证文章完整性原作者:Nitron 绪言这篇文章深入的角度认识 STL deque 容器。这篇文章将讨论一些有关deque的情况,比如在何种情况下你可以用deque代替vector以取 得更好的效果。读完这篇文章后,你应该能从容器膨胀,性能,内存分转载 2006-03-27 11:19:00 · 4896 阅读 · 0 评论 -
读取保存在剪切板中的图片(转)
Getting a CF_DIB or CF_METAFILEPICT from the clipboard and displaying itIntroductionI needed to display a bitmap from the clipboard which is in the CF_DIB format in one of my applications. The stand转载 2005-05-25 16:50:00 · 9984 阅读 · 4 评论 -
为什么需要将类中的属性定义为private类型
为了避免波纹效应,如果将类中的属性定义为public类型,当属性名称发生改变的时候,所有直接调用该属性的代码都需要进行修改。而将其定义为private类型,则别处访问只能通过该属性的访问接口进行访问,只要接口不变其他代码就不需要变化,保证了对该类中属性的修改只对该类的代码产生影响而不影响其他类。原创 2005-07-06 09:51:00 · 5167 阅读 · 0 评论 -
C++中如何正确使用include来降低代码的耦合度
C++代码中,当一个文件中需要用到另一个文件中定义的类、结构、常量等内容时,必须要用到include。 在使用include时,可以没有任何规则,随意include。但是这样做的结果不是循环嵌套,就是导致编译过程变得异常缓慢,或者产生了大量的PC-Lint告警。 所以,我们要为include设置一些规则。 在设置这些规则之前,首先说原创 2009-02-17 22:17:00 · 1703 阅读 · 0 评论