
VC++
artmcu
这个作者很懒,什么都没留下…
展开
-
assert()函数用法总结
assert()函数用法总结 assert宏的原型定义在中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:#include assert.h>void assert( int expression ); assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abo转载 2012-11-26 10:15:40 · 517 阅读 · 0 评论 -
MFC中CTreeCtrl类的一些基本用法
MFC中CTreeCtrl类的一些基本用法最近做课程设计是用到了树形控件,原来对树形控件的用法基本都忘了,这次又重新整合了一下,以加深记忆。 树形控件可以用于树形的结构,其中有一个根接点(Root)然后下面有许多子结点,而每个子结点上有允许有一个或多个或没有子结点。CTreeCtrl类封装了树形控件的各种操作。在树形控件中每一个结点都有一个HTREEITEM句柄,这个句柄按我的理转载 2012-10-24 19:29:28 · 622 阅读 · 0 评论 -
GetSafeHwnd()
CWnd::GetSafeHwnd (这是CWnd的一个成员函数)HWND GetSafeHwnd()const;(这是个const 函数)Return ValueReturns the window handle for a window. Returns NULL if the CWnd is not attached to a window or if it is us转载 2012-10-24 16:40:26 · 421 阅读 · 0 评论 -
更改应用程序图标
在主程序中找到对应的构造函数,其中会有 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAIN);这里就知道怎么修改了 然后在初始化函数里有 SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon 这里就是使得修改生效的函数了转载 2012-10-23 14:32:43 · 452 阅读 · 0 评论 -
橡皮筋CRectTracker使用心得
CRectTracker被称作“橡皮筋”,是我们再窗口编辑中,选中对象,进一步操作的基础。橡皮筋有两种方法:一、手写橡皮筋,这个在程序中控制也比较好,二、使用CRectTracker系统类。在这我介绍使用CRectTracker。CRectTracker具体的参数和使用大家可以参考优快云。我主要介绍基本的自己的程序中使用到情况。首先在XXXView类中新建一个成员变量:[cpp]转载 2012-10-23 14:05:27 · 3708 阅读 · 0 评论 -
VC++之图形设备接口之画笔光栅操作
VC++之图形设备接口之画笔光栅操作一、创建单文档应用程序二、编辑菜单资源三、添加变量、函数 3.1、添加变量 BOOL m_drawLines; BOOL m_blue; //背景蓝色 BOOL m_green; //背景绿色 3.2、添加函数转载 2012-10-29 20:15:17 · 1174 阅读 · 0 评论 -
vc++深入详解
C++经典语法与应用 类的编写与应用\EX09#include class Base{public: virtual void xfn(int i) { cout } void yfn(float f) { cout } void zfn() { cout }};class Derived : public Base转载 2012-10-29 10:38:28 · 861 阅读 · 0 评论 -
内存DC
内存DC在使用vc开发图形相关的应用程序时,常常需要使用MFC的CDC类直接把图形画在窗口上。这通常是通过响应windows的WM_PAINT消息实现的。如果要画的图形比较复杂,或者比较大,那么画图过程可能会造成窗口的闪烁。当窗口调整大小时,这种闪烁由为明显。 解决窗口闪烁问题的有效办法就是使用内存DC,也称为缓冲DC。在内存中准备一个和窗口DC相同属性的DC,在这个内存DC上执行画图转载 2012-10-29 21:26:16 · 8395 阅读 · 3 评论 -
在OnPaint中必须调用一次BeginPaint和EndPaint,且也只能调用一次
基于对话框的程序(mfc默认生成),重载OnEraseBkgnd函数,其它不动,若在OnPaint函数中不调用其基类的OnPaint函数,即注释掉CDialog::OnPaint();,代码如下:[cpp] view plaincopyprint?void CDDDDlg::OnPaint() { if (IsIconic()) {转载 2012-10-29 21:15:44 · 884 阅读 · 0 评论 -
说了N多年都说不清的结构体对齐问题
作者:小马 一 引言先要明确一个事情,结构体的对齐规则到底和什么有关系?. 经过本人”深入的研究和探索”, 答案是, 和编译器,操作系统, CPU都有关系.和编译器有关系相信很多人都不怀疑, 和cpu和操作系统有还关系估计很多人也知道,问题是网上很少看到有人探讨这个, 这个问题并不是简单的总线长度就可以解释的清楚的,而且不同的CPU处理机制有很大的不同, 要把每个CPU的机制都转载 2012-10-18 19:16:19 · 880 阅读 · 0 评论 -
调用SendMessage 产生死锁的问题分析
调用SendMessage 产生死锁的问题分析 (一) SendMessage 的工作机制首先我要先简要的说明一个和这个话题有关系的消息处理机制: 在Window操作系统当中,窗口时属于所在Thread的也就是说 你这个窗口在那个Thread 当中Create 的那么你这个窗口就属于那个Thread。同时窗口的消息处理函数也都会在这个Thre转载 2012-10-25 21:18:59 · 880 阅读 · 0 评论 -
#ifdef _DEBUG用法小结
1#ifdef _DEBUG virtual void AssertValid() const; //assert(断言)valid(有效的,正确的)virtual void Dump(CDumpContext& dc) const; //存储上下文#endif这两个函数是调试用的,第一个函数检查可用性,即是否有效 第二个函数如果未更改的话,最终调用的是Cwnd::Dump转载 2012-10-25 20:49:54 · 2050 阅读 · 0 评论 -
关于THIS_FILE
VC++中本身就有内存泄漏检查的机制,可以在向导生成的支持MFC的工程中看到如下代码: #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif先具体解释一下:#ifdef _DEBUG //如果有定义_DEBUG#defi转载 2012-10-25 20:55:02 · 785 阅读 · 0 评论 -
关于LZ77压缩算法 有代码
关于LZ77压缩算法2008年05月04日 星期日 下午 05:23 在看木马代码的时候,涉及到一个lz77无损压缩算法的问题,上网搜了好多资料,都没找到特别好的。感觉这篇写的还算完整,贴出来分享给大家。关于该算法的资料来源与网络,版权归原作者所有,如果侵权,请及时告知。之所以这样说,是笔者听说在LZ系列算法中还有一部分压缩算法有专利,另一方面也是为了尊总知识产权转载 2012-11-19 11:16:56 · 5593 阅读 · 0 评论 -
关于LZ77压缩算法
关于LZ77压缩算法 在看木马代码的时候,涉及到一个lz77无损压缩算法的问题,上网搜了好多资料,都没找到特别好的。感觉这篇写的还算完整,贴出来分享给大家。关于该算法的资料来源与网络,版权归原作者所有,如果侵权,请及时告知。之所以这样说,是笔者听说在LZ系列算法中还有一部分压缩算法有专利,另一方面也是为了尊总知识产权。 以下内容来自互联网:===============转载 2012-11-19 10:47:50 · 1105 阅读 · 0 评论 -
学习LZ77与LZSS算法的有关资料
第五节 词典编码有许多场合,开始时不知道要编码数据的统计特性,也不一定允许我们事先知道它们的统计特性。因此,人们提出了许许多多的数据压缩方法,企图用来对这些数据进行压缩编码,在实际编码过程中以尽可能获得最大的压缩比。这些技术统称为通用编码技术。词典编码(Dictionary Encoding)技术就是属于这一类,这种技术属于无损压缩技术。一.词典编码分类词典编码的根据是数据本身包含转载 2012-11-19 10:39:55 · 10252 阅读 · 1 评论 -
LZ77算法基础介绍
LZ77算法基础介绍 我们在第三和第四章中讨论的压缩模型都是基于对信息中单个字符出现频率的统计 而设计的,直到 70 年代末期,这种思路在数据压缩领域一直占据着统治地位。在 我们今天看来,这种情形在某种程度上显得有些可笑,但事情就是这样,一旦某项 技术在某一领域形成了惯例,人们就很难创造出在思路上与其大相径庭的哪怕是更 简单更实用的技术来。 我们敬佩那两个在数转载 2012-11-29 17:44:34 · 990 阅读 · 0 评论 -
vc++6.0 笔记2
在程序中启动记事本 ::ShellExecute(NULL, NULL, "C:\\WINDOWS\\system32\\notepad.exe", NULL, NULL, SW_MAXIMIZE/*SW_SHOW*/); 在状态栏显示时间 void CMainFrame::OnTimer(UINT nIDEvent) { // TODO: Add your message原创 2012-09-13 16:44:52 · 399 阅读 · 0 评论 -
MFC中各种指针的获取
MFC中各种指针的获取 VC中编程对于刚刚开始学习的同学,最大的障碍和问题就是消息机制和指针获取与操作。其实这些内容基本上是每本VC学习工具书上必讲的内容,而且通过MSDN很多问题都能解决。一般我们使用的框架是VC提供的Wizard生成的MFC App Wizard(exe)框架,无论是多文档还是单文档,都存在指针获取和操作问题。下面这节内容主要是一般的框架,然后再讲多线程中的指针转载 2012-11-05 11:43:54 · 583 阅读 · 0 评论 -
VC中TRACE()的用法,终于学会了点皮毛,好累!
VC中TRACE()的用法,终于学会了点皮毛,好累! 个人总结:最近看网络编程是碰到了TRACE语句,不知道在哪里输出,查了一晚上资料也没找出来,今天终于在优快云上找到了,真是个高地方啊,方法如下:1.在MFC中加入TRACE语句2.在TOOLS->MFC TRACER中选择 “ENABLE TRACING”点击OK3.进行调试运行,GO(F5)(特别注意:不是执行‘!’转载 2012-11-05 11:22:45 · 401 阅读 · 0 评论 -
EnumChildWindows的威力
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处http://xinyistudio.vicp.net/和作者信息及本声明 很早就写过类似spy++和查看密码窗口的东西,一直想给这个小东西再加点特别的。前段时间对软件安装注册发生了兴趣,有些软件如果你不输入正确注册码,那该死的“下一步”按钮就一直disable。这次我就让spy++彻底spy到底,把那个注册用的按钮置亮,让我转载 2012-10-25 21:10:00 · 822 阅读 · 0 评论 -
DispatchMessage函数
函数功能描述:将消息发送给窗口过程。发送的消息通常由GetMessage函数获取。.函数原型: LONG DispatchMessage( CONST MSG *lpmsg);.参数: lpmsg:指向包含消息的MSG结构的指针。.返回值: 返回值由窗口过程返回。它的含义依赖于被发送的消息,但返回值通常被忽略。.备注: MSG结构必须包含转载 2012-10-29 09:40:56 · 910 阅读 · 0 评论 -
TranslateMessage函数
函数功能描述:将虚拟键消息转换为字符消息。字符消息被送到调用线程的消息队列中,在下一次线程调用函数GetMessage或PeekMessage时被读出。.函数原型: BOOL TranslateMessage( CONST MSG *lpMsg );.参数: lpMsg 指向一个含有用GetMessage或PeekMessage函数从调用线程的消息转载 2012-10-29 09:39:44 · 2600 阅读 · 0 评论 -
vc++6.0 菜单学习
CMenu *pMenu; //pMenu=this->GetMenu(); pMenu=GetMenu();//得到菜单栏指针 pMenu=pMenu->GetSubMenu(1);//得到第二个菜单项目 菜单的指针 //pMenu->CheckMenuItem(0,MF_CHECKED|MF_BYPOSITION);//为第二个菜单项的第一个子菜单设置复选标记 pMe原创 2012-09-17 20:31:08 · 536 阅读 · 0 评论 -
多线程 vc6.0 编译通过
四、Win32 API多线程编程例程例程1 MultiThread1建立一个基于对话框的工程MultiThread1,在对话框IDD_MULTITHREAD1_DIALOG中加入两个按钮和一个编辑框,两个按钮的ID分别是IDC_START,IDC_STOP ,标题分别为“启动”,“停止”,IDC_STOP的属性选中Disabled;编辑框的ID为IDC_TIME ,属性选中Read-onl转载 2012-10-07 19:42:45 · 1384 阅读 · 0 评论 -
VC++6.0 学习笔记1
VC++6.0 学习笔记1菜单栏的查看下添加了一个 新的工具栏 菜单起先定义了他的一个命令响应函数void CStyleView::OnViewToolbar() { // TODO: Add your command handler code here }没删除又定义了一个他的命令响应函数void CMainFrame::OnViewToolbar() {原创 2012-09-13 15:41:00 · 454 阅读 · 0 评论 -
Debug error:"One or more breakpoints cannot be set and have been disabled.Execution will stop at the
Debug error:"One or more breakpoints cannot be set and have been disabled.Execution will stop at the beginning of the program." 一、调试一般的程序在VC6.0里面调试的时候,有时候会出现下面这条警告:One or more breakpoints转载 2012-09-28 08:48:25 · 1202 阅读 · 0 评论 -
assert函数用法 收集
assert()函数用法总结 assert宏的原型定义在中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:#include assert.h>void assert( int expression ); assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终转载 2012-09-09 13:15:18 · 465 阅读 · 0 评论 -
类模板-实例为指针 vc6.0编译通过
/////////////////////////////////////////////// stcktp1.h -- modified Stack template///////////////////////////////////////////#ifndef STCKTP1_H_#define STCKTP1_H_template class Stack转载 2012-09-07 09:09:18 · 827 阅读 · 0 评论 -
类模板 vc6.0编译通过
//类模板//stacktp.h -- a stack template#ifndef STACKTP_H_INCLUDED#define STACKTP_H_INCLUDEDtemplate class Stack{private: enum{MAX = 10}; //constant specific to class Type转载 2012-09-07 07:58:53 · 483 阅读 · 0 评论 -
多重继承虚基类 vc6.0编译通过
多重继承虚基类// worker singer:public worker waiter:public worker singerwaiter:public singer,public waiter如上如继承关系的时候=>>问题出转载 2012-09-06 20:10:07 · 920 阅读 · 0 评论 -
例子 vc6.0 编译通过
//studentc.h #ifndef STUDENTC_H #define STUDENTC_H #include #include #include //#include //#include //using namespace std; class Student { private: typedef std::v转载 2012-09-06 16:06:16 · 601 阅读 · 0 评论 -
vc++6.0 error
今天 遇到这样的错误 fatal error C1033: cannot open program database 'd:\vc\test\graphic\debug\vc60.idb'查看vc60.idb的属性 不是只读属性, 先退出VC,后删掉此文件,再打开工程 F7 ,error 消失, 奇怪?原创 2012-09-20 19:29:15 · 598 阅读 · 0 评论 -
MFC通用控件的初始化
这是我在阅读某源代码时无意中想到的一个问题,进行了一番研究,现在把结果贴出来,希望对感兴趣的人能有所帮助。InitCommonControls和InitCommonControlsEx从Win95开始,Windows提供了一些新的Win32控件,称为通用控件. 如:Toolbar,Status bar,Tree view,List view,Animation,Hot-key,Image转载 2012-09-21 20:44:49 · 1647 阅读 · 0 评论 -
WinAPI编程基础 之 消息分流器
WinAPI编程基础 之 消息分流器文章作者:Bideyore[E.S.T]信息来源:邪恶八进制 中国(www.EvilOctal.com)对于熟悉Win API编程的同志们来说,windowsx.h这个头文件应该不会太陌生吧,这次要讲的内容就来自这个windowsx.h头文件。经常能在msdn上查到这样一些函数,明明是个函数,而且模样长得和一般的api函数也一样一样的转载 2012-09-21 19:48:48 · 616 阅读 · 0 评论 -
Windows 下串口通信(上)
作者:小马 如果你不想用开发工具自带的串口操作控件,想写一个灵活的串口操作类,下面的内容会对你有用.一 打开串口打开串口自然是用CreateFile, 这个倒不难, 关健是几个参数该怎么填. CreateFile有7个参数.LPCTSTR lpFileName这个填串口号, 比如你用com1, 传进来”com1”就可以了.这里有一点要注意,如果你的串口号是com1到com9转载 2012-10-18 17:06:41 · 1292 阅读 · 0 评论 -
Windows 下串口通信(下)
作者:小马 三 发送数据往串口发送数据用WriteFile, 这个函数有如下几个参数, HANDLE hFile之前用CreateFile打开的有效的串口句柄. LPCVOID lpBuffer 待发送的数据缓冲区. 把要发送的数据放在这里.DWORD nNumberOfBytesToWrite这里指定要发送的字节数, 可以比发送缓冲区总字节数小,具体看实际应用转载 2012-10-18 17:11:27 · 1859 阅读 · 0 评论 -
WritePrivateProfileString与GetPrivateProfileString用法与区别
WritePrivateProfileString与GetPrivateProfileString用法与区别从字面上来说:Write表示写,Get表示获取------------------以.ini后缀名为例,其它没试过,有兴趣可试先创建一个win32控制台应用程序(支持MFC功能的那个),源代码如下:int _tmain(int argc, TCHAR* arg转载 2012-10-16 17:05:23 · 7035 阅读 · 0 评论 -
INI文件编程,WINAPI函数WritePrivateProfileString,GetPrivateProfileString
在我们写的程序当中,总有一些配置信息需要保存下来,以便完成程序的功能,最简单的办法就是将这些信息写入INI文件中,程序初始化时再读入.具体应用如下:一.将信息写入.INI文件中. 1.所用的WINAPI函数原型为: [csharp] view plaincopyprint?BOOL WritePrivateProfileString( LPCTSTR lp转载 2012-10-16 16:48:57 · 788 阅读 · 0 评论 -
WritePrivateProfileString等读写.ini配置文件
配置文件中经常用到ini文件,在VC中其函数分别为:写入.ini文件:[cpp] view plaincopyprint?BOOL WritePrivateProfileString( LPCTSTR lpAppName, // INI文件中的一个字段名[节名]可以有很多个节名 LPCTSTR lpKeyName, // lpAppName转载 2012-10-16 16:26:14 · 732 阅读 · 0 评论