通常情况下,我们编程都是每一个按钮下面去完成一个功能,就会把完成功能的函数写在这个按钮下面,由于这么做的话对于代码的复用性就比较局限,现在我想通过定义名字的方法去完成每一个按钮的调用,大致说明情况是这样:
                                            第一层是GUI层
                                                 ↓
                                            第二层是MSG层
                                                 ↓
                                            第三层是处理层
                                                 ↓
                                         第四层是具体的功能函数详细说明一下:首先第一次表示界面,界面上面有各种按钮,点击按钮会发送一条定义好的命令到消息处理层,消息处理层接收到这条代码某一个功能的消息之后进行处理,通过这个消息去调用要完成这个功能的函数现在我知道在C#中可以定义如下格式的文件:
//Serial Communications Defintions
#define ssCOM1 1
#define ssCOM2 2
#define ssCOM3 3
#define ssCOM4 4
#define ssCOM5 5
#define ssCOM6 6#define ssBPS9600 9600
#define ssBPS19200 19200#define ssParityNone 0
#define ssParityOdd 1
#define ssParityEven 2#define ssStopBits1 1
#define ssStopBits2 2#define ssDataBits7 7
#define ssDataBits8 8    //Definitions for AEC area selection#define ssAEC_FIELD_LEFT 0
#define ssAEC_FIELD_CENTER 1
#define ssAEC_FIELD_RIGHT 2#define ssAEC_DENSITY_M2 0
#define ssAEC_DENSITY_M1 1
#define ssAEC_DENSITY_0 2
#define ssAEC_DENSITY_1 3
#define ssAEC_DENSITY_2 4
如果是在C#中该如何来完成啊?有了这个思路但是就是不知道该如何去实时,希望可以给我点帮助!谢谢各位了!

解决方案 »

  1.   

            [DllImport("user32.dll", CharSet = CharSet.Auto)]
            private static extern IntPtr SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
            private const int WM_USER = 0x0400;
            private const int WM_BUTTON1 = WM_USER + 1;
            private const int WM_BUTTON2 = WM_USER + 2;
            private const int WM_BUTTON3 = WM_USER + 3;        private void button1_Click(object sender, EventArgs e)
            {
                SendMessage(this.Handle,WM_BUTTON1,0,0);
            }        private void button2_Click(object sender, EventArgs e)
            {
                SendMessage(this.Handle, WM_BUTTON2, 0, 0);
            }        private void button3_Click(object sender, EventArgs e)
            {
                SendMessage(this.Handle, WM_BUTTON3, 0, 0);
            }        protected override void WndProc(ref Message m)
            {
                switch (m.Msg)
                {
                    case WM_BUTTON1:
                        MessageBox.Show("1");
                        break;                case WM_BUTTON2:
                        MessageBox.Show("2");
                        break;                case WM_BUTTON3:
                        MessageBox.Show("3");
                        break;
                }
                base.WndProc(ref m);
            }
      

  2.   

    每个控件设置tag
    在发生事件时候发送一个自定义的事件把tag传过去
    在自定义事件的函数中 根据tag处理调用不同的函数
      

  3.   

    用Switch()
    {
      case:
      ....
      break;
    }如果写的比较多的话是否会降低程序运行的效率?