- 博客(105)
- 资源 (1)
- 收藏
- 关注
转载 判断多Frame网页是否真正加载完毕(CHtmlView)
1. 手工重载添加两个虚拟函数:virtualvoidDocumentComplete(LPDISPATCHpDisp,VARIANT*URL);virtualvoidNavigateComplete2(LPDISPATCHpDisp,VARIANT*URL);注意:不是以下两个函数virtualvoid OnDocumentComplete(VARIANT* URL);v
2012-09-03 17:09:17
2364
原创 去掉在模态对话框处理鼠标跟键盘消息时,出现系统提示声音
基于模态CDialog 窗口时,当处理键盘消息或是鼠标消息时,有时会提示“当当”的声音,这个可以通过设置系统来关掉声音;通过去掉系统的默认初始消息来屏蔽声音:BOOL CPiFuMBDlg::PreTranslateMessage(MSG* pMsg) { if(pMsg->message==WM_CHAR) { return TRUE; } return CBas
2012-06-30 10:38:15
1061
转载 关于屏蔽CHtmlView脚本错误
当WebBrowser控件(CDHtmlDialog自动创建了WebBrowser控件)加载的网页中含有错误Javascript代码时默认情况下控件会弹出错误信息提示对话框,相对于用户体验来说这样的提示完全不是开发人员想要的,针对这个问题有两个解决方案,一是完全屏蔽掉错误提示,二是控制错误的提示并且记录错误信息同时也可以控制出现错误后Javascript是否继续执行。1、屏蔽错误信息提示
2012-06-26 11:05:31
3757
原创 error LNK2005: __initp_misc_invarg 已经在 libcmtd.lib(invarg.obj) 中定义
1>libcmt.lib(invarg.obj) : error LNK2005: __initp_misc_invarg 已经在 libcmtd.lib(invarg.obj) 中定义1>libcmt.lib(invarg.obj) : error LNK2005: __call_reportfault 已经在 libcmtd.lib(invarg.obj) 中定义 当在链接Lib文
2012-06-15 10:11:56
8001
转载 WM_PAINT消息---InvalidateRect不能实时更新问题
WM_PAINT消息的触发时机: 第一次创建一个窗口时,改变窗口的大小时,把窗口从另一个窗口背后移出时,最大化或最小化窗口时,等等,这些动作都是由系统管理的,应用只是被动地接收该消息,在消息处理函数中进行绘制操作; 大多数的时候应用也需要能够主动引发窗口中的绘制操作,比如当窗口显示的数据改变的时候,这一般是通过InvalidateRect和InvalidateRgn函数来完成的
2012-06-07 15:54:25
2271
转载 CHtmlView 和 Webbrowser 控件中超链接点击事件的获取与检测
在自己的程序中使用 CHtmlView 或直接嵌入 Webbrowser 控件显示网页时,常常需要获取网页元素的一些事件,以实现对网页显示的控制或与网页元素进行交互。最常见的莫过于获取用户对网页上超链接的所有点击事件。要实现这个需求,在MSDN 中描述了接收网页元素事件的基本方法,但这篇文章的一些细节语焉不详,让人摸不着头脑。在 CodeProject 这篇文章中提出了一种替代的方法,
2012-04-17 09:46:39
946
转载 使用VC/MFC创建一个线程池
有许多应用程序创建的线程花费了大量时间在睡眠状态来等待事件的发生。还有一些线程进入睡眠状态后定期被唤醒以轮询工作方式来改变或者更新状态信息。线程池可以让你更有效地使用线程,它为你的应用程序提供一个由系统管理的工作者线程池。至少会有一个线程来监听放到线程池的所有等待操作,当等待操作完成后,线程池中将会有一个工作者线程来执行相应的回调函数。 你也可以把没有等待操作的工作项目放到线程池中,用Que
2012-03-09 11:32:46
2025
原创 CWnd中创建控件修改其TAB顺序
在CDialog中改变Tab键顺序可以使直接在向导中直接修改(静态创建),也可以在创建控件的时候指定其WS_TABSTOP属性,TAB顺序就是按照你创建的先后顺序来指定的;但是在CWnd类中通过修改其WS_TABSTOP属性就不能实现了,还需要在PreTranslateMessage(MSG* pMsg) 响应其tab键然后设置SetFocus来实现:BOOL CChildView::Pr
2012-01-06 11:01:02
1216
转载 CDHtmlDialog探索----Javascript与窗体交互
CDHtmlDialog提供了C++与网页的双向交互,通此一系统简单的宏调用可以把网页中各元素的事件直接映射到C++程序中,而在网页中调用C++功能代码就显的不那么直观了。归根结底交互的基理就是实现相应COM接口。实现方式如下:1、在窗体初始化时调用EnableAutomation函数。 通常情况下是放在窗体的构造函数中,EnableAutomation();当然也可
2011-11-17 17:31:46
721
转载 CDHtmlDialog探索----WebBrowser扩展和网页Javascript错误处理
当WebBrowser控件(CDHtmlDialog自动创建了WebBrowser控件)加载的网页中含有错误Javascript代码时默认情况下控件会弹出错误信息提示对话框,相对于用户体验来说这样的提示完全不是开发人员想要的,针对这个问题有两个解决方案,一是完全屏蔽掉错误提示,二是控制错误的提示并且记录错误信息同时也可以控制出现错误后Javascript是否继续执行。1、屏蔽错误信息提示
2011-11-17 16:31:14
984
原创 VS2010\2008中不能新建项目问题的解决
VS不能新建项目,在左下角提示创建失败,在网上搜索下得到了解决运行输入 regsvr32 %windir%\system32\jscript.dll 如果是在WIN7下,有可能你当前用户没有管理员权限,你可以点击"开始"——程序 - 附件 - 命令提示符,在”命
2011-10-14 15:50:26
900
原创 注册表获取默认浏览器
今天因工作的需要,需得到系统的默认浏览器,在网络上找到了一些资料,HKEY_CLASSES_ROOT\http\shell\open\command 等等,在XP系统下,还能得到正常的数据,然而在win7 就不能得到正确的结果,在win7下,比如修改360为默认浏览器后,再把IE
2011-10-12 19:35:03
2457
原创 自绘按钮响应单击消息
在派生类的消息映射中添加:ON_CONTROL_REFLECT_EX(BN_CLICKED, OnClicked)实现函数:BOOL CButtonXX::OnClicked()return FALSE;头文件中添加声明:protected:afx_msg BOOL OnClic
2011-07-17 15:20:33
637
转载 数据结构和算法的分离(收集)
开发手记记录了一些我在开发PhoXo(一个小巧的32bit图像处理软件)中的心得体会,它们全部源于实际应用,是我在探索OO(object orient)的路上获得的战利品,希望对大家有帮助。 相信每一个在windows下编过程序的人都或多或少地用过位图,大多数人是从网上下载一些
2011-07-17 14:50:22
955
原创 提高double /float 强转为int类型的速度
/* double到整数的转换超强的算法,无误差 (利用了IEEE浮点编码格式) ,比使用C语言 int a = (int)(浮点数)快很多*/ static inline int DoubleToInt_IEEE(double value) { static const d
2011-07-15 09:44:26
2641
转载 堆栈,堆栈,堆和栈的区别
堆和栈的区别 (转贴) 非本人作也!因非常经典,所以收归旗下,与众人阅之!原作者不祥!堆和栈的区别一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数
2011-07-14 17:11:22
681
原创 对开发中常见的内存泄露,GDI泄露进行检测
对开发中常见的内存泄露,GDI泄露进行检测一、GDI泄露检测方法:在软件测试阶段,可以通过procexp.exe 工具,或是通过任务管理器中选择GDI对象来查看软件GDI的对象是使用情况。注意点:Create出来的GDI对象,都要用DeleteObject来释放;Create出来
2011-07-13 17:27:24
6852
转载 在CDHTMLDialog中扩展浏览器脚本以及在HTML中增加MFC消息响应
扩展浏览器脚本 假设我们创建了一个CMyDHTMLDialog对话框类,包含两个文件MyDHTMLDialog.h和MyDHTMLDialog.cpp1、让类自身支持自动化 EnableAutomation(); //只要是从CCmdTarget派生下来的类都可以支持 //可以放在CMyDHTMLDialog::CMyDHT
2011-06-29 17:59:00
1902
转载 WebBrowser 调用HTML脚本文件函数
为了调用脚本函数存在的网页上,您必须使用自动化 ; 换句话说,IDispatch。 使用以下步骤来调用脚本函数从 Visual C++ 应用程序的网页上存在的: 1.获取在 HTML 文档的 IDispatch。 2.调用利用 IDispatch:: GetIDsOfNames 获取脚本函数的 ID。 3.调用 IDispatch:: Invoke 执行该函数。 下面的 Visual C++ 源代
2011-06-29 14:52:00
1174
原创 在2010中提示_CrtDbgReport: String too long or IO Error
<br />vs2010 中,用TRACE不要加 _T <br />不然会提示_CrtDbgReport: String too long or IO Error
2011-05-13 16:29:00
4793
1
转载 MFC:thunk技术完成窗口类地封装
<br />窗口类的封装,从全局窗口消息处理到窗口对象消息处理的映射方法:<br /> 对界面进行封装,一般都是一个窗口一个类,比如实现一个最基本的窗口类CMyWnd,你一定会把窗口过程作为这个类的成员函数,但是使用WINAPI创建窗口时必须注册类WNDCLASS,里面有个成员数据lpfnWndProc需要WNDPROC的函数指针,一般想法就是把窗口类的消息处理函数指针传过去,但是类成员函数除非是静态的,否则无法转换到WNDPROC,而全局的消息处理函数又无法得到窗口类对象的指针。这里有几种解决办法:<b
2011-04-30 16:22:00
951
原创 vs2010 下CHtmlView 页面会闪烁
<br />本文摘取网络上的文章<br /> <br />web browser控件在对话框程序中不会闪烁, 而在CWnd中, 当窗口缩放的时候就会闪.一个web browser控件由3层窗口组成: <br />Shell Embedding <br />Shell DocObject View <br />Internet Explorer_Server <br />而Internet Explorer_Server这层窗口可能只有在显示网页后才出现. 刚创建的时候并没有这层窗口. 闪烁的原因就是Inte
2011-04-30 16:19:00
2257
原创 实现实时刷新的效果
<br />有时候我们想OnPaint() ;立即执行来实现实时刷新的效果:<br />方法1是:<br />SendMessage(WM_PAINT);<br />InvalidateRect(NULL,FALSE);<br />方法2是:<br />InvalidateRect(NULL,FALSE);<br />UpdateWindow();
2011-04-30 16:18:00
1455
原创 关于在2010中调用GDI+ 提示“Font”: 不明确的符号的问题
<br />在VS2010中调用GDI+时,<br />Font font(&fontFamily,13,FontStyleRegular,UnitPixel);<br />会提示提示“Font”: 不明确的符号的问题<br />1> 可能是“c:/program files/microsoft visual studio 10.0/vc/include/comdef.h(312) : Font”<br />1> 或 “c:/program files/mic
2011-02-12 14:23:00
5422
转载 SystemParametersInfo详说
函数功能描述:查询或设置系统级参数。该函数也可以在设置参数中更新用户配置文件。<br /><br />函数原型<br />B00L SystemParametersinfo(UINT uiAction,UINT uiParam,PVOID pvParam,UINT fWinlni);<br /><br />参数<br />uiAction:该参数指定要查询或设置的系统级参数。其取值如下;<br />SPI_GETACCESSTIMEOUT:<br />检索与可访问特性相关联的超时段的信息,PvParam参数
2011-02-11 13:06:00
771
原创 进程内注册控件
<br />HRESULT DllUnregisterServer(LPCTSTR lpszDLLPath) <br />{<br />HINSTANCE hDLL = LoadLibrary(lpszDLLPath) ;<br />if (hDLL)<br />{<br /> typedef HRESULT (__stdcall *PFN_DllUnregisterServer)(void) ;<br /> HRESULT hr ;<br /> PFN_DllUnregisterServer
2011-02-11 13:05:00
567
原创 16进制 转化为COLORREF 格式的
<br /> <br />CString m_BackColor.m_frame_color = "#0290D8";<br />DWORD r,g,b;<br />sscanf(m_BackColor.m_frame_color,"#%2X%2X%2X",&r,&g,&b);<br />COLORREF rgb = RGB(r,g,b);<br />brush.CreateSolidBrush (rgb);
2011-02-11 13:04:00
1248
转载 unexpected end of file while looking for precompiled header directive 解决办法
右键点工程名,选设置,然后选c/c++属性页,再选catagory选单中选 precompiled header ,将选项置成no use 或者autometic <br /><br />---------转载的文章----------<br />预编译头的概念:<br />所谓的预编译头就是把一个工程中的那一部分代码,预先编译好放在一个文件里(通常是<br />以.pch为扩展名的),这个文件就称为预编译头文件这些预先编译好的代码可以是任何的<br />C/C++代码--------甚至是inline的函
2011-02-11 13:03:00
3542
转载 对文件进行加密(加密方式blowfish)
<br />#include <stdio.h><br />#include <memory.h><br />#include <string.h><br />#define SBOX_BEGIN 18<br />const unsigned long sbox[4][256]=<br />{<br /> {<br /> 0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7, 0xb8e1afed, 0x6a267e96, 0xba7c9045,
2011-02-11 13:01:00
4606
原创 CTypedPtrMap模板指针类的用法 和CArchive类
<br />在编程中运用CTypedPtrMap指针模板类的方法,其存储结构占用物理空间小,比单纯的用数组结构存储的文件将小很多,所以是一种非常推荐的存储及读取文件的方法。<br />你必须在stdafx.h文件中 包含 #include <afxtempl.h> // MFC templates<br />在头文件中包含 #include <io.h><br />其中 CBank.h文件如下:class CBank : public CObject <br />{<br />DECLARE_SER
2011-02-11 13:00:00
2315
转载 客户端跟服务器的信息交互-CHttpClient
http://www.codeproject.com/kb/library/lyoulhttpclient.aspxDownload CHttpClient source files - 72.9 KBDownload CHttpClient demo project - 109.9 KBDownload CHttpClient help file - 445.9 KBDownload CHttpClient COM Edition source files - 141.6 KBDownload CHttp
2011-02-11 12:58:00
1534
原创 把位图转换为区域
一个函数BitmapToRegion(),用于把一个位图转换为区域。 它扫描位图内容,找到非透明象素的连续线,增加这些线到 RGNDATA结构,最后,用ExtCreateRgn()创建区域。
2011-02-11 12:56:00
606
原创 在VC++6.0下设置GDI+
1.下载(GDI+ for VC6.0 SDK)GDIPlus文件将其中的Includes和Lib中的文件拷到vc目录下的Includes和Lib文件夹中.<br /> 下载地址:http://www.codeguru.com/code/legacy/gdi/GDIPlus.zip(引用他人的)<br />2.在你将要使用GDI+的工程中,完成初始化工作:<br />在StdAfx.h中加入<br />#define ULONG_PTR unsigned long<br />#include <Gd
2011-02-11 12:55:00
759
转载 如何在程序中动态设置墙纸
大家都知道设置WINDOWS桌面墙纸的WIN32 API是SystemParametersInfo, 使用SPI_SETDESKWALLPAPER参数便能设置墙纸:<br />::SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, "C://ABitmap.bmp", SPIF_SENDWININICHANGE | SPIF_UPDATEINIFILE);<br />但问题并没有解决,因为这个WIN32 API有很大的局限性<br />1. 无法把jpeg, gi
2011-02-11 12:54:00
1077
转载 VC/MFC 设置程序与文件关联与双击文件获取文件路径
<br />如何设置程序与文件关联并且双击关联文件时获取文件的路径呢?<br />一般来说可以通过写注册表的方式实现,在函数入口处实现功能。<br />例如在VC/MFC中,可以在应用程序的C**App.cpp文件中InitInstance()函数中实现该功能。<br />#include <string><br />using namespace std;<br />//关联文件的后缀名,如"txt"、"doc"等<br />string m_csExtension;<br />string m_csSh
2011-02-11 12:52:00
1137
转载 如何在程序中创建快捷方式
<br />通过手工操作建立这些菜单项或快捷方式并不复杂,在一般Windows使用手册中都有介绍,相信大家都很熟悉,在此不再赘述。笔者在有关资料的基础上,通过实践摸索,找到了在应用程序中完成上述工作的方法。这正是开发安装程序所必需的。<br /> Windows的快捷方式实际上是一个带有扩展名LNK的数据文件,其中包含有用于访问Windows某一对象(即在资源管理器中所能浏览的所有对象,包括文件,文件夹,驱动器及打印机等)的有关信息,如目标对象的路径和名称,工作目录,要传递的命令行参数,运行时的初始显示状
2011-02-11 12:52:00
3239
原创 获取系统版本 XP ,VIS win7 等
<br />解决了WINDOWS7判断的问题<br />BOOL GetOS(LPTSTR lpBuffer, UINT uSize)<br />{ <br />OSVERSIONINFOEX osvi;<br />ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));<br />osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);<br />if( !GetVersionEx ((OSVERSIONINFO *)&osvi)
2011-02-11 12:51:00
1924
转载 处理键盘组合键消息
在处理组合键消息时,不能直接用wParam, 而要用GetKeyState(VK_CONTROL)或GetKeyState(VK_SHIFT)来判断是否按下了组合键...<br /><br />你这样用:<br />if( GetKeyState(VK_CONTROL) & 0xF0000000) nCtrlAKeyDown = TRUE;<br />if( GetKeyState(VK_SHIFT) & 0xF0000000) nShiftKeyDown = TRUE;<br /><br />//====
2011-02-11 12:49:00
1859
转载 VC6 在Vista Win7 下提高权限问题
<br />以下程序集清单(Assembly Manifest)示例使你的程序在VISTA和WIN7下需要管理员权限,即在程序运行时弹出UAC提升权限对话框。<br /><?xml version="1.0" encoding="UTF-8" standalone="yes"?><br /><assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"><br /><assemblyIdentity<br /> vers
2011-02-11 12:48:00
737
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人