我的程序是基于 dialog 的。我从 cdialog 中派生出一个自己的 basedialog,重载了 windowproc,在这里面将一些消息用 switch ... case 分发出来,比如:WM_COMMAND+button id,我用了一个 virtual function: int OnButton(btn,int param) 来做,在后面的 class 中继续重载它来分别处理。
也就是说,message map 我已经取消,这样做是不是跟 VC 有点不符?跟一般用法也不同?我的程序大部分都是手工创建,比如 h,cpp等,连注释、文件名写法也是DIY。对按钮、window create 都完全手工,都没有 dialog res 存在。到最后,好像就用了 VC  的编译器与调试器了。

解决方案 »

  1.   

    没什么问题...消息映射不过是在有多个消息处理函数的时候做缓冲来提高效率而已。不过你这样写的话,派生类要改消息处理就很麻烦了。
    参考http://dev.csdn.net/article/23/23171.shtm
      

  2.   

    赞成 jiangsheng(蒋晟.MSMVP2004Jan) 的说法。
      

  3.   

    MFC也是用switch case做的,没什么区别。
      

  4.   

    有一种叫"消息分流器"的编程序方法.
    参见<<Windows核心编程>> by jeffrey Rechter附录
      

  5.   

    但这样我觉得用着很方便,不用在 h file 中添加 message handler 后又要在 message map 中添加消息处理的语句,而且,当我的按钮很多的时候,又不得不写很多,不能用数组或组合来简化它。virtual function 是个问题,我不得不小心地继承,而且,一不小心写错了之后就成了死循环。