博文

如何在Dlg菜单中设置标记?(2006-10-19 13:38:00)

摘要:如何在Dlg菜单中设置标记?
1.在.h文件中添加:#include   "afxpriv.h"  
2.ON_WM_INITMENUPOPUP()
3.在.h文件中声明  
  afx_msg void OnInitMenuPopup(CMenu *pPopupMenu, UINT nIndex,BOOL bSysMenu); 
4.在.cpp文件中实现 
 
void CMy121Dlg::OnInitMenuPopup(CMenu *pPopupMenu, UINT nIndex,BOOL bSysMenu)
{
    ASSERT(pPopupMenu != NULL);
    // Check the enabled state of various menu items.
    CCmdUI state;
    state.m_pMenu = pPopupMenu;
    ASSERT(state.m_pOther == NULL);
    ASSERT(state.m_pParentMenu == NULL);     // Determine if menu is popup in top-level menu and set m_pOther to
    // it if so (m_pParentMenu == NULL indicates that it is secondary popup).
    HMENU hParentMenu;
    if (AfxGetThreadState()->m_hTrackingMenu == pPopupMenu->m_hMenu)
   ......

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

VC++ List Ctrl控件(2006-09-16 19:29:00)

摘要:列表控件可以看作是功能增强的ListBox,它提供了四种风格,而且可以同时显示一列的多中属性值。MFC中使用CListCtrl类来封装列表控件的各种操作。通过调用BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );创建一个窗口,dwStyle中可以使用以下一些列表控件的专用风格:
 
     LVS_ICON LVS_SMALLICON LVS_LIST LVS_REPORT 这四种风格决定控件的外观,同时只可以选择其中一种,分别对应:大图标显示,小图标显示,列表显示,详细报表显示
LVS_EDITLABELS 结点的显示字符可以被编辑,对于报表风格来讲可编辑的只为第一列。
LVS_SHOWSELALWAYS 在失去焦点时也显示当前选中的结点
LVS_SINGLESEL 同时只能选中列表中一项 

     首先你需要设置列表控件所使用的ImageList,如果你使用大图标显示风格,你就需要以如下形式调用: 

     CImageList* SetImageList( CImageList* pImageList, LVSIL_NORMAL);
如果使用其它三种风格显示而不想显示图标你可以不进行任何设置,否则需要以如下形式调用:
CImageList* SetImageList( CImageList* pImageList, LVSIL_SMALL); 

     通过调用int InsertItem( int nItem, LPCTSTR lpszItem );可以在列表控件中nItem指明位置插入一项,lpszItem为显示字符。除LVS_REPORT风格外其他三种风格都只需要直接调用InsertItem就可以了,但如果使用报表风格就必须先设置列表控件中的列信息。 

     通过调用int Inser......

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

入世对我国软件产业的影响及对策 (2006-09-14 13:53:00)

摘要:1 引言

  软件产业持续高速发展:1996年全球软件销售额约为1000亿美元,到2000年全球软件销售额超过了5000亿美元。软件产业已成为美国、日本等发达国家的支柱产业。一些发展中国家和地区(如印度、韩国及台湾等)也都把发展软件产业放在极其重要的地位,积极参与国际软件市场的竞争。

  2 我国软件产业发展现状与存在问题

  2.1 我国软件产业发展现状

  中国的软件业始于80年代初期,近几年发展极其迅速。软件销售额1995年为68亿元,1996年为 92亿元,1997年为112亿元,1998年为138亿元,1999年为176亿元,至2000年为230亿元,年均增长30%左右。截至2001年2月,我国从事软件开发、生产、销售、维护和服务的软件企业2 000家左右,其中专门从事软件开发的企业有1 000家,加上兼营软件的企业,总数约有5 000多家。为加速我国软件产业的发展,科技部自1995年开始选择一批优秀软件园和软件企业作为国家火炬计划软件产业基地,给予重点支持,已拥有东大软件园、齐鲁软件园、西部软件园等15个软件产业基地。我国现已形成了一支具有一定研发水平的软件技术队伍,软件开发专业人员约15万人,平均每人每年创造价值1.4方美元;软件队伍中,70%是年轻的软件工程师,但高级系统分析员、项目总体设计师和软件市场开拓人员较缺。国内软件市场已具备了一定的产品方向和市场能力,1996年—2000年在三大类型软件产品的分布上,系统软件的市场份额最小,国产化率很低,支撑软件其次,只有应用软件占有较大的市场份额,且平均国产化率相对较高。系统软件和支撑软件中操作系统和数据库市场几乎被美国垄断,国内产品仅限于中文平台软件(如中文之星和RICHWIN等)和一些数据库产品。在应用软件中,主要的产品是应用工具软件、财务与管理软件、教育与娱乐软件及办公与文字处理几类,而具有较大发展前途和能反映计算机应用水平的系统集成软件则明显不足。

  2.2 我国软件产业存在的问题

  2.2.1 重复开发低技术含量软件

  国内的软件开发大都集中在管理软件、财务软件等基于数据库应用的软件开发上。这些工作的技术含量相对较低,虽耗时耗力,却很难得到技术积累和较高的收益。而且,同类软件在不......

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

用MFC ODBC操作Access数据库(2006-09-13 18:18:00)

摘要:    摘 要:本文简要介绍了MFC ODBC的工作原理,并且通过一个应用实例,讨论了利用MFC ODBC技术实现对Access数据源的显示,在此基础上,分析了如何设计以达到利用MFC ODBC来实现修改、增加、删除Access数据源中的记录的功能。             开放数据互连(Open Database Connectivity,简称ODBC)是一种数据库的互操作平台,通过经严格定义的各个级别的ODBC接口和客户系统的初始装置,能够为应用程序提供数据库类型透明性和位置透明性,让应用程序的编写者避免了与数据源相联的复杂性。MFC的数据库扩展部分封装了使用ODBC数据资源的细节,应用程序可以直接使用MFC中的数据库扩展类,来操纵ODBC驱动程序管理器,访问数据库。进行MFC ODBC数据库开发时,所需的基础工具就是MFC ODBC数据库类的使用。利用MFC ODBC开发就是利用MFC ODBC数据库类来操纵ODBC数据源。Visual C++的大多数ODBC访问是通过MFC来完成的。Visual C++的MFC类库定义了几个数据库类,在利用MFC编程时常常用到,它们是CDatabase(数据库类)、CRecordSet(记录集类)、和CRecordView(可视记录集类)。

  对于MFC ODBC数据库类来说,CDatabase类对象表示一个同数据源的连接,通过它可以对数据源进行操作。而CRecordSet对象代表从数据源中选择的一组记录的集合,也就是通常所说的记录集对象。

  CRecordSet对象通常用于两种形式:动态集(dynasets)和快照集(snapshots)。动态集能与其他用户所做的更改保持同步,快照集则是数据的一个静态视图。每一种形式在记录被打开时都提供一组记录,区别在于,当用户在一个动态集里滚动到一条记录时,有其他用户或是应用程序中的其他记录集所做的更改就会相应地显示出来。CRecordView类对象能以控制的形式显示数据库记录。这个视图是直接连接到一个CRecordSet对象的表视图。

  一个应用实例

  本实例是某项目中的一部分,目......

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

VC中的数据库ODBC(2006-09-13 18:15:00)

摘要:Visual C++中的ODBC编程实例

Microsoft Developer Studio为大多数标准的数据库格式提供了32位ODBC驱动器。这些标准数据格式包括有:SQL Server、Access、Paradox、dBase、FoxPro、Excel、Oracle以及Microsoft Text。如果用户希望使用其他数据格式,则需要安装相应的ODBC驱动器及DBMS。
  用户使用自己的DBMS数据库管理功能生成新的数据库模式后,就可以使用ODBC来登录数据源。对用户的应用程序来说,只要安装有驱动程序,就能注册很多不同的数据库。登录数据库的具体操作参见有关ODBC的联机帮助。

  一、MFC提供的ODBC数据库类

  Visual C++的MFC基类库定义了几个数据库类。在利用ODBC编程时,经常要使用到 CDatabase(数据库类)、CRecordSet(记录集类)和CRecordView(可视记录集类)。
  CDatabase类对象提供了对数据源的连接,通过它可以对数据源进行操作。

  CRecordSet类对象提供了从数据源中提取出的记录集。CRecordSet对象通常用于两种形式:动态行集(dynasets)和快照集(snapshots)。动态行集能与其他用户所做的更改保持同步,快照集则是数据的一个静态视图。每种形式在记录集被打开时都提供一组记录,所不同的是,当在一个动态行集里滚动到一条记录时,由其他用户或应用程序中的其他记录集对该记录所做的更改会相应地显示出来。

  CRecordView类对象能以控件的形式显示数据库记录,这个视图是直接连到一个CRecordSet对象的表视图。

  二、应用ODBC编程

  应用Visual C++的AppWizard可以自动生成一个ODBC应用程序框架,步骤是:打开File菜单的New选项,选取Projects,填入工程名,选择MFC AppWizard (exe),然后按AppWizard的提示进行操作。

  当AppWizard询问是否包含数据库支持时,如果想读写数据库,那么选定Database view with file support;如果想访问数据库的信息而不想写回所做......

阅读全文(4223) | 评论:3

优化JAVA程序设计和编码(2006-09-10 22:45:00)

摘要: 三.优化JAVA程序设计和编码,提高JAVA程序性能的一些方法。 通过使用一些前面介绍过的辅助性工具来找到程序中的瓶颈,然后就可以对瓶颈部分的代码进行优化。一般有两种方案:即优化代码或更改设计方法。我们一般会选择后者,因为不去调用以下代码要比调用一些优化的代码更能提高程序的性能。而一个设计良好的程序能够精简代码,从而提高性能。 下面将提供一些在JAVA程序的设计和编码中,为了能够提高JAVA程序的性能,而经常采用的一些方法和技巧。 1.对象的生成和大小的调整。 JAVA程序设计中一个普遍的问题就是没有好好的利用JAVA语言本身提供的函数,从而常常会生成大量的对象(或实例)。由于系统不仅要花时间生成对象,以后可能还需花时间对这些对象进行垃圾回收和处理。因此,生成过多的对象将会给程序的性能带来很大的影响。 例1:关于String ,StringBuffer,+和append JAVA语言提供了对于String类型变量的操作。但如果使用不当,会给程序的性能带来影响。如下面的语句: String name=new String(“HuangWeiFeng”); System.out.println(name+”is my name”); 看似已经很精简了,其实并非如此。为了生成二进制的代码,要进行如下的步骤和操作。 (1) 生成新的字符串 new String(STR_1); (2) 复制该字符串。 (3) 加载字符串常量”HuangWeiFeng”(STR_2); (4) 调用字符串的构架器(Constructor); (5) 保存该字符串到数组中(从位置0开始) (6) 从java.io.PrintStream类中得到静态的out变量 (7) 生成新的字符串缓冲变量new StringBuffer(STR_BUF_1); (8) 复制该字符串缓冲变量 (9) 调用字符串缓冲的构架器(Constructor); (10) 保存该字符串缓冲到数组中(从位置1开始) (11) 以STR_1......

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

socket编程原理 (2006-09-10 18:24:00)

摘要: 
socket编程原理 
1 问题的引入 
UNIX系统的I/O命令集,是从Maltics和早期系统中的命令演变出来的,其模式为打开一读/写一关闭(open-write-read-close)。在一个用户进程进行I/O操作时,它首先调用“打开”获得对指定文件或设备的使用权,并返回称为文件描述符的整型数,以描述用户在打开的文件或设备上进行I/O操作的进程。然后这个用户进程多次调用“读/写”以传输数据。当所有的传输操作完成后,用户进程关闭调用,通知操作系统已经完成了对某对象的使用。 

TCP/IP协议被集成到UNIX内核中时,相当于在UNIX系统引入了一种新型的I/O操作。UNIX用户进程与网络协议的交互作用比用户进程与传统的I/O设备相互作用复杂得多。首先,进行网络操作的两个进程钥纪纪同机器上,如何建立它们之间的联系?其次,网络协议存在多种,如何建立一种通用机制以支持多种协议?这些都是网络应用编程界面所要解决的问题。 

在UNIX系统中,网络应用编程界面有两类:UNIX BSD的套接字(socket)和UNIX System V的TLI。由于Sun公司采用了支持TCP/IP的UNIX BSD操作系统,使TCP/IP的应用有更大的发展,其网络应用编程界面──套接字(socket)在网络软件中被广泛应用,至今已引进微机操作系统DOS和Windows系统中,成为开发网络应用软件的强有力工具,本章将要详细讨论这个问题。 

2 套接字编程基本概念 
钥纪纪始使用套接字编程之前,首先必须建立以下概念。 

2.1 网间进程通信 
进程通信的概念最初来源于单机系统。由于每个进程都在自己的地址范围内运行,为保证两个相互通信的进程之间既互不干扰又协调一致工作,操作系统为进程通信提供了相应设施,如UNIX BSD中的管道(pipe)、命名管道(named pipe)和软中断信号(signal),UNIX system V的消息(message)、共享存储区(shared m......

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

软件安装过程浅释(2006-09-06 00:03:00)

摘要: 软件安装过程浅释 fffgzzz    2005-9-11     软件在安装时,到底做了些什么? 大家每天都在用电脑,可能也经常在自己的电脑上安装软件。就算自己没安装过,至少也看到人家安装过软件。在这里,我不是想教你怎么安装软件,而是想向你展示,软件在安装的过程中,到底都做了些什么动作?为什么有些软件要安装,直接拷贝过去却不能用?为什么一些软件安装或卸载之后要重启。下面要讨论的就是这些问题。     首先,我们探讨一下软件安装的共通部分,说共通,就是在不同版本的操作系统上,如WINDOWS98,WIN2K和WINXP等上它们都有共同点的地方。这个文章也试图不针对具体的某个操作系统,而对共同的规律来探讨,不过我自己用的是WINDOWS98,所以有时一些例子可能会用WINDOWS98上的实例来说明,而大多数情况下这些特***在WIN2K和WINXP上也是类似的。     那么,我先来归纳一下,典型的软件安装过程都有可能做哪些事情。由于我们是讨论软件在安装时的行为,所以开始安装前的设置和选项我们就暂不讨论,只说到软件真正开始安装那个时候起的动作: ①文件从安装源位置拷贝到目标位置。 ②往系统目录写入一些必要的动态连接库(DLL)。(可选) ③往系统注册表中写入相应的设置项。(可选) ④建立开始菜单里的程序组和桌面快捷方式。(可选) ⑤其他动作。(可选)      下面我们再详细来分析上面归纳出来的这些动作: 1)拷贝软件本身需要的文件。源位置指软件未安装之前的位置,例如光盘,下载的目录等,目标位置指你指定的安装位置。 这是几乎所有的软件安装过程一定会做的一件事。而如果一个软件,在安装时只要这一步,不需要后面的其他几步,我们可以认为这个软件就是绿色软件。或者反过来说绿色软件就是只要拷贝文件,不需要依赖于某个DLL,或者它依赖的DLL在几乎所有的系统中都一定有的,并且它也不依赖于注册表里面的设置项的软件。 2)这一步,可以说至少有一半软件在安装时都会做,一些软件,需要用到某个DLL,......

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

java的环境变量问题(2006-09-05 15:54:00)

摘要:一、关于环境变量
1、JAVA需要什么样的环境变量,这些环境变量有什么作用?
    JAVA程序能够顺利编译需要两个环境变量,一个是PATH(path),一个是CLASSPATH(classpath)。那么这两个环境变量代表什么呢?或者说究竟在JAVA程序编译中有什么作用呢?这就要涉及到WINDOWS的基本知识了。在WINDOWS环境中,每一条能用的指令都保存在硬盘的“某个角落”,比如说指令NOTEPAD(WINDOWS的记事本指令,在C:\WINNT目录下),那么在DOS命令提示符下直接输入NOTEPAD就可以打开记事本了。但是一旦我们把C:\WINNT目录下的NOTEPAD.EXE这个可执行文件移开(比如说我们现在把它“剪切”到D盘根目录下)我们再在DOS提示符下直接输入NOTEPAD时就无法再打开记事本了,但是我们在DOS下改变路径输入D:\NOTEPAD(或者先输入cd D: 在输入NOTEPAD也行)就可以打开记事本了。这就是说在我们直接输入NOTEPAD的时候,其实其默认路径就是C:\WINN。假设我们要运行一个JAVA程序(hello.java)就要先把它的class文件移动到JAVA里的bin目录下  然后打开DOS,把路径改到JAVA的BIN目录下 执行java hello.class,一次无所谓 但是每次都要这样去做未免太麻烦。还好WINDOWS提供了一个PATH环境变量,他的作用就是现在这个变量的值路径中去找,如果找到了要运行的EXE就运行,否则失败。如果我们把JAVA里的bin目录这个路径赋给path那么下次我在运行java这个命令的时候,即便是直接输入DOS也能够在path变量中找到JAVA的bin目录下的java指令了。
    下面说说,classpath环境变量。不知道各位注意到没有,我上面说的那句话——“假设我们要运行一个JAVA程序(hello.java)就要先把它的class文件移动到JAVA里的bin目录下”,为什么要这样做呢?因为我们在用到java hello.class这条指令的时候,DOS不知道hello.class这个文件在哪里,他就先到当前目录中去找,如果找到就运行,否则失败。当然,如果说hello......

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

成为编程高手的二十二条军规(2006-07-13 20:26:00)

摘要:成为编程高手的二十二条军规;

1.大学生活丰富多彩,会令你一生都难忘,但难忘有很多种,你可以学了很多东西而难忘,也会因为什么都没学到而难忘!

2.计算机专业是一个很枯燥的专业,但即来之、则安之,只要你努力学,也会发现其中的乐趣的。

3.记住:万丈高楼平地起!基础很重要,尤其是专业基础课,只有打好基础才能学得更深。

4.C语言是基础,很重要,如果你不学好C语言,那么什么高级语言你都学不好。

5.C语言与C++语言是两回事。就像大熊猫和小熊猫一样,只是名字很像。

6.请先学习专业课《数据结构》、《计算机组成原理》,不要刚开始就拿着一本VC在看,你连面向对象都搞不清楚,看VC没有任何用处。

7.对编程有一定的认识后,就可以学习C++了。(是C++而不是VC,这两个也是两码事。C++是一门语言,而VC教程则是讲解如何使用MFC类库,学习VC应建立在充分了解C++的基础之上。看VC的书,是学不了C++语言的。)

8.学习编程的秘诀是:编程,编程,再编程;

9.认真学习每一门专业课,那是你今后的饭碗。

10.在学校的实验室就算你做错一万次程序都不会有人骂你,如果在公司你试试看!所以多去实验室上机,现在错得多了,毕业后就错得少了。

11.从现在开始,在写程序时就要养成良好的习惯。

12.不要漏掉书中任何一个练习题--请全部做完并记录下解题思路。

13.你会买好多参考书,那么请把书上的程序例子亲手输入到电脑上实践,即使配套光盘中有源代码。

14.VC、C#、.NET这些东西都会过时,不会过时的是数据结构和优秀的算法!

15.记住:书到用时方恨少。不要让这种事发生在你身上,在学校你有充足的时间和条件读书,多读书,如果有条件多读原版书,你要知道,当一个翻译者翻译一本书时,他会不知不觉把他的理念写进书中,那本书就会变得像鸡肋!

16.我还是强调认真听专业课,因为有些课像《数据结构》、《编译原理》、《操作系统》等等,这种课老师讲一分钟能让你明白的内容,你自己看要看好几个月,有的甚至看了好几年都看不明白。

17.抓住在学校里的各种实践的机会,要为自己积累经......

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