DDXM.CPP
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:2k
源码类别:

Windows编程

开发平台:

Visual C++

  1. // ddxm.cpp : implementation file
  2. //
  3. // This is a part of the Microsoft Foundation Classes C++ library.
  4. // Copyright (C) 1992-1998 Microsoft Corporation
  5. // All rights reserved.
  6. //
  7. // This source code is only intended as a supplement to the
  8. // Microsoft Foundation Classes Reference and related
  9. // electronic documentation provided with the library.
  10. // See these sources for detailed information regarding the
  11. // Microsoft Foundation Classes product.
  12. #include "stdafx.h"
  13. #include "ddxm.h"
  14. #include "wordpad.h"
  15. #include "resource.h"
  16. // this routine prints a floatingpoint number with 2 digits after the decimal
  17. void PASCAL DDX_Twips(CDataExchange* pDX, int nIDC, int& value)
  18. {
  19. HWND hWndCtrl = pDX->PrepareEditCtrl(nIDC);
  20. TCHAR szT[64];
  21. if (pDX->m_bSaveAndValidate)
  22. {
  23. ::GetWindowText(hWndCtrl, szT, sizeof(szT));
  24. if (szT[0] != NULL) // not empty
  25. {
  26. if (!theApp.ParseMeasurement(szT, value))
  27. {
  28. AfxMessageBox(IDS_INVALID_MEASUREMENT,MB_OK|MB_ICONINFORMATION);
  29. pDX->Fail();            // throws exception
  30. }
  31. theApp.PrintTwips(szT, value, 2);
  32. theApp.ParseMeasurement(szT, value);
  33. }
  34. else // empty
  35. value = INT_MAX;
  36. }
  37. else
  38. {
  39. // convert from twips to default units
  40. if (value != INT_MAX)
  41. {
  42. theApp.PrintTwips(szT, value, 2);
  43. SetWindowText(hWndCtrl, szT);
  44. }
  45. }
  46. }
  47. void PASCAL DDV_MinMaxTwips(CDataExchange* pDX, int value, int minVal, int maxVal)
  48. {
  49. ASSERT(minVal <= maxVal);
  50. if (value < minVal || value > maxVal)
  51. {
  52. // "The measurement must be between %1 and %2."
  53. if (!pDX->m_bSaveAndValidate)
  54. {
  55. TRACE0("Warning: initial dialog data is out of range.n");
  56. return;     // don't stop now
  57. }
  58. TCHAR szMin[32];
  59. TCHAR szMax[32];
  60. theApp.PrintTwips(szMin, minVal, 2);
  61. theApp.PrintTwips(szMax, maxVal, 2);
  62. CString prompt;
  63. AfxFormatString2(prompt, IDS_MEASUREMENT_RANGE, szMin, szMax);
  64. AfxMessageBox(prompt, MB_ICONEXCLAMATION, AFX_IDS_APP_TITLE);
  65. prompt.Empty(); // exception prep
  66. pDX->Fail();
  67. }
  68. }