窗口界面
文章平均质量分 77
simbi
232
展开
-
无标题栏对话框的拖动
很多基于对话框的应用程序都是不带框架的,也就是说对话框没有标题栏。众所周知,窗口的移动都是通过鼠标点住标题栏拖动窗口实现的,那么现在没有了标题栏,如何移动对话框呢?本文拟针对这个问题提出解决的办法。 解决这个问题有两种方案。一种很业余,另外一种比较专业。前者使用一种常规思路处理鼠标拖拽事件。当窗口获得WM_LBUTTONDOWN(OnLButtonDown)时,通过设置标志并调用SetCa原创 2005-12-17 01:25:00 · 1228 阅读 · 0 评论 -
线程访问窗口资源的问题
<br /><br />线程访问窗口资源的问题收藏<br />在开个线程<br />时常为所开的线程传入个窗口参数 (cwnd),,,这里里面有个很大的隐患就是当做CWnd::AssertValid()检查,就会遇到断言失败。具体原因在于MFC管理窗口的机制。MFC有个窗口句柄和窗口类对象的映射表,就是Windows对象(句柄)和C++对象的一个映射,它是在窗口调用CWnd::Create(),CWnd::CreateEx()时,就添加到映射表里的。映射表的一个重要的特征,它只存于一个线程当中。当你在B线程转载 2010-09-16 15:41:00 · 653 阅读 · 0 评论 -
拖动无边框对话框改变大小
<br />WM_NCHITTEST WM_SETCURSOR WM_NCLBUTTONDOWN <br /><br /> 消息处理函数: <br /><br /> UINT CXXXDlg::OnNcHitTest(UINT nHitTest, CPoint point) <br /> { <br /> CRect rect; <br /> GetWindowRect(&rect); <br /> if(point.x <= rect.left+3) <br /> return HT转载 2011-01-17 22:22:00 · 476 阅读 · 1 评论 -
directUI的心得
<br />0. WPF, Windows Live, QQ 和 百度 hi 的界面其实并不神秘。大家都想学习而不得其门而入。我也经历了跟大家同样的历程。现在发现了一些门道,跟大家分享一下。<br /><br />1. 所谓 directUI 其实大部分不是真的用DirectX技术做的。其实他也是用的GDI和GDI+的函数绘制出来的。<br />2. 那些看起来非常漂亮的界面效果在《Windows 图形编程》这本书里面基本都有描述如何实现。下载:http://download.csdn.net/转载 2011-03-29 12:26:00 · 1269 阅读 · 0 评论 -
GDI的裁剪
<br />1.什么是GDI的裁切功能?<br />我们在绘图前可以对DC进行裁剪,然后DC的有效区域将变成剪裁后的区域,然后再进行绘图操作.那么裁剪掉的部分怎么样了,回答是:被抛弃了.就是说被抛弃的地方画什么都不显示了.2.裁剪后再绘图有什么不同效果?<br />被裁剪掉的部分,绘图操作将不再起作用.比如:我们要用BitBlt把一幅和对话框客户区大小相同的位图贴到对话框的客户区,我们获得了对话框客户区的DC,在绘图之前我们调用相关的API将客户区中间的一块矩形区域裁剪掉了,之后我们再贴位图上去,那么效果就转载 2011-04-05 15:50:00 · 875 阅读 · 0 评论 -
字符高度
<br /><br />BOOL GetTextMetrics(HDC hdc,LPTEXTMETRIC lptm);可以获得字体信息,并填入TEXTMETRIC结构:<br />typedef struct tagTEXTMETRIC<br />{<br /> LONG tmHeight;<br /> LONG tmAscent;<br /> LONG tmDescent;<br /> LONG tmInternalLeading;<br /> LONG tmExternal转载 2011-04-06 00:03:00 · 1004 阅读 · 0 评论 -
利用IWebBrowser2接口的Navigate2方法实现Http POST传输
利用IWebBrowser2接口的Navigate2方法实现Http POST传输 飘飘白云 2007/11/8 开发中的社区游戏,要求将原来的mini浏览器扩展成可以通过Http POST传输来打开网页,比如:通过提交用户id,password,用户的action(查看profile,查看日记,打开blog等等),从而在mini浏览器里打开相应的网页。具体实现是通过转载 2011-06-16 17:22:00 · 633 阅读 · 0 评论 -
MFC 如何使用动态链接库中的资源
近来在论坛上很有多帖子问到如何使用DLL中的资源(包括对话框,图标等)的问题,现在笔者就来就此问题谈谈,包含在DLL内部使用资源,DLL中使用其它DLL中的资源和在应用程序中使用资源。 我们先以图标为例说起(其它的资源与此图标的加载原理大致相同),我们要加载图标,一般是调用AfxGetApp()->LoadIcon(…);下面是CWinApp::LoadIcon的实现(afxwin2.inl):转载 2011-06-28 16:51:00 · 1457 阅读 · 0 评论 -
自定义浏览器控件
同自动化浏览器(http://blog.joycode.com/jiangsheng/archive/2005/10/20/65489.aspx) 相比,自动化浏览器控件(WebBrowser Control) 在应用程序中更加常用。从Outlook的预览窗格转载 2011-07-04 16:12:39 · 767 阅读 · 0 评论 -
用CHTMLView 来处理script脚本错误
页面脚本在运行时,如果出现错误,默认情况下会弹出一个对话框,告诉你脚本不正确,要不要继续运行什么的。CHTMLView中没有处理这种情况的默认方法。如果要响应这类事件,需要做2件事,1 创建一个新的类,继承自COleControl或它的派生类,并实现IOleC转载 2011-07-04 16:34:11 · 1702 阅读 · 1 评论 -
CHtmlView 和 Webbrowser 控件中超链接点击事件的获取与检测
在自己的程序中使用 CHtmlView 或直接嵌入 Webbrowser 控件显示网页时,常常需要获取网页元素的一些事件,以实现对网页显示的控制或与网页元素进行交互。最常见的莫过于获取用户对网页上超链接的所有点击事件。要实现这个需求,在 MSDN 中描述了接收网页元素事件的基本方法,但这篇文章的一些细节语焉不详,让人摸不着头脑。在 CodeProject 这篇文章中提出了一种替代的方法转载 2010-04-21 17:46:00 · 1069 阅读 · 0 评论 -
在对话框(CDialog)中使用分割窗(CSplitterWnd)
可以使用以下三个步骤在对话框中创建分割窗:1. In the OnCreate function or your CDialog, register a new WindowClass by calling "AfxRegisterWndClass". 在你的CDialog类的OnCreate函数中使用AfxRegisterWndClass注册一个新的窗口类。2. Create转载 2009-04-16 11:11:00 · 2058 阅读 · 0 评论 -
解决Windows 程序界面闪烁问题的一些经验
一般的windows 复杂的界面需要使用多层窗口而且要用贴图来美化,所以不可避免在窗口移动或者改变大小的时候出现闪烁。先来谈谈闪烁产生的原因原因一:如果熟悉显卡原理的话,调用GDI函数向屏幕输出的时候并不是立刻就显示在屏幕上只是写到了显存里,而显卡每隔一段时间把显存的内容输出到屏幕上,这就是刷新周期。一般显卡的刷新周期是 1/80秒左右,具体数字可以自己设置的。这样问题就来了,一转载 2009-01-09 10:55:00 · 439 阅读 · 1 评论 -
VC编程制作系统托盘程序
Windows操作系统中的某些程序运行时不显示运行窗口,只在任务栏上显示一个图标,表示程序正在运行,用户可以通过鼠标与应用程序交互,比如金山毒霸等应用程序,我们有时也需要编制一些仅在后台运行的类似程序,为了不干扰前台程序的运行界面和不显示不必要的窗口,应使程序运行时的主窗口不可见。同时将一个图标显示在任务栏右端静态通告区中并响应用户的鼠标动作。下面介绍Visual C++开发这类程序的设计方法。原创 2005-12-20 21:17:00 · 668 阅读 · 0 评论 -
Windows 中不规则窗体的编程实现
Windows 中不规则窗体的编程实现 document.title="Windows 中不规则窗体的编程实现 - "+document.title一、序言 在绝大多数的Windows应用程序中,其窗体都是使用的正规正矩的矩形窗体,例如我们常用的,“记事本”,“扫雷”,等等。矩形窗体,具有编程实现简单,风格简洁的优点,所以在普通文档应用程序和简单小游戏中使用足矣。但在某些娱乐游戏原创 2006-02-08 15:03:00 · 1283 阅读 · 1 评论 -
白乔原创:VC之美化界面篇
摘要本文专题讨论VC中的界面美化,适用于具有中等VC水平的读者。读者最好具有以下VC基础: 1. 大致了解MFC框架的基本运作原理; 2. 熟悉Windows消息机制,熟悉MFC的消息映射和反射机制; 3. 熟悉OOP理论和技术; 本文根据笔者多年的开发经验,并结合简单的例子一一展开,希望对读者有所帮助。 正文1. 美化界面之开题篇相信使用过《转载 2006-03-04 20:58:00 · 1346 阅读 · 0 评论 -
正确显示透明位图
网上已经有了不少地关于如果透明显示位图的文档,但是这些文章中有一个非常大的缺陷,如果当一个位图并不是24位色彩的位图时,换句话说,当一个位图是2位或4位或8位的位图时,由于这些位图使用调色板信息,使用一般的透明显示位图的方法,将会出现色彩错乱的现象,不能正确地显示一个透明的位图。我在前人文档的基础上,对他们的显示方法做了一些修正,则可以正确地显示任何位数色彩的透明位图。下面的DrawTrans转载 2007-06-07 22:42:00 · 522 阅读 · 0 评论 -
绘制“透明”位图
绘制“透明”位图是指绘制某一位图中除指定颜色外的其余部分,我们称这种颜色为“透明色”。通过将位图的背景色指定为“透明色”,在绘制时,不绘制这部分背景,而仅绘制图像,这样就可以将位图中图像透明地绘制到窗口上。 绘制“透明”位图的关键是创建一个“掩码”位图(mask bitmap),“掩码”位图是一个单色位图,它是位图中图像的一个单色剪影。 在Windows编程中,绘图都要用到设备描述表,我们原创 2007-06-07 22:40:00 · 515 阅读 · 0 评论 -
透明显示位图
void TransparentBlt2( HDC hdcDest, // 目标DC int nXOriginDest, // 目标X偏移 int nYOriginDest, // 目标Y偏移 int nWidthDest, // 目标宽度转载 2007-06-07 22:37:00 · 703 阅读 · 0 评论 -
窗体背景颜色渐变
分列渐变void CMyDlg::Redraw(CDC* pDC){ CRect rect; GetClientRect(&rect); CDC dcBAK; CBitmap map; dcBAK.CreateCompatibleDC(pDC); map.CreateCompatibleBitmap(pDC,rect.Width(),rect.Height()原创 2008-04-08 10:21:00 · 536 阅读 · 1 评论 -
在VC中使用 Flash 美化你的程序
我们分为两步来走: 一、将flash动画嵌入自己的程序中,这一点比较简单,使用shockwave flash object控件就可以实现。这个控件在安装flash的时候就装到你的系统上了,flash5.0以下的文件名是swflash.ocx,5.0以上版本的名字是flash.ocx,在系统目录里面应该可以找得到; 二、在flash动画和自己的程序中传递消息进行交互。这一点也是要通过控件来实现,转载 2008-01-17 09:21:00 · 585 阅读 · 0 评论 -
VC实现XP风格控件效果
一个小窍门可以方便的在VC6、VC2003、VC2005下实现XP风格的控件效果,而且风格随主题变化而变化,没有主题则显示为原来的风格,看效果对比图:原来的样式改变后的样式很简单,此方法SDK/MFC通用,简单的讲就是插入一个资源,类别为24,ID为1,以VC6为例,2003和05类似。在VC6资源编辑试图下点击Insert(插入),然后选择Custom(自定义),在Resource转载 2008-05-11 22:37:00 · 731 阅读 · 0 评论 -
VC实现卡拉OK字幕叠加
一. GDI编程基础 字幕叠加,应当是属于图形、图像处理的范畴。在Windows平台上,图形、图像处理的方法当然首选GDI(Graphics Device Interface,图形设备接口)。GDI是什么?GDI其实是一套API函数;它们功能丰富,使用起来简单、灵活。下面,我转载 2011-09-06 16:28:30 · 1032 阅读 · 0 评论