我的程序写了好多按纽:
例如A,B两个按纽
现在我想让B也做A的事
假设A是打开com口,当我点B 时也是打开com口,
可以用PeekMessage吗!如果用PeekMessage怎么写!
我想问的是,怎么发A按纽按下的消息!
那么我有很多个按纽呢,要怎么做呀!

解决方案 »

  1.   

    那我的按纽中弹出的一些MessageBox等等,怎么不让它们弹出呀
    所以我想用发送消息的方法
    其实无所什么方法了
    我想要做的就是:我点一个按纽,可以做其它的一些按纽所做的事,
    又不想让它们中间的一些什么MessageBox等等弹出!
      

  2.   

    我用PostMessage(WM_LBUTTONDOWN,IDC_COM_BUTTON,1);
    好像消息已发,但我怎么处理我发的消息呢?
    我写:while( PeekMessage( &msg, 0, 0 ,0 , PM_REMOVE) )

    if(msg.message == WM_LBUTTONDOWN)
    {
    TranslateMessage(&msg);
    DispatchMessage(&msg);
    }
    }
    跟它时,也收到了,但并不做另一个按纽的事
    我不知道怎么写,请大家帮忙呀
    真的不知道怎么做,我以前没有写过这样的东西
    啊,受不 了啦
      

  3.   

    很简单,首先映射两个按钮的消息处理函数,然后这样写。
    OnButton1()
    {
      OnButton2();
      ..... //打开端口
    }
    如果是Win32的程序,这样写:
    在WndProc函数中
    switch (message) 
    {
     case WM_COMMAND:
       switch((LOWORD)wParam;
        {
         case IDB_BUTTON1:  //IDB_BUTTON1按钮的ID号
           SendMessage(hButton2,BN_CLICKED,0,0); //hButton1是Button1的按钮句柄
           ....;//打开端口
         case IDB_BUTTON2:
            ...
         }
    }
    上面有个问题,就是你点击BUTTON1时,端口打开了两次,你应想办法解决。
    其实你最好调用同一个函数,这样最好。
      

  4.   

    给父窗口发一个WM_COMMAND消息给A按钮的ID,
      

  5.   

    你的程序是不是两个按钮不在一个视图上
    对于两个试图的菜单,你要处理cmdmsg()消息,对以按钮,应为
    是两个是图,protected,我同学的一个解决办法令写一函数中加
    入{.....
       .....
       ::oncmd..();
      }
    声明为public在另一个button中调用就可以了
      

  6.   

    BOOL C***Dlg::PreTranslateMessage(MSG* pMsg)中
    nId = ::GetDlgCtrlID(pMsg->hwnd);
    int n = nId - 自定义一系列按纽的id基值
    //根据n来做动作。。n就是第几个按纽。
    这样还可以响应动态创建的按扭
      

  7.   

    可以看看这个:
    LRESULT CALLBACK DlgProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
    {
    BOOL bCallSelf = TRUE;
    switch(uMsg){
    case WM_COMMAND:
    switch(LOWORD(wParam))
    {
    case IDC_BUTTON1:
    bCallSelf = FALSE;
    //break;
    case IDC_BUTTON2:
    if(bCallSelf) MessageBox(hWnd, "Message Text", "Message Title", MB_OK);
    // do some thing here
    //............
    break;
    default: return 0;
    }
    功能:按下BUTTON1的时候,实际会做BUTTON2的事,而且不会弹出MessageBox。按下BUTTON2的时候,则正常执行BUTTON2做的事,会弹出MessageBox.
      

  8.   

    LRESULT CALLBACK DlgProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
    {
    switch(uMsg){
    case WM_COMMAND:
    switch(LOWORD(wParam))
    {
    case IDC_BUTTON1:
    case IDC_BUTTON2:
    // do some thing here
    //place you code
    break;
    default: return 0;
    }
              }
    }