VC++ 技术文章
文章平均质量分 83
yuanweihuayan
准备研究发布windows内核相关文章
展开
-
第四章:进程
1. 进程的组成:◆ 一个内核对象,操作系统用它来管理进程。内核对象也是系统保存进程统计信息的地方。◆ 一个地址空间。其中包含可执行文件或DLL模块的代码和数据。此外它还包含动态内存分配,比如线程堆栈和堆的分配。2. CUI程序的链接开关是:/SUBSYSTEM:CONSOLE入口点函数:_tWinMain或者_tmain(具体的符号取决于我们了是否要使用Unicode字符串.操作原创 2011-07-24 21:21:18 · 1445 阅读 · 0 评论 -
关于时间一系列类的说明和用法
一. 基本概念:■ 时间的分类◆ 本地时间◆ 协调世界时间(Coordinated Universal Time ,UTC).也即我们常常说的格林威治时 间.格林威治时间与本地时间的差值,也就是我们通常说的时差.由于我们这边是北京时间(也称东八区).所有差值是8.原创 2011-10-11 18:01:22 · 871 阅读 · 0 评论 -
关于编译器的一些小bug.(针对VS2003)
1. 关于编译器编译最新文件问题.这个问题是由于我的另一篇文章"引起"的 文章地址:http://blog.csdn.net/yuanweihuayan/article/details/6641980原创 2011-09-27 15:52:55 · 1366 阅读 · 0 评论 -
vc操作html的几类处理
html的结构形式 姓名对于类似上面结构的几类处理方法:1. 清空html.BOOL ClearHtml() //清空html里面的内容{ CComPtr pDoc( NULL );if( !SUCCEEDED( G原创 2011-09-27 10:23:58 · 2897 阅读 · 0 评论 -
字符集之间转换(UTF-8,UNICODE,Gb2312) c++
UTF-8: 3字节一个字符UNICODE: 2字节一个字符GB2312: 1字节一个字符例子:“你”字的UTF-8编码: E4 BD A0 11100100 10111101 10100000“你”的Unicode编码: 4F 6转载 2011-08-30 09:48:05 · 971 阅读 · 0 评论 -
CString 和CTime互转
CString 转换成CTime:CString strCString="2004-08-12 14:45:22";COleVariant vtime(strCString);vtime.ChangeType(VT_DATE);COleDateTime time4转载 2011-08-24 09:30:03 · 2621 阅读 · 0 评论 -
项目经验(后续继续总结)
1. 我们在做项目的时候,经常会在使用的控件中关联一个变量.但是你们可知道就在我们为一个控件关联了一个变量的时候.其实VS2003已经为我们增加了一个关联(这咋看起来像是废话,其实不是的.你先看完先)当我们再修改程序时,或许由于某种原因(ID冲突,重定义ID等).再把刚刚定义原创 2011-07-28 19:38:51 · 1240 阅读 · 0 评论 -
MFC中模态对话框的调用流程小解
首先,DoModal()会使用对话框模板名来从应用程序的资源文件中查找、载入并锁定对话款模板。如果DoModal()不能定位资源,则返回错误代码-1;然后,这个函数会调用PreModal()。PreModal会执行一些安全检查,然后为对话框查找父句柄(会通过CWnd::Get转载 2011-08-23 11:14:30 · 1780 阅读 · 0 评论 -
第七章:线程调度、优先级、和关联性
1. 上下文切换:大约每隔20ms(具体时间可以使用GetSystemTimeAdjustment函数的第二个参数来查看),windows都会查看所有当前存在的线程内核对象.在这些对象中,只有一些被认为是可调度的.windows在可调度的线程内核对象中选择一个,并将上次保存在线程原创 2011-09-19 22:20:10 · 2032 阅读 · 0 评论 -
第五章:作业
第五章的笔记我做了很长时间,主要是最近很忙,前不久去了南京出差.今天把东西补上. 1.Windows提供了一个作业内核对象,他允许我们将进程组合在一起并创建一个"沙箱"来限制进程能够做什么,最好将作业对象想象成一个进程容器,但是创建一个只包含单个进程的作业同样非常有用(这样一原创 2011-09-08 21:22:28 · 1713 阅读 · 1 评论 -
如何利用WinDbg找出程序崩溃的位置
之前碰到论坛里有几个好友,说程序不时的崩溃,什么xxoo不能read的! 如果光要是这个内存地址,估计你会疯掉~~所以分享一下基本的调试技巧,需要准备的工具有WinDbg + VC6.0,下面是自己整理的一份自动生成DUMP文件的源代码,只需要添加到工程即可,源代码如下:转载 2011-09-07 16:43:39 · 4667 阅读 · 0 评论 -
VC-监视程序的编制
监视程序,这个名字听起来似乎很陌生。它的用途主要是在后台监视系统中关键信息的改变,比如注册表的改变及硬盘上由于文件操作引起的改变等等。也许有人会问了,编制这样的程序有什么价值呢?硬盘上文件改变了,我只要在资源管理器里点一点不就全都清楚了吗?问题当然不会这样简单,如今大家的硬盘转载 2011-09-06 21:42:13 · 1289 阅读 · 0 评论 -
第九章:Win32内存管理
1. 进程中,最重要的一条特性:每个进程都拥有自己”私有”的4GB虚拟地址空间. 每个进程的内存空间包含各种各样的内容,其中有:● 程序的EXE镜像● 程序中装入的非系统的DLL,包括MFC DLL● 程序的全局数据(只读和可读写的)● 程序的堆原创 2011-07-29 22:33:25 · 1270 阅读 · 0 评论 -
第三章:内核对象
1. 每个内核对象都只是一个内存块,它由操作系统内核分配,并只能由操作系统内核访问.这个内存块是一个数据结构,其成员维护着与对象相关的信息.少数成员(安全描述符和使用计数等)是所有对象都有的,但其他大多数成员都是不同类型的对象特有的. 内核对象的所有者是操作系统内核,而非进程.原创 2011-07-27 22:42:26 · 1053 阅读 · 0 评论 -
VC++6.0中内存泄漏检测
对C++代码而言,内存泄漏问题虽然有诸多方法避免,但实际代码编写的时候,或出于自信或出于复杂性的考虑,常常还会用到原始的operator new,这不可避免的会带来内存泄漏的可能,不久前本人因为违反了"可用于被多态继承的基类其析构函数应当有virtual修饰"的法则,导致了内存泄转载 2011-07-18 11:23:03 · 942 阅读 · 0 评论 -
CWnd::OnNcHitTest
afx_msg UINT OnNcHitTest( CPoint point ); 返回值:下面列出的鼠标击中测试枚举值之一。 · HTBORDER 在不具有可变大小边框的窗口的边框上。 · HTBOTTOM 在窗口的水平边框的底部。 · HTBOTTOMLEFT转载 2011-07-15 15:10:47 · 850 阅读 · 0 评论 -
关于TrackMouseEvent用法总结
对于这个函数我也是最近想研究控件自绘才知道它真正怎么用.以前只是见到过.嗯,废话不多说.我先说下我的问题:如何响应鼠标离开某个窗体(控件)事件?先大概讲下步骤,然后再集中对TrackMouseEvent进行详解:为按钮添加以下几个函数:● OnMuseMove原创 2011-09-28 18:14:59 · 10032 阅读 · 11 评论 -
vc画图
Windows中负责图形输出的是GDI(即Graphic Device Interface,图形设备接口)。这是Windows与硬件无关的图形输出模式的体现。GDI建立在硬件抽象层(HAL)之上,屏蔽了不同输出设备之间的差异,从而为用户提供了一个统一的“标准输出设备”。但是,与D转载 2011-09-29 11:55:33 · 1973 阅读 · 0 评论 -
VC常用功能--代码实现
一、打开CD-ROMmciSendString("Set cdAudio door open wait",NULL,0,NULL);二、关闭CD_ROMmciSendString("Set cdAudio door closed wait",NULL,0,NULL转载 2011-09-29 17:05:11 · 1072 阅读 · 0 评论 -
进程间通讯(一)
进程间通信最简单的方式就是发送WM_COPYDATA消息。 发送WM_COPYDATA消息:SendMessage(接收窗口句柄,WM_COPYDATA, (WPARAM)发送窗口句柄, (LPARAM)&CopyData); 其中的CopyData为COPYDATASTRUCT结构类型,该结构定义如下:typedef struct tagCOPYDATASTRUC原创 2012-08-08 15:21:02 · 1152 阅读 · 0 评论 -
窗口Z-Order顺序,组件tab-oder顺序,WS_CLIPCHILDREN/WS_CLIPSIBLINGS的再理解
刚看了http://www.cnblogs.com/helloj2ee/archive/2009/05/29/1491822.html上"关于WS_CLIPCHILDREN和WS_CLIPSIBLINGS的理解(个人认为还是相当全面的)" ,写的真是不错!但是也不能保证他写的都对,我下面以我自己的理解写的读后感,有参考他,还有M$自己的解释,虽然不一定都对,但是不理解的我也得先找个理由解释解释转载 2012-06-15 11:43:59 · 3295 阅读 · 0 评论 -
CRT中的时间(time_t和tm)
时间处理时实际项目中经常碰到的问题,这里介绍最常用的时间处理函数。 首先介绍基本的时间概念。时间一般分为两种,一种是本地时间(Local Time),一种是协调世界时间(Coordinated Universal Time ,UTC),也就是传说中的格林威治时间。本地时间与UTC时间之间的差即为时差,比如,北京时间(东八区)比UTC时间早8个小时。 C运行库中处理时间的函数主要转载 2011-10-08 22:30:26 · 2529 阅读 · 2 评论 -
CWnd::OnNcHitTest
CWnd::OnNcHitTest这个函数如果 没有用过,对于拉伸控件或窗体,要很费力了....afx_msg UINT OnNcHitTest( CPoint point );返回值:下面列出的鼠标击中测试枚举值之一。· HTBORDER 在不具有可变大小边框的窗口的边框上。 · HTBOTTOM 在窗口的水平边框的底部。 · HTBOTTOMLEFT 在窗口边框的左转载 2012-02-23 10:34:52 · 966 阅读 · 0 评论 -
Windows窗口样式
在自绘控件的时候经常会用到窗体样式.但是这个东西太大了,也没有必要记忆.所以转载一篇....一、窗口样式WS_POPUP 弹出式窗口(不能与WS_CHILDWINDOW样式同时使用)WS_CHILDWINDOW 子窗口(不能与WS_POPUP合用)WS_MINIMIZE 创建窗口拥有最小化按钮WS_MINIMIZEBOX 创建窗口拥有最小化转载 2011-12-27 10:21:44 · 2043 阅读 · 0 评论 -
常用函数及其使用格式(持续更新中.......)
一.使用透明画刷使用SDK比较容易,只要GetStockObject(NULL_BRUSH);然后选进设备描述表就可以了。关于MFC中的CBrush类,MS没有提供直接获得透明画刷的方法,查了下资料,可以使用如下的方法:CBrush *pBrush = CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));二.使用原创 2011-02-23 11:00:00 · 971 阅读 · 0 评论 -
SubClassWindow详解
许多Windows程序员都是跳过SDK直接进行RAD开发工具[或VC,我想VC应不属于RAD]的学习,有些人可能对子类化机制比较陌生。 我们先看看什么是Windows的子类化。Windows给我们或是说给它自己定义了许多丰富的通用控件,如:Edit、ComboBox 、ListBox……等,这些控件功能丰富,能为我们开发工作带来极大方面,试想:我们单单是自己实现一个EDIT控件是多么的艰难!但转载 2010-11-22 23:00:00 · 16898 阅读 · 13 评论 -
CListCtrl 使用技巧
1. CListCtrl 风格 LVS_ICON: 为每个item显示大图标 LVS_SMALLICON: 为每个item显示小图标 LVS_LIST: 显示一列带有小图标的item LVS_REPORT: 显示item详细资料 直观的理解:windows资源管理器,“查看”标签下的“大图标,小图标,列表,详细资料”转载 2011-11-10 14:16:19 · 1043 阅读 · 0 评论 -
CRgn几种创建方法,不规则窗体
一、序言 在绝大多数的Windows应用程序中,其窗体都是使用的正规正矩的矩形窗体,例如我们常用的,“记事本”,“扫雷”,等等。矩形窗体,具有编程实现简单,风格简洁的优点,所以在普通文档应用程序和简单小游戏中使用足矣。但在某些娱乐游戏程序中使用就略显呆板些了,这时若用不规则窗体替代原先的矩形窗体,将会使这类程序更添情趣。典型的例子有windows 自代的Media Player,新版本的Me转载 2011-11-01 11:19:12 · 1357 阅读 · 0 评论 -
WNDCLASS结构详解
typedef struct_WNDCLASS{ UINT style; WNDPROC lpfnWndProc; int cbClsExtra; int cbWndExtra; HANDLE hInstance; HICON hIcon; HCURSOR hCursor; HBRUSH hbrBackground; LPCTSTR lpszM转载 2011-11-18 17:49:11 · 2079 阅读 · 0 评论 -
Image list
Image ListsImage List 是同样大小的图片集合,每个图片通过索引引用。Image Lists 被用来高效管理大量图标和位图。在Image List中的所有图片被包含 单个,宽位图以screen device 格式。一个Image list同样可以包含单色位图,这些位图中包含掩码,被用来透明的绘画图片(icon style)。Using Image Lists转载 2011-11-15 18:00:57 · 2573 阅读 · 0 评论 -
关于ClientToScreen、ScreenToClient、GetClientRect和GetWindowRect四个函数之间的关系
对于这四个函数,想必有部分人还不知道其真正的原理吧.今天我也着实总结下:GetClientRect和GetWindowsRect两者之间的关系:GetClientRect的CRect是相对它的窗口的客户区的原点而言的,即它的左上角坐标总是(0,0),大小总是客户区的长原创 2011-09-16 17:29:07 · 3441 阅读 · 0 评论 -
OnPaint和OnEraseBkgnd的区别与联系
在MFC中 任何一个window组件的绘图 都是放在这两个member function中在设定上 OnEraseBkgnd()是用来画底图的 而OnPaint()是用来画主要对象的举例说明 一个按钮是灰色的 上面还有文字则OnEraseBkgnd()所做的事就是把按钮画成灰色而OnPaint()所做的事就是画上文字既然这两个member function都是用来画出组件的转载 2011-10-09 11:08:36 · 1276 阅读 · 0 评论 -
Windows中的时间(SYSTEMTIME和FILETIME) .
上一篇中介绍了C运行库中的时间处理函数。这一篇介绍Windows SDk中提供的时间函数。两种时间系统之间没有本质区别(事实上CRT时间是用Windows时间实现的,当然这是说的VC实现),同样提供本地时间和UTC时间之间的转换。不过CRT中的tm时间在SDK中对应为系统时间(S转载 2011-10-08 22:31:06 · 1813 阅读 · 0 评论 -
关于GetClientRect和GetWindowRect 类的函数再总结
1. 以对话框上的一个控件为对象讨论:假设对话框的大小为rcClient,控件的大小rcCtrl;也就是GetWindowRect( &rcClient );■ GetWindowRect: m_ctrl.GetWindowRect( &rcCtr原创 2011-10-10 16:07:57 · 2175 阅读 · 0 评论 -
虚拟键码对照表
虚拟键码 对应值 对应键VK_LBUTTON1鼠标左键VK_RBUTTON2鼠标右键VK_CANCEL3CancelVK_MBUTTON4鼠标中键VK_XBUTTON15 VK_XBUTTON26 VK_BACK8BackspaceVK_TAB9TabVK_CLEAR12Clea转载 2011-07-13 16:21:12 · 836 阅读 · 0 评论 -
GetWindowLong详解
<br />“窗口类的封装,从全局窗口消息处理到窗口对象消息处理的映射方法:<br /> 对界面进行封装,一般都是一个窗口一个类,比如实现一个最基本的窗口类CMyWnd,你一定会把窗口过程作为这个类的成员函数,但是使用WINAPI创建窗口时必须注册类WNDCLASS,里面有个成员数据lpfnWndProc需要WNDPROC的函数指针,一般想法就是把窗口类的消息处理函数指针传过去,但是类成员函数除非是静态的,否则无法转换到WNDPROC,而全局的消息处理函数又无法得到窗口类对象的指针。这里有几种解决办法:<转载 2010-12-24 10:25:00 · 2701 阅读 · 0 评论 -
GetSystemMetrics函数参数nIndex的定义
下面是GetSystemMetrics函数参数nIndex的定义:<br /><br />SM_ARRANGE 返回是否预备最小化.<br />SM_CLEANBOOT 返回系统启动方式:<br /> 0 正常启动<br /> 1 安全模式启动<br /> 2 网络安全模式启动 <br />SM_CMOUSEBUTTONS 返回值为系统支持的鼠标键数,返回0,则系统中没有安装鼠标。 <br />SM_CXBORDER, <br />SM_CYBORDER 返回以相素值为单位的Windows窗转载 2010-12-23 15:58:00 · 1288 阅读 · 0 评论 -
MFC的运行步骤
<br />我们在编写程序或是在看MFC类的书籍的时候,总会看到书上让我们在某个地方添加某某函数,响应什么消息。那么,到底为什么要在这地方加呢?为什么不能在其他地方添加消息响应函数呢?<br />接下来,我们就共同来讨论一下吧。<br />1. MFC的运行步骤:(这是对于文档视图结构的应用程序的)<br />theApp(theApp())->//应用程序全局对象的构造和内存分配<br />WinMain()->//进入主函数<br />AfxWinMain()->//调用API<br />InitA转载 2010-10-14 17:28:00 · 1195 阅读 · 0 评论 -
在刷新窗口时经常要调用重绘函数
<br />MFC提供了三个函数用于窗口重绘<br />InvalidateRect(&Rect)<br />Invalidate()<br />UpdateWindow()<br />当需要更新或者重绘窗口时,一般系统会发出两个消息WM_PAINT(通知客户区有变化)和WM_NCPAINT(通知非客户区有变化)<br />--WM_NCPAINT系统会自己搞定<br />--WM_PAINT消息对应的函数是OnPaint(),它是系统默认的接受WM_PAINT消息的函数,但我们一般在程序中做重绘时都在On转载 2010-10-12 15:15:00 · 1563 阅读 · 0 评论 -
关于Static控件背景透明时文本覆盖重影的问题
<br /> 原作者:施昌权 源出处:卓为VC 发布者:施昌权 发布类型:原创 发布日期:2008-08-22<br /> <br /> 通过映射OnCtlColor消息,而后在该函数中使用pDC->SetBkMode(TRANSPARENT)使Static控件背景透明时会出现:文本覆盖重影的问题,当改变控件的文本就会发生新文本与旧文本重叠的现象。 <br /> 可以通过以下方式使Static控件文本在透明状态下改变时不会产生文本重叠问题:<br />转载 2010-10-11 14:16:00 · 1735 阅读 · 0 评论