home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c083 / 11.ddi / OWLSRC.PAK / MENU.CPP < prev    next >
Encoding:
C/C++ Source or Header  |  1993-12-02  |  2.1 KB  |  101 lines

  1. //----------------------------------------------------------------------------
  2. // ObjectWindows - (C) Copyright 1991, 1993 by Borland International
  3. //   source\owl\menu.cpp
  4. //   Implementation of Window Menu encapsulation class
  5. //----------------------------------------------------------------------------
  6. #include <owl\owlpch.h>
  7. #include <owl\menu.h>
  8.  
  9. DIAG_DECLARE_GROUP(OwlWin);        // General window diagnostic group
  10.  
  11. TMenu::TMenu(TAutoDelete autoDelete)
  12.   : Handle(::CreateMenu()), ShouldDelete(autoDelete)
  13. {
  14. }
  15.  
  16. TMenu::TMenu(HMENU handle, TAutoDelete autoDelete)
  17.   : Handle(handle), ShouldDelete(autoDelete)
  18. {
  19. }
  20.  
  21. TMenu::TMenu(HWND hWnd, TAutoDelete autoDelete)
  22.   : Handle(::GetMenu(hWnd)), ShouldDelete(autoDelete)
  23. {
  24. }
  25.  
  26. TMenu::TMenu(LPCVOID* menuTemplate) {
  27.   Handle = ::LoadMenuIndirect(menuTemplate);
  28.   WARNX(OwlWin, !Handle, 0, "Cannot Load Menu Indirect " << hex << menuTemplate);
  29.   CheckValid();
  30.   ShouldDelete = TRUE;
  31. }
  32.  
  33. TMenu::TMenu(HINSTANCE resInstance, TResId resId)
  34. {
  35.   Handle = ::LoadMenu(resInstance, resId);
  36.   WARNX(OwlWin, !Handle, 0, "Cannot Load Menu " << hex << (UINT)resInstance <<
  37.                             " " << resId);
  38.   CheckValid();
  39.   ShouldDelete = TRUE;
  40. }
  41.  
  42. TMenu::~TMenu()
  43. {
  44.   if (ShouldDelete)
  45.     if (Handle)
  46.       ::DestroyMenu(Handle);
  47. }
  48. //resId is never used in small model
  49. #pragma warn -par
  50. void
  51. TMenu::CheckValid(UINT resId)
  52. {
  53.  
  54.   if (!Handle)
  55.     THROW( TXMenu(resId) );
  56. }
  57. #pragma warn .par //Restore
  58.  
  59. void
  60. TMenu::MeasureItem(MEASUREITEMSTRUCT far&)
  61. {
  62. }
  63.  
  64. void
  65. TMenu::DrawItem(DRAWITEMSTRUCT far&)
  66. {
  67. }
  68.  
  69. TSystemMenu::TSystemMenu(HWND wnd, BOOL revert)
  70.   : TMenu(HMENU(0), NoAutoDelete)
  71. {
  72.   Handle = ::GetSystemMenu(wnd, revert);
  73. }
  74.  
  75. TPopupMenu::TPopupMenu(TAutoDelete autoDelete)
  76.   : TMenu(HMENU(0), autoDelete)
  77. {
  78.   Handle = ::CreatePopupMenu();
  79. }
  80.  
  81. TPopupMenu::TPopupMenu(HMENU handle, TAutoDelete autoDelete)
  82.   : TMenu(handle, autoDelete)
  83. {
  84. }
  85.  
  86. TMenu::TXMenu::TXMenu(unsigned resId) : TXOwl(resId)
  87. {
  88. }
  89.  
  90. TXOwl*
  91. TMenu::TXMenu::Clone()
  92. {
  93.   return new TXMenu(*this);
  94. }
  95.  
  96. void
  97. TMenu::TXMenu::Throw()
  98. {
  99.   THROW( *this );
  100. }
  101.