
VC_MFC
文章平均质量分 62
mailzst1
这个作者很懒,什么都没留下…
展开
-
MFC模态窗口与非模态窗口之差异、及其兼容类
1.右上角“×”关闭按键会触发OnClose()事件。 2.如果没有重载OnCancel()或OnBnClickedCancel(),窗口为模态(this->m_nFlags的WF_MODALLOOP位为1)时,OnClose()会销毁窗口(this->m_nFlags置0);窗口为非模态(this->m_nFlags的WF_MODALLOOP位为0)时,OnClose()不会销毁窗口(窗口界面隐藏(可恢复),this->m_nFlags不变)。 3.如果有重...原创 2020-05-29 17:40:41 · 737 阅读 · 0 评论 -
自绘按钮的实现
自绘按钮的实现并不难,只不过如果是在非MFC类库中实现,却是显得有点麻烦,或是说,更需要一点小技巧. 文章打算在CMainWnd窗口类中实现一个自绘按钮,为了方便讲解以及突出重点,CMainWnd直接派生于CWndBase类.关于CWndBase类的信息,可以在此找到:http://blog.youkuaiyun.com/norains/archive/2008/01/12/2040109....转载 2014-07-20 10:43:07 · 281 阅读 · 0 评论 -
[转载]GetWindowLong 获得控件的ID,父窗口句柄,实例句柄,窗口风格
原文地址:GetWindowLong 获得控件的ID,父窗口句柄,实例句柄,窗口风格等(转载)作者:青蛙变王子GetWindowLong 获得控件的ID,父窗口句柄,实例句柄,窗口风格等。 long lstyle = GetWindowLong(m_list.m_hwnd,GWL_STYLE); long lstyle = GetWindowLong(m_list.m_hwnd...转载 2014-07-20 15:22:16 · 710 阅读 · 0 评论 -
在资源位图上画图不成功的解决方法
直接加载资源位图到DC,此时DC是只读的,任何改写DC的操作都将失败,解决方法有:一、将资源位图映射到DC的画刷中: 用位图作为背景并且可以在上面画图的思路是这样的:要作到不闪烁就是用内存缓冲的方法, 而用位图作为背景就要将位图的影像“映射”到View的Brush中。代码如下: CClientDC pDC(this);m_dc.CreateCompatibleDC(...转载 2014-07-21 11:23:58 · 284 阅读 · 0 评论 -
GDI内存防泄露
1. 尽量使用HDC和DeleteDC组合,不要用CDC HDC imageHDC =::CreateCompatibleDC( NULL ); HBITMAP hOldBMP = (HBITMAP)::SelectObject(imageHDC, m_hBmpResult[m_dResult]); ...... ::DeleteDC(imageHDC); 2. ...转载 2014-07-21 11:41:46 · 126 阅读 · 0 评论 -
WinCE下GetDC内存泄露的bug
今天偶然发现微软wince系统下mfc的一个bug,微软的网站上也有记录,如下: BUG: Memory leaks when you use the CWnd class versions of the GetDC method and the ReleaseDC method When you run code that calls the CWnd::GetDC func...转载 2014-07-22 10:39:08 · 194 阅读 · 0 评论 -
LIB和DLL的区别与使用
共有两种库:一种是LIB包含了函数所在的DLL文件和文件中函数位置的信息(入口),代码由运行时加载在进程空间中的DLL提供,称为动态链接库dynamic link library。一种是LIB包含函数代码本身,在编译时直接将代码加入程序当中,称为静态链接库static link library。共有两种链接方式:动态链接使用动态链接库,允许可执行模块(.dll文件或.exe文件)仅包含在运...转载 2014-07-25 16:18:50 · 135 阅读 · 0 评论 -
Invalidate(TRUE)的闪屏问题
在使用Invalidate(TRUE)进行窗口重绘时,总是会遇到闪屏的问题。 一开始以为是绘图速度过慢照成的,但在对绘图时间做了一个测试之后发现,即使整个绘图过程只持续了几个毫秒,还是会看见很明显的闪烁,所以时间并不是造成闪烁的决定性因素。 那到底是什么原因呢?现在来看看Invalidate(TRUE)都干了些什么。其实,它只是间接向消息队列添加了WM_ERASEBKGND和W...转载 2014-08-04 09:48:41 · 1314 阅读 · 0 评论 -
MFC自绘控件与界面美化1
摘要本文专题讨论VC中的界面美化,适用于具有中等VC水平的读者。读者最好具有以下VC基础: 1. 大致了解MFC框架的基本运作原理; 2. 熟悉Windows消息机制,熟悉MFC的消息映射和反射机制; 3. 熟悉OOP理论和技术; 本文根据笔者多年的开发经验,并结合简单的例子一一展开,希望对读者有所帮助。 正文1. 美化界面之开题篇相信使用过《金山毒霸》、《瑞星杀毒》软件的读者...转载 2014-08-22 17:55:36 · 334 阅读 · 0 评论 -
MFC自绘控件与界面美化2
3.3 使用Windows的消息机制 使用MFC类的既有函数来美化界面,其功能是有限的。既然Windows是通过消息机制进行通讯的,那么我们就可以通过截获一些有用的消息来美化我们的界面,以下是一些有用的Windows消息: WM_PAINT WM_ERASEBKGND WM_CTLCOLOR* WM_DRAWITEM* WM_MEASUREITEM* NM_CUSTOMDRAW...转载 2014-08-22 17:55:36 · 386 阅读 · 0 评论 -
获取WinCE进程的内存信息
//=====================================================================//TITLE:// 获取WinCE进程的内存信息//AUTHOR:// norains//DATE:// Wednesday 3- February-2010//Environment:// WINDOWS CE ...转载 2014-07-16 00:00:19 · 193 阅读 · 0 评论 -
[转载]TransparentBlt用法(转载)
原文地址:TransparentBlt用法(转载)作者:飞鸿踏雪TransparentBlt2010-04-03 21:41 透明位图的显示作者:王骏 下载本文 示例代码包含透明色的位图的绘制方法有多种,最简单的方法是调用现成的函数:TransparentBlt,也可以通过自己的代码实现类似 TransparentBlt的功能,实现过程也有两种形式,一种是事先做一张掩码位...转载 2014-07-20 10:17:59 · 361 阅读 · 0 评论 -
获取wince系统内存使用状态
GlobalMemoryStatus,Win32 API函数。此函数用来获得当前可用的物理和虚拟内存信息,函数定义为:VOID GlobalMemoryStatus( LPMEMORYSTATUS lpBuffer );此函数无返回值,参数是一个指向名为MEMORYSTATUS的结构的指针。函数的返回信息会被存储在MEMORYSTATUS结构中。此函数用来替代用来支持16位...转载 2014-07-15 23:44:14 · 147 阅读 · 0 评论 -
GetSystemMetrics()函数的用法
GetSystemMetrics()函数的用法 可以用GetSystemMetrics函数可以获取系统分辨率,但这只是其功能之一,GetSystemMetrics函数只有一个参数,称之为「索引」,这个索引有75个标识符,通过设置不同的标识符就可以获取系统分辨率、窗体显示区域的宽度和高度、滚动条的宽度和高度。为了使使GetSystemMetrics的功能,我们以获取系统分辨率...转载 2019-02-01 09:12:03 · 578 阅读 · 0 评论 -
VC无闪烁刷屏技术的实现
1 在实现绘图的过程中,显示的图形总是会闪烁,笔者曾经被这个问题折磨了好久,通过向高手请教,搜索资料,问题基本解决,现将文档整理出来以供大家参考.1.显示的图形为什么会闪烁我们的绘图过程大多放在OnDraw或者OnPaint函数中,OnDraw在进行屏幕显示时是由OnPaint进行调用的。当窗口由于任何原因需要重绘时,总是先用背景色将显示区清除,然后才调用OnPaint,而背景色往往与绘图...转载 2013-08-19 16:13:34 · 136 阅读 · 0 评论 -
AfxMessageBox和MessageBox区别
如果用MFC的话,请尽量使用afxmessagebox,因为这个全局的对话框最安全,也最方便。 但是在WIN32 SDK的情况下只能使用MESSAGEBOX。MessageBox()是Win32API函数.后者是mfc中的全局函数.在MFC中能用MessageBox()的地方都能用AfxMessageBox().afxmessagebox更多的时候是用于调试AfxMessage...转载 2014-01-09 11:08:47 · 110 阅读 · 0 评论 -
窗口和控件闪烁解决方案
对于MFC程序员来说做UI开发是痛苦的事情,不过大多数情况下我们都需要做这件事情,因为MFC自带的控件实在是太简陋了。这时候我们多半会涉及到自绘控件,随之而来的很可能就是窗口和控件的闪烁问题。这篇文章希望对MFC的窗口和控件闪烁问题做一个尽量全面的总结。 一、闪烁的原因 引起闪烁的原因很多,以至于网上有n多种解决闪烁问题的方法;如果你按照某一种方法做了仍然没有解决...转载 2014-03-01 11:44:15 · 1174 阅读 · 0 评论 -
Windows窗口消息大全
//////////////////////////////////////////////////////////////////////////#include "AFXPRIV.H"//消息值的定义来源#include "Dde.h"//DDE消息值的定义来源#include "CPL.H"//控制面板消息值的定义来源#include "WFEXT.H"//文件管理器的消息值...转载 2014-03-11 16:04:20 · 678 阅读 · 0 评论 -
如何终止线程的运行(C/C++)
想要终止线程的运行,可以使用以下方法: 1、线程函数返回(最好使用该方法)。 2、通过调用ExitThread函数,线程将自行撤消(最好不使用该方法)。 3、同一个进程或另一个进程中的线程调用TerminateThread函数(应避免使用该方法)。 4、ExitProcess和TerminateProcess函数也可以用来终止线程的运行(应避免使用该方法)。下面将详细介绍终止线程运行的方法:1-4...转载 2014-03-26 09:29:56 · 796 阅读 · 0 评论 -
CDC类及其函数
DC,即Device Context,设备上下文,或称设备环境。CDC类定义的是设备上下文对象的类。CDC对象提供处理显示器或打印机等设备上下文的成员函数,以及处理与窗口客户区对应的显示上下文的成员。通过CDC对象的成员函数进行所有的绘图。类对设备上下文操作提供了成员函数,处理绘图工具,安全型图形设备接口(GDI)对象收集,以及处理颜色和调色板。它还为获取和设置绘图属性、映射,处理视...转载 2014-03-29 16:37:29 · 1496 阅读 · 0 评论 -
MFC自绘控件与界面美化3
生成的界面如下: 图7 利用WM_CTLCOLOR消息美化界面 3.3.4 WM_DRAWITEM OnCtlColor只能修改元素的颜色,但不能修改元素的界面框架,WM_DRAWITEM则可以。 当一个具有Owner draw风格的元素(包括按钮、组合框、列表框和菜单等)需要显示外观时,该元素会发送一条WM_DRAWITEM消息至它的隶属窗口(Owner)。 WM_DRAWIT...转载 2014-08-22 17:55:36 · 335 阅读 · 0 评论 -
MFC自绘控件与界面美化4
3.3.6 NM_CUSTOMDRAW 大家也许熟悉WM_NOTIFY,控件通过WM_NOTIFY向父窗口发送消息。在WM_NOTIFY消息体中,部分控件会发送NM_CUSTOMDRAW告诉父窗口自己需要绘图。 可以反射NM_CUSTOMDRAW消息,如: ON_NOTIFY_REFLECT(NM_CUSTOMDRAW, OnCustomDraw) afx_msg void OnCusto...转载 2014-08-22 18:06:11 · 618 阅读 · 0 评论 -
改变 CListCtrl、CHeaderCtrl 高度、字体、颜色和背景(一)
一、 实现过程1.表头修改新建一个MFC类CHeaderCtrlCl,其基类为CHeaderCtrl,响应OnPaint消息实现自绘,实现代码请看源代码(由于代码较占篇幅,所以就不贴上来了,抱歉),在头文件中定义函数LRESULT OnLayout( WPARAM wParam, LPARAM lParam ),之后手动添加消息响应ON_MESSAGE(HDM_LAYOUT, OnLayo...转载 2015-07-28 10:00:17 · 522 阅读 · 0 评论 -
改变 CListCtrl、CHeaderCtrl 高度、字体、颜色和背景(二)
覆盖基类InsertColumn进行列信息保存01.int CListCtrlCl::InsertColumn(int nCol, LPCTSTR lpszColumnHeading,02.int nFormat ,03.int nWidth ,04.int nSubItem )05.{06.m_Header.m_HChar.Add(lpszColumnHeading);...转载 2015-07-28 10:10:03 · 540 阅读 · 0 评论 -
[转载]CDockablePane窗口风格设置
原文地址:CDockablePane窗口风格设置作者:转身抬头去掉关闭按钮:在继承CDockablePane的类中重写CanBeClosed()方法:virtual BOOL CanAutoHide() const { return FALSE; }去掉自动隐藏风格:virtual BOOL CanAutoHide() const { return FALSE; }想要去掉更多的...转载 2017-09-13 14:55:07 · 467 阅读 · 0 评论 -
CDockablePane使用心得
最近做项目使用到了MFC的CDockablePane进行布局,下面将应用心得以九个例子进行总结如下: 1. CFrameWndEx 在框架类的头文件中定义一个CDockablePane的数组 CDockablePane m_Panes[5];//一个CDockablePane的数组 2. CFrameWndEx:: OnCreate() 在Create函数中自动生成了一下...转载 2017-09-13 15:04:21 · 688 阅读 · 0 评论 -
【转】VC2010Ribbon图标位图制作方法一
Visual Studio 2010 MFC Ribbon 用户界面 新增Windows7样式,操作方便,效果也很漂亮。但在透明图标的制作却让初学者头疼。使用普通的BMP位图做图标背景不透明,很难看。其实Ribbon上用的图标是32位的位图序列,包含Alpha通道。Visual Studio 2010 MFC 自带的编辑器不好用,要配合一些图标制作软件,才能制作出32位包含Alpha通道的位图...转载 2018-03-27 12:09:29 · 1044 阅读 · 0 评论 -
MFC访问剪切板
将数据COPY到剪切板原理:1:OpenClipboard() 打开剪切板2:EmptyClipboard() 清空剪切板,让当前进程拥有剪切板3:GlobalAlloc() 分配全局堆内存4:GlobalLock() 锁定内存并返回内存首地址5:strcpy() 给内存赋值6:GlobalUnlock() 解锁内存7:SetClipboardData() 设置到剪切板...转载 2018-06-14 14:11:26 · 832 阅读 · 0 评论 -
MFC中使用ADO进行数据库操作
https://www.cnblogs.com/sunniflyer/p/4118956.html数据库与数据库编程:当前各种主流数据库有很多,包括Oracle, MS SQL Server, Sybase, Informix, MySQL, DB2, Interbase / Firebird, PostgreSQL, SQLite, SAP/DB, TimesTen, MS ACCESS...转载 2018-07-26 16:09:16 · 1332 阅读 · 0 评论 -
MFC中基于对话框利用CRectTracker实现多矩形绘制、选择、拉伸、移动和删除
https://blog.youkuaiyun.com/medal003/article/details/38854185转载 2018-08-16 15:59:08 · 1309 阅读 · 0 评论 -
[转载]对话框大小与像素关系
原文地址:对话框大小与像素关系作者:蒋佩钊(jk-3126) 对话框资源中的尺寸数值是对话框单位,该大小的单位不是像素而是DLU(dialog logical units),它是与分辨率无关的坐标单位。它与像素之间的转换关系与当前对话框字体有关。不是像素,要转换成像素,可以借助于 MapDialogRect 来转换。 如果想手动计算,用下面的算法: pixelX = MulDi...转载 2018-08-30 17:26:34 · 510 阅读 · 0 评论 -
获取CListCtrl的行列号的方法
LVHITTESTINFO t_LvInfo; DWORD ul_pos = GetMessagePos(); ///<屏幕坐标下光标位置的长整数值CPoint c_Pnt(LOWORD(ul_pos), HIWORD(ul_pos)); ///<转换成XY坐标(各16位)m_ListTest.ScreenToClient(&c_Pnt); ///<转换成列表...转载 2015-07-27 12:05:00 · 577 阅读 · 0 评论 -
[转载]VC/MFC可编辑的列表控件的实现
原文地址:VC/MFC可编辑的列表控件的实现作者:王延政一、引言 列表控件主要用来以各种方式显示一组数据记录供用户进行各种操作,是最常见的控件之一。WindowsXP资源管理器中的“查看”菜单下的 “图标|平铺|列表|详细信息”就是一个非常典型的应用。MFC中的CListCtrl类提供了对列表控件操作的基本方法,包括插入一个新的项目InsertItem、删除一个项目DeleteItem...转载 2015-07-27 11:04:30 · 613 阅读 · 0 评论 -
实现对话框在位图作为背景时的控件透明
思路:从背景DC中复制被控件覆盖的部分到控件中,作为控件的背景。 [cpp] view plaincopy///////////////// TransparentDlg.h #pragma once /////////////////////////////////////////////////////////////////////...转载 2014-09-05 11:07:17 · 136 阅读 · 0 评论 -
MFC使用的风格
MFC风格风格 描述按钮风格 应用于CButton类对象,例如单选框、复选框和按钮。在CButton::Create的dwStyle参数中设置一个组合的风格。组合框风格 应用于CComboBox类对象。在CComboBox::Create的dwStyle参数中设置一个组合的风格。编辑风格 应用于CEdit类对象。在CEdit::Create的dwStyle参数中设置一个组合的风格。框架窗口...转载 2014-09-13 10:32:55 · 193 阅读 · 0 评论 -
VC 修改窗口属性 GetWindowLong SetWindowLong
修改窗口属性说明:以下函数对于POPUP窗口有效,对于子窗口好像不行。//最小化按钮有效::SetWindowLong(m_hWnd,GWL_STYLE,GetWindowLong(m_hWnd,GWL_STYLE) | WS_MINIMIZEBOX ); ::SetWindowPos(m_hWnd,NULL,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE|SWP_FRAMECHAN...转载 2014-09-13 11:57:03 · 346 阅读 · 0 评论 -
VC(MFC、ATL)中 得到2个SYSTEMTIME时间差
第一种方法:CTime 和CTimeSpan ,例如: // example for CTime::operator +, - CTime t1( 1999, 3, 19, 22, 15, 0 ); // 10:15PM March 19, 1999 CTime t2( 1999, 3, 20, 22, 15, 0 ); // 10:15PM March 20, 1999 CTimeS...转载 2015-01-05 11:11:53 · 425 阅读 · 0 评论 -
MFC中CListCtrl控件的用法
功能强大的CListCtrl:做网络笔记,还需添加修改CListCtrl改变行的颜色,列的颜色,字体颜色等.资源属性里面有个sort设置排序的,如果不小心选了Ascending,那么你insertItem的顺序就就1,10,11,12,13,14,15,16,17,18,19,2,20,21....所以要注意.首先使用下面的语句设置CListCtrl的style:DWORD SetEx...转载 2015-01-14 22:34:37 · 205 阅读 · 0 评论 -
MFC总结之CListCtrl用法及技巧(一)
主要包括以下十三点内容:基本操作、获取选中行的行号、复选框操作、动态设置选中行的字体颜色、设置选中行的背景颜色、禁止拖动表头、让第一列居中显示、设置行高与字体、虚拟列表技术、点击表头时进行归类、向上与向下移动、动态调整大小问题、避免闪烁问题。 分为两篇来进行总结。本篇重点总结:基本操作、获取选中行的行号、复选框操作、动态设置选中行的字体颜色、设置选中行的背景颜色 ...转载 2015-01-14 22:39:40 · 413 阅读 · 0 评论 -
MFC总结之CListCtrl用法及技巧(二)
续MFC总结之CListCtrl用法及技巧(一)5、设置选中行的背景颜色 设置选中行的背景颜色,可以将选中行以特殊颜色显示,容易明白当前处理的是哪一行。尽管有高亮,但是高亮是基于焦点的,如果你选中了某一行,然后焦点转移了,这是就无法判断你选的是哪一行了。 设置选中行的背景颜色的方法和第四节中讲的修改字体颜色的方法是相似的,都是利用Custom Dr...转载 2015-01-14 22:47:13 · 499 阅读 · 0 评论