Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

112 lines
2.7 KiB

  1. /////////////////////////////////////////////////////////////////////////////
  2. //
  3. // Copyright (c) 1996-1998 Microsoft Corporation
  4. //
  5. // Module Name:
  6. // DlgItemUtils.h
  7. //
  8. // Abstract:
  9. // Definition of the CDlgItemUtils class.
  10. //
  11. // Author:
  12. // David Potter (davidp) February 10, 1998
  13. //
  14. // Revision History:
  15. //
  16. // Notes:
  17. //
  18. /////////////////////////////////////////////////////////////////////////////
  19. #ifndef __DLGITEMUTILS_H_
  20. #define __DLGITEMUTILS_H_
  21. /////////////////////////////////////////////////////////////////////////////
  22. // Forward Class Declarations
  23. /////////////////////////////////////////////////////////////////////////////
  24. class CDlgItemUtils;
  25. /////////////////////////////////////////////////////////////////////////////
  26. // External Class Declarations
  27. /////////////////////////////////////////////////////////////////////////////
  28. /////////////////////////////////////////////////////////////////////////////
  29. // Include Files
  30. /////////////////////////////////////////////////////////////////////////////
  31. /////////////////////////////////////////////////////////////////////////////
  32. // Type Definitions
  33. /////////////////////////////////////////////////////////////////////////////
  34. /////////////////////////////////////////////////////////////////////////////
  35. //
  36. // class CDlgItemUtils
  37. //
  38. // Purpose:
  39. // Utilities for manipulating dialog items.
  40. //
  41. // Inheritance:
  42. // CDlgItemUtils
  43. //
  44. /////////////////////////////////////////////////////////////////////////////
  45. class CDlgItemUtils
  46. {
  47. public:
  48. //
  49. // Construction
  50. //
  51. public:
  52. //
  53. // CDlgItemUtils public methods.
  54. //
  55. // Set a control to be read-only
  56. static BOOL SetDlgItemReadOnly( HWND hwndCtrl )
  57. {
  58. ATLASSERT( hwndCtrl != NULL );
  59. ATLASSERT( IsWindow( hwndCtrl ) );
  60. TCHAR szWindowClass[256];
  61. //
  62. // Get the class of the control
  63. //
  64. ::GetClassName( hwndCtrl, szWindowClass, (sizeof(szWindowClass) / sizeof(TCHAR)) - 1 );
  65. //
  66. // If it is an edit control or an IP Address control we can handle it.
  67. //
  68. if ( lstrcmp( szWindowClass, _T("Edit") ) == 0 )
  69. {
  70. return ::SendMessage( hwndCtrl, EM_SETREADONLY, TRUE, 0 );
  71. } // if: edit control
  72. if ( lstrcmp( szWindowClass, WC_IPADDRESS ) == 0 )
  73. {
  74. return ::EnumChildWindows( hwndCtrl, s_SetEditReadOnly, NULL );
  75. } // if: IP Address control
  76. //
  77. // If we didn't handle it, it is an error.
  78. //
  79. return FALSE;
  80. } //*** SetDlgItemReadOnly()
  81. // Implementation
  82. protected:
  83. // Static method to set an edit control read only as a callback
  84. static BOOL CALLBACK s_SetEditReadOnly( HWND hwnd, LPARAM lParam )
  85. {
  86. return ::SendMessage( hwnd, EM_SETREADONLY, TRUE, 0 );
  87. } //*** s_SetEditReadOnly()
  88. }; //*** class CDlgItemUtils
  89. /////////////////////////////////////////////////////////////////////////////
  90. #endif // __DLGITEMUTILS_H_