
图像/UI
pud_zha
这个作者很懒,什么都没留下…
展开
-
实现BMP转透明背景ICON图标
Figure 1: Transition of a color bitmap to a cursorIntroductionThis article focuses on creating a color cursor from a HBITMAP. First it explains the steps performed by windows to display a curs转载 2012-06-25 01:05:53 · 3941 阅读 · 0 评论 -
CTreeCtrl重绘
所有的图标,(+/-)展开/收缩节点都是直接画上去的,类似于directui的方法他们的位置通过item_rect减去图像本身的宽度就可得到另外一个需要注意的:void CTreeCtrlBT::OnPaint() {CPaintDC dc(this); // device context for painting//Calculate();CBit原创 2012-12-13 10:39:15 · 2579 阅读 · 0 评论 -
windows消息复习
队列化消息基本上是使用者输入的结果,以击键(如WM_KEYDOWN和WM_KEYUP消息)、击键产生的字符(WM_CHAR)、鼠标移动(WM_MOUSEMOVE)和鼠标按钮(WM_LBUTTONDOWN)的形式给出。队列化消息还包含时钟消息(WM_TIMER)、更新消息(WM_PAINT)和退出消息(WM_QUIT)。非队列化消息则是其它消息。在许多情况下,非队列化消息来自呼叫特定的Windo转载 2012-11-30 16:56:19 · 506 阅读 · 0 评论 -
ListrCtrl重绘
m_cListCtrl.SetImageList(&m_cImageListNormal, LVSIL_NORMAL);这使用的m_cImageListNormal, ListCtrl只是存储一个指向它的指针,如果这个ImageList是一个局部变量,析构后,ListCtrl内的指针就无效了LVSIL_NORMAL: Shown in LVS_ICON view onlyLVSIL_SMA原创 2012-12-13 14:03:32 · 733 阅读 · 0 评论 -
UI小记2
1.MapWindowPoints进行左边转换非常方便2.ExcludeClipRect(hdc,rcc.left,rcc.top,rcc.right,rcc.bottom); FillRect(hdc,&rc,m_brush); 去掉一块区域进行绘图3.使窗口显示在最前面 SetForegroundWindow(m_hWnd); SetActiveWind原创 2012-12-17 19:39:40 · 331 阅读 · 0 评论 -
MFC菜单消息
首先,在MFC中,具有PopUp属性的菜单是不能用来做命令响应的。在MFC中: 当点击一个菜单项的时候,最先接受到菜单项消息的是CMainFrame框架类,CMainFrame框架类将会把菜单项消息交给它的子窗口View类,由View类首先进行处理;如果View类检测到没对该菜单项消息做响应,则View类把菜单项消息交由文档类Doc类进行处理;如果转载 2012-12-19 22:09:58 · 5748 阅读 · 0 评论 -
Menu的窗口句柄
其实我们看到的菜单也是窗口,窗口类名是“#32768”,不过HMenu不是窗口句柄,HMenu是菜单的一个内置结构的地址。如果我们想要替换菜单的窗口过程的地址,必须通过Hook来截获到菜单的窗口创建消息。对于一般的创建我们只要处理了wm_create就可以了,但对于菜单我们必须截获Windows没有公开的消息:0x1e2 ,在该消息中msg.hwnd就是我们要找的菜单窗口的句柄。获转载 2013-01-14 15:40:07 · 1948 阅读 · 0 评论 -
SetWindowOrg和SetViewportOrg
SetWindowOrg和SetViewportOrg作者:天涯 来源:中国自学编程网 发布日期:1221180341SetWindowOrg和SetViewportOrg这两个函数比较难搞懂,经过本人的google和实践终于弄明白了这两个函数的本质区别。 1.SetWindowOrg 是把设备坐标的原点移动到逻辑坐标的(X, Y转载 2013-01-18 10:29:16 · 813 阅读 · 0 评论 -
获取父窗口背景小方法
获取父窗口背景小方法:::MapWindowPoints( NULL, hparent, (LPPOINT)&rc, 2 );CPoint pt;dc.SetViewportOrg( -rc.left, -rc.top, &pt );GetParent().SendMessage( WM_ERASEBKGND, (WPARAM)(HDC)dc, lParam );dc.SetV原创 2013-01-18 10:57:17 · 739 阅读 · 0 评论 -
设备坐标和逻辑坐标
要用到两个函数:CDC::LPtoDP 将逻辑坐标转换为设备坐标CDC::DPtoLP 将设备坐标转换为逻辑坐标 设备坐标(Device Coordinate)又称为物理坐标(Physical Coordinate),是指输出设备上的坐标。通常将屏幕上的设备坐标称为屏幕坐标。设备坐标用对象距离窗口左上角的水平距离和垂直距离来指定对象的位置,是以像素为单位来表示的,设备坐标的X轴转载 2013-01-18 10:24:48 · 744 阅读 · 0 评论 -
UI小结1
我所做的界面都是去掉WS_CAPTION 自绘标题栏的1.通过WM_SETFOCUS/WM_KILLFOCUS设置标题栏在不同状态下显示不同图片时,必须注释掉其默认处理2.绘制透明BUTTON时,传递主窗口的hdc/mem dc时,必须在动态Create之前,否则Button对应位置就是一片白的3.You construct a CEdit object in two steps.原创 2012-11-29 15:47:19 · 471 阅读 · 0 评论 -
EDIT控件自绘
1.主窗口的创建过程:N个WM_ERASEBKGND ->WM_PAINT(也可能WM_ERASEBKGND 是WM_PAINT触发的 )2.非客户区的绘图应画在WM_NCPAINT中,不然运行后第一次显示不出来3.CWnd::RedrawWindow默认会导致背景重绘,该函数可产生WM_ERASEBKGND/WM_PAINT/WM_NCPAINTOnPa原创 2012-12-24 18:15:59 · 3701 阅读 · 0 评论 -
icons in win32
icons in win32 john hornick microsoft corporationcreated: september 29, 1995download the iconpro sample.abstractthis article describes, in detail, the format and use of icons in 32-bit转载 2012-06-25 12:26:17 · 603 阅读 · 0 评论 -
自绘RadioButton
前言:没想到这么久不来这里写东西了。其实真的是前段时间没什么东西好写的,毕竟肚子里面墨水不多。还有就是没有什么有价值的东西,只是觉得最近自己进步很慢,不过倒是不想以前那么散漫了,看到喜欢什么就学什么。看来我还是专心研究C++吧,呵呵。真是门很好很强大的语言。这里自己在做任务的时候接到了一个自绘RadioButton的控件,开始以为很简单,但是由于自己知识点的缺乏,以及对WINDOWS编程的生疏,导转载 2012-11-29 18:44:06 · 1195 阅读 · 0 评论 -
光标位置
检索通知消息中的光标位置有时,当公共控件收到某些通知消息时,确定光标的当前位置很有用。例如,当公共控件收到 NM_RCLICK 通知消息时,确定当前光标位置很有帮助。有一个通过调用 CWnd::GetCurrentMessage 完成此工作的简单方法。但是,此方法只在发送消息时检索光标位置。因为发送消息后光标可能已经移动,所以必须调用CWnd::GetCursorPos 获取当前光标位转载 2012-11-30 10:54:04 · 492 阅读 · 0 评论 -
Message vs Notify
WM_LBUTTONDOWN是系统Post给鼠标下面的控件的(通过消息队列),NM_CLICK是控件Send给其父控件的(直接调窗口函数)。从原理上说这两个消息是在不同的消息函数中响应的,不过你可以通过重设按钮的窗口函数(SetWindowLong或者重载CButton类的WindowProc函数),使这两个控件的窗口函数相同,然后在窗口函数中根据句柄来判断是哪一个控件。(来自优快云论坛)转载 2012-11-30 10:57:42 · 766 阅读 · 0 评论 -
Edit控件
1.主窗口的创建过程:N个WM_ERASEBKGND ->WM_PAINT2.非客户区的绘图应画在WM_NCPAINT中,不然运行后第一次显示不出来3.CWnd::RedrawWindow默认会导致背景重绘,该函数可产生WM_ERASEBKGND/WM_PAINT/WM_NCPAINTOnPaint()中:如果不选用NULL_BRUSH(用默认或其他画刷)时,则ED原创 2012-12-05 18:39:30 · 435 阅读 · 0 评论 -
ComboBox重绘
How to subclass CListBox and CEdit inside of CComboBoxArticle ID: 174667 - View products that this article applies to.This article was previously published under Q174667Expand all |Collapse转载 2012-12-09 16:12:18 · 6080 阅读 · 0 评论 -
UI小结3
1.弹出窗口用DWORD dwStyle = WS_POPUP | WS_SYSMENU;DWORD dwExStyle = WS_EX_TOOLWINDOW | WS_EX_TOPMOST;就可以了2.可以利用这个函数来保存额外数据SetProp(m_hWnd,_T("CometClassPtr"),this);3.取出桌面工作区SystemParametersInf原创 2012-12-24 10:26:49 · 720 阅读 · 0 评论 -
ListBox重绘
void CUIList::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct){BITMAP bmp;GetObject(m_hBitmap, sizeof(bmp), &bmp);HDC hDC = lpDrawItemStruct->hDC;CRect rc = lpDrawItemStruct->rcItem;HDC hMemD原创 2012-12-11 00:34:20 · 1897 阅读 · 0 评论 -
Multiple Threads in the User Interface
https://msdn.microsoft.com/zh-cn/library/ms810439.aspx转载 2017-08-14 08:52:41 · 597 阅读 · 0 评论