wwyfeng 发表于 2003-4-16 13:14:00

beginEditorCommand()的一个问题?

下面是一个按钮的消息相映函数,调用BeginEditorCommand();把焦点交给AutoCAD.但都用后交给了AutoCAD,但对话框怎么隐藏不了!
void GRALIBMAIN::OnButtonInsert()
{
        // TODO: Add your control notification handler code here

        BeginEditorCommand();//Òþ²Ø¶Ô»°¿òº¯Êý
        ads_point basept;
        InsertDlg Indlg;

//        int nReturnValue = Indlg.DoModal();
        if (acedGetPoint(NULL, "\nPick a point: ", basept) == RTNORM)
        {
                CompleteEditorCommand();
//                m_strXPt.Format("%g", basept);
//                m_strYPt.Format("%g", basept);
//                m_strZPt.Format("%g", basept);
       
        }
        else
        {
                CancelEditorCommand();
        }

}
同样书上的一个例子就能隐藏!
void AsdkAcUiDialogSample::OnButtonPoint()
{
    // Òþ²Ø¶Ô»°¿ò£¬²¢½«¿ØÖƽ»¸øAutoCADͼÐα༭Æ÷
    BeginEditorCommand();

    ads_point pt;

    // »ñÈ¡Ò»¸öµã
    if (acedGetPoint(NULL, "\nPick a point: ", pt) == RTNORM) {
      // Èç¹ûµÃµ½Ò»¸öµã£¬Ôò¼ÌÐø
      CompleteEditorCommand();
      m_strXPt.Format("%g", pt);
      m_strYPt.Format("%g", pt);
      m_strZPt.Format("%g", pt);
      DisplayPoint();
    } else {
      // Èç¹ûûÓеõ½Ò»¸öµã£¬Èç°´ÏÂESC¼ü£¬ÔòÖжÏÓ¦ÓóÌÐòµÄÖ´ÐÐ.
      CancelEditorCommand();
    }
}

清高手指点!!
谢谢!

friendyuan 发表于 2003-6-27 17:35:00

我认为问题不在这里,你的对话框是不是MFC中的?如果是从CDialog中派生过来的,请改正,应该用CAcUiDialog,也就是把所有的Cdiglog用CAcUiDialog代替

freshriver 发表于 2003-6-30 09:29:00

调用一下ShowWindow(SW_HIDE);

funlxming 发表于 2003-7-1 17:10:00

支持2樓看法.

friendyuan 发表于 2003-7-2 10:06:00

谢谢支持

lqhljx 发表于 2003-7-2 22:24:00

就是2的看法 在消息映射时一定要以CAcUiDialog为基类,否则成为非模式对话框。

cocalon 发表于 2006-8-6 13:19:00

<P>你跟我一样,只把类的继承改成 <FONT color=#000000>CAcUiDialog</FONT></P>
<P><FONT color=#000000>而忘下改下边的消息循环</FONT></P>
<P>BEGIN_MESSAGE_MAP(newDlg, <FONT color=#ff0000>CAcUiDialog</FONT>)<BR>&nbsp;//{{AFX_MSG_MAP(newDlg)<BR>&nbsp;ON_BN_CLICKED(IDC_BUTTON1, OnButton1)<BR>&nbsp;//}}AFX_MSG_MAP<BR>END_MESSAGE_MAP()</P>
页: [1]
查看完整版本: beginEditorCommand()的一个问题?