在一个基于对话框文件的一般类里面向主对话框发送自定义消息,怎样获取这个主对话框的句柄啊?
  难道只能将主对话框中获得的句柄通过调用一般类的函数来传给一般类么?
有没的直接在一般类里面获取对话框句柄的法子啊?
   请赐教!

解决方案 »

  1.   

    AfxGetApp()->m_pMainWnd就是你主对话框的指针了
      

  2.   

    向主对话框发消息
    就把句柄置为NULL就行了
      

  3.   


    这样获得的是窗口指针
    你还得GetSafeHandle才是句柄
      

  4.   

    WM_VERIFY = WM_USER + 105,  
    ON_MESSAGE(WM_VERIFY, OnVerifyNews)
    void CServerDlg::OnVerifyNews(WPARAM wParam, LPARAM lParam)
    {
    /* m_Log=(CString)lParam;
    CTime time = CTime::GetCurrentTime();
    CString strPath = time.Format("%Y%m%d%H%M%S");
    strPath +="Logs.txt";    //日志文件名字
    CFile cf(strPath,CFile::modeCreate | CFile::modeReadWrite);
    char buffer[10000]; //存放日志信息
    memset(buffer,0,10000);
    int length = m_Log.GetLength();
    sprintf(buffer,m_Log.GetBuffer(m_Log.GetLength()));
    //buffer=m_Log.GetBuffer(m_Log.GetLength());
    //WideCharToMultiByte(CP_OEMCP,NULL,m_Log,-1,buffer,10000, NULL,false);  //转换存储方式
    cf.Seek(cf.GetLength(),CFile::begin);
    cf.Write(buffer,length);
    cf.Close();
    */
    //MessageBox("消息传送成功");}
    ::SendMessage(NULL,WM_VERIFY,0,(LPARAM)&m_Input); 
      

  5.   

    GetSafeHandle在一般类里面可以用?
      

  6.   

    头文件呢?OnVerifyNews怎么写的,写在哪里的?
    用AfxGetApp()->m_pMainWnd->SendMessage(WM_VERIFY,0,(LPARAM)&m_Input);
      

  7.   

    ::SendMessage(NULL,WM_VERIFY,0,(LPARAM)&m_Input); 
    =========
    如果用API发的话,第一个参数要接收窗口的句柄,楼上已经说得很清楚了。
      

  8.   

    SendMessage(AfxGetApp()->m_pMainWnd->m_hWnd, WM_USER_MESSAGE, wp, lp)或SendMessage(AfxGetMainWnd()->m_hWnd, WM_USER_MESSAGE, wp, lp);
      

  9.   

    随便给你写一个:参考一下CMainFrame* frame = (CMainFrame*)AfxGetApp()->GetMainWnd();
    if(frame != NULL)
    {
    CView* view = frame->getActiveView();
    if(view != NULL)
    {
    view->SendMessage(WM_COMMAND, ID_PEN_SELCHANGE, (LPARAM)&penBar);
    }
    }