一、本节课程
C++ ARX二次开发-MFC 非模态对话框modaless dialog
免费视频课程请关注 yunyou.ke.qq.com
二、本节要讲解的知识点
显示一个非模态对话框的步骤和代码编写。
三、具体内容
1、思路:
显示一个非模式对话框:
pDialog=new CModalessDlg(acedGetAcadFrame()); pDialog->Create(IDD_DIALOG_MODALESS); pDialog->ShowWindow(SW_SHOW); |
销毁对话框是需要关闭对话框,释放对话框的内存空间。
在关闭对话框的事件中,调用DestroyWindow函数来销毁对话框,重写对话框的PostNcDestroy函数,在这个函数里面要释放分配的内存空间。
非模式对话框修改图形数据库内容的时候,必须在操作之前锁定文档,操作完成之后解锁文档。
- 实现:
(1)用向导建立一个项目叫做ModalessDialog,记得需要勾选使用MFC。
- 添加对话框资源和控件。yunyou.ke.qq.com
(3)为对话框添加类:CModalessDlg,添加成员变量,消息响应函数,具体过程见视频回放。
对应的头文件:yunyou.ke.qq.com
//----------------------------------------------------------------------------- //----- ModalessDlg.h : Declaration of the CModalessDlg //----------------------------------------------------------------------------- #pragma once
//----------------------------------------------------------------------------- #include "acui.h"
//----------------------------------------------------------------------------- class CModalessDlg : public CAcUiDialog { DECLARE_DYNAMIC (CModalessDlg)
public: CModalessDlg (CWnd *pParent =NULL, HINSTANCE hInstance =NULL) ;
enum { IDD = IDD_DIALOG1} ;
protected: virtual void DoDataExchange (CDataExchange *pDX) ; afx_msg LRESULT OnAcadKeepFocus (WPARAM, LPARAM) ;
DECLARE_MESSAGE_MAP() public: CString m_strEnX; CString m_strEnY; CString m_strEnZ; CString m_strStX; CString m_strStY; CString m_strStZ; CAcUiPickButton m_btnPickSt; CAcUiPickButton m_btnPickEn; afx_msg void OnClickedButtonPickEn(); afx_msg void OnClickedButtonPickSt(); afx_msg void OnClickedButtonLine(); afx_msg void OnClickedButtonClose(); afx_msg void OnClose(); virtual BOOL OnInitDialog(); virtual void PostNcDestroy(); } ; |
对应的cpp文件:yunyou.ke.qq.com
//----------------------------------------------------------------------------- //----- ModalessDlg.cpp : Implementation of CModalessDlg //----------------------------------------------------------------------------- #include "StdAfx.h" #include "resource.h" #include "ModalessDlg.h" #include "LineUtil.h" extern CModalessDlg *pDialog; //----------------------------------------------------------------------------- IMPLEMENT_DYNAMIC (CModalessDlg, CAcUiDialog)
BEGIN_MESSAGE_MAP(CModalessDlg, CAcUiDialog) ON_MESSAGE(WM_ACAD_KEEPFOCUS, OnAcadKeepFocus) ON_BN_CLICKED(IDC_BUTTON_PICK_EN, &CModalessDlg::OnClickedButtonPickEn) ON_BN_CLICKED(IDC_BUTTON_PICK_ST, &CModalessDlg::OnClickedButtonPickSt) ON_BN_CLICKED |