c++
牛 魔 王
这个作者很懒,什么都没留下…
展开
-
多重继承引起的二义性问题
派生类直接派生于a,b两基类,a,b两个又都有成员display或者都有成员int p。这个时候要是派生类c调用display,则出错,原因是系统不知道改掉用哪一个display。此时这样写:c c1; c1.a::display();若是在c的成员函数中调用display则要这样写a::display(); 如果a,b都是由n派生而来。则a,b都继承了n的成员,则a,b具有同名的成员转载 2012-05-29 14:02:03 · 1088 阅读 · 0 评论 -
WinAPI: ShellExecute - 打开外部程序或文件
ShellExecute( hWnd: HWND; {指定父窗口句柄} Operation: PChar; {指定动作, 譬如: open、print} FileName: PChar; {指定要打开的文件或程序} Parameters: PChar; {给要打开的程序指定参数; 如果打开的是文件这里应该是 nil} Directory: PChar; {转载 2012-07-23 15:23:40 · 784 阅读 · 0 评论 -
如何判断网页加载完成
原文:http://support.microsoft.com/kb/180366/zh-cn web 浏览器控件将触发 DocumentComplete 事件时其 ReadyState 属性更改为 READYSTATE_COMPLETE。这表明 web 浏览器控件已完成下载 Web 页。下面是一些关于此活动的要点:在没有框架的网页的情况下 DocumentComplete原创 2012-08-09 09:45:12 · 1348 阅读 · 0 评论 -
C/C++中的日期和时间 time_t与struct tm转换
摘要:本文从介绍基础概念入手,探讨了在C/C++中对日期和时间操作所用到的数据结构和函数,并对计时、时间的获取、时间的计算和显示格式等方面进行了阐述。本文还通过大量的实例向你展示了time.h头文件中声明的各种函数和数据结构的详细使用方法。关键字:UTC(世界标准时间),Calendar Time(日历时间),epoch(时间点),clock tick(时钟计时单元)1.概念在 C转载 2012-08-10 15:26:44 · 936 阅读 · 0 评论 -
如何重写的 MFC 控件容器接口方法,在 Visual c + + 中的几个默认行为
原文http://support.microsoft.com/kb/196835/zh-cn MFC 控件容器支持涉及三个主类: COccManager,COleControlContainer,和 COleControlSite。COccManager 是一个 MFC 进程中的所有控件容器的主控制器,并负责处理出 COleControlSite 和 COleControlContaine原创 2012-08-01 11:25:08 · 2626 阅读 · 0 评论 -
C++(MFC)中WebBrowser去除3D边框的方法(实现IDocHostUIHandler接口)
先说实在的:最终解决办法是实现IDocHostUIHandler接口,在GetHostInfo方法里解决,但“实现接口”意味着QueryInterface、AddRef、Release三个方法必须实现,所以相关代码是:class CMyWebBrowser : public IDocHostUIHandler{public: CMyWebBrowser() { m_cRef转载 2012-07-31 11:35:01 · 3233 阅读 · 0 评论 -
error C2504: 'COleControlSite' : base class undefined
我自己建一个新类class CCustomControlSite:public COleControlSite完成后编译出错error C2504: 'COleControlSite' : base class undefinederror C2504: 'COccManager' : base class undefinederror C2664: 'AfxEnableC原创 2012-08-01 16:10:25 · 2639 阅读 · 0 评论 -
VC程序在非MFC中使用CString
CString在当今软件设计界里还是小有名气的,说它是MFC中使用的最多的类一点也不过,然而在使用sdk编windows程序的时候,确不能利用CString类,只能用sdk的运行时库,比如strlen,strcpy,strstr等等,本文讨论的是在非mfc程序中使用CString类的方法,算是个引子,如果有更好的实现方法,欢迎大家讨论。 为了使用CString类,首先源文件必须是以cpp结尾转载 2012-08-31 17:33:53 · 1030 阅读 · 0 评论 -
用WM_COPYDATA消息来实现两个进程之间传递数据
进程之间通讯的几种方法:在Windows程序中,各个进程之间常常需要交换数据,进行数据通讯。常用的方法有 使用内存映射文件 通过共享内存DLL共享内存 使用SendMessage向另一进程发送WM_COPYDATA消息比起前两种的复杂实现来,WM_COPYDATA消息无疑是一种经济实惠的一中方法.WM_COPYDATA消息的主要目的是允许在进程间传递只读数据。Wi原创 2012-08-24 10:34:54 · 2794 阅读 · 0 评论 -
VC 进程间通信
我们既可以用非标准的进程间通信技术,如Windows消息、内存映射和内存共享等,也可以用标准的通信技术。微软标准进程间通信技术的发展过程如下所述。(1)进程间通信初期自从有Windows操作系统后,剪贴板(Clipboard)首先解决了不同程序间的通信问题(由剪贴板作为数据交换中心,进行复制、粘贴的操作)。但是剪贴板传递的都是“死”数据,应用程序开发者得自行编写、解析数据格式的代码。于是动转载 2012-08-24 10:42:24 · 4217 阅读 · 0 评论 -
VC共享内存实现进程间数据的交换
共享内存的使用 在Windows操作系统下,任何一个进程不允许读取、写入或是修改另一个进程的数据(包括变量、对象和内存分配等),但是在某个进程内创建的文件映射对象的视图却能够为多个其他进程所映射,这些进程共享的是物理存储器的同一个页面。因此,当一个进程将数据写入此共享文件映射对象的视图时,其他进程可以立即获取数据变更情况。为了进一步提高数据交换的速度,还可以采用由系统页文件支持的内存映射文转载 2012-08-24 10:45:27 · 917 阅读 · 0 评论 -
CStringList用法 (摘录)
MFC提供集合类(Collect)专门负责数据对象的存储和管理,MFC的集合类分为三类,分别用于处理三类不同性质的数据结构:表(List,类似于数据结构的双链表),数组(Array)和映射(Map,具有类似字典的功能).一,数组使用心得原型: templateTYPE, class ARG_TYPE > class CArray : public Cobject简单地说是你转载 2012-09-03 20:33:33 · 1072 阅读 · 0 评论 -
CStringList不完全用法
CStringList类支持CString对象的列表。所有的比较都是通过值比较来完成的,这意味着不是比较字符串的地址而是比较字符串中的字符。CStringList的成员函数类似于类CObList类的成员函数。由于具有这些相似性,你可以参考关于CObList的参考文件来获取CStringList成员函数的详细说明。如果在说明中看到某一函数的返回值是一个指向CObject对象的指针,则可以用一个C原创 2012-09-04 09:23:07 · 1075 阅读 · 0 评论 -
HTTP POST和GET的区别
1、HTTP 只有POST和GET 两种命令模式;2、POST是被设计用来向上放东西的,而GET是被设计用来从服务器取东西的,GET也能够向服务器传送较少的数据,而Get之所以也能传送数据,只是用来设计告诉服务器,你到底需要什么样的数据.POST的信息作为HTTP 请求的内容,而GET是在HTTP 头部传输的;3、POST与GET在HTTP 中传送的方式不同,GET的参数是在HTT转载 2012-09-04 19:18:17 · 847 阅读 · 0 评论 -
CString与LPCWSTR的转化
问题起因: 在写WritePrivateProfileString写.ini配置文件时在msdn中看到,如果想要写得配置信息即时生效必须在之前使用WritePrivateProfileStringW来re-read一下目标.ini文件,其原文如下: // force the system to re-read the mapping into s转载 2012-08-29 09:46:09 · 565 阅读 · 0 评论 -
非窗口类中使用定时器的方法及相关知识的介绍
本文代码运行效果图如下: 一、引言定时器在Windows 的程序中的作用不可忽略,也随处可见。设定一个时间间隔每0.5秒或者1秒钟刷新一次时钟,这样就可以完成一个简单的电子钟程序。在不同的编程工具中定时器的用法也不同,Visual C++中也给我们提供了实现这种功能的方法,而且方法不只一种。在窗口类中是使用定时器比较很简单,用SetTimer()设置了定时器之后,并在Class Wi转载 2012-09-09 21:52:15 · 1333 阅读 · 0 评论 -
c++如何让程序只启动一个实例
from:http://blog.csdn.net/yaoohfox/article/details/43525181. 用互斥(Mutex),Mutex本来是多线程同步用的,防止多个线程访问同一资源而引发冲突。用CreateMutex可以创建Mutex对象,实质上是一个kernel对象。 在任何Win32程序(包括GDI和Console)的启动部分加上以下代码(Consol转载 2012-10-19 15:17:39 · 877 阅读 · 0 评论 -
SHELLEXECUTEINFO 和 ShellExecuteEx的使用
from:http://www.cppblog.com/SpringSnow/archive/2009/04/22/80719.aspx在日常工作中用到的一些知识,很久没有总结过,前几日参加一个会议,很是无聊。自己思索着自己这两年来所做过的东西,写着写着居然也写下了100个知识点。想把它一条一条总结下来,动笔总不是很容易。就拿这篇文章作为第一篇。 很多东西取之于网络,转载 2012-11-13 13:49:33 · 583 阅读 · 0 评论 -
SAFEDELETE宏
#ifndef SAFE_DELETE#define SAFE_DELETE(p) { if(p){delete(p); (p)=NULL;} }#endif #ifndef SAFE_DELETE_ARRAY#define SAFE_DELETE_ARRAY(p) { if(p){delete[] (p); (p)=NULL;} }#endif #ifndef SAFE_RELEASE#原创 2012-07-20 16:21:41 · 4599 阅读 · 0 评论 -
使用WinAPI函数FindFirstFile或GetFileAttributes判断文件是否存在
函数FindFirstFile根据文件名查找文件:如执行成功,返回一个搜索句柄;如果出错,返回一个INVALID_HANDLE_VALUE常数。返回的如果是句柄,应该用FindClose函数关闭。HANDLE WINAPI FindFirstFile( __in LPCTSTR lpFileName, __out LPWIN32_FIND_DATA lpFindFileDat转载 2012-07-20 09:18:43 · 8962 阅读 · 0 评论 -
类的继承引起的一个错误:error C2259 cannot instantiate abstract class due to following members
继承自CControlBar的新类,编译出错error C2259: 'CTestDockBar' : cannot instantiate abstract class due to following members: 错误原因:一个实现类继承了一个抽象基类,但是却没有把抽象基类中的方法全部实现。解决方法: //实现父类的抽象方法 virtual void OnUpda原创 2012-05-29 14:56:23 · 6548 阅读 · 1 评论 -
#pragma大全
C和C++的每个实现对它的主机或操作系统都支持一些独有的特征。例如,某些程序须对存放数据的存储器区域进行精确的控制,或必须控制特定函数接受参量的方式。#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。语法#pragma 语言符号字符串语转载 2012-06-06 10:59:01 · 1057 阅读 · 0 评论 -
一些vc开发浏览器及插件的资料
如何往IE工具条添加按钮问题提出:金山词霸、网络蚂蚁等软件安装后会向IE的工具条添加自己的按钮。按下按钮后还会作出相应的动作,这种功能是如何实现的呢?读完本文,您也可以将自己应用程序的按钮添加到IE的工具条中。基本原理:从IE5开始便允许我们向工具栏添加自己的按钮,其本质就是修改注册表,添加创建此按钮所需的信息。实现步骤:1.创建此按钮的GUID(globally uniq转载 2012-06-07 09:39:38 · 6187 阅读 · 0 评论 -
UpdateData()用法
一、总结UpdateData()函数UpdateData(true);//用于将屏幕上控件中的数据交换到变量中。UpdateData(false);//用于将数据在屏幕中对应控件中显示出来。 当你使用了ClassWizard建立了控件和变量之间的联系后:当你修改了变量的值,而希望对话框控件更新显示,就应该在修改变量后调用UpdateData(FALSE);如果你希望知道用户转载 2012-05-26 14:41:11 · 541 阅读 · 0 评论 -
Invalidate()函数
InvalidateRect只是增加重绘区域,在下次WM_PAINT的时候才生效InvalidateRect函数中的参数TRUE表示系统会在你画之前用背景色将所选区域覆盖一次,默认背景色为白色,可以通过设置BRUSH来改变背景色。Invalidate()之后:(MFC的,顺便了)OnPaint()->OnPrepareDC()->OnDraw()所以只是刷新在OnPaint()和O转载 2012-05-26 14:40:21 · 654 阅读 · 0 评论 -
memset函数详细说明
1。void *memset(void *s,int c,size_t n)总的作用:将已开辟内存空间 s 的首 n 个字节的值设为值 c。2。例子#includevoid main(){char *s="Golden Global View";clrscr();memset(s,'G',6);printf("%s",s);getchar()转载 2012-05-26 14:39:32 · 520 阅读 · 0 评论 -
VC|MFC内存不能为"read"+仅通过崩溃地址找出源代码的出错行
VC|MFC内存不能为"read",内存不能为 "written" 的原因分析见:hi.baidu.com/gilbertjuly/blog/item/54fdc9ed4f76e7d82e2e21f4.html-----------------------------------------------------------------------------------------转载 2012-06-20 17:17:01 · 1355 阅读 · 0 评论 -
如何解决WebBrowser.DocumentCompleted事件的多次调用
关于DocumentCompleted事件,MSDN给出的解释是在文档加载完毕后执行,但是在我的程序中DocumentCompleted却被多次调用,查了一下资料,大概出现了以下几种情况。1、WebBrowser载入一个页面后DocumentCompleted事件会执行两次,但这两次的ReadyState状态不一样,分别是Intercative和Complete。而MSDN对这转载 2012-06-25 16:57:29 · 1408 阅读 · 0 评论 -
VC界面线程
与工作者线程不同的是,用户界面线程通常用于处理用户的输入,响应用户产生的消息。为了建立一个用户界面线程,需要从CWinThread引出自定义的类,并将该类的运行时信息传给用户界面形式的AfxBeginThread函数,以便创建用户界面线程。一般来说,用户界面线程的创建过程需要先从基类CWinThread中派生出用户自定义的新类,再使用AfxBeginThread函数创建线程。【范例17-1转载 2012-06-25 09:09:11 · 1101 阅读 · 0 评论 -
如何利用WinDbg找出程序崩溃的位置
之前碰到论坛里有几个好友,说程序不时的崩溃,什么xxoo不能read的! 如果光要是这个内存地址,估计你会疯掉~~所以分享一下基本的调试技巧,需要准备的工具有WinDbg + VC6.0,下面是自己整理的一份自动生成DUMP文件的源代码,只需要添加到工程即可,源代码如下:MiniDump.hview plainprint?#include转载 2012-06-27 16:17:03 · 770 阅读 · 0 评论 -
正确使用DllGetVersion
《关于NOTIFYICONDATA的一些新特性》中,我提到了使用[cpp:nogutter] view plaincopyprint?HRESULT CALLBACK DllGetVersion(DLLVERSIONINFO *pdvi); HRESULT CALLBACK DllGetVersion(DLLVERSIONINFO *pdvi);转载 2012-07-11 16:49:51 · 1132 阅读 · 0 评论 -
关于NOTIFYICONDATA的一些新特性
最近初接触MFC,是为了实现一个传感网络的上位机。在实现托盘提示时,在网上搜索了不少资料,但已经翻译的资料都比较老。在查看原版的MSDN后,发现NOTIFYICONDATA这个结构中有几项新特性,可以实现比较新的托盘/气泡特性。 例如:气泡操作响应(想想MSN的单击气泡关闭提示?)、隐藏图标|显示图标(不通过删除)、自定义大Balloon Tip图标等,还是比较吸引人的。但是转载 2012-07-11 16:50:43 · 2443 阅读 · 0 评论 -
如何为 web 浏览器控制主机处理脚本错误
http://support.microsoft.com/kb/261003当其中一个脚本引擎遇到未处理的错误时,它将转发到 web 浏览器控件,然后查询以查看容器已经实现了宿主其容器的错误。如果容器已实现宿主,web 浏览器控件调用CGID_DocHostCommandHandler (这在 Mshtmhst.h 文件中定义) 的命令组 ID 和OLECMDID_SHOWSCRIPTER原创 2012-08-01 16:14:00 · 1398 阅读 · 0 评论 -
关于SetTimer()编译通不过
我在类成员函数中调用了::SetTimer(GetHWND(),1,1000,TimerProc);编译的时候就提示如下错误:error C2664: 'SetTimer' : cannot convert parameter 4 from 'void (struct HWND__ *,unsigned int,unsigned int,unsigned long)' to 'void (原创 2012-07-19 15:06:59 · 2012 阅读 · 0 评论 -
GetFileAttributes详解
GetFileAttributes Function 为一个指定的文件或目录返回文件系统的属性。可以使用GetFileAttributesEx 函数获得更多的属性信息。如果要实现交互式操作,可以使用GetFileAttributesTransacted 函数。 DWORD WINAPI GetFileAttributes( __in LPCTSTR lpF原创 2012-07-20 09:13:25 · 21180 阅读 · 1 评论 -
C/C++--字符串拷贝及内存操作(转载)
from:http://blog.163.com/fuhaocn@126/blog/static/3666508020119501933268/本文的写作目的并不在于提供C/C++程序员求职面试指导,而旨在从技术上分析面试题的内涵。文中的大多数面试题来自各大论坛,部分试题解答也参考了网友的意见。 许多面试题看似简单,却需要深厚的基本功才能给出完美的解答。企业要求面试者写一个最简单转载 2013-01-11 10:38:05 · 1221 阅读 · 0 评论