![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Windows界面编程
less@more
.....
展开
-
向RichEditCtrl中添加图片和URL功能
最近在写一个工具,需要用到RichEditCtrl控件,这个控件需要支持图片和URL超链接功能。查看了Codeguru和codeproject网站中文章的描述,其中实现的主要部分代码如下。 if (FAILED(CoInitialize(NULL))) { return ; } HBITMAP hBitmap =(HBITMAP)LoadImage (NULL, str, IMA原创 2009-05-14 18:18:00 · 1273 阅读 · 0 评论 -
CListCtrl行高的修改
<br />网上修改CListCtrl项高度的方法一般是扩大字体,及用图片将项高度撑大.<br />这两种方法虽然简单,但是效果却不是很理想.一种比较理想的方法是自画CListCtrl,不过方法相对来说比较复杂.<br />要修改CListCtrl的列表项高度,我们需要自己添加 MeasureItem 的消息响应函数,对应的消息是 WM_MEASUREITEM+WM_REFLECT_BASE, 而不是 WM_MEASUREITEM.在CListBox里我们可以直接在 ClassWizard 里将此消息响应添转载 2010-08-18 16:23:00 · 1129 阅读 · 0 评论 -
CListCtrl 的customdraw和ownerdraw
自行绘制 ClistCtrl 的列表项,可以利用列表框的 NM_CUSTOMDRAW 消息,该消息由控件向它的父窗口发送,告诉父窗口它的绘图操作。 如果绘图操作不需要父窗口参与,可以使用该控件的 ON_NOTIFY_REFLECT 宏处理它的 NM_CUSTOMDRAW 消息。 它的处理函数的参数中包含 NMHDR,在 CUSTOMDRAW 的通知下 NMHDR 可以被转换成为 NMLVCUSTOMDRAW 结构,该结构包含了列表控件中需要自绘区域的全部信息:typedef struct ta转载 2010-08-18 16:29:00 · 8766 阅读 · 0 评论 -
如何在VisualC++中检测和隔离内存泄漏
具有动态的分配和释放内存的能力是C/C++程序语言的重要特色之一。VisualC++ debugger和CRT库提供了一系列有效的检测和鉴定内存泄漏的工具。 设置内存泄漏检测 检测内存泄漏的基本工具是调试器和CRT调试堆函数。为了使用调试堆函数,在你的程序中你必须含有下面的说明: #define _CRTDBG_MAP_ALLOC原创 2010-05-21 14:25:00 · 610 阅读 · 0 评论 -
vc 透明图片
对于png的图片,可以直接看上一篇文章,在这里主要将的是bmp图片。贴bmp图片方法都是一样的。CDC dc=GetDC() //设备dcCDC dcMem //内存dcdc.CreateComptibleDC(dc); //使用内存和dc设备兼容CBitmap cBitmap;cBitmap.LoadBitmap(IDB_BITMAP); //加原创 2010-05-18 11:44:00 · 1334 阅读 · 0 评论 -
实现苹果窗口界面
有没有想过在Windows环境下实现苹果电脑窗口界面的风格?下面就以实现苹果电脑窗口风格为例,进行一次奇妙的旅行。 原 理 仔细观察苹果窗口,发现和Windows窗口的区别主要体现在标题栏和控制按钮(即最小化、恢复、关闭按钮)。所以我们应该把主要精力集中在这两点上,直接对Windows窗口已有的标题栏和控制按钮进行修改。 由于标题栏和控制按钮都属于非客户区,所以关键是获得非客户区的CDC,可以通转载 2010-05-11 16:15:00 · 1351 阅读 · 0 评论 -
如何在mfc dll中加入dllmain
通过向导创建一个带有mfc的dll,你会发现没有dllmain。那么如何使用dllmain的呢。请看下面解说。引用的是ms:http://support.microsoft.com/kb/q148791/通过设计,MFC 常规 dll 具有由 MFC 自动提供一个默认 DllMain 函数。规则 dll 不应提供自己 DllMain。 任何初始化,这是必需的 DLL 加载时应进行原创 2010-05-11 10:22:00 · 6389 阅读 · 0 评论 -
unicode工程中使用CFile 和CStdioFile写入字符串bug
今天在搞unicode工程,发现一个问题。就是使用CStdiofile 使用WriteString写入CString但是不能写入中文汉字,很奇怪。代码如下: CStdioFile stdFile;stdFile.Open(_T("c://"),CFile::modeCreate|CFile::modeWrite);if(stdFile.m_hFile==CFile::hN原创 2010-01-12 14:15:00 · 1681 阅读 · 0 评论 -
根据可执行文件名,获得这个文件的图标
根据可执行文件名,获得这个文件的图标 SHFILEINFO shFileInfo = {0}; ::SHGetFileInfo(szProcessPath,0,&shFileInfo,sizeof(SHFILEINFO),SHGFI_ICON); shFileInfo.hIcon保存的,就是这个可执行文件的图标句柄,可以直接拿来用 比如调用CImageList的成员函数int CImage原创 2009-08-28 12:53:00 · 833 阅读 · 0 评论 -
如何隐藏显示在任务栏中的对话框程序
最近有个朋友做了一个基于对话框的小程序,大家知道,一般具有用户界面的 Windows 程序运行起来后,通常都会在任务栏里体现出来。我的这个朋友不想让她做的对话框程序运行的时候显示在任务栏里。问我如何隐藏?我参考了 MSDN 后告诉她说使用 WS_EX_TOOLWINDOW 扩展窗口式样。她按照我说的方法试了一下,结果没有成功。后来我琢磨了半天,发现这件事情并不像文档中说的那么简单。MSDN转载 2009-08-20 16:42:00 · 1263 阅读 · 0 评论 -
窗口贴图
如何贴图了,懒得说了。反正就是使用BltBit或者StretchBlt。代码DisplayStretchDDB(CDC *pDC, UINT uResID, CRect rect){ CDC dcMem; //建立内存设备 dcMem.CreateCompatibleDC(pDC); //使内存设备和pDC设备兼容 CBitmap bitmap;原创 2009-08-20 09:56:00 · 940 阅读 · 0 评论 -
改变窗口外观
在www.vckbase.com中有一些介绍,如何改窗口外观。我就不赘述了。可以多看看代码。我这里给出一个将对话框改成圆角对话框的代码。其实主要是设置对话框区域。你也可以化成多边形的。 //创建圆角矩形窗口 CRect rcDialog; GetClientRect(rcDialog); // The following code Creates the area and a原创 2009-08-20 10:08:00 · 829 阅读 · 0 评论 -
如何让窗口停放在桌面的右下角
其实这个问题很好解决,代码也就只有几行。首先就是获取桌面工作区,然后获取窗口本身区域,进行计算之后通过移动窗口就搞定了。MoveToBottom(){ CRect rcDesktop,rcWin,rc; SystemParametersInfo(SPI_GETWORKAREA,0,&rcDesktop,0); //获取桌面大小 GetWindowRect(rcWi原创 2009-08-20 09:46:00 · 796 阅读 · 0 评论 -
用VC++实现软件的多语种支持
前言 只用一套源代码就可以方便地支持多种文字和多个地域,那么这个软件就可以方便地被翻译成本地版本,这个过程叫做地域化(Localization)。怎样才能不修改任何源代码就使之能动态地转换到不同的地域资源上呢?那就是使用Windows的程序特性之一--资源。把在软件中用到的可见资源维系在一个资源DLL(Dynamic Link Library动态链接库)中,就能使地域化很容易地被实现,因为它把具转载 2009-05-19 19:23:00 · 797 阅读 · 0 评论 -
Spy++的搜索窗口程序
大家都用过Vc自代的工具Spy++,它可以通过鼠标来捕捉窗口,得到窗口的信息。在MSDN里面找到了一个相关的API:RealChildWindowFromPoint:HWND RealChildWindowFromPoint( HWND hwndParent, // handle to window POINT ptParentClientCoords // client coordinates);The RealChildWindowFromPoint func原创 2011-01-11 11:38:00 · 1649 阅读 · 0 评论