MENUBUTT.CPP
上传用户:zhang8947
上传日期:2007-01-08
资源大小:1910k
文件大小:15k
源码类别:

多国语言处理

开发平台:

Visual C++

  1. // menubutt.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "resource.h"
  5. #include "cspublic.h"
  6. #include "cskernel.h"
  7. #include "basicwin.h"
  8. #include "basicbut.h"
  9. #include "systemse.h"
  10. #include "menubutt.h"
  11. #include "activebu.h"
  12. #include "cswin.h"
  13. #include "exitcs.h"
  14. #include "inputbar.h"
  15. #include "hintwin.h"
  16. #include "cs.h"
  17. #ifdef _DEBUG
  18. #undef THIS_FILE
  19. static char BASED_CODE THIS_FILE[] = __FILE__;
  20. #endif
  21. /////////////////////////////////////////////////////////////////////////////
  22. // CMenuButton
  23. CMenuButton::CMenuButton()
  24. {
  25. m_pSystemSetSheet =NULL ;
  26. }
  27. CMenuButton::~CMenuButton()
  28. {
  29. // m_Menu.DestroyMenu() ; //破坏菜单
  30. }
  31. BOOL CMenuButton::InitButton( 
  32. LPCSTR  lpcsName ,  //窗口名称
  33. const RECT &rect , //窗口大小
  34. CWnd  *pParent , //父窗口
  35. UINT uWinID , //窗口ID
  36. UINT uBitmapID ,  //位图ID
  37. UINT uMenuID ) //菜单ID
  38. {
  39. if( !m_Bitmap.LoadBitmap( uBitmapID ) ) //装入位图资源
  40. return 0 ;
  41. // if( !m_Menu.LoadMenu( uMenuID ) ) //装入菜单资源
  42. // return 0 ;
  43. m_bMenuStatus =0 ; //菜单初始状态
  44. /* m_pSystemSetSheet =(CSystemSetSheet*)new CSystemSetSheet( this ) ;
  45. if( !m_pSystemSetSheet )
  46. return 0 ;
  47. */
  48. //创建窗口
  49. return  CBasicButton::InitButton( lpcsName , rect , pParent , uWinID ) ;
  50. }
  51. BEGIN_MESSAGE_MAP(CMenuButton, CBasicButton)
  52. //{{AFX_MSG_MAP(CMenuButton)
  53. ON_WM_LBUTTONDOWN()
  54. ON_WM_PAINT()
  55. ON_COMMAND(ID_SYSTEM_SET, OnSystemSet)
  56. ON_COMMAND(ID_EXIT_CS, OnExitCs)
  57. ON_COMMAND(ID_VERSION, OnVersion)
  58. ON_COMMAND(ID_FRIENDS, OnFriends)
  59. ON_COMMAND(ID_OUTPUT_GB, OnOutputGb)
  60. ON_COMMAND(ID_OUTPUT_BIG5, OnOutputBig5)
  61. ON_COMMAND(ID_OUTPUT_SHIFTJIS, OnOutputShiftjis)
  62. ON_COMMAND(ID_OUTPUT_EUCJIS, OnOutputEucjis)
  63. ON_COMMAND(ID_OUTPUT_KSC5601, OnOutputKsc5601)
  64. ON_COMMAND(ID_OUPUT_ENGLISH, OnOuputEnglish)
  65. ON_COMMAND(ID_SYSTEM_TRANSLATION, OnSystemTranslation)
  66. ON_COMMAND(ID_SYSTEM_INPUT, OnSystemInput)
  67. ON_WM_LBUTTONDBLCLK()
  68. ON_WM_MENUCHAR()
  69. ON_WM_MENUSELECT()
  70. ON_WM_RBUTTONDOWN()
  71. ON_WM_RBUTTONDBLCLK()
  72. ON_COMMAND(ID_SYSTEM_HELP, OnSystemHelp)
  73. //}}AFX_MSG_MAP
  74. END_MESSAGE_MAP()
  75. /////////////////////////////////////////////////////////////////////////////
  76. // CMenuButton message handlers
  77. void CMenuButton::OnLButtonDown(UINT nFlags, CPoint point)
  78. {
  79. // TODO: Add your message handler code here and/or call default
  80. CBasicButton::OnLButtonDown(nFlags, point);
  81. if( !m_bMenuStatus ) //没有显示菜单,显示菜单                
  82. {
  83. m_bMenuStatus =1 ; //标记显示菜单
  84. SetLineSwitch( 0 ) ; //设上退化显示开关,不允许退化显示
  85. }
  86. else
  87. {
  88. m_bMenuStatus =0 ; //标记没有显示菜单
  89. SetLineSwitch( 1 ) ; //打开退化显示开关,允许退化显示
  90. ActiveOldWin() ; //激活以前的窗口
  91. }
  92. //改变按钮显示状态
  93. Invalidate() ;
  94. UpdateWindow() ;
  95. if( m_bMenuStatus ) //以前没有显示菜单,显示菜单
  96. {
  97. RECT rect ;
  98. GetClientRect( &rect ) ;
  99. CPoint point( 0 , rect.bottom ) ;
  100. ClientToScreen( &point ) ; //转换成系统坐标,这是菜单的位置
  101. m_Menu.DestroyMenu() ; //破坏菜单
  102. int n =GetOutputCode() ; //得到当前输出内码
  103. CMenu *pMenu ;
  104. switch( n ) //判断输出代码
  105. {
  106. case 0: //GB
  107. if( !m_Menu.LoadMenu( IDR_MENU1 ) ) //装入菜单资源
  108. return ;
  109. pMenu =m_Menu.GetSubMenu( 0 ) ;
  110. // pMenu->ModifyMenu( 0 , MF_BYPOSITION|MF_BITMAP ,
  111. // 0 , &m_Bitmap ) ;
  112. // pMenu->SetMenuItemBitmaps( 0 , MF_BYPOSITION ,
  113. // &m_Bitmap , &m_Bitmap ) ;
  114. if( GetFingerTranslate() ) //当前是可以进行指取翻译的
  115. pMenu->ModifyMenu( ID_SYSTEM_TRANSLATION ,
  116. MF_BYCOMMAND , ID_SYSTEM_TRANSLATION ,
  117. "禁止指取翻译(&T)" ) ;
  118. else
  119. pMenu->ModifyMenu( ID_SYSTEM_TRANSLATION ,
  120. MF_BYCOMMAND , ID_SYSTEM_TRANSLATION ,
  121. "启动指取翻译(&T)" ) ;
  122. if( GetInputBarStatus()!=2 ) //当前是可以进行中文输入的
  123. pMenu->ModifyMenu( ID_SYSTEM_INPUT ,
  124. MF_BYCOMMAND , ID_SYSTEM_INPUT ,
  125. "禁止中文输入(&I)" ) ;
  126. else
  127. pMenu->ModifyMenu( ID_SYSTEM_INPUT ,
  128. MF_BYCOMMAND , ID_SYSTEM_INPUT ,
  129. "启动中文输入(&I)" ) ;
  130. break ;
  131. case 1: //BIG5
  132. if( !m_Menu.LoadMenu( IDR_MENU1_1 ) )
  133. return ;
  134. pMenu =m_Menu.GetSubMenu( 0 ) ;
  135. if( GetFingerTranslate() ) //当前是可以进行指取翻译的
  136. pMenu->ModifyMenu( ID_SYSTEM_TRANSLATION ,
  137. MF_BYCOMMAND , ID_SYSTEM_TRANSLATION ,
  138. "窽ゎ