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

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
    评论
开发串口设备(包括移动蓝牙设备)功能,经常需要使用到串口调试工具,关于串口调试工具,网上有很多非常不错的使用简单的调试工具,但是都是比较早期的,比如对于编码的支持都不好,基本上都只能发送ANSI编码的字符串,如果需要发送Unicode或者UTF-8的编码字符串就没有办法,需要自己编好码再发送;另外,不能根据接收到的数据通过编程自动实现通信协议返回数据,只能通过手工,这样就不能满足全流程协议测试,就很不方便。基于此,我们开发了一款”狐狸“可编程串口调试工具,最大的亮点是可以发送、查看任何编码数据格式;可以编程(Pascal Script)实现串口自动回复数据。”狐狸“可编程串口调试工具是一款免费工具,调试串口设备的得力工具。常用的数据回复模板都已经提供,会Pascal的就直接可以上手。 该工具如果配合【蓝牙模块通过USB转串口】的通用板子,就可以调试任何蓝牙协议。比如你需要开发一款蓝牙温度计,通过手机APP或者小程序链接温度计,查看温度,开发过程,可以不需要先有这款蓝牙温度计,可以通过【蓝牙模块通过USB转串口】的板子结合”狐狸“可编程串口调试工具先调试手机端,完全实现手机端的功能,最后再直接使用蓝牙温度计就可以和手机通信了,非常方便,并行开发极大提高效率。 希望”狐狸“可编程串口调试工具对有需要的朋友有帮助。
评论 27
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值