博文

vc生成一个文本文件(2008-04-27 11:26:00)

摘要://保存文件
CFile f;
CFileFind ff;
CString sFile ="d:\\aaa.txt" ;
if(!ff.FindFile(sFile, 0))
{
f.Open(sFile.GetBuffer(1),CFile::modeCreate,NULL);
f.Close();
}
f.Open(sFile.GetBuffer(1),CFile::modeReadWrite); CString sText="aaaaaaaabbbbbbcccccc"; //写入数据
f.Write((void*)sText.GetBuffer(1), sText.GetLength()); f.Close();
ff.Close();......

阅读全文(3975) | 评论:0

vc中对话框背景色的设置(2006-09-30 11:08:00)

摘要:基前(广西桂林)
---- 笔者曾在《软件报》2000年第5期中讨论过如何改变控件的颜色,但还有相当一部分的读者来信提问: 一个基于对话框的MFC AppWizard应用程序中,如何改变对话框的背景颜色呢?对于这个问题,其实可以 由几种不同的方法来实现,具体如下(粗斜体代码为增添的):
---- 方法一:调用CWinApp类的成员函数SetDialogBkColor来实现。
---- 其中函数的第一个参数指定了背景颜色,第二个参数指定了文本颜色。下面的例子是将应用程序对话 框设置为蓝色背景和红色文本,步骤如下:
---- ① 新建一个基于Dialog的MFC AppWizard应用程序ExampleDlg。
---- ② 在CExampleDlgApp ::InitInstance()中添加如下代码:
BOOL CExampleDlgApp: : InitInstance ( )
{

    CExampleDlgDlg dlg;
    m_pMainWnd = &dlg;
//先于DoModal()调用,将对话框设置为蓝色背景、红色文本
    SetDialogBkColor(RGB(0,0,255),RGB(255,0,0));
    int nResponse = dlg.DoModal();

}
---- 编译并运行,此时对话框的背景色和文本色已发生了改变。值得注意的是:在调用DoModal()之前必须 先调用SetDialogBkColor,且此方法是将改变应用程序中所有的对话框颜色,并不能针对某一个指定的对 话框。
---- 方法二:重载OnPaint(),即WM_PAINT消息。有关代码如下(以上例工程为准):
void CExampleDlgDlg::OnPaint()
{
    if (IsIconic())

   else
   {
     ......

阅读全文(8170) | 评论:1

如何让自己的vc程序拿到没有VC环境的机器中运行?(2006-07-31 17:47:00)

摘要:通常打包可以解决问题。 我在实际应用中发现这样也可以解决问题: 1、将.exe拷入一个文件夹中 2、向这个文件夹中拷入以下四个文件: mfc42.dll
mfc42d.dll
mfco42.dll
msvcrtd.dll 这样就可以在没有VC环境的机器上运行你的exe文件了。 另外,我还发现,在没有VC环境的机器上双击.exe文件,错误提示缺少什么文件,就可以在自己的机器上找到这个文件,然后将这个文件拷到没有VC环境的机器中就可以了。......

阅读全文(4869) | 评论:1

VC++实用技巧(2006-07-05 14:16:00)

摘要:1.检测程序中的括号是否匹配
把光标移动到需要检测的括号(如大括号{}、方括号[]、圆括号()和尖括号<>)前面,键入快捷键“Ctrl+]”。如果括号匹配正确,光标就跳到匹配的括号处,否则光标不移动,并且机箱喇叭还会发出一声警告声。
2.查看一个宏(或变量、函数)的宏定义
把光标移动到你想知道的一个宏上,就比如说最常见的DECLARE_MAP_MESSAGE上按一下F12(或右键菜单中的Go To Defition Of …),如果没有建立Browse files,会出现提示对话框,确定,然后就会跳到定义那些东西的地方。
相当可喜的是,它也可以看到Microsoft定义的系统宏,非常good. 3.格式化一段乱七八糟的源代码
选中那段源代码,按ATL+F8。
4.在编辑状态下发现成员变量或函数不能显示
删除该项目扩展名为.ncb文件,重新打开该项目。
5.如何整理ClassView视图中大量的类
可以在classview 视图中右键新建文件夹(new folder),再把具有相近性质的类拖到对应的文件夹中,使整个视图看上去清晰明了.
6.定位预处理指定
在源文件中定位光标到对称的#if, #endif,使用Ctrl+K.
7.如何添加系统中Lib到当前项目
在Project | Settings | Link | Object/library modules:输入Lib名称,不同的Lib之间用空格格开.
8.如何添加系统中的头文件(.h)到当前项目.
#include <FileName.h>,告诉编译到VC系统目录去找;使用#include "FileName.h",告诉编译在当前目录找.
9.如何在Studio使用汇编调试
在WorkBench的Debugger状态下按CTRL+F7.
10.怎样处理ClassZiard找不到的系统消息
如果要在ClassWizard中处理WM_NCHITTEST等系统消息,请在ClassWizard中Class Info页中将Message filter改为Window就有了.
11.如何干净的删除一个类
先从Workspace中......

阅读全文(4505) | 评论:0

VC网络数据库开发(2006-06-30 16:10:00)

摘要:
典型网络数据库系统软件设计


一、概述 本系统为内部系统,帐户由管理员添加、管理; 分为两个组,User组和Boss组。Boss组的帐户可以发广播通知; 任意两个用户间可以互相通信; 数据库接口用DAO,网络通信用 CSocket+CSocketFile; 二、详细设计

1、数据库设计

本系统只是一个消息通信模型,这里的数据库设计比较简单。

ER图:



 把ER模型转为关系模型,共两个表: User (No , Name ,Password ,G#) 候选键:No 外键:G# Group (G# , GroupName ,Demo ) 主键 :G# 2、消息格式设计

<1>、传送的消息共有5类------登录消息,验证返回消息,普通消息,用户列表消息,通知消息。定义一个枚举类型:enum MSGTYPE {LOGIN , LOGINResponse , CHATTING , USERList , NOTICE}; <2>、定义消息类 class CMsg : public CObject { public: int m_eType; //枚举类型,记录消息类型 CString m_strMsg; //消息 CMsg(); virtual ~CMsg(); void Serialize(CArchive &ar); //消息类系列化函数,发送和接受消息时用。 }; <3>、m_strMsg 为消息类中存放消息的成员,它的具体格式随着消息类型m_eType不同而不同。
  m_eType m_strMsg LOGIN 呢称|密码 LOGINResponse GOOD|欢迎!(BOSS) 或 FAILED|验证失败! CHATTING 发给(来自)的用户名|消息内容 USERList 呢称1|呢称2|…|呢称n|END NOTICE ALL|消息内容 或 来自的用户|消息内容 m_strMsg中个内容用“|”隔开,用函数Decode......

阅读全文(36794) | 评论:0

vc中ado连接access数据库(2006-06-07 12:19:00)

摘要:直接通过ADO操作Access数据库
作者/徐景周

    我在《VC知识库在线杂志》第十四期和第十五期上曾发表了两篇文章——“直接通过ODBC读、写Excel表格文件”和“直接通过DAO读、写Access文件”,先后给大家介绍了ODBC和DAO两种数据库访问技术的基本使用方法,这次要给大家介绍的是ADO数据库访问技术的使用方法。ADO(Active Data Object,活动数据对象)实际上是一种基于COM(组件对象模型)的自动化接口(IDispatch)技术,并以OLE DB(对象连接和镶入的数据库)为基础,经过OLE DB精心包装后的数据库访问技术,利用它可以快速的创建数据库应用程序。 ADO提供了一组非常简单,将一般通用的数据访问细节进行封装的对象。由于ODBC数据源也提供了一般的OLE DB Privider,所以ADO不仅可以应用自身的OLE DB Privider,而且还可以应用所有的ODBC驱动程序。关于OLE DB和ADO的其它详细情况,读者可以自行查阅相关书籍或MSDN,这里就不一一说明了。让我们直接步入主题:如何掌握ADO这种数据库访问技术。ADO的操作方法和前面讲过的DAO的操作在很多方面存在相似之处,在这里,笔者为了更有效的说明它的使用方法,用VC6.0做了一个示例程序——AdoRWAccess,这个示例程序可以直接通过ADO来操作Access数据库,示例程序的运行效果如下图所示:



在示例程序中我们仍采用原库结构,数据库名Demo.mdb,库内表名DemoTable,表内字段名为Name(姓名)和Age(年龄)的两个字段,来构造示例程序操作所需的Access数据库,这也和上两篇文章的示例源码中的库结构相兼容。
下面让我们看看ADO数据库访问技术使用的基本步骤及方法:
    首先,要用#import语句来引用支持ADO的组件类型库(*.tlb),其中类型库可以作为可执行程序(DLL、EXE等)的一部分被定位在其自身程序中的附属资源里,如:被定位在msado15.dll的附属资源中,只需要直接用#import引用它既可。可以直接在Stdafx.h文件中加入下面语句来实现: #import "c:\program fi......

阅读全文(22043) | 评论:7

VC对话框打印功能(2006-04-15 13:17:00)

摘要:void CGetipDlg::OnButton3()
{
  CPrintDialog print(false);
  if(print.DoModal()==IDOK)
  {
    CDC printcd;
    printcd.Attach(print.GetPrinterDC());

    DOCINFO pdoc;
    pdoc.cbSize=sizeof(pdoc);
    pdoc.lpszDocName="pdoc";
    pdoc.lpszDatatype=NULL;
    pdoc.fwType=NULL;
    pdoc.lpszOutput=NULL;
    if(printcd.StartDoc(&pdoc)>=0)
    {
        LOGFONT logfont;
        memset(&logfont,0,sizeof(LOGFONT));
        logfont.lfHeight=75;
        
        CFont fon......

阅读全文(445) | 评论:0