![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MFC
xiliang_pan
只要去做,没有做不好的事情!
展开
-
为CEdit控件设置右键菜单
FARPROC OldEditProc = NULL;LRESULT CALLBACK NewEditProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam){ if (uMsg == WM_RBUTTONUP) { CPoint curPoint; GetCursorPos(&curPoint); CMenu M原创 2011-12-06 14:29:05 · 1683 阅读 · 0 评论 -
MFC EDIT控件自动显示垂直滚动条
首先设置EDIT控件的属性,如下:注意:Horizontal scroll 和 Auto HScroll 不要选择。在OnInitDialog()函数中处理:// 获取EDIT可以显示的行数 TEXTMETRIC tm;CRect rect;GetDlgItem(IDC_EDIT_INFO)->GetClientRect(&rect);CDC* pdc = Ge转载 2012-10-18 20:31:29 · 9652 阅读 · 0 评论 -
MFC OCX控件实现安全初始化和脚本安全的方法
如果不实现该IObjectSafety接口,IE调用时会有如下提示信息:解决方法有两种,如下:方法1:通过IObjectSafety接口实现具体步骤:(1)在TestOCXCtrl.h中#include // for IObjectSafety; in ActiveX SDK (2)在TestOCXCtrl.h中 DECLAR原创 2012-12-06 13:58:24 · 4172 阅读 · 0 评论 -
.rc error rc2135 file not found .tlb - 解决方法
Under the Resources tree (which is under Configuration Properties),click "General" and make sure that for Additional Include Directories,you've specified "$(IntDir)" for additional include directo转载 2012-12-11 11:13:02 · 15853 阅读 · 0 评论 -
Win7 VC6.0 打开多个工程设置
在Win7操作系统下,如果是以Administrator登陆,则VC6.0打开工程文件的时候,不能同时打开多个工程文件,后打开的工程会将前一个工程close掉,这样,VC6.0只能出现一个进程。在xp下,我们可以设置文件打开的默认方式中去掉DDE选项,这样可以使得VC6可以同时打开多个工程,但在win7下,却没有办法找到这个设置窗口。经过实践,可以用以下办法解决:打开cmd:1)输入ass转载 2012-12-17 16:43:24 · 4554 阅读 · 4 评论 -
VC Tools->Options->include files配置项对应的注册表路径
VC6.0 Tools->Options->include files 对应的注册表路径:HKEY_CURRENT_USER\Software\Microsoft\DevStudio\6.0\Build System\Components\Platforms\Win32 (x86)\Directories VS2008(VS2005):C:\Users\UserName\Docum原创 2013-06-06 15:44:35 · 1378 阅读 · 0 评论 -
如何根据DPI来动态调整窗口或控件大小?
换算屏幕坐标计量单位,分为逻辑和物理坐标(单位),物理坐标为像素点、厘米等;逻辑坐标为缇、DPI等DPI是指单位面积内像素的多少。例如,在96默认DPI下1英寸屏幕有96点像素,如果在120DPI下1英寸有120个像素点。缇是VB6中默认的计量单位,96DPI下15缇等于1像素,120DPI下12缇等于1像素。因此,就造成了不同DPI下窗体控件大小会随着DPI值增加而放大,原本设计时就比较大的转载 2013-07-12 13:59:37 · 4864 阅读 · 0 评论 -
CListCtrl控件使用方法总结
From : http://www.cppblog.com/finehai/archive/2009/09/17/96574.html以下未经说明,listctrl默认view 风格为report相关类及处理函数MFC:CListCtrl类SDK:以 “ListView_”开头的一些宏。如 ListView_InsertColumn1. CListCtrl转载 2013-08-13 13:27:58 · 607 阅读 · 0 评论 -
用VC写DLL中"error LNK2005: _DllMain@12 already defined"的错误
用Visual C++编写DLL,如果在new project时选了MFC DLL,而后又想写成Regular DLL,即拥有自己的DllMain()入口函数,则在build时会遇到类似如下的link错误: error LNK2005:_DllMain@12 already defined in xxx.OBJ几种解决方案:1, 你只需要在工程设置里面,把WIN32,NDE转载 2013-09-29 13:42:45 · 925 阅读 · 0 评论 -
MFC 设置字体
一、简单的创建一种字体:CFont类是CGDIObject的派生类:CObject → CGDIObject → CFont。只有一个缺省构造函数CFont( ); 必须用下列字体创建成员函数CreateFont[Indirect]或CreatePointFont [Indirect]来初始化。 其中的CreatePointFont提供了创建字体的一种简单方法: BOOL Crea转载 2013-10-09 16:30:00 · 11942 阅读 · 0 评论 -
VC++ try catch .
try{} catch(…){}以前都是用try{} catch(…){}来捕获C++中一些意想不到的异常, 今天看了Winhack的帖子才知道,这种方法在VC中其实是靠不住的。例如下面的代码:try { BYTE* pch ; pch = ( BYTE* )00001234 ; //给予一个非法地址 *pch = 6 ; //对非法地址赋值,会造成Access转载 2013-09-25 10:39:41 · 775 阅读 · 0 评论 -
解决透明static控件后刷新问题
我相信很多VC程序员,都用过OnCtlColor来改变控件的底色,字体颜色等。但是static控件改变之后,就会照成控件不刷新的问题。HBRUSH CStadus::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, n转载 2017-07-17 10:34:59 · 1198 阅读 · 0 评论 -
MFC中对话框资源的复制
在工程中导入已建好的对话框,方法有三:法一:1、首先要生成一个*.ogx的文件。 方法:打开包含有所要加的对话框资源的工程(别的工程)。 在视图资源(ClassView)中鼠标右键点击所需的对话框的类(也可以是所需的类) 这时,你会看到右键菜单中有个“Add to Gallery”的选项。 选择这个选项,则*.ogx文件生...转载 2018-10-07 14:33:17 · 1441 阅读 · 0 评论 -
URLDownloadToFile 实现进度条(IBindStatusCallback)
转自:http://hi.baidu.com/qazssaeooiciqsr/item/eaeb813a284ef0677c034b85最近使用 MFC的CInternetSession类下载文件时遇到一些问题, CInternetSession::OpenUrl 这个方法在使用个别代理的网络环境或者网速慢得要死的情况下,它会抛一个连接超时的异常,虽然catch 这个异常可以避转载 2012-09-17 11:55:03 · 5017 阅读 · 0 评论 -
对话框程序, 在 OnInitDialog的最后 showWindow(SW_HIDE),不管用的原因
我研究过,原因及隐藏方法 .MFC对话框应用程序启动时在OnInitDialog()之后会显示对话框的原因如下MLF_SHOWONIDLE标志int CDialog::DoModal()// enter modal loopDWORD dwFlags = MLF_SHOWONIDLE;if (GetStyle() & DS_NOIDLEMSG)dwFlags |= ML转载 2012-09-26 16:56:16 · 4488 阅读 · 2 评论 -
VC++的Unicode编程(宏UNICODE与_UNICODE)
一、什么是Unicode 先从ASCII说起,ASCII是用来表示英文字符的一种编码规范。每个ASCII字符占用1个字节,因此,ASCII编码可以表示的最大字符数是255(00H—FFH)。其实,英文字符并没有那么多,一般只用前128个(00H—7FH,最高位为0),其中包括了控制字符、数字、大小写字母和其它一些符号。而最高位为1的另128个字符(80H—FFH)被称为“扩展ASCII”,一转载 2011-12-18 12:21:12 · 12638 阅读 · 0 评论 -
VC右键菜单消息响应处理
LRESULT CXXXDlg::TrayNotify(WPARAM wp,LPARAM lp){ UINT uID = (UINT) wp; UINT uMouseMsg = (UINT) lp; if(uMouseMsg == WM_RBUTTONUP) { CPoint curPoint; GetCursorPos(&curPoint); CMe原创 2011-12-19 10:09:15 · 2471 阅读 · 0 评论 -
VC控件-子类化控件
作为一个程序员,我们经常会在程序中用到Windows通用控件。比如按钮控件,进度条控件等等。但是有时我们需要给控件更多的特色,这就需要做控件的子类化(subclassing).子类化一个Windows控件与子类化一个C++类不同,子类化一个控件要求你把一个窗口的一些或所有的消息映射都替换成自己的函数来响应,这 样你就有效的阻止了控件去做系统默认的行为,而按自己的想法去做。子类化有两种类型: 实转载 2011-12-13 10:03:33 · 783 阅读 · 0 评论 -
[MFC]解决回车键 ESC 默认关闭窗口的一般方法
在一般情况下编写的对话框程序,用户在运行的时候,如果不注意按下了ENTER或者ESC键,程序就会立刻退出,之所以会这样,是因为按下Enter键时,Windows就会自动去找输入焦点落在了哪一个按钮上,当获得焦点的按钮的四周将被点线矩形包围。如果所有按钮都没有获得输入焦点,Windows 就会自动去寻找程序或资源所指定的默认按钮(默认按钮边框较粗)。如果对话框没有默认按钮,那么即使对话框中没有OK按转载 2011-12-14 11:42:18 · 13445 阅读 · 0 评论 -
修改VS2008(vc)中工程/解决方案/类的名字
修改VS2008(vc)中工程/解决方案/类的名字因为不小心打错了或其他原因会修改vs2008的工程/解决方案/类的名字 以下是方法: 一、先修改工程名/解决方案名 举例,原先的工程名为AAA 想要改成BBB 1.找到工程/解决方案所在的文件夹(已有工程名/解决方案名命名,即AAA) 2.打开该文件夹,有一个AAA.sln 将其重命名为BBB.sln转载 2011-12-14 13:59:10 · 3029 阅读 · 0 评论 -
WM_CLOSE WM_DESTROY WM_QUIT 区别
在发送 WM_QUIT消息时,要使用PostMessage发送,否则,窗口已经关闭,但任务管理器中进程还存在。可以通过 pDlg->PostMessage(WM_QUIT);或DWORD dwThreadId = GetWindowThreadProcessId(pDlg->GetSafeHwnd(),NULL);PostThreadMessage(dwThreadId,WM_QUIT转载 2012-01-05 15:51:16 · 15240 阅读 · 0 评论 -
MFC改变对话框中静态文本的字体大小
VC的对话框字体设置对所有控件都有效,你不能单独地改变某个静态文本的字体。对于你的问题,需要首先用CreateFont来建立一个字体对象,然后调用控件的SetFont,就可以了。例子: 1、改静态文体的ID,如:IDC_STATIC1 2、添加一个Edit控件,建立一个关联的控件m_editControl。 3、在OnInitDialog中添加如下代码: CFont * f转载 2012-05-07 15:50:16 · 5560 阅读 · 0 评论 -
在VC6.0下设置Unicode编译环境 & VC6中调试状态下显示Unicode字符串
VC++ 6.0支持Unicode编程,但默认的是ANSI,所以开发人员只需要稍微改变一下编写代码的习惯便可以轻松编写支持UNICODE的应用程序。 使用VC++6.0进行Unicode编程主要做以下几项工作:1、为工程添加UNICODE和_UNICODE预处理选项。 具体步骤:打开[工程]->[设置…]对话框,在C/C++标签对话框的“预处理程序定义”中去除_MBCS,转载 2012-05-14 11:05:42 · 4435 阅读 · 0 评论 -
VC编辑框(EDIT)实现的自动换行、自动滚屏 、自动清空
在自动换行设置的时候,要在EDIT控件的属性中选中"multiline"的属性和Auto_HScroll、Vertical scroll。经过多次测试,总结出VC编辑框(EDIT)的自动换行与自动滚屏的方法。方法一: (当EDIT映射到一CString时)m_String = m_String + sNewString + "\r\n" //自动换行(其中m_String是ED转载 2012-05-14 11:08:11 · 20483 阅读 · 0 评论 -
在VC工程中添加多语言支持 (资源DLL)
From:http://www.cnblogs.com/myitm/archive/2011/08/26/2154136.html 随着贸易国际化,在软件开发过程中,常会碰到需在现有中文版软件加入多语言支持的情况。由于不同语言版本间的差别通常仅是软件操作界面的不同,为实现多语言支持,使用纯资源DLL是一个不错的解决之道。所谓纯资源DLL是指只包含资源的DLL,譬如:快捷键、对话框、字符转载 2012-08-02 11:36:39 · 3451 阅读 · 0 评论 -
OnPaint()函数的作用原理
转自:http://www.cnblogs.com/BeyondTechnology/archive/2011/03/25/1995942.htmlOnPaint()函数的作用原理WM_PAINT是窗口每次重绘都会产生的一个消息。 OnPaint是对这个消息的反应函数mfc 的 CWnd::OnPaint 没做什么,只是丢给系统处理。一 :转载 2012-08-20 11:33:25 · 1139 阅读 · 0 评论 -
MFC子窗口和父窗口(SetParent,SetOwner)
转自:http://www.cnblogs.com/BeyondTechnology/archive/2011/03/25/1995934.html一、概念和区别 在windows系统中,每个窗口对象都对应有一个数据结构,形成一个list链表。系统的窗口管理器通过这个list来获取窗口信息和管理每个窗口。这个数据结构中有四个数据用来构建list,即child、sibling、paren转载 2012-08-20 11:32:40 · 850 阅读 · 0 评论 -
注册/反注册窗体类RegisterClassEx/UnregisterClass
所有窗体在创建前都必须注册窗体类,只有注册的窗体类才被系统认知并允许实例化,换句话说通过注册告诉进程窗体管理器此类窗体的属性如: 背景色,窗体上的鼠标样式以及窗体事件处理函数等; 有一些控件类系统自带了的可以不用注册即可实例化,在不需要时反注册掉,以便释放类占用的内存。(一) 函数声明 I). 类注册ATOM RegisterClassEx(CONST WNDCLA...转载 2019-04-18 17:59:38 · 2227 阅读 · 0 评论