当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言: VC6.0中基于MSFlexGridZE: 12pt; FONT
 

 

    摘要:  在vc环境下,mfc console程序默认行为是单线程工作环境。我们在“工程->设置->c\c++”下的code generation选项中,将use run-time library设为multithreaded(多线程)。也可以在当前当前的project options 中加入“/mt”。(表示使用多线程版本的c runtime函数库) #include #include ......
    摘要:vc中用于调试程序的几个宏的使用技巧黄向明   一、trace宏  当选择了debug目标,并且afxtraceenabled变量被置为true时,trace宏也就随之被激活了。但在程序的release版本中,它们是被完全禁止的。下面是一个典型的trace语句:  int ncount =9;  cstring strdesc("total");  trace("co......


VC6.0中基于MSFlexGrid的可编辑表格的制作及其若干问题的解决方案
vc6.0中基于msflexgrid的可编辑表格

的制作及其若干问题的解决方案

【程序编程相关:线程学习笔记(2)-互斥对象

【推荐阅读: 结合ADO、ADOX和MFC的文档/视

 

【扩展信息:Visual C++编程疑难问题解(一)

 

一.           概述

在我们制作的用户界面中很多时候会用到表格,当然我们首先想到的是用控件,如msflexgrid.我们可以方便的调用控件自身的函数来对表格中的元素进行操作,但是如果要设计一个可以编辑的表格,我们该怎么办呢?事实上这种可编辑表格的应用还真的不少,主要是其用户操作的交互性较好.笔者在前一阶段开发项目时遇到了这个问题,以下介绍笔者的实现方案.

二.           可编辑表格的初步实现

1.  创建新类cctrleditgrid

首先创建一个单文档工程editgrid.

接着在工程中加入msflexgrid控件.这是个activex控件,选择addtoproject的components and controls gallery选项可加入该控件.

然后以msflexgrid为基类创建新类cctrleditgrid,并添加成员函数void initgrid()(该函数目前只是空的)与成员变量  cedit*              m_pedit;

    cspinbuttonctrl*    m_pspinbuttonctrl;以后表格的实体类就是该类.

2.  在工程文件的视图类中显示表格

首先在视图类ceditgridview中添加成员变量cctrleditgrid* m_pctrleditgrid.

接着添加ceditgridview的消息相应函数oncreate,在其中创建表格

m_pctrleditgrid = new cctrleditgrid;

m_pctrleditgrid->create(null,ws_child|ws_visible,crect(0,0,0,0),this,id_editgrid);

    m_pctrleditgrid->initgrid ( );

    然后为了与视图的大小保持一致在ceditgridview的消息相应函数onsize中添加代码

    if ( m_pctrleditgrid != null )

        m_pctrleditgrid->movewindow(0,0,cx,cy);

3.  实现cctrleditgrid的initgrid的函数

initgrid完成表格的属性设置,表格初始内容的填写,可编辑控件的创建.这里的可编辑控件如cedit,ccombobox,cspinbuttonctrl,cdatetimectrl…….在本例中只使用cedit与csinbuttonctrl的结合这一种.如果表格中不同列之间的编辑控件不同,在程序中可以通过检测列号,来决定使用什么控件,事实上在笔者的项目中不同列之间也是使用不同编辑控件的.在此用一种控件来说明表格编辑的实现方法,读者想换其他的控件也很容易了.

void cctrleditgrid::initgrid()

{

       //设置行数,列数

       setcols( col_initnumber );  


...   下一页
    摘要:前几天在写一个看图的小程序时无意中发现windows窗口系统的一个小缺陷。我们知道当一个windows窗口的位置改变、大小改变、被别的窗口覆盖的部分重新可见时,该windows程序必须负责重新绘制窗口无效部分的内容。一般情况下,程序员只需负责窗口客户区的部分的重画工作,窗口边框、滚动条、状态栏等非客户区部分由windows系统负责重画。让我觉得惊讶的是,在处理滚动条时,windows却没能正确的重......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE