视图对象是VC自动生成的,对话框是自编的。在视图中使用“m_pDlg->SendMessage(WM_USER_PARAMETER, 0, (LPARAM) &pr);”发送消息给对话框。在对话框中,有消息响应函数LRESULT ParameterDialog::OnParameter(WPARAM wParam, LPARAM lParam) 
{...}。
但是发现消息响应函数的代码根本就没有作用到对话框界面上去。是哪里出问题了?3X。

解决方案 »

  1.   


    int CsubModeFrame::DoModal()
    {
     HWND hWndParent = m_hWndPrt;
     CRect rc(0,0,400,400);
     CWnd *pParent = CWnd::FromHandle(hWndParent);
     DWORD dwStyle=WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_THICKFRAME |  WS_VISIBLE | WS_SYSMENU | WS_CAPTION;
     if(!Create(NULL,"模态文档/试图框架 ",dwStyle,rc,pParent,NULL)) return FALSE;
      BOOL bEnableParent = FALSE;
      if (hWndParent != NULL && ::IsWindowEnabled(hWndParent))
      {
       ::EnableWindow(hWndParent,FALSE);
       ::EnableWindow(m_hWnd,TRUE);
       bEnableParent = TRUE;
      }
      CenterWindow();
      TRY
      {
       // enter modal loop
       DWORD dwFlags = MLF_SHOWONIDLE;
       if (GetStyle() & DS_NOIDLEMSG) dwFlags |= MLF_NOIDLEMSG;
        VERIFY(RunModalLoop(dwFlags) == m_nModalResult);
      }
      CATCH_ALL(e)
      {
       DELETE_EXCEPTION(e);
       m_nModalResult = -1;
      }
      END_CATCH_ALL
     
     if (bEnableParent)
      ::EnableWindow(hWndParent, TRUE);
      if (hWndParent != NULL && ::GetActiveWindow() == m_hWnd)
       ::SetActiveWindow(hWndParent);
       // destroy modal window
       DestroyWindow();
       return m_nModalResult;
     } 
    消息队列的常识
      

  2.   

    后来发现是WPARAM wParam, LPARAM lParam数据有误。