明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1463|回复: 3

创建非模式对话框的一种方法

[复制链接]
发表于 2003-4-12 18:23:00 | 显示全部楼层 |阅读模式
1、定义一个新类,这个类是从CDialog继承,(先插入一个对话框,然后用向导定义一个新类,注意设定visible的值.
2、对这个类增加承员函数

afx_msg LONG CMDwg::onAcadKeepFocus( UINT, LONG )
{
//return FALSE;
return TRUE;
}

3、为这个类增加消息
BEGIN_MESSAGE_MAP(CMDwg, CDialog)
//{{AFX_MSG_MAP(CMDwg)
  // NOTE: the ClassWizard will add message map macros here
//}}AFX_MSG_MAP
ON_MESSAGE( WM_ACAD_KEEPFOCUS, onAcadKeepFocus )
END_MESSAGE_MAP()

4定义startdlg() 和enddlg全局函数


BOOL startDlg()
{
BOOL b = TRUE;
if(!gpDlg)
{
  CAcModuleResourceOverride resOverride;
  gpDlg = new CBoundAngle(acedGetAcadFrame());
  b = gpDlg->Create(IDD_DIALOG10 );
}
   
    return b;
}
//
//
//
BOOL endDlg()
{
    if(!gpDlg)
        return TRUE;
     
    BOOL b = gpDlg->DestroyWindow();
    if(b)
        gpDlg = NULL;
    return b;
}

5、用startdlg启动对话框
6、用enddlg关闭对话框
void CMDwg::OnOK()
{
// TODO: Add extra validation here

//CDialog::OnOK();
CDialog::OnClose();
endDlg();
}
发表于 2003-4-19 11:58:00 | 显示全部楼层

objectarx:菜鸟有问!

我有几点不明白
(1) WM_ACAD_KEEPFOCUS 消息是怎样的一个消息
(2) CAcModuleResourceOverride resOverride  ;
      gpDlg = new CBoundAngle(acedGetAcadFrame()); 这两句是什么意义?
gpDlg  是一个全局变量吧?

我是objarx的初学者还在看书中,问的问题可能显得有点幼稚;但望各位老师一定不吝指教啊
 楼主| 发表于 2003-4-22 11:55:00 | 显示全部楼层

就是KEEP FOCUS消息

发表于 2005-9-8 09:48:00 | 显示全部楼层

菜鸟必读,反复地读

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-26 04:47 , Processed in 0.165655 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表