|
|
// ddxm.cpp : implementation file
//
// This is a part of the Microsoft Foundation Classes C++ library.
// Copyright (C) 1992-1995 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 "ddxm.h"
#include "wordpad.h"
#include "resource.h"
// this routine prints a floatingpoint number with 2 digits after the decimal
void PASCAL DDX_Twips(CDataExchange* pDX, int nIDC, int& value) { HWND hWndCtrl = pDX->PrepareEditCtrl(nIDC); TCHAR szT[64];
if (pDX->m_bSaveAndValidate) { ::GetWindowText(hWndCtrl, szT, sizeof(szT)/sizeof(szT[0])); if (szT[0] != NULL) // not empty
{ if (!theApp.ParseMeasurement(szT, value)) { AfxMessageBox(IDS_INVALID_MEASUREMENT,MB_OK|MB_ICONINFORMATION); pDX->Fail(); // throws exception
} theApp.PrintTwips(szT, ARRAYSIZE(szT), value, 2); theApp.ParseMeasurement(szT, value); } else // empty
value = INT_MAX; } else { // convert from twips to default units
if (value != INT_MAX) { theApp.PrintTwips(szT, ARRAYSIZE(szT), value, 2); SetWindowText(hWndCtrl, szT); } } }
void PASCAL DDV_MinMaxTwips(CDataExchange* pDX, int value, int minVal, int maxVal) { ASSERT(minVal <= maxVal); if (value < minVal || value > maxVal) { // "The measurement must be between %1 and %2."
if (!pDX->m_bSaveAndValidate) { TRACE0("Warning: initial dialog data is out of range.\n"); return; // don't stop now
} TCHAR szMin[32]; TCHAR szMax[32]; theApp.PrintTwips(szMin, ARRAYSIZE(szMin), minVal, 2); theApp.PrintTwips(szMax, ARRAYSIZE(szMax), maxVal, 2); CString prompt; AfxFormatString2(prompt, IDS_MEASUREMENT_RANGE, szMin, szMax); AfxMessageBox(prompt, MB_ICONEXCLAMATION, AFX_IDS_APP_TITLE); prompt.Empty(); // exception prep
pDX->Fail(); } }
|