韦伯专栏之VC学习
C/C++,VC的学习过程


用状态栏实现进度显示

2009-8-9 星期日(Sunday) 晴
 多线程编程不熟的童靴,再也不用为多线程编写进度条而苦恼啦。

 以前写过一个进度条的,很挫。这两天要个界面加一个进度条,于是网上搜了搜,综合了一下,终于搞定。大体思路:用状态栏实时显示进度。
 1,不能使用原进度条,而要派生一个类。建了自己的可重用C++类来实现进度指示。这个类从CStatusBar派生。在状态栏创建一个进度指示器控制,把它作为子窗口来对待,然后根据不同的状态来显示或者隐藏进度指示器。
 2,我在CProgStatusBar派生类中加了一个CProgressCtrl类型的数据成员——m_wndProgBar。
 3,实现了三个重要的成员函数或方法:OnCreate、OnSize和OnProgress。注意OnCreate和OnSize都是CStatusBar的可重载虚函数,直接重载就行啦。OnProgress是消息处理函数,要自己搞定。代码分别如下:
 int CProgStatusBar::OnCreate(LPCREATESTRUCT lpcs)
{
 lpcs->style |= WS_CLIPCHILDREN;
......
# posted by Webbery @ 2009-08-09 11:00 评论(0)


FindNextFile()的注意漏掉最后一项

2008-9-19 星期五(Friday) 晴
   关于CFileFind的使用,常用例子如下:
   CFileFind fFind;
   BOOL bfinded=FALSE;
   bfinded=fFind.FindFile(m_strListFind,0); //m_strListFind即为路径,如d:\ok\R* ,以R开头
   while (bfinded)
   {
   BOOL tt=FALSE;
   tt=fFind.FindNextFile();
   if (fFind.IsDirectory() || fFind.IsDots()) continue;
   if(tt){
   if(fFind.GetFileName().Right(m_App.GetLength())!=m_App) continue;//m_App即为".exe"
   m_List.AddString(fFind.GetFileName());
......
# posted by Webbery @ 2008-09-19 13:16 评论(0)


HOOK专题

2007-8-14 星期二(Tuesday) 晴
基本概念
运行机制
钩子类型

基本概念
 钩子(Hook),是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。当消息到达后,在目标窗口处理函数之前处理它。钩子机制允许应用程序截获处理window消息或特定事件。
 钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。这时钩子函数即可以加工处理(改变)该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。

------------------------------------------
运行机制
 1、钩子链表和钩子子程:
 每一个Hook都有一个与之相关联的指针列表,称之为钩子链表,由系统来维护。这个列表的指针指向指定的,应用程序定义的,被Hook子程调用的回调函数,也就是该钩子的各个处理子程。当与指定的Hook类型关联的消息发生时,系统就把这个消息传递到Hook子程。一些Hook子程可以只监视消息,或者修改消息,或者停止消息的前进,避免这些消息传递到下一个Hook子程或者目的窗口。最近安装的钩子放在链的开始,而最早安装的钩子放在最后,也就是后加入的先获得控制权。
......
# posted by Webbery @ 2007-08-14 11:28 评论(0)


再过两天出全集

2007-5-28 星期一(Monday) 晴
拖拖拉拉搞了好长时间了,是该结束了,再不结束我都累死了。......
# posted by webbery @ 2007-05-28 21:06 评论(0)


孙鑫VC++视频学习笔记之14:网络编程

2007-5-28 星期一(Monday) 晴
(作者:韦伯)

阅读本文前,我们假设您已经:
 1,知道如何创建一个单文档的App Wizard
 2,知道C++ 类、函数重载等简单知识
 3,知道如何给View类或者Doc文档添加成员变量
 4,会用MFC的IDE调试工具最好,那么本文的程序您可以copy去调试
 5,知道如何为某个框架类添加虚函数或消息处理函数

网络编程的内容和MFC关联并不大,并不是MFC架构的主要内容,所以我记得比较简略。

一、ISO/OSI七层参考模型



二、套接字(socket)的一些文字描述

套接字存在于通信区域中。通信区域也叫地址族,它是一个抽象的概念,主要用于将通过套接字通信的进程的共有特性综合在一起。套接字通常只与同一区域的套接字交换数据(也有可能跨区域通信,但这支在执行了某种转换进程后才能实现)。Windows Sockets只支持一个通信区域:网际域(AF_INET),这个域被使用网际协议簇通信的进程使用。
......
# posted by webbery @ 2007-05-28 21:05 评论(0)


孙鑫VC++视频学习笔记之13:文档与串行化

2007-5-28 星期一(Monday) 晴
(作者:韦伯)

阅读本文前,我们假设您已经:
 1,知道如何创建一个单文档的App Wizard
 2,知道C++ 类、函数重载等简单知识
 3,知道如何给View类或者Doc文档添加成员变量
 4,会用MFC的IDE调试工具最好,那么本文的程序您可以copy去调试
 5,知道如何为某个框架类添加虚函数或消息处理函数

本课内容:

1, 首先讲解了一下什么是串行化,

2, 然后建立一个可串行化的类,并串行化之

一、 CArchive 和串行化

把对象(一个类)保存在永久性媒质上,比如磁盘。然后读取时,可以在内存中重新构建这个对象。把对象存储在磁盘的过程称为“串行化”。

一个Archive和一个文件相关,并且允许带缓冲的写和从存储器读出数据。

创建CArchive之前......
# posted by webbery @ 2007-05-28 21:03 评论(0)


今天先到这

2007-4-17 星期二(Tuesday) 晴
 剩下的13-20课过两天再慢慢整理一下,每次整理真是耗时间。......
# posted by webbery @ 2007-04-17 19:27 评论(0)


孙鑫VC++视频学习笔记之12:文件操作

2007-4-16 星期一(Monday) 晴
  (作者:韦伯)
  
  阅读本文前,我们假设您已经:
   1,知道如何创建一个单文档的App Wizard
   2,知道C++ 类、函数重载等简单知识
   3,知道如何给View类或者Doc文档添加成员变量
   4,会用MFC的IDE调试工具最好,那么本文的程序您可以copy去调试
   5,知道如何为某个框架类添加虚函数或消息处理函数
  
  
  1, 指向常量的指针&&指针常量
  
  Char ch[5]=”lisi”;
  Const char * pStr=ch; const char *等同char const *
  Char * const *pStr=ch; 指针是常量,指针不可更改,其内容可更改
  
  2, 读写
  
  文件读取操作
   FILE *pFile=fopen("1.txt","r");
  
   char ch[100]="0"; //数组被赋值为全零
......
# posted by webbery @ 2007-04-16 17:06 评论(0)


孙鑫VC++视频学习笔记之11:图形保存和重绘

2007-4-16 星期一(Monday) 晴
  (作者:韦伯)
  
  阅读本文前,我们假设您已经:
   1,知道如何创建一个单文档的App Wizard
   2,知道C++ 类、函数重载等简单知识
   3,知道如何给View类或者Doc文档添加成员变量
   4,会用MFC的IDE调试工具最好,那么本文的程序您可以copy去调试
   5,知道如何为某个框架类添加虚函数或消息处理函数
  
   
  
  1,透明画刷
  
  CClientDC dc(this);
  
  CBrush *pBrush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));
  
  dc.SelectObject(pBrush);
  
  2,保存绘制的图像(窗口重绘时仍然存在)
  
  CGraphView类中添加m_ptOrigin,m_ptEnd,m_nDrawType三个变量,分别用于保存图像起始点、终止点和图像类型
......
# posted by webbery @ 2007-04-16 17:06 评论(0)


孙鑫VC++视频学习笔记之10: 图形绘制与通用对话框

2007-4-16 星期一(Monday) 晴
  (作者:韦伯)
  
  阅读本文前,我们假设您已经:
   1,知道如何创建一个单文档的App Wizard
   2,知道C++ 类、函数重载等简单知识
   3,知道如何给View类或者Doc文档添加成员变量
   4,会用MFC的IDE调试工具最好,那么本文的程序您可以copy去调试
   5,知道如何为某个框架类添加虚函数或消息处理函数
  
   
  
  添加对话框,再用ClassWizard添加new class之后,出现找不到类的提示,可以删除.clw文件,重编译即可
  
  一、绘制图形
  
  CClientDC dc(this);
  
  CPen pen(PS_SOLID,1,RGB(255,0,0));
  
  dc.SelceObject(&pen);
  
  //此处可以调用函数进行绘制了
  
  dc.SetPixel(point,RGB(255,0,0));
......
# posted by webbery @ 2007-04-16 17:05 评论(0)


页码:1/3  [1][2][3]   本站域名:http://webbery2.blog.tianya.cn/

<< 2010 三月 >>
31 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 1 2 3

·孙鑫VC学习笔记(全) (17)
·C++学习笔记 (0)
·MFC (3)

·用状态栏实现进度显示(2009-8-9)
·FindNextFile()的注意漏掉最后一项(2008-9-19)
·HOOK专题(2007-8-14)
·再过两天出全集(2007-5-28)
·孙鑫VC++视频学习笔记之14:网络编程(2007-5-28)
·孙鑫VC++视频学习笔记之13:文档与串行化(2007-5-28)
·今天先到这(2007-4-17)
·孙鑫VC++视频学习笔记之12:文件操作(2007-4-16)

·你的总结非常好,看来是把孙鑫老师的视频教...(2009-6-5)

·韦伯主页
·韦伯日记
·模式识别
·Linux
·C/C++/VC
·数据库

访问计数:24366


webbery 管 理 员


©天涯社区