有两个对话框,在其中一个的按钮响应函数中给另一个的按钮发送鼠标消息。代码如下:
void CMessageDlg::OnSendMessage() 
{
CWnd* pWnd =  FindWindow( _T("#32770"), "Message2" );
if ( pWnd != NULL )
{
CButton* pButton = (CButton*)pWnd->GetDlgItem( 1000 );
pButton->PostMessage( WM_LBUTTONDOWN, 0, 0 );
pButton->PostMessage( WM_LBUTTONUP, 0, 0 );
}
}现象:如果接收消息的按钮的状态为鼠标点击后的状态。得点击第一个对话框相应按钮两次(即上面函数执行两次)才能有响应。如果把按钮的状态改变为正常状态则一次就可以响应。请问按钮鼠标点击后的状态是个什么状态,如何去除这种状态。或者以上问题怎么解决

解决方案 »

  1.   

    按钮被点后,窗口会陷下去,这时后左上角会向右下方移一个位置.
    你Post的Message里, 点坐标在(0,0),所以没点对地方.
    你把点坐标设到按钮中间, 也许就可以了再不行,你就先让他起来,如下面:
            pButton->PostMessage( WM_LBUTTONUP, 0, 0 );
            pButton->PostMessage( WM_LBUTTONDOWN, 0, 0 );
            pButton->PostMessage( WM_LBUTTONUP, 0, 0 );
      

  2.   

    pButton-> SendMessage (BM_SETSTATE, 0, 0) 
    pButton->PostMessage( WM_LBUTTONDOWN, 0, 0 );
            pButton->PostMessage( WM_LBUTTONUP, 0, 0 );