WTL学习一(WTL的安装配置)
:VC/C++    :kukei    :2010-07-27 03:53:13
:评论(0)

一直在使用mfc,但mfc上次更新已经是很久之前的事情了,而且现在qt,wtl等框架已经承受了,是该换换了;

安装wtl准备工作:

WTL80下载:可以从http://www.wwaattssuunn.com/www.sf.net下载,下载地址为:wtl80

VisualFC下载:可以从http://code.google.com/p/visualfc/下载。

                             vfc0.71bin下载地址为:vfc_0.71bin.

                            vfc0.71的VS2008插件下载地址为:vs2008addin

WTLHelper :下载地址 这个可以不用,直接使用VFC就可以了

     第一步、安装VS80,我在安装.net3.5时遇到问题,后来连网安装正常。

     第二步、安装WTL80,将WTL80解压至c:\wtl80目录。将c:\wtl80\appwiz\setup80.js复制为setup90.js,用记事本打开setup90.js,打开编辑菜单中的替换命令,将8.0全部替换为9.0后保存。运行setup90.js即可将WT.....

VC++下Window剪贴板的操作
:VC/C++    :kukei    :2010-04-14 03:07:05
:评论(1)

在richeditview中保存文件时用“static DWORD CALLBACK CBStreamOut”函数对于大于1M的文件耗时太长,原因在于这个函数每次都只能写很少内容,要多次调用造成的,我想利用剪贴板一次读取全部内容来解决时间问题,以下是网上的剪贴板操作方法。

1、文本内容的操作

    2、WMF数据的操作

    3、位图的操作

    4、设置使用自定义格式

    5、感知剪贴板内容的改变

    6、自动将数据粘贴到另一应用程序窗口

    一、文本内容的操作

    下面的代码示范了如何将文本内容复制到剪贴板:

 Cstring source;
//文本内容保存在source变量中
if(openClipboard())
{
HGLOBAL clipbuffer;
char * buffer;
EmptyClipboard();
clipb.....

VC下ZLIB压缩库的使用方法
:VC/C++    :kukei    :2010-04-12 01:34:07
:评论(1)

最近在处理文档时发现入库后数据库增大很快,压缩了access仍然很大,看来只能对文档本身做压缩了,就看了下zilb的压缩方法,如下:

1. 如何获得zlib

zlib的主页是:http://www.zlib.net/

2. 用VC++6.0打开

把下载的源代码解压打开,VC6.0的工程已经建好了,在\projects\visualc6. 双击zlib.dsw, 可以在VC++6.0中看到里面有3个工程: zlib 是库文件(编译设置选中 win32 lib debug / release), 工程example 是如何使用 zlib.lib 的示例, 工程minigzip 是如何用 zlib 提供的函数读写.gz文件的示例(*.gz的文件一般Linux下比较常用).

3. 如何加入到我的工程

编译好 zlib.lib 后, 你就得到了调用一个静态库所需要的所有文件了(zlib.lib, zlib.h, zconf.h). 如何调用静态库不用我说了吧.

4. 用zlib能干什么

先来看看 zlib 都提供了那些函数, 都在zlib.h中,看到一堆宏不要晕,其实都是为了兼容各种编译器和一.....

了解OLE及ActiveX
:VC/C++    :kukei    :2010-03-29 10:26:07
:评论(0)

   如果您使用Windows,如果您经常使用微软的程序,或者您热衷于VB编程,抑或您流连于国际互联网,您不会不经常接触到OLE和ActiveX等拗口的洋文,但是您知道它们到底是啥意思,有啥来头吗?如果您有兴趣,请让我说给您听。我们首先从OLE谈起。   

一、过去的OLE和今天的OLE

最初的OLE含义是指在程序之间链接和嵌入对象数据,它提供了建立混合文档的手段(资深Windows 3.X 用户可能记得当初在Word6.0中插入一个图形的新奇和喜悦),使得那些没有太多专业知识的用户能够很容易地协调多个应用程序完成混合文档的建立。1991年制定的OLE1.0规范主要解决多个应用程序之间的通信和消息传递问题,微软希望第三方开发商能够遵守这个规范,以使在当时的Windows平台上的应用程序能够相互协调工作,更大的提高工作效率。然而事与愿违,只有很少的软件开发商支持它。为此,微软于1993年发布了新的规范——OLE2.0,它在原有的基础上完善并增强了以下各方面的性能: 1.OLE自动化:一个程序有计划地控制另一个程序的能力。

2.OLE控件:小型的组件程序,可嵌入到另外的程序,提供自己的专.....

CRichEdit的IRichEditOleCallback使用一些文章
:VC/C++    :kukei    :2010-03-21 09:06:52
:评论(1)

1. 基于Richedit的简单IM实现之一:界面部分

2.数CRichEditCtrl的先天不足及进化方法

3.如何在richedit中显示 rtf (有Ole对象)文件

4.CRichEditCtrl和数据库交互

.....
StreamOut/In函数的说明
:VC/C++    :kukei    :2010-02-09 02:31:58
:评论(2)

CRichEditCtrl::StreamOut

long StreamOut( int nFormat, EDITSTREAM& es );

返回值:返回要写到输出流中去的字符数。

参数:

nformat 用来指定输出数据格式的标志。参见说明部分可以获得更多的信息。
es 用来指定输出流的EDITSTREAM结构。参见说明部分可以获得更多的信息。


说明:
此成员函数用来将此CRichEditCtrl对象中的内容写到指定的输出流中。
nFormat的值必须是下列值之一:

.....
· SF_TEXT 表示只是写文本。
· SF_RTF 表明写文本并进行格式化。

CMemFile的介绍
:VC/C++    :kukei    :2010-02-02 03:58:28
:评论(0)

百科上的介绍

CMemFile为支持内存文件的CFile的派生类。内存文件的行为类似于磁盘文件,所不同的是该文件存储在RAM中,而不是磁盘上。内存文件用于快速暂时存储,以及在独立的进程间转换字节或可串行化的对象。

 
CMemFile对象能够自动地分配它们的内存空间,或通过调用Attach函数为CMemFile对象附加内存块。另一种情形,如果nGrowBytes非零,那么将自动地以nGrowBytes为单位为增加的内存文件分配内存。
 
可以通过提供的指针访问内存块,此时可以通过调用Detach函数将其从CMemFile对象中分离出来。
 
CMemFile函数最一般的用途是创建CMemFile对象,并通过调用CFile成员函数来使用它。值得注意的是当创建CMemFile后将自动得打开它:不要调用仅仅用于磁盘文件的CFile::Open函数,其原因在于没有使用数据成员CFile::m_hFile。
 
CFile成员函数Duplicate, LockRange和UnlockRange对于CMemFile无效。如果在CMemFile对象中调用了这些函数,那么将获得CnotSupport.....

使用RichEdit将数据保存到文件
:VC/C++    :kukei    :2010-02-02 03:57:00
:评论(0)

 如何把里面的数据写入到文件?

RichEdit控件中为我们提供了一个函数long StreamOut(int nFormat, EDITSTREAM &es)

1.我们来讲讲一些介绍,当然你懂了也可以不用看。
EDITSTREAM是什么?
它是一个结构,它有三个成员变量,这里我们只要用到二个就够了。
typedef struct _editstream
{
 DWORD_PTR dwCookie;  // 一般我们用来存参数
 DWORD   dwError;  // Last error 
 EDITSTREAMCALLBACK pfnCallback; //回调函数
} EDITSTREAM;

这个回调函数的格式为

//这个回调名称是可以变的(废话)
DWORD CALLBACK SaveCallBack(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG * pcb)
{
 //写入文件
 ((CFile *)(LONGLONG)(dwCookie))->Write(pbBuff,cb);

 return 0;
}

 


2.现在我来讲讲.....

总结VC中VIEW类与DOC类--转
:VC/C++    :kukei    :2010-01-22 09:16:39
:评论(1)

VIEW/DOC结构号称是MFC的MVC结构,网上对此褒贬不一;我最近在最个小项目时在此处报错,不得不回头来吧他搞个清楚。

刚开始学习MFC,总是搞不清变量以及消息响应函数等究竟应该放在什么地方,感觉放在哪里都是一样的。就百度了一下,汇报结果如下:

首先是来自于百度知道的:http://zhidao.baidu.com/question/55308058.html

回答一:

document/view模式,是为了在逻辑上,让数据和显示分开。

一般在document里,定义document类的成员变量,来存数据,并用View来显示。

在document里,当成员变量的数据改变时,你可以用UpdateAllViews()来通知视图更新。

在View里,用GetDocument来获取与之对应document的指针,进而可以访问document的成员变量,从而进行显示Document/View仅仅是MFC为你提供的一种很好的支持而已

这里提到了两个函数UpdateAllViews()和GetDocument(),是用来建立两个类之间的联系的,很有用!

回答二:顾名思义,View类是用来做前.....

win7,win2008R2的vs2008 破解方法
:VC/C++    :kukei    :2010-01-15 12:46:18
:评论(2)

对于在win7内核下的vs2008破解,和在xp内核系统下的破解是不同的.

传统的破解方式:

  一、先安装试用版,然后在“添加或删除程序”里找到VS2008,点“更改/删除”就会看到一个输入序列号的地方,把序列号输进去,点“升级”按钮即可,Team Suite和Professional通用。

  二、把ISO中的Setup/setup.sdb文件中的[Product Key],由“T2CRQGDKBVW7KJR8C6CKXMW3D”修改为“PYHYPWXB3BB2CCMV9DX9VDY8T”,之后正常安装即可

但在win7和win2008R2中,第一种方法是行不通的,因为win7系统中微软遮蔽了序列号输入窗口,如图:

 

显示输入序列号的地方被遮蔽了。

如果安装之后需要破解,需要采用以下的方法:

  一、首先下载下面的补丁程序

    win7,win2008R2系统Vs2008补丁

  二、运行到上图的维护模式下,运行补丁程序,点击打补丁,即可看到维护模式下的出现序列号输入框,数据我下面提供的序列号即可。

 

 

以下是收集的序列号:

  1.Visual Studio 200.....