Re: Modal DialogBox problum, Help me
Premanshu wrote:
Ok i m attchching the code here, now i want this class to use as
CDilogBar, so it plz tell me how
// dlgthr.cpp : implementation file
//
#include "stdafx.h"
#include "sgiron.h"
#include "dlgthr.h"
#include "datatype.h"
#include "mainfrm.h"
#ifdef _DEBUG
#undef THIS_FILE
static char BASED_CODE THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CThresholdDlg dialog
CThresholdDlg::CThresholdDlg(CWnd* pParent /*=NULL*/)
: CDialog(CThresholdDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CThresholdDlg)
m_iNodulesValue = 0;
m_iPhaseValue = 0;
//}}AFX_DATA_INIT
}
void CThresholdDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CThresholdDlg)
DDX_Control(pDX, IDC_GRAPHITESPIN, m_spinNodules);
DDX_Control(pDX, IDC_PHASESPIN, m_spinPhase);
DDX_Text(pDX, IDC_THRESHOLD, m_iNodulesValue);
DDV_MinMaxInt(pDX, m_iNodulesValue, 0, 255);
DDX_Text(pDX, IDC_THRESHOLD_PHASE, m_iPhaseValue);
DDV_MinMaxInt(pDX, m_iPhaseValue, 0, 255);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CThresholdDlg, CDialog)
//{{AFX_MSG_MAP(CThresholdDlg)
ON_BN_CLICKED(IDC_FIRST, OnFirst)
ON_BN_CLICKED(IDC_NEXT, OnNext)
ON_BN_CLICKED(IDC_LAST, OnLast)
ON_BN_CLICKED(IDC_PREVIEW, OnPreview)
ON_BN_CLICKED(IDC_RESTORE, OnRestore)
ON_BN_CLICKED(IDC_PREV, OnPrev)
ON_BN_CLICKED(IDC_NODULE_RADIO, OnNoduleRadio)
ON_BN_CLICKED(IDC_PHASE_RADIO, OnPhaseRadio)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CThresholdDlg message handlers
BOOL CThresholdDlg::OnInitDialog()
{
CRect rect;
int ht, wt;
CDialog::OnInitDialog();
GetWindowRect(&rect);
ht = rect.Height();
wt = rect.Width();
AfxGetApp()->m_pMainWnd->GetWindowRect(&rect);
rect.top = rect.bottom - ht;
rect.left = rect.right;
rect.right = rect.left + wt;
MoveWindow(rect);
m_spinNodules.SetRange(0, 255);
m_spinNodules.SetPos(m_iNodulesValue);
m_spinPhase.SetRange(0, 255);
m_spinPhase.SetPos(m_iPhaseValue);
m_btnFirst.AutoLoad(IDC_FIRST, this);
m_btnPrev.AutoLoad(IDC_PREV, this);
m_btnNext.AutoLoad(IDC_NEXT, this);
m_btnLast.AutoLoad(IDC_LAST, this);
((CButton *)GetDlgItem(IDC_NODULE_RADIO))->SetCheck(1);
OnNoduleRadio();
if(!theApp.m_instData.m_bDoPhase)
GetDlgItem(IDC_PHASE_RADIO)->EnableWindow(FALSE);
else
GetDlgItem(IDC_PHASE_RADIO)->EnableWindow(TRUE);
return TRUE;
}
void CThresholdDlg::OnFirst()
{
GetParent()->PostMessage(WM_SHOWIMAGE, FIRST_IMAGE, 0L);
}
void CThresholdDlg::OnPrev()
{
GetParent()->PostMessage(WM_SHOWIMAGE, PREV_IMAGE, 0L);
}
void CThresholdDlg::OnNext()
{
GetParent()->PostMessage(WM_SHOWIMAGE, NEXT_IMAGE, 0L);
}
void CThresholdDlg::OnLast()
{
GetParent()->PostMessage(WM_SHOWIMAGE, LAST_IMAGE, 0L);
}
void CThresholdDlg::OnPreview()
{
int value;
if(((CButton *)GetDlgItem(IDC_NODULE_RADIO))->GetCheck())
value = GetDlgItemInt(IDC_THRESHOLD);
else
value = GetDlgItemInt(IDC_THRESHOLD_PHASE);
GetParent()->PostMessage(WM_THRESHOLD, 0, value);
}
void CThresholdDlg::OnRestore()
{
GetParent()->PostMessage(WM_RESTORE, 0, 0L);
}
void CThresholdDlg::OnOK()
{
CDialog::OnOK();
}
void CThresholdDlg::OnNoduleRadio()
{
GetDlgItem(IDC_THRESHOLD_PHASE)->EnableWindow(FALSE);
GetDlgItem(IDC_THRESHOLD)->EnableWindow(TRUE);
GetParent()->PostMessage(WM_NODULES, 0, 0);
}
void CThresholdDlg::OnPhaseRadio()
{
GetDlgItem(IDC_THRESHOLD_PHASE)->EnableWindow(TRUE);
GetDlgItem(IDC_THRESHOLD)->EnableWindow(FALSE);
GetParent()->PostMessage(WM_PHASE, 0, 0);
}
Premanshu:
You're supposed to show the code that doesn't work, and tell us what
happened. Your problem is with CDialogBar, not CDialog. Can you create s
simple CDialogBar in your MainFrame?
David Wilkinson