PostMessage(WM_COMMAND,IDOK,0x0C88);
0x0c88是我用spy看出来的,没用过.

解决方案 »

  1.   

    PostMessage(UINT message, WPARAM wParam = 0, LPARAM lParam = 0 )第一个参数是消息种类,后两个是消息参数。一般后两个可缺省,除非你想传递消息参数。比方关闭对话框
    m_pDlg->PostMessae(WM_CLOSE);
    又:
    #define WM_MYMESSAGE (WM_USER+1)
    .....
    在消息映射中
    ON_MESSAGE(WM_MYMESSAGE,OnMyMessage)
    定义消息处理函数
    afs_msg LONG OnMyMessage(UINT wParam,LONG lParam)
    你可以PostMessage(WM_MYMESSAGE,100,100)将参数传给OnMyMessage
      

  2.   

    GetDlgItem(IDOK)->PostMessage(BM_CLICK,0,0);
      

  3.   

    对于rovoboy(烟花满地),你的参数第二,三个可能都不太对.黑骑士兄台的方法可能不错,可以退出对话框,但和我的问题有点出入(也许我的理解有问题).
    很感谢emmai,你的这个答案基本上可以解决我的问题,但是为什么我的程序达不到预期的效果?程序是这样的:
    void CMyDlgDlg::OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized) 
    {
    CDialog::OnActivate(nState, pWndOther, bMinimized);

    // TODO: Add your message handler code here
    if(WA_INACTIVE  ==  nState) //被切换
    {
    GetDlgItem(IDOK)->PostMessage(BM_CLICK,0,0); 
    // AfxMessageBox("in active");//加上这句话会出错.
    }
    }
    我是想如果界面被切换就发送模仿一个控件发送一个消息,可是好像不行,相应的消息处理函数没有被调用!(这个程序在切换的时候,最终没有退出).不知道是为什么!(下次给分)
      

  4.   

    回答过N次的问题:
    ::PostMessage(hWnd, WM_COMMAND, IDOK, BN_CLICKED);
    hWnd是包含OK按钮的对话框的句柄。
    快给分!
      

  5.   

    PostMessage(WM_COMMAND,MAKE_WPARAM(BN_CLICKED,nButtonID),0)