109 lines
2.5 KiB
C++
109 lines
2.5 KiB
C++
|
// spintest.cpp : New control example - Uses MicroScroll32
|
||
|
// custom control DLL from MuScrl32 sample
|
||
|
//
|
||
|
// This is a part of the Microsoft Foundation Classes C++ library.
|
||
|
// Copyright (C) 1992-1998 Microsoft Corporation
|
||
|
// All rights reserved.
|
||
|
//
|
||
|
// This source code is only intended as a supplement to the
|
||
|
// Microsoft Foundation Classes Reference and related
|
||
|
// electronic documentation provided with the library.
|
||
|
// See these sources for detailed information regarding the
|
||
|
// Microsoft Foundation Classes product.
|
||
|
|
||
|
#include "stdafx.h"
|
||
|
#include "ctrltest.h"
|
||
|
|
||
|
#include "paredit.h"
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// Example of a dialog with special controls in it
|
||
|
|
||
|
#define NUM_EDIT 4
|
||
|
#define IDC_EDIT_MIN IDC_EDIT1
|
||
|
#define IDC_BUTTON_MAX IDC_BUTTON4
|
||
|
// IDC_EDIT1->IDC_EDIT4 and IDC_BUTTON1->IDC_BUTTON4 must be contiguous
|
||
|
|
||
|
class CSpinEditDlg : public CDialog
|
||
|
{
|
||
|
protected:
|
||
|
CParsedEdit edit[NUM_EDIT];
|
||
|
public:
|
||
|
//{{AFX_DATA(CSpinEditDlg)
|
||
|
enum { IDD = IDD_SPIN_EDIT };
|
||
|
//}}AFX_DATA
|
||
|
CSpinEditDlg()
|
||
|
: CDialog(CSpinEditDlg::IDD)
|
||
|
{ }
|
||
|
|
||
|
BOOL OnInitDialog();
|
||
|
//{{AFX_MSG(CSpinEditDlg)
|
||
|
virtual void OnOK();
|
||
|
//}}AFX_MSG
|
||
|
DECLARE_MESSAGE_MAP()
|
||
|
};
|
||
|
|
||
|
BEGIN_MESSAGE_MAP(CSpinEditDlg, CDialog)
|
||
|
//{{AFX_MSG_MAP(CSpinEditDlg)
|
||
|
//}}AFX_MSG_MAP
|
||
|
END_MESSAGE_MAP()
|
||
|
|
||
|
|
||
|
BOOL CSpinEditDlg::OnInitDialog()
|
||
|
{
|
||
|
int value = 1;
|
||
|
for (int i = 0; i < NUM_EDIT; i++)
|
||
|
{
|
||
|
// associate button with edit item
|
||
|
CSpinButtonCtrl* pSpin = (CSpinButtonCtrl*)GetDlgItem(IDC_BUTTON_MAX - i);
|
||
|
ASSERT(pSpin != NULL);
|
||
|
pSpin->SetPos(value++); // 1, 2, 3, 4
|
||
|
}
|
||
|
return TRUE;
|
||
|
}
|
||
|
|
||
|
void CSpinEditDlg::OnOK()
|
||
|
{
|
||
|
int values[NUM_EDIT];
|
||
|
UINT nID = 0;
|
||
|
BOOL bOk = TRUE;
|
||
|
for (int i = 0; bOk && i < NUM_EDIT; i++)
|
||
|
{
|
||
|
nID = IDC_EDIT_MIN + i;
|
||
|
values[i] = GetDlgItemInt(nID, &bOk);
|
||
|
}
|
||
|
|
||
|
if (!bOk)
|
||
|
{
|
||
|
// report illegal value
|
||
|
CString str;
|
||
|
str.LoadString(IDS_ILLEGAL_VALUE);
|
||
|
MessageBox(str);
|
||
|
CEdit& badEdit = *(CEdit*)GetDlgItem(nID);
|
||
|
badEdit.SetSel(0, -1);
|
||
|
badEdit.SetFocus();
|
||
|
return; // don't end dialog
|
||
|
}
|
||
|
|
||
|
#ifdef _DEBUG
|
||
|
// dump results, normally you would do something with these
|
||
|
TRACE0("Final values:\n");
|
||
|
for (i = 0; i < NUM_EDIT; i++)
|
||
|
TRACE1("\t%d\n", values[i]);
|
||
|
#endif
|
||
|
EndDialog(IDOK);
|
||
|
}
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// Run the test
|
||
|
|
||
|
void CTestWindow::OnTestSpinEdit()
|
||
|
{
|
||
|
TRACE0("running dialog with spin controls in it\n");
|
||
|
CSpinEditDlg dlg;
|
||
|
dlg.DoModal();
|
||
|
}
|
||
|
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|