微软视觉运行时库出错怎么办?microsoft Visual c++ runtimeexception library也就是弹出这个对话框

查看: 6395|回复: 12
听众数收听数最后登录注册时间主题精华0积分208帖子
四星助理工程师, 积分 208, 距离下一级还需 42 积分
本帖最后由 qanshoubalidao 于
22:19 编辑
打开PKPM时,出现Microsoft Visual C++ Runtime library对话框是怎么回事?
具体对话框内容是,runtime error
program:C:\pkpm2010\PM\PMSRW.EXE
R6030-CRT not initialized
这是怎么回事啊?郁闷的很,求帮助。
用的是网上买的2010版的安装盘装的
听众数收听数最后登录注册时间主题精华0积分1597帖子
五星工程师, 积分 1597, 距离下一级还需 903 积分
土木币1341
什么系统啊?
听众数收听数最后登录注册时间主题精华0积分70帖子
一星助理工程师, 积分 70, 距离下一级还需 30 积分
我也遇到这个问题了,我的机子是xp的
听众数收听数最后登录注册时间主题精华0积分35帖子
技术员, 积分 35, 距离下一级还需 15 积分
我也是一样的情况,有解决的办法吗?求
听众数收听数最后登录注册时间主题精华0积分29帖子
技术员, 积分 29, 距离下一级还需 21 积分
我也是,,什么情况???
听众数收听数最后登录注册时间主题精华0积分501帖子
一星工程师, 积分 501, 距离下一级还需 149 积分
土木币1250
我的也是这个问题
听众数收听数最后登录注册时间主题精华0积分34帖子
技术员, 积分 34, 距离下一级还需 16 积分
我的系统是windows 7 家庭版也出现了上述问题
听众数收听数最后登录注册时间主题精华0积分25帖子
技术员, 积分 25, 距离下一级还需 25 积分
我的也是这个问题,怎么就没人知道这是怎么回事和怎么解决?
听众数收听数最后登录注册时间主题精华0积分305帖子
五星助理工程师, 积分 305, 距离下一级还需 195 积分
CRT初始化程序错误,看下你的PKPM安装目录PM文件是否为空文件夹。
听众数收听数最后登录注册时间主题精华0积分1657帖子
五星工程师, 积分 1657, 距离下一级还需 843 积分
您现在解决了吗& &我的最近也出现这样的问题
8-1(商易宝)
8-2(英才网)
8-3(媒体广告)打开IE电脑忽然出现Microsoft Visual C++ Runtime Library如何解决
当前位置:/
& /打开IE电脑忽然出现Microsoft Visual C++ Runtime Library如何解决
看过很多高手的帖子,提供的方法都比较复杂,本人资质太浅,有些看不懂,而且觉得不好操作。
我觉得的简单一点的方法:
出现runtime error,一般问题都出在注册表,“运行—〉regedit”打开注册表,笨一点的方法就是按F3出入“runtime”,查找所有名为runtime的数值,然后一个一个删掉,但这样实在太多了,不停的删半个小时不一定能删完(我曾经被runtime error这个问题困扰了很久,这个笨办法用过,20分钟没删完),聪明一点的办法就是,缩小范围!
一般错误会在哪呢?按我的经验,一般都在这里!HKEY_LOCAL_MACHINE\SOFTWARE\microsoft\Windows\CurrentVersion\Run,在这里面搜runtime项,删掉,最多一分钟搞定!
出现问题原因:出现runtime error的原因有很多,我至今还不清楚,我估计是一些垃圾软件、流氓软件强制安装到计算机里的缘故!造成的后果往往是这样的:电脑各个盘符右键单击,菜单最上面是"auto"而不是“打开”,还有就是QQ等软件出现错误,要求重启,这个时候你重装QQ也是没有用的,注册表出错必须先清理注册表。
防范办法:建议大家安装一些反流氓软件,比如:金山毒霸、卡巴斯基、卫士360等等,从我使用的情况来看,卫士360值得推荐!一旦有程序写入注册表,他马上提示,并显示安装路径,这样再出现runtime error,你可以根据这个路径,去注册表找那些runtime error项,有的放矢了!
好了,就说这么多,或许我懂的也很少,希望能和大家交流一下!
&&&&&&&&&&&&&&&&&&&&补丁搜索:
> 游戏工具
游戏常用运行库安装包
==&&由800vod提供==&&由51mag提供==&&由99DDD提供
玩家还下载了这些补丁
游戏运行必备补丁
最新更新TOP10
1&&2&&3&&4&&5&&6&&7&&8&&9&&10&
年度最热门TOP10
1&&2&&3&&4&&5&&6&&7&&8&&9&&10&
本周关注TOP10
1&&2&&3&&4&&5&&6&&7&&8&&9&&10&
最新更新TOP10
1&&2&&3&&4&&5&&6&&7&&8&&9&&10&
年度最热门TOP10
1&&2&&3&&4&&5&&6&&7&&8&&9&&10&&
本周关注TOP10
1&&2&&3&&4&&5&&6&&7&&8&&9&&10&
最新更新TOP10
1&&2&&3&&4&&5&&6&&7&&8&&9&&10&
年度最热门TOP10
1&&2&&3&&4&&5&&6&&7&&8&&9&&10&
本周关注TOP10
1&&2&&3&&4&&5&&6&&7&&8&&9&&10&
最新更新TOP10
1&&2&&3&&4&&5&&6&&7&&8&&9&&10&
年度最热门TOP10
1&&2&&3&&4&&5&&6&&7&&8&&9&&10&
本周关注TOP10
1&&2&&3&&4&&5&&6&&7&&8&&9&&10&
最新更新TOP10
1&&2&&3&&4&&5&&6&&7&&8&&9&&10&
年度最热门TOP10
1&&2&&3&&4&&5&&6&&7&&8&&9&&10&
本周关注TOP10
1&&2&&3&&4&&5&&6&&7&&8&&9&&10&
最新更新TOP10
1&&2&&3&&4&&5&&6&&7&&8&&9&&10&
年度最热门TOP10
1&&2&&3&&4&&5&&6&&7&&8&&9&&10&
本周关注TOP10
1&&2&&3&&4&&5&&6&&7&&8&&9&&10&
最新更新TOP10
1&&2&&3&&4&&5&&6&&7&&8&&9&&10&
年度最热门TOP10
1&&2&&3&&4&&5&&6&&7&&8&&9&&10&
本周关注TOP10
1&&2&&3&&4&&5&&6&&7&&8&&9&&10&
最新更新TOP10
1&&2&&3&&4&&5&&6&&7&&8&&9&&10&
年度最热门TOP10
1&&2&&3&&4&&5&&6&&7&&8&&9&&10&
本周关注TOP10
1&&2&&3&&4&&5&&6&&7&&8&&9&&10&
最新更新TOP10
1&&2&&3&&4&&5&&6&&7&&8&&9&&10&
年度最热门TOP10
1&&2&&3&&4&&5&&6&&7&&8&&9&&10&
本周关注TOP10
1&&2&&3&&4&&5&&6&&7&&8&&9&&10&
热门攻略专辑
热门补丁推荐
周人气排行榜
精品手机游戏
精彩高清图推荐
| CopyRight &
ALi213.Net All Right Reserved 游侠网 版权所有90 狼人 术士
之前一直更新不了 也是弹出Microsoft Visual C++ Runtime Library 对话框 卸载游戏重新下载安装包后 点安装包 还是弹出Microsoft Visual C++ Runtime Library对话框 Microsoft Visual C++ Runtime Library Runtime Error! Program: C:\ProgramData\Battle.net\Agent\Agent.1363\Agent.exe This application has requested the Runtime to terminat it in an unusual way. Please contact the application's support team for more information.
按照你们GM说的什么 拷贝Battle.net ——没用关闭各种防火墙,杀毒软件——还是没用你们到底能不能给点实际的回答??电脑运行其他游戏,其他程序都没问!!昨天游戏都还是好好的,今天一更新就成这样!!!
该主题由寂丶箜灵在日 16:32 CST编辑过
看下c盘windows system32下有没有kernel32.dll文件。大小和版本是多少?
90 狼人 术士
我的是64的 不是 32的··W7系统的家庭版本
90 狼人 术士
不对···恩··找到你说的文件夹了··也有那文件
90 狼人 术士
暴力威胁。我们将严肃对待此类行为,并会上报有关部门。
发布的主题中包含其他玩家的个人信息。包括实际地址、邮箱地址、电话号码及不当的照片和/或视频。
骚扰或歧视性用语。此类言辞将不允许出现。
现实生活中的威胁
失效的链接
阐述理由(最多256字)随笔 - 895&
评论 - 109&
&&&&&&&&&&&
随笔分类 - C++
摘要: 常量指针常量指针是指向常量的指针,指针指向的内存地址的内容是不可修改的。常量指针定义“const int *p=&a;”告诉编译器,*p是常量,不能将*p作为左值进行操作。但这里的指针p还是一个变量,它的内容存放常量的地址,所以先声明常量指针再初始化是允许的,指针也是允许修改的,例如:int a=0...
一个人的天空@ 阅读(73) |
摘要: 微软的建议 要解决此问题,请使用下列方法之一。/kb/976656/zh-cn方法 1禁用/analyze编译器选项,则它会被启用。方法 2开始清理生成。方法 3重新启动计算机。方法 4禁用创建/使用预编译头的编译器选项。注意这些方法不能保证正...
一个人的天空@ 阅读(70) |
摘要: 修改生成静态库文件的工程的属性:路径为:菜单---项目--属性---配置属性---c/c++---输出文件---汇编程序输出:无列表
一个人的天空@ 阅读(81) |
摘要: 动态创建的 CEdit 被限制长度,增加 ES_AUTOHSCROLL 属性;被无法Tab激活焦点,增加 WS_TABSTOP 属性。CEdit m_editU// ES_AUTOHSCROLL 不受可视范围限制长度;WS_TABSTOP 允许按 Tab 键跳入跳出焦点m_editUrl.Cr...
一个人的天空@ 阅读(52) |
摘要: 目前,很多基于对话框的应用程序中对话框都是不带框架的,也就是说对话框没有标题栏。众所周知,窗口的移动都是通过鼠标拖动窗口的标题栏来实现的,那么现在应用程序中的对话框没有了标题栏,用户如何移动对话框呢?本实例针对这个问题提出解决的办法。一、实现方法 解决无标题栏窗口的拖动问题有两种方案,一种方案是使...
一个人的天空@ 阅读(116) |
摘要: 用VC++ 2008 编写C语言程序,编译出现错误:预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)解决方法:建工程时 建立空项目或者在项目设置里关闭预编译头的选项!当 Visual C++ 项目启用了预编译头 (Precompiled header) 功能时,...
一个人的天空@ 阅读(369) |
摘要: Ctrl+E,D----格式化全部代码Ctrl+E,F----格式化选中的代码CTRL+SHIFT+B生成解决方案CTRL+F7生成编译CTRL+O打开文件CTRL+SHIFT+O打开项目CTRL+SHIFT+C显示类视图窗口F4显示属性窗口SHIFT+F4显示项目属性窗口CTRL+SHIFT+E显...
一个人的天空@ 阅读(23) |
摘要: 内存泄露十分讨厌,捕获内存泄露更加令人厌烦……其实,VS本身就有内存泄露的检测机制。只需做以下操作即可开启。(同时必须在debug模式下运行程序并且以正常流程退出)view plaincopy to clipboard//在入口函数cpp中添加以下定义和头文件#defineCRTDBG_MAP_AL...
一个人的天空@ 阅读(141) |
摘要: 1.为什么用volatile? C/C++ 中的 volatile 关键字和 const 对应,用来修饰变量,通常用于建立语言级别的memory barrier。这是 BS 在 &The C++ Programming Language& 对 volatile 修饰词的说明:A volatile s...
一个人的天空@ 阅读(35) |
摘要: 研究生阶段一直使用C++,到工作时,才接触到Java。写了这么多年的多线程程序,觉得对于互斥(注意,不是同步哦)的各种锁有必要做个总结。这里我想将Windows,Linux和Java JVM三种环境中使用锁的环境及虽然将Windows,Linux和Java JVM放在一起比较是有些不合适的,但是对基...
一个人的天空@ 阅读(82) |
摘要: 1. 何时调用复制构造函数复制构造函数用于将一个对象复制到新创建的对象中。也就是说,它用于初始化过程中,而不是常规的赋值过程中。类的复制构造函数原型通常如下:class_name(const class_name&);它接受一个指向类对象的常量引用作为参数。例如,String类的复制构造函数的原型如...
一个人的天空@ 阅读(81) |
摘要: 前言:从Windows NT/2000开如,Windows系统已经是一个标准的UNICODE系统,系统内部所有字符串存储及操作均使用UNICODE编码。因此Win32 API都是UNICODE版本的,但为了更好的本地化支持,也提供了MBCS(ANSI)版的Win32 API。UNICODE版Win32 API形式为xxxW,W(Wide)代表宽字符;MBCS(ANSI)版Win32 API形式为xxxA,A即ANSI。xxxA形式的Win32 API在被调用时,会先调用先根据“代码页转换表”执行由ANSI——UNICODE的转换,然后再调用xxxW形式的Win32 API去执行实际操作。即xx
一个人的天空@ 阅读(152) |
摘要: VirtualAlloc 一次分配 1PAGE 以上的 RAM. 每次分配都是 PAGE 的整数倍. 你不会想为了分配 1 个 BYTE 的空间而浪费剩下的 4095 字节. OK, 你可以自己写算法, 多分配几 PAGE. 然后每次分配少量数据时就从那几 PAGE 中划分出来. KERNEL32 提供了一个解决办法, 用 HeapAlloc/GlobalAlloc 分配 RAM. 这样, KERNEL32 帮助完成分配动作, 并且尽量在减少用于跟踪空闲区域和已占用区域消耗的数据结构.很久以前也有个产品叫做 WINDOWS. 那时候的 WINDOWS 是 16BIT 的, 地址空间有些紧俏,
一个人的天空@ 阅读(92) |
摘要: How would you get the command line of a process? Some people have suggested that you use remote thread injection, callGetCommandLine(), then IPC the result back. This might work most of the time on Windows XP, but on Windows Vista it doesn’t work on system and service processes. This is becauseCreat
一个人的天空@ 阅读(817) |
摘要: 这段时间,都在做Ring3层的普通32bit程序兼容64bit操作系统的代码修改,在此记录修改和学习心德。编程领域太广,任何人经历有限,本人不是专家,所以我一贯原则是:用到的时候,才去研究,在去记录。只要个人的基础知识扎实,吸收一些新的东西,还是蛮顺利的。1.64bit操作系统的重定向机制以及目的在64bit操作系统中,为了无缝兼容32bit程序的运行,64bit的Windows操作系统采用重定向机制。目的是为了能让32bit程序在64bit的操作系统不仅能操作关键文件文夹和关键的注册表并且又要避免与64bit程序冲突。微软采用重定向机制的原理很简单,说白了就是让关键文件/文件夹或者关键注册表
一个人的天空@ 阅读(164) |
摘要: vc得到屏幕的当前分辨率方法: 1.Windows API调用 int width = GetSystemMetrics ( SM_CXSCREEN ); int height= GetSystemMetrics ( SM_CYSCREEN ); 如果想动态自适应分辨率的变化,处理WM_DISPLAYCHANGE消息. 2.获得分辨率 BOOL EnumDisplaySettings( LPCTSTR lpszDeviceName, // display device DWORD iModeNum, // graphics mode LPDEVMODE lpDevMode // graphic
一个人的天空@ 阅读(1672) |
摘要: Visual Studio 2008 (formely code-named ‘Orcas’) has several important updates for VC++ and MFC. Among them the possibility to create syslinkcontrols, command or split buttons and network address controls. In this post I will show how you can work with the syslink control. The control provides a way
一个人的天空@ 阅读(622) |
摘要: ///===================该段是自己总结的一个小结=================================InvalidateRect()函数的作用是设置一个无效区域,并发送一个WM_PAINT消息到消息队列中,不过这个消息在众多的消息之中优先级比较级。在VC++编程中,对无效区域的处理方式是:在OnPaint()中绘图,不管它绘制了什么图形,有一点应该明白,有效区域是绘制不上去图形的,或者是尽管绘制上去了,但也不会显示出来。总之就是在有效区域上绘制的图形不能生效。换一种说法就是:在OnPaint()中绘图,不管它绘制了什么图形,只有设置为无效区域的区域才会显示它所
一个人的天空@ 阅读(2018) |
摘要: BOOL InvalidateRect(HWNDhWnd,// 窗口句柄CONST RECT*lpRect,// 矩形区域BOOLbErase//是否擦除背景);InvalidateRect只是增加重绘区域,在下次WM_PAINT的时候才生效。InvalidateRect函数中的参数TRUE表示系统会在你画之前用背景色将所选区域覆盖一次,默认背景色为白色,可以通过设置BRUSH来改变背景色。void Invalidate( BOOL bErase )执行之后调用函数的次序为:...OnPaint()-&OnPrepareDC()-&OnDraw()所以只是刷新在OnPaint()和
一个人的天空@ 阅读(75) |
摘要: 我们知道,应用程序总是离不开系统内核所提供的服务,比如它要使用内存的时候,只要跟操作系统申请就行了,而不用自己操心哪里有空闲的内存空间等问题,实际上,这些问题是由操作系统的内核来代劳的。站在黑客的角度讲,如果能够控制内核,实际上就是控制了内核之上的各种应用程序。本文将向您介绍如何建立内核级钩子来控制操作系统向上提供的各种低级功能。有了内核级钩子,我们不但能够控制、监视其他程序并过滤有关数据,还能用其实现Rootkit本身及其它程序的隐形。本文首先回顾系统调用表和内存保护方面的知识,然后讲解如何实现内核钩子,最后对一些重要的内核函数进行了简要的说明。一、系统调用表系统调用表又称系统服务表或者服务
一个人的天空@ 阅读(228) |
摘要: SetConsoleCtrlHandler 处理控制台消息一、如何处理所有的控制台消息。 第一步,首先要安装一个事件钩子,也就是说要建立一个回调函数。调用Win32 API,原型如下:BOOL SetConsoleCtrlHandler(PHANDLER_ROUTINE HandlerRoutine, // 回调函数BOOL Add // 表示添加还是删除); 参数HandlerRoutine是一个指向函数的指针,原型如下:BOOL WINAPI HandlerRoutine(DWORD dwCtrlType // 控制事件类型); 所有的HandlerRoutine函数只有一个参数dw...
一个人的天空@ 阅读(95) |
摘要: MENUITEMINFO结构包含关于一个菜单项信息typedef struct tagMENUITEMINFO { UINT cbS UINT fM UINT fT UINT fS UINT wID; HMENU hSubM HBITMAPhbmpC HBITMAPhbmpU DWORD dwItemD LPTSTR dwTypeD UINTHBITMAPhbmpI} MENUITEMINFO, FAR *LPMENUITEMINFO;成员cbSize结构的大小,字节fMask检索或设置
一个人的天空@ 阅读(201) |
摘要: Base64是一种加料置位加密法,那为什么叫base64呢?因为无论明文是什么(比如汉字,特殊符号等),加密后的密文都只会变成字母A-Z、a-z和0-9 和+和/这64个字符,被他加密体后积一般会变成原来的4/3。Base64的标准在RFC2045里的24页可以看到。/view/bd567523aaea998fcc220e8e.html下面我就来加密一个astralidea的简写AST来说明他的加密原理。为了说明方便,我们用人的思考方式,而不是计算机的方式,下面是上图的说明。1.假设有3个字符,首先先将他换成10进制ASCII码,然后转成2进制,少位
一个人的天空@ 阅读(3639) |
摘要: 问题: 在使用Active Accessibility SDK的过程中,我从某个窗口的句柄来获得IHTMLDocument2指针。有没有什么方法可以从IHTMLDocument2指针来获得IWebBrowser2指针?我用QueryInterface在两个接口(IHTMLDocument2 和 IWebBrowser2)上试过,但没有成功。我也用网景(Netscape)的 HTMLWindow2 指针试过从get_navigator获取IOmNavigator *。也以失败告终。请高手指点。解答:这个问题通常是COM编程中存在的共性问题。你有了窗口,文档,或者浏览器,你明明知道可以通过这些已知
一个人的天空@ 阅读(910) |
摘要: 定义将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。实用范围1 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。2 当构造过程必须允许被构造的对象有不同表示时。角色在这样的设计模式中,有以下几个角色:1 builder:为创建一个产品对象的各个部件指定抽象接口。2 ConcreteBuilder:实现Builder的接口以构造和装配该产品的各个部件,定义并明确它所创建的表示,并 提供一个检索产品的接口。3 Director:构造一个使用Builder接口的对象。4 Product:表示被构造的复杂对象。Co...
一个人的天空@ 阅读(361) |
摘要: 抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态。抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象。根据LSP原则,任何接受父类型的地方,都应当能够接受子类型。因此,实际上系统所需要的,仅仅是类型与这些抽象产品角色相同的一些实例,而不是这些抽象产品的实例。换言之,也就是这些抽象产品的具体子类的实例。工厂类负责创建抽象产品的具体子类的实例。定义为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类简介当每个抽象产品都有多于一个的具体子类的时候,工厂角色怎么知
一个人的天空@ 阅读(1167) |
摘要: 从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。实现方式(附图)简单工厂模式的UML类图(见上图)简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。该模式中包含的角色及其职责工厂(Creator)角色简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类可以被外界直接调用
一个人的天空@ 阅读(319) |
摘要: 访问者模式(Visitor Pattern)是GoF提出的23种设计模式中的一种,属于行为模式。据《大话设计模式》中说算是最复杂也是最难以理解的一种模式了。定义(源于GoF《Design Pattern》):表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。从定义可以看出结构对象是使用访问者模式必备条件,而且这个结构对象必须存在遍历自身各个对象的方法。这便类似于Java语言当中的collection概念了。涉及角色:1.Visitor 抽象访问者角色,为该对象结构中具体元素角色声明一个访问操作接口。该操作接口的名字和参数标识了发送访问请求给
一个人的天空@ 阅读(1338) |
摘要: 关于这个问题是引起来源于一则面试问题:引用型成员变量如何初始化?回答的不是很确定,于是对这个问题研究一下。1、普通的变量:一般不考虑啥效率的情况下 可以在构造函数中进行赋值。考虑一下效率的可以再构造函数的初始化列表中进行。class CA{public:……public:CA();……};CA::CA():data(0)//……#1……初始化列表方式{//data = 0;//……#1……赋值方式};2、static 静态变量:static变量属于类所有,而不属于类的对象,因此不管类被实例化了多少个对象,该变量都只有一个。在这种性质上理解,有点类似于全局变量的唯一性。clas
一个人的天空@ 阅读(104) |
摘要: 构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式。例如:classCExample{public://构造函数初始化列表CExample():a(0),b(8.8){}//构造函数内部赋值CExample(){a=0;b=8.8;}};上面的例子中两个构造函数的结果是一样的。上面的构造函数(使用初始化列表的构造函数)显式的初始化类的成员;而没使用初始化列表的构造函数是对类的成员赋值,并没有进行显式的初始化。初始化和赋值对内置类型的成员没有什么大的区别,像上面的任一个构造函数都可以。对非内置类型成员变量,为了避免
一个人的天空@ 阅读(66) |
摘要: 软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《设计模式:可复用面向对象软件的基础》两本书。本文介绍工厂模式的实现。 工厂模式属于创建型模式,大致可以分为三类,简单工厂模式、工厂方法模式、抽象工厂模式。听上去差不多,都是工厂模式。下面一个个介绍,首先介绍简单工厂模式,它的主要特点是需要在工厂类中做判断,从而创造相应的产品。当增加新的产品时,就需要..
一个人的天空@ 阅读(50) |
摘要: 引言 一直以来都没有写过一篇关于概念性的文章,因为我觉得这些概念性的东西书本上都有并且说的也很详细写来也无用,今天突发奇想想写 一写,下面就和大家讨论一下虚基类、虚函数与纯虚函数,一看名字就让人很容易觉得混乱。不过不要紧待看完本文后你就会理解了。正文 虚基类 在说明其作用前先看一段代码classA{public:intiV};classB:publicA{public:voidbPrintf(){cout&&&ThisisclassB&&&};};classC:publicA{public:voidcPrintf(){cout&l
一个人的天空@ 阅读(133) |
摘要: 虚函数:目的:为了引起晚绑定实现方法:在声明函数时使用virtual关键字纯虚函数:目的:提供抽象的接口实现方法:virtual int foo()=0;特点:如果一个类中包含纯虚函数,则该类的VTABLE是不完整的,故而无法生成该类的对象。这样的类称为纯抽象基类纯抽象基类,也称为纯虚类:目的:提供抽象的接口实现方法:包含纯虚函数特点:不能生成该类的对象虚基类:目的:为了消除二义性实现方法:virtual继承特点:一个类既可以作为某个类的虚基类,也可以作为另一个类的非虚基类。
一个人的天空@ 阅读(85) |
摘要: 虚函数的应用特性例:编写三个类:没有虚函数、有一个虚函数、有两个虚函数,在主函数中定义这三个类的对象,分别取这个类所占的内存空间的大小,观察在内存中的分配; 代码如下:/**//*************************************************************************虚函数的应用特性例子************************************************************************/#include&iostream.h&//没有虚函数的类classCNoVirtual...{i
一个人的天空@ 阅读(52) |
摘要: 纯虚类有以下特征:含有一个纯虚函数的类,叫做纯虚类。纯虚类不可以定义对象。我个人觉得这个说法应该就是把纯虚类的主要特点说明了:1、只要有一个纯虚函数。就称为纯虚类。所以如果子类没有实现纯虚函数,相当子类也有纯虚函数,所以子类也是纯虚类。2、其他类的定义与使用方式都与一般的类差不多。大致有如下地方:纯虚类可以有成员变量 (可以)纯虚类可以有普通的成员函数(可以)纯虚类可不可以有其他虚函数(可以)纯虚类可不可以又带有参数的构造函数? (可以)可不可以在纯虚类的派生类的构造函数中显式调用纯虚类的带参数构造函数(可以)3、使用方式上:不可以定义一个对象。下面是另外一篇文章中说的说法:(纯虚类也称为抽象
一个人的天空@ 阅读(419) |
摘要: 虚基类的作用当一个基类被声明为虚基类后,即使它成为了多继承链路上的公共基类,最后的派生类中也只有它的一个备份。例如:classCBase { };class CDerive1:virtual public CBase{ };class CDerive2:virtual public CBase{ };class CDerive12:public CDerive1,CDerive2{ };则在类CDerive12的对象中,仅有类CBase的一个对象数据虚基类的特点: 虚基类构造函数的参数必须由最新派生出来的类负责初始化(即使不是直接继承); 虚基类的构造函数先于非虚基类的构造函数执行。重写“C+
一个人的天空@ 阅读(171) |
摘要: 目前以lib后缀的库有两种,一种为静态链接库(Static Libary,以下简称“静态库”),另一种为动态连接库(DLL,以下简称“动态库”)的导入库(Import Libary,以下简称“导入库”)。静态库是一个或者多个obj文件的打包,所以有人干脆把从obj文件生成lib的过程称为Archive,即合并到一起。比如你链接一个静态库,如果其中有错,它会准确的找到是哪个obj有错,即静态lib只是壳子。动态库一般会有对应的导入库,方便程序静态载入动态链接库,否则你可能就需要自己LoadLibary调入DLL文件,然后再手工GetProcAddress获得对应函数了。有了导入库,你只需要链接导
一个人的天空@ 阅读(131) |
摘要: 首先,C++标准中提到,一个编译单元[translation unit]是指一个.cpp文件以及它所include的所有.h文件,.h文件里的代码将会被扩展到包含它的.cpp文件里,然后编译器编译该.cpp文件为一个.obj文件,后者拥有PE[Portable Executable,即windows可执行文件]文件格式,并且本身包含的就已经是二进制码,但是,不一定能够执行,因为并不保证其中一定有main函数。当编译器将一个工程里的所有.cpp文件以分离的方式编译完毕后,再由连接器(linker)进行连接成为一个.exe文件。举个例子://---------------test.h-------
一个人的天空@ 阅读(79) |
摘要: Runtime: When a program is running, or executing, it is said to be in runtime. The term is mostly used by software developers to specify when errors in a program occur. A &runtime error& is an error that happens while the program is executing. For example if a program told you that 2 + 2 w
一个人的天空@ 阅读(110) |
摘要: 首先说明,我google了半天,想找到英文的关于这个资料,但是实在找不到,只好转载国人的讨论。CRT原先是指Microsoft开发的C Runtime Library,用于操作系统的开发及运行。后来在此基础上开发了C++ Runtime Library,所以现在CRT是指Microsoft开发的C/C++ Runtime Library。在VC的CRT/SRC目录下,可以看到CRT的源码,不仅有C的,也有C++的。 CRT原先的目的就是支持操作系统的运行。因为Windows操作系统除汇编部分外,都是用C/C++编写的,所以内核及许多关键服务都在CRT上运行(它们都采用dll技术动态链接)。此外
一个人的天空@ 阅读(112) |
摘要: #ifndefMSG_CONSTANT_H#defineMSG_CONSTANT_H#defineMAX_MSG_PARA_SIZE 2048/*消息参数大小*/#defineMAX_QUEUE_LENGTH3000/*队列限制长度*/#defineEVENTMSG_QUIT 100/*退出*/#defineRW_SUCCESS 0#defineEMPTY_QUE 1#defineRW_ERROR_QUE -1#defineFULL_QUE -2#defineLOCK_ERROR -3#defineUNLOCK_ERROR -4#defineREALESE_LOCK_...
一个人的天空@ 阅读(394) |
摘要: 1 什么是回调软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用、回调和异步调用。同步调用是一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用;回调是一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口;异步调用是一种类似消息或事件的机制,不过它的调用方向刚好相反,接口的服务在收到某种讯息或发生某种事件时,会主动通知客户方(即调用客户方的接口)。回调和异步调用的关系非常紧密,通常我们使用回调来实现异步消息的注册,通过异步调用来实现消息的通知。同步调用是三者当中最简单的,而回调又常常是异步调用的基础,因此,下面我们着重讨论回调机制在不同软件
一个人的天空@ 阅读(208) |
摘要: 对于博客,从来是默默的转,最近终于有点时间可以写些自己的东西(其实也还要忙着准备找工呢),写出来与仅仅知道那么回事绝对大不一样,写也是学习的过程,不过向来多关注于功能实现,对一些基础概念把握不准确,望各位拍砖,不废话了。 什么是回调?通常发生在需要两个角色即调用者与实现者的情形上,即我们希望当产生某个事件时,调用实现者定义的某个函数。当然这个概念很大,不是说操作系统的信号量,条件变量什么的,是在语言级别实现,如一个Framework提供商,规定了整个程序的框架,可能产生某事件时它希望调用某个行为,而这个行为的具体定义是由framework客户来完成。 我们从简单的做起,通过一个个为什么最终来获
一个人的天空@ 阅读(4991) |
摘要: 单例模式也称为单件模式、单子模式,可能是使用最广泛的设计模式。其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。有很多地方需要这样的功能模块,如系统的日志输出,GUI应用必须是单鼠标,MODEM的联接需要一条且只需要一条电话线,操作系统只能有一个窗口管理器,一台PC连一个键盘。单例模式有许多种实现方法,在C++中,甚至可以直接用一个全局变量做到这一点,但这样的代码显的很不优雅。 使用全局对象能够保证方便地访问实例,但是不能保证只声明一个对象——也就是说除了一个全局实例外,仍然能创建相同类的本地实例。《设计模式》一书中给出了一种很不错的实现,定义一个单例类,
一个人的天空@ 阅读(151) |
摘要: PreTranslateMessage是消息在送给TranslateMessage函数之前被调用的,绝大多数本窗口的消息都要通过这里,比较常用,当需要在MFC之前处理某些消息时,常常要在这里添加代码.MFC 消息控制流最具特色的地方是CWnd类的虚拟函数PreTranslateMessage(),通过重载这个函数,可以改变MFC的消息控制流程,甚至可 以作一个全新的控制流出来。只有穿过消息队列的消息才受PreTranslateMessage()影响,采用SendMessage()或其他类似的方 式向窗口直接发送的而不经过消息队列的消息根本不会理睬PreTranslateMessage()的存在
一个人的天空@ 阅读(736) |
摘要: Q在NT/2000/XP中,我想用VC编写应用程序访问硬件设备,如获取磁盘参数、读写绝对扇区数据、测试光驱实际速度等,该从哪里入手呢?A在NT/2000/XP中,应用程序可以通过API函数DeviceIoControl来实现对设备的访问—获取信息,发送命令,交换数据等。利用该接口函数向指定的设备驱动发送正确的控制码及数据,然后分析它的响应,就可以达到我们的目的。DeviceIoControl的函数原型为BOOL DeviceIoControl( HANDLE hDevice, // 设备句柄 DWORD dwIoControlCode, // ...
一个人的天空@ 阅读(186) |
摘要: 当 Visual C++ 项目启用了预编译头 (Precompiled header) 功能时,如果项目中同时混合有 .c 和 .cpp 源文件,则可能收到 C1853 编译器错误:fatal error C1853: 'pjtname.pch' precompiled header file is from a previous version of the compiler, or the precompiled header is C++ and you are using it from C (or vice versa)(致命错误C1853: “filename.pc
一个人的天空@ 阅读(52) |
摘要: STL有字符串处理类——stirng和wstring,但是用的时候会觉得不是很方便,因为它不能像TCHAR一样根据定义的宏在char类型字符串和wchar_t进行转换,总不能因为程序要Unicode就把所有类型转换一遍吧?有没有好办法?答案当然是肯定的,先看看MS的TCHAR是怎么做的,以下摘自MS Platform 的tchar.h,略有删减#ifdef _UNICODE#ifdef __cplusplus} /* ... extern &C& */#endif/* ++++++++++++++++++++ UNICODE ++++++++++++++++++++ */#
一个人的天空@ 阅读(2225) |
摘要: 众所周知,在微软的操作系统下编写应用程序,最主要的还是通过windows所提供的api函数来实现各种操作的,这些函数通常是可以直接使用的,只要包含windows.h这个头文件,下载源文件今天我们主要介绍的是几个常用的api函数,通过它我们可以获取用户磁盘的相关信息。其主要函数原型说明如下:1.获取系统中逻辑驱动器的数量TheGetLogicalDrivesfunction retrieves a bitmask representing the currently available disk drives.DWORD GetLogicalDrives(void);2.获取所有驱动器字符串信息
一个人的天空@ 阅读(4840) |
摘要: CString是一个动态TCHAR数组,BSTR是一种专有格式的字符串(需要用系统提供的函数来操纵,LPCTSTR只是一个常量的TCHAR指针。CString 是一个完全独立的类,动态的TCHAR数组,封装了 + 等操作符和字符串操作方法。typedef OLECHAR FAR* BSTR;typedef const char * LPCTSTR;vc++中各种字符串的表示法首先char* 是指向ANSI字符数组的指针,其中每个字符占据8位(有效数据是除掉最高位的其他7位),这里保持了与传统的C,C++的兼容。LP的含义是长指针(long pointer)。LPSTR是一个指向以‘\0’结尾的
一个人的天空@ 阅读(198) |
摘要: Windows操作系统专门为此提供了6个API函数来对配置设置文件进行读、写:GetPrivateProfileInt() 从私有初始化文件获取整型数值GetPrivateProfileString() 从私有初始化文件获取字符串型值GetProfileInt 从win.ini 获取整数值GetProfileString 从win.ini 获取字符串值WritePrivateProfileString 写字符串到私有初始化文件WriteProfileString 写字符串到win.ini我们可以把视图类的:OnInitialUpdate() 函数作为程序启动时读取配置文件的入口,配置文件的存储
一个人的天空@ 阅读(14028) |
摘要: 单例模式也称为单件模式、单子模式,可能是使用最广泛的设计模式。其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。有很多地方需要这样的功能模块,如系统的日志输出,GUI应用必须是单鼠标,MODEM的联接需要一条且只需要一条电话线,操作系统只能有一个窗口管理器,一台PC连一个键盘。单例模式有许多种实现方法,在C++中,甚至可以直接用一个全局变量做到这一点,但这样的代码显的很不优雅。使用全局对象能够保证方便地访问实例,但是不能保证只声明一个对象——也就是说除了一个全局实例外,仍然能创建相同类的本地实例。《设计模式》一书中给出了一种很不错的实现,定义一个单例类,使
一个人的天空@ 阅读(102) |
摘要: vs2005、vs2008、vs2010默认是Unicode的,在VC 6.0中编译成功的项目在VS2005中常会出现类型错误。经常出现的错误是:不能从const char *转换为LPCWSTR如使用MessageBox(hwnd,&right mouse clicked&,NULL,0)就会报错,如果使用强制转换(LPCWSTR)&right mouse clicked&,虽然能够通过,但是编码会出错。可行的办法是使用 TEXT(&right mouse clicked&)转换,MessageBox(hwnd,TEXT(&quot
一个人的天空@ 阅读(809) |
摘要: Run-Time Check Failure #3 - The variable 'comstat' is being used without being initialized.CSerialPort类在Visual C++ .NET 应用时会出现意想不到的问题。以《Visual C++/Turobo C串口通信编程实践》(龚建伟 熊光明 著)一书中第二章的SerialPortTest程序为例,当在Visual C++ .NET下编写后之后,debug之后,会出现编译错误:“operator+=&不明确,MSDN解释“为重载运算符定义了多个可能的运算符。可能的解决
一个人的天空@ 阅读(387) |
摘要: 一.BitBlt将一幅位图从一个设备场景复制到另一个,即复制像素,前面参数为目标,后者为源case WM_PAINT: hdcClient = BeginPaint (hwnd, &ps) ; hdcWindow = GetWindowDC (hwnd) ; for (y = 0 ; y & cyC y += cySource) for (x = 0 ; x & cxC x += cxSource) { ...
一个人的天空@ 阅读(890) |
摘要: 摘要:MySQL数据库作为一种网络数据库性能十分出色,但其在应用软件中使用较少。本文将主要探讨MySQL提供的两种数据库接口 ——(ODBC API和C API)在VC中的应用,并且形成一个类用以封装C API数据库接口的功能。关键词:MySQL;数据库接口;ODBC API;C API下载本文配套源代码引言随着现代计算机软硬件及网络技术的发展,在网上查找资料已成为现在获取信息的最重要手段之一。众所周知,所有的网上信息都是储存在网站数据库中的,这些信息的查询、更新等操作的功能则是由数据库服务器提供的,显然,数据库服务器的性能将直接关系到网站的生存。网站搭建中用的最多的数据库服务器是oracle
一个人的天空@ 阅读(131) |
摘要: 输入自定义函数时会代码提示输入标准C函数时没有提示解决方法Options-&Prefernces-&Create Common Projects-&Standrd C/C++ and Windows Headers &...VC98/include&创建一个包含头文件的工程如CStandard_WIN32.PR然后在Options-&Prefernces-&Project symol path中Add Project to Path将CStandard_WIN32.PR添加进来对于Linux程序只需拷贝linux中的头文件,然后创建一个工程包含
一个人的天空@ 阅读(1583) |
摘要: 头文件##include &string&const int INDEX_LENGTH = 7; // 一个索引包含4字节的起始IP和3字节的IP记录偏移,共7字节const int IP_LENGTH = 4;const int OFFSET_LENGTH = 3;enum { REDIRECT_MODE_1 = 0x01, // 重定向模式1 偏移量后无地区名 REDIRECT_MODE_2 = 0x02, // 重定向模式2 偏移量后有地区名};class CIpFinder{public: CIpFinder(); CIpF...
一个人的天空@ 阅读(1525) |
摘要: 1:当无法列出传递函数的所有实参的类型和数目时,可用省略号指定参数表void foo(...);voidfoo(parm_list,...);2:函数参数的传递原理函数参数是以数据结构:栈的形式存取,从右至左入栈.eg:#include&iostream&void fun(int a, ...){int *temp =&a;temp++;for (int i = 0; i & ++i){cout && *temp&&temp++;}}int main(){int a = 1;int b = 2;int c = 3;int d
一个人的天空@ 阅读(104) |
摘要: BLENDFUNCTIONmemset( &blend, 0, sizeof( blend) );blend.BlendOp= AC_SRC_OVER;blend.SourceConstantAlpha= 140; // 透明度 最大255pdc-&AlphaBlend( DestX,DestY, DestWid,DestHei,&srcDC, 0, 0, nDragWidth, nDragHeight, blend);
一个人的天空@ 阅读(393) |
摘要: 这段时间在研究直接写屏的方法.此问题的起因是: 在 iMX31(WinCE 5.0)上, 屏的分辨为: 800*480. 调用 BitBlt() API 函数画一整屏的动作, 竟然需要 120ms 左右; 同样的程序, 在 Prima 上只需要 20ms 以内的时间.直接写屏, 需要用到以下两个主要的函数: CreateDC(TEXT(&DISPLAY&),......) 和 CreateDIBSection().1) CreateDC(TEXT(&DISPLAY&),......) 的用法比较简单, 参考 MSDN 就可以很容易的搞定.2) Creat
一个人的天空@ 阅读(810) |
摘要: //创建24位bmp区域HBITMAP CreateBitmapSection(HDC hdc,int cx,int cy,BYTE** ppbit){ BITMAPINFO memset(&bmi.bmiHeader, 0, sizeof(BITMAPINFOHEADER)); bmi.bmiHeader.biSize = sizeof (BITMAPINFOHEADER) ; bmi.bmiHeader.biPlanes = 1; bmi.bmiHeader.biBitCount = 24; bmi.bmiHeader.biCompression = BI_RGB; b
一个人的天空@ 阅读(309) |
摘要: 可以利用Windows系统提供的SetLayeredWindowAttributes函数设置透明度和不透明的颜色关键值。BOOL SetLayeredWindowAttributes(HWND hwnd,//分层窗口句柄COLORREF crKey,//颜色关键值BYTE bAlpha,//描述不透明的程度,0表示全透明,255表示完全不透明DWORD dwFlags//明确采取的动作);dwflags的值:LWA_COLORKEY 使用crKey为透明值LWA_ALPHA使用bAlpha为窗口的不透明值该函数只支持WS_POPUP风格窗体,不支持WS_CHILD风格窗体参考:SetWindo
一个人的天空@ 阅读(2938) |
摘要: char p_filepath[MAX_PATH]; TCHAR w_FilePath[MAX_PATH]; DWORD len = GetModuleFileName(NULL, w_FilePath, MAX_PATH); if (len & 0) { len = WideCharToMultiByte(CP_ACP, 0, w_FilePath, len, p_filepath, sizeof(p_filepath)-1, NULL, NULL); if( len & 0 ) ...
一个人的天空@ 阅读(443) |
摘要: 先 定义 一个 变量 m_listlist control控件中的风格选项:m_list1.SetExtendedStyle( LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_CHECKBOXES );LVS_EX_FULLROWSELECT表示可以点中行中的任意一个列选中这一条记录LVS_EX_GRIDLINES表示列之间有分隔符号LVS_EX_CHECKBOXES 表示每一行第一列是checkboxm_list.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);风格设置m_list.Se
一个人的天空@ 阅读(852) |
摘要: 直接使用GetDlgItemInt() CString strNm_LogDlg.GetDlgItem(IDC_DAYEDIT)-&GetWindowText(strNum);strNum.Replace(_T(&,&), _T(&&));m_MainSetting.m_dwM = _ttoi(strNum.GetBuffer(0));strNum.ReleaseBuffer();
一个人的天空@ 阅读(1101) |
摘要: 在MFC程序中,使用CString来处理字符串是一个很不错的选择。CString既可以处理Unicode标准的字符串,也可以处理ANSI标准的字符串。CString的Format方法给我们进行字符串的转换带来了很大的方便,比如常见的int、float和double这些数字类型转换为CString字符串只需一行代码就可以实现。 先看看Format用于转换的格式字符: %c 单个字符 %d 十进制整数(int) %ld 十进制整数(long) %f 十进制浮点数(float) %lf 十进制浮点数(double) %o 八进制数 %s 字符串 %u 无符号十进制数 %x 十六进...
一个人的天空@ 阅读(4627) |
摘要: 在Mfc中SliderCtrl控件直接是没有事件来获取当滑动时SliderCtrl的值,不过可以处理ON_WM_HSCROLL消息,在头文件中添加:afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);在cpp中的消息队列映射中添加:ON_WM_HSCROLL()最后添加处理函数:void CMusicPlayerDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) { // TODO: Add your message handl
一个人的天空@ 阅读(2452) |
摘要: 在mfc中使用工具栏里的RichEdit 控件时,应该在程序初始话时加入AfxInitRichEdit,或者AfxInitRichEdit2否则的话 程序会起不来.也没有任何错误信息.这俩函数 是加载 Riched20.dll(Riched32.dll)的.1.设置edit只读属性 方法一: m_edit1.SetReadOnly(TRUE); 方法二: ::SendMessage(m_edit1.m_hWnd, EM_SETREADONLY, TRUE, 0);2.判断edit中光标状态并得到选中内容(richedit同样适用) int nStart, nE CString strTe
一个人的天空@ 阅读(7529) |
摘要: 虽然Gilbert之前介绍过CWnd和HWnd的区别,但是这里和其他几个CDC, HDC放在一起重申一下其中的区别和关系.1.对象和句柄CWnd是类, HWnd是句柄, CWnd封装了HWndCWHWnd hWwnd.Attach(hWnd);//句柄到对象wnd-&m_hW//对象到句柄当然一般在程序中是这样获得句柄:AfxGetMainWnd()-&m_同样的, CDC和HDC也是这样的关系:CDC *pDC=new CDC;HDCpDC-&GetSafeHdc();//通过对象获得句柄:pDC-&Attach(hdc)
一个人的天空@ 阅读(2704) |
摘要: APIlibvlc_instance_t*libvlc_new(int argc, const char* const* argv) libvlc_instance_t* libvlc_new(int argc, const char* const* argv) 创建并初始化一个LIBVLC实例 这个函数接受一个命令行参数列表,这个参数列表影响LIBVLC INSTANCE的缺省配置. Version: 参数意味着被从命令行传递到LIBVLC,就像VLC媒体播放器做的那样。有效的参数列表依赖于LIBVLC的版本、操作系统、平台以及LIBVLC的插件集。无效或不支持的参数将会...
一个人的天空@ 阅读(7270) |
摘要: 下载源代码八、线程的同步 虽然多线程能给我们带来好处,但是也有不少问题需要解决。例如,对于像磁盘驱动器这样独占性系统资源,由于线程可以执行进程的任何代码段,且线程的运行是由系统调度自动完成的,具有一定的不确定性,因此就有可能出现两个线程同时对磁盘驱动器进行操作,从而出现操作错误;又例如,对于银行系统的计算机来说,可能使用一个线程来更新其用户数据库,而用另外一个线程来读取数据库以响应储户的需要,极有可能读数据库的线程读取的是未完全更新的数据库,因为可能在读的时候只有一部分数据被更新过。 使隶属于同一进程的各线程协调一致地工作称为线程的同步。MFC提供了多种同步对象,下面我们只介绍最常用的四种:临
一个人的天空@ 阅读(369) |
摘要: 下载源代码七、线程间通讯 一般而言,应用程序中的一个次要线程总是为主线程执行特定的任务,这样,主线程和次要线程间必定有一个信息传递的渠道,也就是主线程和次要线程间要进行通信。这种线程间的通信不但是难以避免的,而且在多线程编程中也是复杂和频繁的,下面将进行说明。使用全局变量进行通信由于属于同一个进程的各个线程共享操作系统分配该进程的资源,故解决线程间通信最简单的一种方法是使用全局变量。对于标准类型的全局变量,我们建议使用volatile 修饰符,它告诉编译器无需对该变量作任何的优化,即无需将它放到一个寄存器中,并且该值可被外部改变。如果线程间所需传递的信息较复杂,我们可以定义一个结构,通过传递指
一个人的天空@ 阅读(1555) |
摘要: 下载源代码五、MFC对多线程编程的支持 MFC中有两类线程,分别称之为工作者线程和用户界面线程。二者的主要区别在于工作者线程没有消息循环,而用户界面线程有自己的消息队列和消息循环。 工作者线程没有消息机制,通常用来执行后台计算和维护任务,如冗长的计算过程,打印机的后台打印等。用户界面线程一般用于处理独立于其他线程执行之外的用户输入,响应用户及系统所产生的事件和消息等。但对于Win32的API编程而言,这两种线程是没有区别的,它们都只需线程的启动地址即可启动线程来执行任务。 在MFC中,一般用全局函数AfxBeginThread()来创建并初始化一个线程的运行,该函数有两种重载形式,分别用于创建
一个人的天空@ 阅读(1556) |
摘要: 下载源代码一、问题的提出编写一个耗时的单线程程序: 新建一个基于对话框的应用程序SingleThread,在主对话框IDD_SINGLETHREAD_DIALOG添加一个按钮,ID为IDC_SLEEP_SIX_SECOND,标题为“延时6秒”,添加按钮的响应函数,代码如下:void CSingleThreadDlg::OnSleepSixSecond() { Sleep(6000); //延时6秒} 编译并运行应用程序,单击“延时6秒”按钮,你就会发现在这6秒期间程序就象“死机”一样,不在响应其它消息。为了更好地处理这种耗时的操作,我们有必要学习——多线程编程。二、多线程概述 进程和线程都是操
一个人的天空@ 阅读(235) |
摘要: 本文面向的读者:学习过C++程序设计语言(也就是说学习过Template),但是还没有接触过STL的STL的初学者。这实际上是我学习STL的一篇笔记,老鸟就不用看了。什么是泛型程序设计 我们可以简单的理解为:使用模板的程序设计就是泛型程序设计。就像我们我们可以简单的理解面向对象程序设计就是使用虚函数的程序设计一样。STL是什么 作为一个C++程序设计者,STL是一种不可忽视的技术。Sandard Template Library (STL):标准模板库,更准确的说是 C++ 程序设计语言标准模板库。学习过MFC的人知道,MFC是微软公司创建的 C++ 类库。而与之类似的是 STL 是模板库,只
一个人的天空@ 阅读(434) |
摘要: static 的两大作用: 一、控制存储方式: static被引入以告知编译器,将变量存储在程序的静态存储区而非栈上空间。 1、引出原因:函数内部定义的变量,在程序执行到它的定义处时,编译器为它在栈上分配空间,大家知道,函数在栈上分配的空间在此函数执行结束时会释放掉,这样就产生了一个问题: 如果想将函数中此变量的值保存至下一次调用时,如何实现? 最容易想到的方法是定义一个全局的变量,但定义为一个全局变量有许多缺点,最明显的缺点是破坏了此变量的访问范围(使得在此函数中定义的变量,不仅仅受此函数控制)。 2、 解决方案:因此C++ 中引入了static,用它来修饰变量,它能够指示编译器将此变量在程
一个人的天空@ 阅读(61) |
摘要: GetCurrWorkingDir(){CStringstrPGetCurrentDirectory(MAX_PATH,strPath.GetBuffer(MAX_PATH));strPath.ReleaseBuffer();returnstrP}CStringCPropertySampleApp::GetCurrWorkingDir(){CStringstrPTCHARszFull[_MAX_PATH];TCHARszDrive[_MAX_DRIVE];TCHARszDir[_MAX_DIR];::GetModuleFileName(NULL,szFull,sizeo
一个人的天空@ 阅读(59) |
摘要: 我们知道,MFC程序如果检测到存在内存泄漏,退出程序的时候会在调试窗口提醒内存泄漏。例如:class CMyApp : public CWinApp{public:BOOL InitApplication(){int* leak = new int[10];return TRUE;}};产生的内存泄漏报告大体如下:Detected memory leaks!Dumping objects -&c:worktest.cpp(186) : {52} normal block at 0x003C4410, 40 bytes long.Data: & & CD CD CD CD CD
一个人的天空@ 阅读(966) |
摘要: 1#include &string&string str=&12345&;int b=atoi(str.c_str());2【转】C++ int,char,string,CString类型转换(整理总结)#include &string& //使用C++标准库的string类时 //同上#include &sstream&#include &iostream&#include &stdlib.h& //要将string类和int类型直接转换最好有这些包含,//因为自己写一个转
一个人的天空@ 阅读(259) |
摘要: 不知道大家有没有碰到这种情况:VS调试控制台程序终止调试,但是程序的控制台还存在,而且这个控制台无法关闭。在任务管理器的应用程序中可以看到这个窗口,但在进程中却找不到。之后也无法关机和重启。只能靠强制关机。这个问题困扰了我很久,今天终于知道解决方法了,所以共享出来。原因是系统补丁KB978037与现有功能冲突,所以导致命令窗口无法关闭,并只能通过强制关机来关闭,卸载掉该补丁即可。可以参考/b/debugger/archive//help-my-console-windows-won-t-go-away.aspx
一个人的天空@ 阅读(78) |
摘要: 将string|char*转换为wstring|wchar_t*的例子:1、string转换为wstring:stringstr=_T(&翔翔糖糖&);intsize=MultiByteToWideChar(CP_ACP,0,str.c_str(),-1,NULL,0);wchar_t*ch=newwchar_t[size+1];if(!MultiByteToWideChar(CP_ACP,0,str.c_str(),-1,ch,size)){}wstringwstr=2、char*转换为wchar_t*:char*str=_T(&翔
一个人的天空@ 阅读(3423) |
摘要: MultiByteToWideChar和WideCharToMultiByte用法详解函数原型:intWideCharToMultiByte(UINTCodePage,DWORDdwFlags,LPCWSTRlpWideCharStr,intcchWideChar,LPSTRlpMultiByteStr,intcbMultiByte,LPCSTRlpDefaultChar,LPBOOLlpUsedDefaultChar);此函数把宽字符串转换成指定的新的字符串,如ANSI,UTF8等,新字符串不必是多字节字符集。参数:CodePage:指定要转换成的字符集代码页,它可以是任何已经安装的或系统自
一个人的天空@ 阅读(715) |
摘要: 1.VisualStudio2005中,关于堆溢出(Stackoverflow)问题的解决(1)出现如下类似提示:test.exe中的0x00417be5处未处理的异常:0xC00000FD:Stackoverflow,其中,0x______的值依具体情况而不同。原因:很简单,主要原因有两种,一种是程序访问了非法地址,另一种是程序的Stack不够用了。这里只讨论后一种情况。解决办法:找到程序中new大数组或者定义大数组的地方,基本上问题出在那里。解决时,到工程属性System选项,把Stack设置大一些就可以了。(2)vc6.0中可以通过以下进行设置:project-&setting-&
一个人的天空@ 阅读(330) |
摘要: LRESULTCALLBACKMessageWinProc(HWNDhwnd,//handletowindowUINTuMsg,//messageidentifierWPARAMwParam,//firstmessageparameterLPARAMlParam//secondmessageparameter)//用于处理消息窗口接收到的消息{switch(uMsg){caseWM_CLOSE:DestroyWindow(hwnd);caseWM_GRAPHNOTIFY://DcaseWM_DESTROY:PostQuitMessage(0);
一个人的天空@ 阅读(884) |
摘要: MFC简单打印方法通过MFC来完成打印作业有很多的方法,应用场合也有所不同。我们通常是利用视图框架在MFC基础之上按照OnPreparePrinting()àOnBeginPrinting()?àOnPreprareDC()àOnPrinting()àOnEndPrinting()的顺序来编程的。对于我们使用单文档或者多文档的视图框架时这无疑是一种很好的方式。但是,在基于对话框的应用程序中,或者在很多打印要求不高的情况下(如只是简单的打印中间计算结果、报告程序异常等),我们就没有必要再绕上面的那么一个大弯子,可以直接利用MFC封装的打印对话框CPrint
一个人的天空@ 阅读(660) |
摘要: MFC中自由使用自定义消息消息映射、循环机制是Windows程序运行的基本方式。VC++MFC中有许多现成的消息句柄,可当我们需要完成其它的任务,需要自定义消息,就遇到了一些困难。在MFCClassWizard中不允许添加用户自定义消息,所以我们必须在程序中添加相应代码,以便可以象处理其它消息一样处理自定义消息。通常的做法是采取以下步骤:第一步:定义消息。推荐用户自定义消息至少是WM_USER+100,因为很多新控件也要使用WM_USER消息。#defineWM_MY_MESSAGE(WM_USER+100)第二步:实现消息处理函数。该函数使用WPRAM和LPARAM参数并返回LPESULT。
一个人的天空@ 阅读(1789) |
摘要: 在VC++6.0中用MFC进行COM编程首先应当明确,MFC中是通过嵌套类而不是多重继承来实现COM接口的,通过接口映射机制将接口和实现该接口的嵌套类关联起来;MFC中提供一套简明的宏来实现嵌套类的定义.其次,MFC通过CCmdTarget类实现了IUnknown接口。本文首先描述创建一个COM服务器的步骤和核心代码.然后说明客户程序关键代码。此COM服务器实现一个TimeLogServer组件,为简明起见,此组件只有一个接口ITimeLog,通过ITimeLog的方法OutputLog可以将日志文本输出至日志文件。创建一个MFCDLL工程,选择支持Automation(当然本程序不一定是自动
一个人的天空@ 阅读(1205) |
摘要: 进入MFC讲坛的前言(一)在这里,我想谈谈自己学习MFC的一些体会。我是从1997年才开始在Window下编写程序的。在这之前,我编写过一些DOS程序,包括一个简单的全屏幕编辑器和一个带函数的表达式解释器,都是一些小的程序。Window3.1流行后,我开始在它下面编写程序。从编写DOS程序到编写Window程序,需要从编程思想上作一个比较大的调整。在DOS下编写程序,程序的总体流程完全由应用程序自己控制;但在Window下,程序的总体流程是由操作系统控制的,这一点对在DOS下“胡作非为”的DOS程序员而然,特别不习惯,思想上一时很难转过弯来,总觉得操作系统所控制的应用程序流程能够满足我们所提出
一个人的天空@ 阅读(1022) |
摘要: VC实现对不同信号波形相似程度的判别摘要:本文介绍了利用相关对信号波形进行相似程度的判别方法。通过该技术可以对采集到的多种类型的数据信号间的相似度进行判别。本算法由MicrosoftVisualC++6.0实现。一、引言在工程上我们经常要判断某设备产生的实际波形信号是否能同预先设计的相拟合,但由于实际产生的波形不仅仅是简单的正、余弦波形,而往往是含有较丰富频率分布的不规则波形,而设备元器件本身及外界的电磁干扰又不可避免的引入了干扰噪声,就为我们分析其与预先设计波形的拟合程度的判别增加了困难。另外,实际波形和预先设计波形间往往存在着时序上的差别,相位的改变同样也不利于信号的拟合判别。本文利用高等
一个人的天空@ 阅读(115) |
摘要: 二.具体程序实现a)基于子块颜色直方图方法的程序实现:将图片分成4×4格局,按从左到右、从上到下的顺序,分别计算各子块的颜色直方图,因此需要设定一个三维数组,前两维为子块的坐标,最后一维为颜色级,但现在采样得到的象素点的颜色值是RGB形式的,因此,需要将RGB形式转换为可以用比较合理的有限数表示的颜色级,而人眼对亮度是最为敏感的,因此可以将RGB转换为亮度值Y,公式为:Y=R×0.299+G×0.587+B×0.114这样就确定的一个256级的颜色级别,而统计颜色直方图的三维数组就可以定义为:intColor[4][4][256],当采样到某一颜色级时候
一个人的天空@ 阅读(1090) |
摘要: 利用VC实现图像的特殊显示效果经常看电视的朋友们不知注意到没有,最近的电视连续剧在每集片头或片尾部分都有显示一些特殊效果的图像,比如前一阵子中央一套放的《长征》、目前中央八套正在播放的《康熙王朝》,这些特效称为&图像的浮雕效果&和&图像的雕刻效果&,经过这些特效处理后的图像增强了观众们的视觉效果,它们看上去仿佛是使用3D技术作的,这也是为什么这种技术那么流行的原因吧。其实,我们完全可以用一些简单的数字图像处理算法来实现这些看似复杂高深的显示效果。我们手头上的一些关于利用VC开发数字图像资料大都是讲解如何控制图像的每一行或每一列像素的显示时间或顺序来实现一
一个人的天空@ 阅读(661) |
摘要: VisualC++实现Flash动画播放摘要:本文通过在VC中将外部swf格式文件内嵌为VC的内部资源,使其在程序运行过程中从资源动态释放到临时文件,从而实现VC对Flash动画的播放。引言Flash动画由于可以很方便地把用户的想象通过动画显现出来,使原本只属于专业制作人员的动画制作变的异乎寻常的快捷、方便。由于Flash制作的动画在层次、内容、表现形式等诸多方面均比较出色,因此在网络上得到迅猛的发展,更有不少厂商用Flash在互联网上做起了广告和产品演示,效果丝毫不比视频的差,而体积则要小的多。Flash不仅在网络上有广泛的应用,在普通的应用程序中也可以借助Flash实现一些VC、Delph
一个人的天空@ 阅读(512) |
摘要: 如何在VC5下定制多媒体真彩封页在自己的应用程序定制多媒体真彩封页,可以使应用程序在显示名称和版权特性时丰富程序界面,避免由于应用程序启动前进行大量数据初始化时用户进行较长时间的空等待过程,在给应用程序增加了生动特性和专业特性的同时,也起到了宣传和广告的作用。虽然VC5中具有特定的类来实现这一功能,但通过定制自己的应用程序多媒体启动封页,还可使自己的应用程序别具一格。VC5中的实现步骤:1.制作封页位图:制作应用程序多媒体启动封页真彩位图,记录位图的高度和宽度,建立所需要的其它多媒体声音等文件;2.建立应用程序:利用FILE-&NEW菜单建立名为START的多文档应用程序框架,并利用类向
一个人的天空@ 阅读(140) |
摘要: 图形处理在VC下显示JPEG、GIF格式图像的一种简便方法一、引言JPEG图像压缩标准随然是一种有损图像压缩标准,但由于人眼视觉的不敏感,经压缩后的画质基本没有发生变化,很快便以较高的压缩率得到了广泛的认可。GIF格式虽然仅支持256色但它对于颜色较少的图像有着很高的压缩率,甚至超过JPEG标准,也得到了广泛的认同。但作为众多程序员的一个重要的开发工具--MicrosoftVisualC++6.0的MFC库却仅对没有经过任何压缩的BMP位图文件有着良好的支持,可以读取、显示、存储甚至在内存中创建一块内存位图。由于BMP格式的图像没有经过任何的压缩,不论是作为程序的外部文件,还是作为程序的内部资
一个人的天空@ 阅读(131) |
摘要: 4、同步方式中解决recv,send阻塞问题采用select函数解决,在收发前先检查读写可用状态。A、读例子:TIMEVALtv01={0,1};//1ms钟延迟,实际为0-10毫秒intnSelectRintnErrorCFD_SETfdr={1,sConnect};nSelectRet=::select(0,&fdr,NULL,NULL,&tv01);//检查可读状态if(SOCKET_ERROR==nSelectRet){nErrorCode=WSAGetLastError();TRACE(&selectreadstatuserrorcode=%d
一个人的天空@ 阅读(418) |
摘要: 一、TCP/IP体系结构与特点1、TCP/IP体系结构TCP/IP协议实际上就是在物理网上的一组完整的网络协议。其中TCP是提供传输层服务,而IP则是提供网络层服务。TCP/IP包括以下协议:(结构如图1.1)(图1.1)IP:网间协议(InternetProtocol)负责主机间数据的路由和网络上数据的存储。同时为ICMP,TCP,UDP提供分组发送服务。用户进程通常不需要涉及这一层。ARP:地址解析协议(AddressResolutionProtocol)此协议将网络地址映射到硬件地址。RARP:反向地址解析协议(ReverseAddressResolutionProtocol)此协议将硬
一个人的天空@ 阅读(670) |
摘要: 关键字帮助文件信息显示原作者姓名戚高文章原始出处原创介绍一般的系统帮助文件在显示关于帮助信息的时候大部分采用的方法是静态的形式将要显示的内容显示到界面上,由于这次担任项目开发,我总觉得那样太单调了,于是,在各个网站搜索后发现了一个很好的控件类(字模显示控件类),于是我进行扩充完成了一些动态显示的功能,完成后的各种要显示的帮助信息能够象放映电影一样的进行动态显示,效果蛮好的,现将制作过程合代码及演示效果写出来,希望对这个方面有研究或者寻求好方法的人有帮助.同时本文章代码中显示的文本信息各位可以根据需要进行自己修改.正文显示帮助文件的时候我采用的是全屏的显示方法,但是如果就VIEW全屏的方法的话我
一个人的天空@ 阅读(61) |
摘要: [前言:]有好的界面软件就成功了一半,本文将向您介绍怎样设计一些有“稀奇古怪”形状的窗体,如何设定窗体的颜色、如何设置任务栏和状态栏以及菜单图标等等,通过这些技巧能更深入的理解VC的文档-视图结构。如何制作透明窗体使用SetLayeredWindowAttributes可以方便的制作透明窗体,此函数在w2k以上才支持,而且如果希望直接使用的话,可能需要下载最新的SDK。不过此函数在w2k的user32.dll里有实现,所以如果你不希望下载巨大的sdk的话,可以直接使用GetProcAddress获取该函数的指针。SetLayeredWindowAttributes的函数原型如下:BOOLSet
一个人的天空@ 阅读(372) |
摘要: char:ToBSTR:_com_util::ConvertStringToBSTRCString的AllocSystemStringTo_bstr_t:_bstr_t的构造函数ToCComBSTR:CComBSTR的构造函数BSTR:Tochar:_com_util::ConvertBSTRToStringTo_bstr_t:_bstr_t的构造函数ToCComBSTR:CComBSTR的构造函数_bstr_t:Tochar:LPCTSTR操作符ToBSTR:BSTR操作符ToCComBSTR:先使用BSTR操作符转换成BSTR,再使用CComBSTR的构造函数CComBSTR:Tochar
一个人的天空@ 阅读(382) |

我要回帖

更多关于 runtimeexception 的文章

 

随机推荐