VC界面开发
文章平均质量分 65
oeichenwei
这个作者很懒,什么都没留下…
展开
-
VC创建快捷方式
CreateShortCut(LPCSTR lpszPathLink, LPCSTR lpszPathObj, LPCSTR lpszDesc){ HRESULT hres; IShellLink* psl; // Get a pointer to the IShellLink interface. hres = CoCreateInstance(CLSID_She原创 2005-02-15 16:38:00 · 2285 阅读 · 1 评论 -
使用CFileDialog GetOpenFileName选择文件夹
比较简单也比较传统的方式是使用SHBrowseForFolder,不过说实话这个大概是微软最差的一个控件了,用过的人都知道!完全没有GetOpenFileName那么好用的界面,但是GetOpenFileName不支持文件夹的选择,只能选择文件!本文提供了一个比较好的解决方法:1、自Vista之后的操作系统,提供了IFileDialog接口,事实上GetOpenFileName缺省也使用这原创 2010-05-09 10:05:00 · 2428 阅读 · 0 评论 -
创建你自己的PDB符号服务器create your pdb symbol server
使用Windbg或者VS2008根据dump文件(如何创建c++ Minidump)来调试程序的话,需要PDB文件。但是,每天都在build,就有很多版本的PDB,文件,怎么进行管理呢?微软的系统DLL的符号服务器,我想大家都用过,这个很好!如何搭建自己的符号服务器呢?首先下载 Debugging Tools for Windows 里面有一个symstore.exe;用法如下:原创 2009-06-04 22:02:00 · 2691 阅读 · 1 评论 -
VS2008 Addinl里面 显示自定义图标
在Visual Studio的ADDIN里面,如果想为自己的TOOLBAR上面的图标自己定义的话,需要定制一个资源DLL文件,并将该DLL文件放置在和addin对应的1033目录下面,在注册的时候增加: val SatelliteDllName = s CppCleanUI.dll val SatelliteDllPath = s %MODULE_PATH%详细原创 2009-05-26 12:58:00 · 458 阅读 · 0 评论 -
ATL COM控件开发中在RGS文件里面使用变量
最近在做一个Visual Studio的Add-in Toolbar,目的是进行简单的代码静态检查和部分测试自动化代码的生成。在控件注册的时候,ATL控件会使用资源文件里面的一个RGS文件(也就是注册表导入文件进行注册)。我发现在里面有使用%MODULE%这样的变量,这个会在执行DllRegisterServer的时候被解释成DLL的路径。下面是一个实例:HKCU{ NoRemove原创 2009-05-26 12:47:00 · 1146 阅读 · 0 评论 -
C++ Release版崩溃事后调试
我们看到微软从IE6开始当程序崩溃(Crash)的时候弹出一个对话框询问是否发送给微软。对于大规模部署的客户端会碰到各种各样的疑难杂症很难预料,而且解决更加困难,如果你做的程序客户量非常大,建议采纳这个非常cool的设计。在自己的程序里面增加这个支持并不困难,因为微软已经提供了SDK。参考如下工程:http://www.codeproject.com/KB/debug/postmortem原创 2009-04-14 16:56:00 · 1009 阅读 · 0 评论 -
解决VS2008不能加载WPF设计器的问题
无法将属性“Source”的字符串“pack://application:,,,/Microsoft.Windows.Design.Developer;component/Images/Fit_To_Window.png”转换为“System.Windows.Media.ImageSource”类型的对象。 位图颜色上下文无效。 标记文件“Microsoft.Windows.Design.Dev原创 2009-01-17 22:13:00 · 1716 阅读 · 0 评论 -
解决Windows 2k Load 32bit Icon的问题
在Win2K下面Load一个32bit的图标会出现黑边,下面给出的这个函数可以取代LoadImage加载32位ICON但是在2K下面不会出现黑边:) #include "StdAfx.h"// Copied from amvideo.h#define LINE_BYTES( Width, BitCt ) (long)( ((long)Width*BitCt+31)/32 *原创 2007-04-26 10:20:00 · 818 阅读 · 0 评论 -
Rundll32使用技巧 使用Shell打开选择文件对话框以及其它
Rundll32包含了很多系统的指令,下面是我摘录的关于Rundll32可以执行的命令集合。To bring up the "Format - 3 1/2 Floppy (A:)" window: rundll32.exe shell32.dll,SHFormatDrive To bring up the Control Panel "Date/Time Properties" wind转载 2007-01-29 16:20:00 · 1502 阅读 · 0 评论 -
由于dll导致的奇异CRASH
之所以讲是奇异的crash,是因为我开发这么长时间还是第一次遇到这样类型的crash,开始的时候怀疑是由于在DLL中分配的内存在其它的dll中释放导致的,或者由于DLL已经卸载导致分配的内存不可用导致的,然后,经过实验,居然不是,这下可让我没了头脑。经过仔细分析发现,是因为在dll中分配了一个对象指针,该对象的内存区域还是可用的,但是dll已经卸载,导致该对象的代码区域已经卸载,从而无法正确的原创 2007-01-29 13:48:00 · 593 阅读 · 0 评论 -
C++ member function pointers and others
最近一直在研究WTL、MFC的消息封装机制,这里面用到了两个核心技术:1. 成员函数指针;其实要实现一个类似于WTL的消息封装机制只需要300行代码左右,成员函数指针的调用效率要低于普通的函数指针,原因是要计算this指针,这就涉及到重载,虚函数表等。我在使用中主要发现两个要点,第一个是成员函数指针的大小是可变的,(当然也可以通过设置编译选项来使得总是使用最大值,但是缺省的是优化的选项),原创 2006-03-25 19:59:00 · 1005 阅读 · 0 评论 -
VC ListCtrl中嵌入进度条
VC中在listctrl中嵌入进度条,截图如下:其实要实现这个非常容易,以下是自绘ListCtrl的代码,首先继承CListCtrl,然后增加函数:void CProcessList::OnCustomDraw(NMHDR *pNMHDR, LRESULT *pResult){ //draw each item.set txt color,bkcolor.... NMLVCUSTOMDRAW* p原创 2005-03-17 11:18:00 · 2767 阅读 · 0 评论 -
VC Tray Icon的使用
为CMainFrame增加如下的成员变量: NOTIFYICONDATA m_trayIcon; CMenu m_menuTray;在CMainFrame的OnCreate函数末尾增加: m_trayIcon.cbSize = sizeof(NOTIFYICONDATA); m_trayIcon.hIcon = (HICON)LoadImage(AfxGetApp()->m_hInstance,原创 2005-02-15 16:34:00 · 2674 阅读 · 2 评论 -
VC实现类似Acrobat竖排TabCtrl
像UltraEdit那样横着排的TabCtrl看到挺多的,应用也很广泛,可是有的时候界面排布需要竖着的TABCTRL,像Acrobat,MSN,QQ等,我最近因为应用需要所以作了一个竖排的TabCtrl,具有和UltraEdit那样横排Ctrl的类似功能,可以动态增加删除Button;选择消息,双击关闭,右键消息等;当前还缺ToolTip的支持;也不支持横排(在设计的时候是希望都能支持的,不过时间原创 2005-02-23 10:04:00 · 1304 阅读 · 2 评论 -
__declspec(dllimport)的作用
<br />本文讨论Windows DLL编程中的导入:__declspec(dllimport)。 作者:tyc611,2007-05-27 在Windows DLL编程时,可使用__declspec(dllimport)关键字导入函数或者变量。 函数的导入 当你需要使用DLL中的函数时,往往不需要显示地导入函数,编译器可自动完成。但如果你显示地导入函数,编译器会产生质量更好的代码。由于编译器确切地知道了一个函数是否在一个DLL中,它就可以产生更好的代码,不再需要间接的调用转接转载 2010-12-28 09:13:00 · 765 阅读 · 1 评论