狐狸的狡诈与智慧 – 谈编程中的技巧处理

Author Jeff  2005-11-30

关键字: 编程 技巧

环境:Window XP Professional + SP2, VC6.0

 

一直以来,狐狸都是狡猾的化身。在儿时,教科书和各色童话书就明白地告诉我们:狡猾的狐狸。它曾经从乌鸦的嘴里骗过肉,在冬天骗过猎户,偷吃光了猎户家的肉。我们也一直这样认为着。直到我们明事理,才明白:狐狸是狡猾,但是不可否认,它也很有智慧。它的办法是很卑劣,但是有效。为什么不像狐狸一样,耍耍小手段,去获得有效的途径呢? *_*

 

下面的都是个人在编程中碰到的一些问题。说难吧,不难,但是烦。没办法,懒人总有懒法子。

1)  MFC界面编码中,经常需要隐藏某一区域内的所有控件,当某一条件满足时,再显示这一区域内的所有控件。一般地,56个还好说, 轮着设置呗。

    void CConfigureDlg::SetGroupVisible(bool bVisible)

{

    CStatic    *pStatic = NULL;

    CEdit     *pEdit = NULL;

 

    // group visible

    if (bVisible) {

        pStatic = (CStatic *)GetDlgItem(IDC_TEXT_NAME);

        pStatic->ShowWindow(SW_SHOW);

        pStatic = (CStatic *)GetDlgItem(IDC_TEXT_AGE);

        pStatic->ShowWindow(SW_SHOW);

        pEdit = (CEdit *)GetDlgItem(IDC_EDIT_NAME);

        pEdit->ShowWindow(SW_SHOW);

        pEdit = (CEdit *)GetDlgItem(IDC_EDIT_AGE);

        pEdit->ShowWindow(SW_SHOW);

    }

    else {

        pStatic = (CStatic *)GetDlgItem(IDC_TEXT_NAME);

  pStatic->ShowWindow(SW_HIDE);

  pStatic = (CStatic *)GetDlgItem(IDC_TEXT_AGE);

  pStatic->ShowWindow(SW_HIDE);

            pEdit = (CEdit *)GetDlgItem(IDC_EDIT_NAME);

            pEdit->ShowWindow(SW_HIDE);

            pEdit = (CEdit *)GetDlgItem(IDC_EDIT_AGE);

            pEdit->ShowWindow(SW_HIDE);

    }

    }

 

但是要是有2030就麻烦了,特别是还有大部分的Static文本框,总不能为了这点小事,定义很多你基本上不会用到的变量吧。考虑到只需要取用ID号,在这个上面动动手脚。

在资源视图中,修改那些Static文本框的IDIDC_STATIC_01_1.(前一个数字区分Group,后一个代表Group内第几个)。其它想隐藏或显示的控件也可以这样来命名。

编辑Resource.h文件,一个Group的按顺序排在一起,编上连续的号(领头的最好是10的倍数,便于日后的扩展)Group之间也按序排在一起。

考虑到上面代码的重复,改进之。如下:

void CConfigureDlg::SetGroupVisible(bool bVisible)

{

    int       show[] = { SW_HIDE, SW_SHOW };   

    int       indexID = 0;

    CStatic   *pStatic = NULL;

  

    // group visible   

    for (indexID = IDC_STATIC01_1; indexID <= IDC_STATIC01_2; indexID++) {

        pStatic = (CStatic *)GetDlgItem(indexID);

        pStatic->ShowWindow(show[bVisible]);

    } 

    for (indexID = IDC_STATIC02_1; indexID <= IDC_STATIC02_5; indexID++) {

        pStatic = (CStatic *)GetDlgItem(indexID);

        pStatic->ShowWindow(show[!bVisible]);

    }

}

 

2) 下面这个是以前自己刚用VC做东西,不熟悉很多函数,用的“傻傻”的办法。虽然现在不用了,不过到现在还是蛮佩服自己当时的思维。有点“搞笑”的意味,写下做个怀念。

      字符串 - - - > int(十进制)  atoi()
      
字符串 - - - >float         atof()

字符串 - - - >long          atol()

字符串 - - - >int(十六进制)  strtoul()

当时不知道这些,又不想自己转换。想了个办法,拖了几个Edit控件,设为不可见,并且整个一小不点,放在一个Static控件的后面,界面上一点影响都没有。然后,关联变量(类型设好)

使用的时候,先调用SetDlgItemText(), 然后就再调UpdateData(). 自己转换好了~~~hehe.(无赖之举啊) *_*

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 27
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 27
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值