
Visual C++ / MFC
文章平均质量分 68
jtujtujtu
长期从事Windows下驱动程序开发,应用软件开发
展开
-
将opencv中的图像显示在VC的控件中
Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <!-- /* Font原创 2008-10-20 13:24:00 · 1409 阅读 · 1 评论 -
zz: 解决Visual C++ 编译器中混合 .c 文件时收到 C1853 预编译头错误的方法
解决Visual C++ 编译器中混合 .c 文件时收到 C1853 预编译头错误的方法2008-07-25 20:48:02 旧日重来当 Visual C++ 项目启用了预编译头 (Precompiled header) 功能时,如果项目中同时混合有 .c 和 .cpp 源文件,则可能收到 C1853 编译器错误:fatal error C1853: pjtname.pch pr转载 2009-10-26 11:10:00 · 987 阅读 · 0 评论 -
ZZ:ASF/WMV Profile相关参数设置
设置(Profile) 一个设置是一个ASF的配置(configuration)的描述数据集合。一个设置必须至少包含一个流的配置设置。 流信息 设置中的流信息包含流的比特率(bit rate),缓冲窗口和媒体属性的设置。视频和音频的流信息准确描述了文件中的媒体配置,包括压缩数据使用的编码和解码器(如果有的话)。 一个设置也包含很多创建ASF文件时使用的ASF的特性,这包括互斥、媒体优先级、带宽共转载 2009-11-13 15:53:00 · 2861 阅读 · 0 评论 -
CRichEditCtrl 获取单行字符串长度
对于多行RichEdit控件,CRichEditCtrl 提供了获取每行字符长度的函数:LineLength()定义如下:Retrieves the length of a line in a rich edit control. int LineLength( int nLine = -1 ) const;ParametersnLineSpecifies原创 2010-01-14 10:58:00 · 2554 阅读 · 0 评论 -
zz: 遍历 USB devcie,读取设备描述符 device descriptor
理论: 对于USB接口的设备,现在越来越多了。本篇我们就通过获取一个USB扫描仪设备中的序列号,来介绍如何获取usb设备的一些硬件信息。对于usb设备都是采用HCD0,HCD1,HCD2,HCD3等符号描述的。如下图:因此,有了这个名字,我们就可以使用CreateFile来打开usb设备。然后使用DeviceIoControl函数与usb设备通讯了。HCD是host controlle转载 2009-11-19 17:59:00 · 7765 阅读 · 1 评论 -
WM_COPYDATA 进程间传递数据(以字符串为例)
WM_COPYDATA 进程间传递数据(以字符串为例) Win32下很多时候,不同的进程之间需要通信,message是最常用的一种。可以通过SendMessage来向某个进程发送消息,前提是需要获取此进程的handle。SyntaxLRESULT SendMessage( HWND hWnd, UINT Msg, WPARAM wPara原创 2010-01-05 18:16:00 · 5492 阅读 · 1 评论 -
zz:CEdit & CRichEdit 使用技巧
zz from: http://www.my1984.com.cn/article.asp?id=830注:m_edit1代表ID为IDC_EDIT1的CEdit控件的control类型的变量m_richedit1代表ID为IDC_RICHEDIT1的CRichEditCtrl控件的control类型的变量----------------------------------------转载 2010-01-14 14:28:00 · 2208 阅读 · 0 评论 -
zz:VC CMenu / 菜单操作
实现右键菜单时,需要实现单选项,查msdn没能解决,只好求助网络。 ZZ from:http://blog.sina.com.cn/s/blog_4c1934d5010009k7.html 1. 取消右键系统菜单在PreCreateWindow函数中改变设置样式:cs.style&=~WS_SYSMENUCREATESTRUCT的具体结构如下:typedef s转载 2010-04-06 17:55:00 · 2639 阅读 · 0 评论 -
VC/MFC 将 数据/资源 放入resource中 (从resource加载 数据/资源)
很多时候,我们程序(.exe,.dll)需要配合外部资源进行操作,譬如笔者有在写得 固件更新程序(FW update tool),需要将固件程序通过tool烧录到device中去。这其中通常我们会写一个genera的tool,可以support不同的固件程序(FW),在update时只需要指定某一个固件程序即可。不过有些时候,我们希望客户不要看到我们的固件程序,希望将某个或者某些固件程序包进程序中(.exe,.dll)。这样做还可以使得我们的应用程序看起来很简洁,单个档案即可。 这就需要我们将原创 2010-06-02 19:57:00 · 5462 阅读 · 0 评论 -
VS2010 使用 Derictshow 时遇到的问题
<br />之前一直采用VS2005,现成的Code直接搬到vs2010,编译时出现如下错误:<br />错误1:<br />1>e:/program files/microsoft visual studio 10.0/vc/atlmfc/include/afxglobals.h(375): error C2143: syntax error : missing ';' before '*'<br />1>e:/program files/microsoft visual studio 10.0/vc原创 2011-04-22 14:19:00 · 2765 阅读 · 0 评论 -
进程间同步(互斥) 以及 同一DLL的不同进程copy共享全局变量
此前遇到一个问题,希望实现一个COM组件,能够被不同的AP调用,同时需要他们保持同步。比较好的方式是采用ATL实现singleton的Com组件,很遗憾,这部分并不熟悉,只是依照codeproject上的sample"葫芦"画了一个瓢。看起来是可以用,大概的流程也清楚,但是说起ATL,根本没看过。 那好吧,既然互斥就可以了,那就挑简单的,实现一个普通的COM组件/DLL,利用进程间互斥原创 2011-12-09 11:04:33 · 3999 阅读 · 0 评论 -
Dell D380 XP sp3下VS2010经常会crash的问题 (intel graphics driver)
最近开发工具由vs2005转至vs2010,无意中发现vs2010经常crash,基本每天都会发生。绝大部分发生 lock -> unlock 之后。网上查了查,microsoft的网站上也有人反映,解决办法有两个:1,Disable hardware acceleration: Tools -> Options -> General -> Visual Experience2,updat原创 2011-12-09 10:20:44 · 1993 阅读 · 0 评论 -
IPP 6.1 sample code中的compile error:'vswprintf' : too few arguments for call
在Ipp 6.1的sample code - Audio-Video-Codecs的compile过程中发现有提示Error:vm_file_win.c(1173): error C2198: 'vswprintf' : too few arguments for callvswprintf是一个MACRO,通过查看vswprintf的定义可以发现,他VC安装目录里有不同的定义,分别是原创 2012-03-12 15:16:50 · 2799 阅读 · 0 评论 -
Full screen检测方法
Windows下经常会遇到这样一个问题,检测是否有应用程序处于全屏状态,如果有,则需要做一些特别动作。笔者尝试过不同的方法,方法一,检测四个角点的hWnd,看他们是否是同一个window,通常对于播放器这种应用程序处于全屏时,会带有一个进度控制条,导致了四个角点属于两个不同的window。方法二,注册Desktop Toolbars,当有全屏幕程序打开或者关闭的时候都会有ABN_F原创 2012-07-20 14:54:49 · 2606 阅读 · 0 评论 -
MFC Dialog中F1自动弹出WinHelp窗口
ZZ: http://blog.youkuaiyun.com/silvervi/article/details/6445172 MFC中,键盘上的F1加速键会直接和基类的WinHelp函数关联,从而按下F1打开和应用同名的HLP文件。如果我们的帮助文件格式是其它格式,如chm,或者文件的名字不一样,则需要重载WinHelp函数,在函数内部修改m_pszHelpFilePath变量转载 2013-03-29 15:43:25 · 3803 阅读 · 1 评论 -
VS2012编译出来的程序,在XP上运行,出现“.exe 不是有效的 win32 应用程序” “not a valid win32 application”
升级vs2010到vs2012,突然发现build出来的应用程序无法运行,提示“不是有效的 win32 应用程序” or “not a valid win32 application”。参考优快云论坛中的方法,找到下面这篇文章:http://blogs.msdn.com/b/vsnetsetup/archive/2012/10/16/setup-exe-is-not-a-valid-wi原创 2013-04-03 17:15:10 · 51804 阅读 · 6 评论 -
VS2010 如何缩减编译文件大小(statically linked MFC)
自从 VS2005 升级到 VS2010 之后,build出来的文件(exe、dll)就莫名的增大了很多,MSDN的blog上有一篇blog,详细描述了size增大的原因,以及缩减的方法。总结如下原因:size增大是因为DLGINIT 的引入。他允许在dialog上增加MFC控件。而这个function在static link的过程中会引入很多可能并不需要的function,因为在翻译 2013-05-09 10:26:03 · 6161 阅读 · 3 评论 -
vs2015 LINK : fatal error LNK1104: cannot open file 'ucrt.lib'
VS2015发布已经有一段时间了,最近有把之前的project从VS2013升级到VS2015,发现很多Error,如下:1>LINK : fatal error LNK1104: cannot open file 'libucrtd.lib'我们看到VS2015会主动去link "libucrtd.lib"这个lib,经过查找发现,他在这个目录:Windows Kits\10\L原创 2016-04-29 17:48:51 · 11081 阅读 · 0 评论 -
基于 windbg 检查directshow(com)内存泄露
在使用com的过程中,发现无论是vs2005还是boundscheck都找不到内存泄露,但是程序一跑起来, 很快就上几十M的内存泄露. 找啊找啊找, 找了半天, 还是没发现. 求助同事, 他采用了windbg, 不过好像也不是那么简单, 很多时候甚至于需要一个函数一个函数通过console方式来进行测试. 总结一下, 在使用com编程的时候需要注意的地方:1,确保CoIni原创 2009-06-19 09:38:00 · 3363 阅读 · 0 评论 -
VS2005运行提示:没有找到 MSVCR80.dll
在使用vs2005的过程中,经常会碰到 VS2005运行Debug版本时 提示:"没有找到MSVCR80.DLL,因此这个应用程序未能启动。重新安装应用程序可能会修复此问题" 而在运行Release版本则不存在此问题 解决办法: 1: http://hi.baidu.com/honinbou/blog/item/c1a6eec3151a2a5db319a8a0.html转载 2009-06-08 14:25:00 · 4308 阅读 · 0 评论 -
MFC / vc 自定义字体(类型/大小)显示
CDC* pDC =GetDC(); //获取DC CString strText;// pDC->SetBkMode(TRANSPARENT); //transparent? LOGFONT lf; CFont fontTemp, * pFontOld; pDC->GetCurr转载 2009-06-04 16:22:00 · 3230 阅读 · 0 评论 -
MFC 添加系统栏图标
Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <!-- /* Font原创 2008-10-20 13:38:00 · 942 阅读 · 0 评论 -
判断目录是否存在并创建目录
Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <!-- /* Font原创 2008-10-28 11:47:00 · 2258 阅读 · 0 评论 -
系统栏添加右键菜单:
Normal 0 false false false MicrosoftInternetExplorer4 <!-- /* Font Definitions */ @font-face {font-family:宋体;原创 2008-10-14 15:28:00 · 852 阅读 · 0 评论 -
添加系统栏图标
Normal 0 false false false MicrosoftInternetExplorer4 <!-- /* Font Definitions */ @font-face {font-family:宋体;原创 2008-10-13 15:28:00 · 907 阅读 · 0 评论 -
动态改变基于CDialog的窗口的大小
动态更改对话框大小CRect rect;GetWindowRect(&rect);SetWindowPos(NULL, rect.left, rect.top, rect.Width()+deltaW, rect.Height()+deltaH, SWP_NOMOVE);动态更改控件大小CRect rect;CWnd* pWnd = GetDlgItem(IDC_XXXX);pWnd->GetWi原创 2009-01-08 15:24:00 · 4162 阅读 · 0 评论 -
VC 中调用默认邮件发送程序(Outlook)发送 指定附件的email
// 支持多个附件同时发送, 附件文件名保存于File(std::vector)中 HINSTANCE hMAPI = ::LoadLibrary(_T("MAPI32.DLL")); //Load Library if (!hMAPI) { ::FreeLibrary(hMAPI); return; } ULONG (PAS原创 2009-01-12 09:15:00 · 3260 阅读 · 0 评论 -
vc中滑动控件slider的使用
滑动控件是Windows中最常用的控件之一。一般而言它是由一个滑动条,一个滑块和可选的刻度组成,用户可以通过移动滑块在相应的控件中显示对应的值。通常,在滑动控件附近一定有标签控件或编辑框控件,用于显示相应的值。滑动控件在应用程序中用途级为广泛,如在桌面的属性中就可以看到。为此,让我们一起来看一下它的实现方法。(1)在VC++ 6.0中新建一个对话框文档的工程。(2)打开资源管理转载 2008-12-02 13:33:00 · 1314 阅读 · 0 评论 -
VC 创建新进程,结束进程 (打开exe等可执行文件)
在VC程序中如何结束系统正在运行的其他进程(该进程必须有窗口界面),其实很简单,按如下步骤进行即可: 1.取得进程的句柄(利用FindWindow函数得到); 2.获取进程ID号(用GetWindowThreadProcessId函数获取); 3.打开进程,OpenProcess函数中的第一个参数设为PROCESS_TERMINATE,就可以获取处理该进程的句柄; 4.利用转载 2008-12-11 09:41:00 · 3922 阅读 · 0 评论 -
ZZ Windows 控制面板编程
ZZ From: http://blog.youkuaiyun.com/tomcui/archive/2008/01/22/2058502.aspxWindows 控制面板编程说明:本文章为本人在做项目时查阅相关文章而写成,如有不当之处,请指出。mail: tomcui60000520@163.com关键字:控制面板,控制面板应用程序, 一、 什么是控制面板转载 2008-12-12 14:19:00 · 2965 阅读 · 0 评论 -
如何注册 CPL 文件,使得可以在控制面板中显示
Registering Control Panel ItemsControlPanel items must be registered in order to appear in the Control Panelwindow. If the Control Panel item is implemented as part of a .exe filethen it is regi转载 2008-12-15 15:23:00 · 2790 阅读 · 0 评论 -
error C2061: syntax error : identifier 'CAMSchedule'
DirectShow中的例子,在编译的过程中经常会出现这样的错误:Error 1 error C2061: syntax error : identifier CAMSchedule c:/programfiles/microsoftsdks/windows/v6.0/samples/multimedia/directshow/baseclasses/refclock.h80 这主翻译 2008-12-18 15:11:00 · 6869 阅读 · 5 评论 -
Gdiplus 读取并显示 Gif
Gdiplus提供的Bitmap支持读取并显示GIF文件.但是对于部分GIF图片可能会出现帧间间隔为0的情况,为此,在此情况下默认时间间隔为100ms, 不知道是不是我没有找对,有建议欢迎反馈! (测试在GIMP中同样会出现帧间间隔为0,我想应是有个默认值的吧,100ms效果还可以接受,暂且借用)#define UM_TIMER_GIFNEXTFRAME (WM_USER+0x01)原创 2009-03-31 19:18:00 · 3658 阅读 · 1 评论 -
用C++读写unicode文本
用C++读写unicode文本http://librawill.blogspot.com/2008/08/cunicode_2881.html熟悉一下字符类型,char, wchar_t, TCHAR,最熟悉的char是单字节字符,适用于ANSI编码;wchar_t是双字节的宽字符类型,适用于unicode编码;TCHAR是一个宏,在ANSI坏境下定义为char,unicode坏境转载 2009-03-31 16:50:00 · 5510 阅读 · 0 评论 -
DirectShow Filter 编译时遇到的问题 ---- error MIDL2025 : syntax error : expecting ]... || error C2504: 'IReferenceClockTimerControl' :
如果你的sdk安装有不同版本,譬如 Microsoft DrectX SDK(August 2007) 以及 Microsoft SDKS那么在你的VC directories中会出现两个或两个以上的 include directory如果 你需要编译的是最新的 Microsoft SDKS中的samples中的Filter1, 你需要在 VC directories中的inlude中原创 2009-04-14 14:21:00 · 5900 阅读 · 0 评论 -
vc / mfc 快捷键 的实现
VC中我们经常使用到快捷键,这里快捷键有多种,包括menu,button。另外还区分local的和global的, 其中local的职能在当前程序有焦点(被激活)时有效,而global的,则无论什么时候都有效,测试local的要优先于global的,就是如果当前激活窗口的快捷键与未激活窗口的快捷键重叠,当前激活窗口优先响应。 这里将快捷键分为menu和button两种。原创 2009-04-21 17:41:00 · 11691 阅读 · 2 评论 -
Directshow 通过 put_Owner 指定显示窗口后,自动刷新问题
在Directshow中,我们可以对render指定显示窗口,在写程序的过程中, 发现通过put_Owner设置的显示窗口存在自动刷新问题,譬如窗口被遮挡然后再次露出时,被遮挡部分不能自动刷新,需要拖动窗口进行刷新。 网上搜索了一下,找到了解决问题的办法:http://blog.youkuaiyun.com/lemon_wei/archive/2008/02/29/2132195转载 2009-04-23 11:12:00 · 2565 阅读 · 0 评论 -
zz:利用SHBrowseForFolder 产生路径选择对话框 同时指向默认路径文件夹
如何打开选择路径对话框?现在就用一些代码来说明,如下。 TCHAR szPath[MAX_PATH]; BROWSEINFO br; ITEMIDLIST* pItem; br.hwndOwner = this->GetSafeHwnd(); br.pidlRoot = 0; br.pszDisplayName = 0; br.lpszTitle = "选择路径"; br.ulFla转载 2009-08-06 19:26:00 · 4969 阅读 · 5 评论 -
Memory Leak Detection Using Windbg(windbg检查内存泄漏)
zz from : https://www.codeproject.com/Articles/31382/Memory-Leak-Detection-Using-WindbgIntroductionMemory leak is a time consuming bug often created by C++ developers. Detection of mem转载 2017-07-04 10:23:21 · 1362 阅读 · 0 评论