📄 windotypedlg.cpp
字号:
// WindoTypeDlg.cpp : implementation file
//
#include "StdAfx.h"
#include "StdArx.h"
#include "resource.h"
#include "WindoTypeDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern CWindoTypeDlg *g_pWindoTypeDlg;
extern CAcToolBar *g_pAcToolBar;
extern CTBGenWnd *g_pTBGenWnd;
/////////////////////////////////////////////////////////////////////////////
// CWindoTypeDlg dialog
CWindoTypeDlg::CWindoTypeDlg(CWnd* pParent /*=NULL*/)
: CDialog(CWindoTypeDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CWindoTypeDlg)
m_nWindType = windInfo.m_nWindType;
m_nCols = windInfo.m_nCols;
m_nRows = windInfo.m_nRows;
m_dHeight = windInfo.m_dWindHt;
m_dWidth = windInfo.m_dWindWt;
m_dXVal = windInfo.m_startPt.x;
m_dYVal = windInfo.m_startPt.y;
//}}AFX_DATA_INIT
}
void CWindoTypeDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CWindoTypeDlg)
DDX_Radio(pDX, IDC_RB_TYPERECT, m_nWindType);
DDX_Text(pDX, IDC_EDIT_COLS, m_nCols);
DDV_MinMaxInt(pDX, m_nCols, 1, 10);
DDX_Text(pDX, IDC_EDIT_ROWS, m_nRows);
DDV_MinMaxInt(pDX, m_nRows, 1, 10);
DDX_Text(pDX, IDC_EDIT_HEIGHT, m_dHeight);
DDV_MinMaxDouble(pDX, m_dHeight, 20., 300.);
DDX_Text(pDX, IDC_EDIT_WIDTH, m_dWidth);
DDV_MinMaxDouble(pDX, m_dWidth, 20., 300.);
DDX_Text(pDX, IDC_EDIT_XVAL, m_dXVal);
DDX_Text(pDX, IDC_EDIT_YVAL, m_dYVal);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CWindoTypeDlg, CDialog)
//{{AFX_MSG_MAP(CWindoTypeDlg)
ON_BN_CLICKED(IDC_BTN_PICKPT, OnBtnPickPt)
ON_BN_CLICKED(IDC_CHK_VISTB, OnChkViewToolBar)
ON_BN_CLICKED(IDC_BTN_HIDEDLG, OnBtnHideDlg)
//}}AFX_MSG_MAP
ON_MESSAGE (WM_ACAD_KEEPFOCUS, onAcadKeepFocus)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CWindoTypeDlg message handlers
LONG CWindoTypeDlg::onAcadKeepFocus(UINT, LONG)
{
return (TRUE) ;
}
BOOL CWindoTypeDlg::OnInitDialog()
{
CDialog::OnInitDialog();
CSpinButtonCtrl* pSpin;
pSpin = (CSpinButtonCtrl*) GetDlgItem(IDC_SPIN_COLS);
pSpin->SetRange(1, 10);
pSpin = (CSpinButtonCtrl*) GetDlgItem(IDC_SPIN_ROWS);
pSpin->SetRange(1, 10);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CWindoTypeDlg::PostNcDestroy()
{
delete this;
g_pWindoTypeDlg = NULL;
CDialog::PostNcDestroy();
}
void CWindoTypeDlg::OnCancel()
{
// Do NOT call CDialog::OnCancel();
// Remember we're modeless,
// Call DestroyWindow() instead!
DestroyWindow();
}
void CWindoTypeDlg::OnOK()
{
if (!UpdateData(TRUE))
{
return;
}
// Transfer the values in the dialog
// back to the global variables
windInfo.m_dWindHt = m_dHeight;
windInfo.m_dWindWt = m_dWidth;
windInfo.m_nCols = m_nCols;
windInfo.m_nRows = m_nRows;
windInfo.m_nWindType = m_nWindType;
windInfo.m_startPt.x = m_dXVal;
windInfo.m_startPt.y = m_dYVal;
drawWindo();
}
void CWindoTypeDlg::OnBtnPickPt()
{
// Here we hide our modal dialog
// to allow the user to pick a point
AcGePoint3d pkPt;
int retCode;
ShowWindow(SW_HIDE); // Hide our dialog
acedInitGet(NULL, NULL);
retCode = acedGetPoint(NULL, "\nPick lower left corner of window: ",
asDblArray(pkPt));
switch(retCode)
{
case RTCAN :
case RTNONE :
pkPt.set(0.0, 0.0, 0.0);
break;
case RTNORM :
break;
}
m_dXVal = pkPt.x;
m_dYVal = pkPt.y;
ShowWindow(SW_SHOW); // Display our dialog again
// Transfer the data values from the member variables
// to the dialog.
UpdateData(FALSE);
}
void CWindoTypeDlg::OnBtnHideDlg()
{
ShowWindow(SW_HIDE);
}
void CWindoTypeDlg::OnChkViewToolBar()
{
CMDIFrameWnd *pAcadFrame = acedGetAcadFrame();
if(g_pAcToolBar != NULL && g_pAcToolBar->IsWindowVisible())
{
((CButton*) GetDlgItem(IDC_CHK_VISTB))->SetCheck(0);
pAcadFrame->ShowControlBar(g_pAcToolBar, FALSE, FALSE);
GetDlgItem(IDC_BTN_HIDEDLG)->EnableWindow(FALSE);
}
else if(g_pAcToolBar != NULL)
{
((CButton*) GetDlgItem(IDC_CHK_VISTB))->SetCheck(1);
pAcadFrame->ShowControlBar(g_pAcToolBar, TRUE, FALSE);
GetDlgItem(IDC_BTN_HIDEDLG)->EnableWindow(TRUE);
}
else
{
pAcadFrame->EnableDocking(CBRS_ALIGN_ANY);
pAcadFrame->RecalcLayout();
CAcModuleResourceOverride resOverride;
// Does the CTBGenWnd already exist?
if(g_pTBGenWnd == NULL)
{
g_pTBGenWnd = new CTBGenWnd;
g_pTBGenWnd->Create (NULL,
NULL,
WS_CHILD | WS_MINIMIZE,
CRect (0,0,1,1),
pAcadFrame,
10);
}
g_pAcToolBar = new CAcToolBar;
g_pAcToolBar->Create(pAcadFrame, g_pTBGenWnd);
g_pAcToolBar->LoadToolBar(IDR_TB_WINDDLG);
g_pAcToolBar->EnableDocking(CBRS_ALIGN_ANY);
g_pAcToolBar->SetWindowText(_T("ARX Window")) ;
pAcadFrame->FloatControlBar(g_pAcToolBar, CPoint (100, 200), CBRS_ALIGN_TOP) ;
pAcadFrame->ShowControlBar(g_pAcToolBar, TRUE, FALSE) ;
((CButton*) GetDlgItem(IDC_CHK_VISTB))->SetCheck(1);
GetDlgItem(IDC_BTN_HIDEDLG)->EnableWindow(TRUE);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -