- 博客(98)
- 资源 (2)
- 收藏
- 关注
转载 Visual Studio 2008 查找耗时函数 C++ Profiler 性能 优化
用事实说话,C++ Profiler(Visual Studio 2008)1、设置“生成时启用C/C++代码分析”为“是”,如果不设置此项,程序速度将出乎你的意料……2、点击“分析”->“启动性能向导”3、在“性能资源管理器”中右键新建的性能报告节点,右键“启动并启用分析功能”。虽然此处有“启用分析功能”,但如果在配置里面没有进行设置,第一次的测试报告结果将是不准
2017-07-31 16:48:15 1176
转载 如何设置窗口立即刷新显示
一、引言遇到一个问题:清理缓存的时候,当缓存大于200M的时候,用户退出程序会显示一个对话框,这个对话框会提示用户清理缓存,当用户点击了“清理”按钮的时候,则会隐藏按钮并且提示用户“当前正在清理中…”的字样,当清理完毕后,则会显示“清理完成”;而如何让界面及时的显示“正在清理中…”的字样则是问题所在二、解决这个问题的根本原因是什么呢? 很简单,就是没有及时通知win
2017-07-31 16:23:17 1229
转载 【转】VC窗口刷新InvalidateRect和UpdateWindow RedrawWindow
首先说说WM_PAINT 这个重要的消息: The WM_PAINT message is generated by the system and should not be sent by an application.The system sends this message when there are no other messages in the application's me
2017-07-31 16:18:51 826
转载 窗口刷新 Invalidate UpdateWindow RedrawWindow
窗口刷新的几个函数:InvalidateUpdateWindowRedrawWindow 一:什么时候才会发生重绘窗口的消息? 当需要更新或重新绘制窗口的外观时,应用程序就会发送WM_PAINT消息。对窗口进行重新绘制。 二:Invalidate() -- RedrawWindow() -- UpdateWindow()三个函数有什么异同? Inva
2017-07-31 16:15:29 1062
转载 多线程和MsgWaitForMultipleObjects
在主线程中慎用WaitForSingleObject (WaitForMultipleObjects)下面的代码我调试了将近一个星期,你能够看出什么地方出了问题吗?线程函数:DWORD WINAPI ThreadProc( while(!bTerminate) { // 从一个链表中读取信息并且插入到CListCtrl中 // C
2017-07-31 15:30:36 721
转载 用户模式与内核模式(2)
用户模式与内核模式从Intel80386开始,出于安全性和稳定性的考虑,该系列的CPU可以运行于ring0~ring3从高到低四个不同的权限级,对数据也提供相应的四个保护级别。运行于较低级别的代码不能随意调用高级别的代码和访问较高级别的数据,而且也只有运行在ring0层的代码可以直接对物理硬件进行访问。由于WindowsNT是一个支持多平台的操作系统,为了与其他平台兼容,它只利用了CPU的两个
2017-07-31 13:26:47 577
转载 用户模式 VS 内核模式(1)
用户模式: 通过windows启动的任何一个进程都在用户模式(user mode)下运行,在这种模式下的进程不能访问其它进程的资源,除非通过API调用。在这种模式下运行的程序不能处理中断(interrupts)和环境切换(context switching)。中断(interrupts): CPU在运行时经常被一些事件打断(interrupt),如计时器,键盘,硬盘等。这些事件就叫做中
2017-07-31 13:25:29 595
转载 深入解析windows XP/2003:内核模式和用户模式
为了避免windows应用程序访问和修改关键的操作系统数据,windows使用了2种处理器访问模式(即使windows在底层处理器支持多于2种以上的模式):用户模式和内核模式。为什么windows只有2种支持访问模式呢?本来intel X86 处理器体系结构定义了4种特权级,或者称为4个环,来保护系统代码和数据不会被低级别的代码恶意的无意的改写。windows使用特权0,作为内核模
2017-07-31 12:02:15 542
转载 理解Windows内核模式与用户模式(新)
版权声明:本文为博主原创文章,未经博主允许不得转载。1、基础运行 Windows 的计算机中的处理器有两个不同模式:“用户模式”和“内核模式”。根据处理器上运行的代码的类型,处理器在两个模式之间切换。应用程序在用户模式下运行,核心操作系统组件在内核模式下运行。多个驱动程序在内核模式下运行,但某些驱动程序在用户模式下运行。当启动用户模式的应用程序时,Windows 会为该
2017-07-31 11:44:28 959
转载 理解Windows内核模式与用户模式
内核层次架构windows程序运行分为内核模式和用户模式,内核模式可以访问所有的内存地址空间, 并且可以访问所有的CPU指令。一般程序运行在用户模式, 通过系统调用切换到内核模式执行系统功能,Windows系统通过这种方式来确保系统的安全和稳定。下面是内核的层次划分:硬件抽象层(Hardware Abstraction Layer) (HAL) (hal.dll)
2017-07-31 11:41:18 480
转载 秒杀多线程第一篇 多线程笔试面试题汇总
系列前言 本系列是本人参加微软亚洲研究院,腾讯研究院,迅雷面试时整理的,另外也加入一些其它IT公司如百度,阿里巴巴的笔试面试题目,因此具有很强的针对性。系列中不但会详细讲解多线程同步互斥的各种“招式”,而且会进一步的讲解多线程同步互斥的“内功心法”。有了“招式”和“内功心法”,相信你也能对多线程挥洒自如,在笔试面试中顺利的秒杀多线程试题。 ---------
2017-07-28 11:56:21 371
转载 VC使用CRT调试功能来检测内存泄漏
C/C++ 编程语言的最强大功能之一便是其动态分配和释放内存,但是中国有句古话:“最大的长处也可能成为最大的弱点”,那么 C/C++ 应用程序正好印证了这句话。在 C/C++ 应用程序开发过程中,动态分配的内存处理不当是最常见的问题。其中,最难捉摸也最难检测的错误之一就是内存泄漏,即未能正确释放以前分配的内存的错误。偶尔发生的少量内存泄漏可能不会引起我们的注意,但泄漏大量内存的程序或泄漏日益增多的
2017-07-28 10:22:48 413
转载 C++文件读写详解(ofstream,ifstream,fstream)
在看C++编程思想中,每个练习基本都是使用ofstream,ifstream,fstream,以前粗略知道其用法和含义,在看了几位大牛的博文后,进行整理和总结:这里主要是讨论fstream的内容:[java] view plain copyprint?#include ofstream //文件写操作 内存写入存储
2017-07-28 10:16:59 528
转载 VC导入导出二维数组到 .txt
一. 二维数组写入 单纯表格全是数据,可以存放为 tab 分隔的 txt 文件。 例如: book1.txt 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #include #define buff_size 2048 //假定一行长度不超过 2048 字节 // 测定一行有几列int ge
2017-07-28 09:50:27 708
转载 Sqlite-Sqlite3中的数据类型
大多数的数据库引擎(到现在据我们所知的除了sqlite的每个sql数据库引擎)都使用静态的、刚性的类型,使用静态类型,数据的类型就由它的容器决定,这个容器是这个指被存放的特定列。Sqlite使用一个更一般的动态类型系统,sqlite中,值的数据类型跟值本身相关,而不是与它的容器相关。Sqlite的动态类型系统和其他数据库的更为一般的静态类型系统相兼容,但同时,sqlite中的动态类型允许它能做
2017-07-28 09:25:14 515
转载 WaitForMultipleObject与MsgWaitForMultipleObjects用法
用户模式的线程同步机制效率高,如果需要考虑线程同步问题,应该首先考虑用户模式的线程同步方法。但是,用户模式的线程同步有限制,对于多个进程之间的线程同步,用户模式的线程同步方法无能为力。这时,只能考虑使用内核模式。用户模式与内核模式线程同步机制比较: 用户模式内核模式优点线程同步机制速度快 支持多个进程之
2017-07-27 17:03:29 702
转载 获取线程结束代码(Exit Code)
线程结束代码可以调用GetExitCodeThread()(并给予CreateThread所获得的线程handle作为参数)而得知:BOOL GetExitCodeThread( HANDLE hThread, LPDWORD lpExitCode);hThread:由CreateThread()传回的线程handlelpExitCode:指向一个DWORD,用于接收
2017-07-27 16:44:46 1073
转载 等待一个线程的结束
Win32 提供WaitForSingleObject()函数,其第一个参数是一个核心对象(如线程)的 handle。为方便讨论,把等待线程称为线程#1,把被等待线程称为线程#2。调用 WaitForSingleObject()并放置一个“线程句柄”作为参数,将使线程#1开始睡眠,直到线程#2结束。像Sleep()函数一样,WaitForSingleObject()也有一个参数用来指定最长的等
2017-07-27 16:42:58 578
转载 如何在VC中创建动态数组
怎样给多维数组动态分配内存//Allocate:int **p = new int* [m];for(int i = 0 ; i p[i] = new int[n];//Use:for(int i = 0 ; i for(int j = 0 ; j p[i][j] = i * j;//Free:for(int i = 0 ; i delete[] p
2017-07-27 10:17:37 2669
转载 VC动态数组实现
VC动态数组实现数组类型的变量有三个重要的限制:数组长度固定不变,在编译时必须知道其长度,数组只在定义它的块语句内存在.实际的程序往往不能忍受这样的限制-------它们需要在运行时 动态地分配数组.虽然数组长度是固定的,但动态分配的数组不必在编译时知道其长度,可以(通常也是)在运行时才确定数组长度.与数组变量不同,动态分配的数组将一直存在,知道程序显式释放它为止.每一个程序在执行时都
2017-07-27 10:05:14 1793
转载 使用GDI+实现圆形进度条控件的平滑效果
DownLoad Src传统的GDI绘制图形时的一个致命缺点是图像存在锯齿毛糙,使用GDI+能绘制漂亮的渐变图像并有光滑图像的功能。利用GDI+对圆形进度条控件进行修改,效果如下:
2017-07-25 12:23:45 2235
转载 VC用MFC开发的圆形进度条控件
DownLoad SrcVC用MFC开发的圆形进度条控件visualsan@yahoo.cn NUAA zss在NBA2007游戏里,还有很多科幻电影里,经常可以看到圆形进度条。有的用来显示导弹发射的准备时间,有的用来倒计时。如图所示。模仿该样式,用MFC实现了一个Activex控件。叙述如下:该控件的编写思路是: 根据当前值,计算圆弧角度,然后用CShape(一个图
2017-07-25 12:21:25 2385
转载 绘制颜色渐变矩形函数
填充效果如下: 其中falg指定渐变形式: 0:左右渐变。 1:上下渐变 3:中心到左右两边渐变 4:中心到上下渐变 5:中心到四周实现渐变void_DrawRect(CDC *pDC,CRect rect,COLORREF
2017-07-25 12:16:20 2538
转载 绘制颜色渐变三角形
填充效果如下: P1, P2, P3为三角形三个点 cP1, cP2, cP3为三角形三点所指定的颜色。 void DrawTriangle(CDC *pDC,POINT P1,POINT P2,POINT P3, COLORREF cP1,COLORREF cP2,COLORREF cP3) { TRIVER
2017-07-25 12:14:35 2694
转载 一些常规形几何形状的绘制和效果填充(三)
源程序下载 (续) visualsan@yahoo.cn下面以实现钟和旋转文字为例具体讲解CShape的使用方法: 钟由表盘,指针和刻度组成。具体绘图函数在OnPaint()函数里实现,由于刷新较快,而所以绘图都需要计算得到,故要占一定的CPU使用率,避免cpu过高的方法是把不变的部分如表盘,刻度等绘制成一张背景位图,在OnPaint函数里载入背
2017-07-25 12:12:40 1779
转载 一些常规形几何形状的绘制和效果填充(二)
源程序下载(续) visualsan@yahoo.cn 我封装了这两个函数,使它的使用更容易:1.绘制颜色渐变三角形,P1, P2, P3为三角形三个点,cP1, cP2, cP3为三角形三点所指定的颜色。void DrawTriangle(CDC *pDC,POINT P1,POINT P2,POINT P3, COLORRE
2017-07-25 12:11:09 501
转载 一些常规形几何形状的绘制和效果填充(一)
源程序下载 一些常规形几何形状的绘制和效果填充 visualsan@yahoo.cn 常规几何形状是指三角形,多边形,圆,圆弧,直线,点,文字等的绘制。这些基本几何形状经过组合可以形成各种效果图,包括一些仪表和图表。要实现这些效果,使用opengl是最佳选择。但是对于不熟悉opengl编程的人来说,有些困难,而且学习opengl不是
2017-07-25 12:08:51 1344
转载 资料: 颜色RGB基础定义
版权声明:[cpp] view plain copyprint?// experiment_ColorRef.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include #include "LsColorRefDef
2017-07-25 12:00:36 2164
转载 GDI编程注意点-1
最近接触GDI编程比较多,就把常见的技巧和注意点整理成一个系列吧,希望对大家有帮助。1.TextOut的基本使用TextOut的属于比较老的文本输出函数,但是简单的文本输出和格式控制使用它非常方便,废话不多说,基本用法如下:[cpp] view plain copyprint?void DrawArea1(CDCHandle mydc, PO
2017-07-25 09:00:01 388
转载 深入解析Windows窗口创建和消息分发
Windows GUI采用基于事件驱动的编程模型,事实上几乎所有的界面库都是这样做的。在纯粹的Window32 SDK编程时代,人们还可以搞懂整个Windows窗体创建和消息的流通过程,但是在现在各种框架的包装下很多在Window32 SDK下很明显易懂的东西显得不是那么简单了。本文力图去繁求简,教你看懂所有框架的基本构造,而事实上对于了解这一切的人来说,这些界面框架的设计都是如出一辙的,希望看完
2017-07-25 08:54:29 659
转载 MFC中SendMessage的用法与相应函数的添加
1. 先来个基本知识介绍[cpp] view plain copyprint?SendMessage的基本结构如下: SendMessage( HWND hWnd, //消息传递的目标窗口或线程的句柄。 UINT Msg, //消息类别(这里可以是一些系统消息,也可以是自己定义,下文具体介绍,) WP
2017-07-24 14:49:28 834
转载 MFC的SendMessage函数详解
SendMessage函数功能:该函数将指定的消息发送到一个或多个窗口。此函数为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回。而函数PostMessage不同,将一个消息寄送到一个线程的消息队列后立即返回。函数原型 :LRESULT SendMessage(HWND hWnd,UINT wMsg,WPARAM wParam,LPARAM IParam);参数: hWn
2017-07-24 14:40:01 1328
转载 Visual Studio 2008 破解90天限制的激活升级方法!
Win7下的 Visual Studio 2008 破解90天限制的激活升级方法。如今,Windows7 的推出,大大加速了 Vista 的退出历史舞台。对于开发人员而言,更是喜欢追逐新的事务。很多朋友,都迫不及待的升级到了Windows7然后,升级到Windows7 之后,在安装VS2008的时候,很多人都遇到了一个问题,就是试用版的VS2008,不能在控制面板中进行升级成正式版
2017-07-24 09:37:24 1236
转载 MFC子窗口和父窗口(SetParent,SetOwner)
一、概念和区别 在windows系统中,每个窗口对象都对应有一个数据结构,形成一个list链表。系统的窗口管理器通过这个list来获取窗口信息和管理每个窗口。这个数据结构中有四个数据用来构建list,即child、sibling、parent、owner四个域。所以我们可以看到,窗口之间的关系有两种:owner-owned 关系和 parent-child关系。前者称之为拥有/被拥有关
2017-07-21 10:31:59 788
转载 JavaScript/VBScript脚本程序调试(Wscript篇)
在实际工作中,我发现程序员对脚本抱怨最多的就是脚本程序很难调试这个缺点,特别是调试.vbs等WSH程序的时候,总是: 1. 在资源管理器里面双击一个.vbs文件。 2. 程序里面发生了一个错误,例如异常,或者编程逻辑错误。 3. 一行行阅读源文件,然后在估计发生错误的地方,添加很多的Msgbox.Show,打印一些变量的值。 4. 重新执行.vbs文件 5.
2017-07-21 10:29:14 1247
转载 Vbs脚本经典教材
Vbs脚本经典教材(最全的资料还是MSDN) —为什么要使用Vbs? 在Windows中,学习计算机操作也许很简单,但是很多计算机工作是重复性劳动,例如你每周也许需要对一些计算机文件进行复制、粘贴、改名、删除,也许你每天启动计算机第一件事情就是打开WORD,切换到你喜爱的输入法进行文本编辑,同时还要播放优美的音乐给工作创造一个舒心的环境,当然也有可能你经常需要对文本中的某些数据进行整
2017-07-21 10:26:07 762
转载 多线程编程之二——MFC中的多线程开发
五、MFC对多线程编程的支持 MFC中有两类线程,分别称之为工作者线程和用户界面线程。二者的主要区别在于工作者线程没有消息循环,而用户界面线程有自己的消息队列和消息循环。 工作者线程没有消息机制,通常用来执行后台计算和维护任务,如冗长的计算过程,打印机的后台打印等。用户界面线程一般用于处理独立于其他线程执行之外的用户输入,响应用户及系统所产生的事件和消息等。但对于Win32的API编程
2017-07-21 10:20:13 409
转载 多线程编程之一——问题提出
一、问题的提出编写一个耗时的单线程程序: 新建一个基于对话框的应用程序SingleThread,在主对话框IDD_SINGLETHREAD_DIALOG添加一个按钮,ID为IDC_SLEEP_SIX_SECOND,标题为“延时6秒”,添加按钮的响应函数,代码如下:void CSingleThreadDlg::OnSleepSixSecond() {Sleep(6000); /
2017-07-21 10:17:44 270
转载 多线程CreateThread函数的用法及注意事项
当使用CreateProcess调用时,系统将创建一个进程和一个主线程。CreateThread将在主线程的基础上创建一个新线程,大致做如下步骤: 1在内核对象中分配一个线程标识/句柄,可供管理,由CreateThread返回 2把线程退出码置为STILL_ACTIVE,把线程挂起计数置1 3分配context结构 4分配两页的物理存储以准备栈,保护页设置为PAGE_REA
2017-07-21 10:12:20 438
转载 CreateThread
CreateThread是一种微软在Windows API中提供了建立新的线程的函数,该函数在主线程的基础上创建一个新线程。线程中止运行后,线程对象仍然在系统中,必须通过CloseHandle函数来关闭该线程对象。在很多参考书上,都说不要用CreateThread 创建线程、并用CloseHandle来关闭这个线程,因为这样做会导致内存泄漏,而应该用_beginthread来创建线程,_e
2017-07-21 10:10:40 677
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人