UiSelColor.cpp
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:2k
源码类别:

模拟服务器

开发平台:

C/C++

  1. /*****************************************************************************************
  2. // 界面--选颜色
  3. // Copyright : Kingsoft 2003
  4. // Author :   Wooy(Wu yue)
  5. // CreateTime: 2003-4-29
  6. //  注释:此功能原来放在快速聊天输入窗口内,现独立出来
  7. *****************************************************************************************/
  8. #include "KWin32.h"
  9. #include "KIniFile.h"
  10. #include "UiSelColor.h"
  11. #include "../Elem/WndWindow.h"
  12. #include "../UiBase.h"
  13. #include <crtdbg.h>
  14. #define SCHEME_INI "选颜色.ini"
  15. unsigned char KUiSelColor::m_MenuData[MENU_DATA_SIZE(UI_INPUT_MSG_MAX_COLOR)] = { 0 };
  16. //--------------------------------------------------------------------------
  17. // 功能:如果窗口正被显示,则返回实例指针
  18. //--------------------------------------------------------------------------
  19. unsigned int KUiSelColor::GetColor(int nIndex)
  20. {
  21. KPopupMenuData* pMenuData = (KPopupMenuData*)&m_MenuData;
  22. if (nIndex >= 0 && nIndex < pMenuData->nNumItem)
  23. return (pMenuData->Items[nIndex].uBgColor);
  24. return 0;
  25. }
  26. void KUiSelColor::LoadScheme(const char* pScheme)
  27. {
  28. #define INI_COLOR_SECTION "ColorList"
  29. int i;
  30. KIniFile Ini;
  31. char Buffer[128], Value[4];
  32. sprintf(Buffer, "%s\"SCHEME_INI, pScheme);
  33. if (Ini.Load(Buffer) == FALSE)
  34. return;
  35. KPopupMenuData* pMenuData = (KPopupMenuData*)&m_MenuData;
  36. pMenuData->nNumItem = 0;
  37. pMenuData->usMenuFlag =  PM_F_ZOOM_SELECTED_ITEM;
  38. pMenuData->byFontSize = 12;
  39. pMenuData->nItemTitleIndent = 0;
  40. pMenuData->byItemTitleUpSpace = 0;
  41. pMenuData->nSelectedItem = -1;
  42. pMenuData->uBorderLineColor = 0xff000000;
  43. pMenuData->uSelItemBgColor = 0;
  44. pMenuData->uSelTextColor = 0;
  45. pMenuData->uTextColor = 0;
  46. Ini.GetInteger(INI_COLOR_SECTION, "Width", 24, &i);
  47. pMenuData->nItemWidth = i;
  48. Ini.GetInteger(INI_COLOR_SECTION, "Height", 12, &i);
  49. pMenuData->nItemHeight = i;
  50. for (i = 0; i < UI_INPUT_MSG_MAX_COLOR; i++)
  51. {
  52. itoa(i, Value, 10);
  53. if (Ini.GetString("ColorList", Value, "", Buffer, sizeof(Buffer)))
  54. {
  55. pMenuData->Items[i].uBgColor = (::GetColor(Buffer) & 0xFFFFFF);
  56. pMenuData->nNumItem ++;
  57. }
  58. else
  59. break;
  60. }
  61. }
  62. void KUiSelColor::PopupMenu(KWndWindow* pCaller, unsigned int uParam, int x, int y, int nWidth)
  63. {
  64. KPopupMenu::Cancel();
  65. KPopupMenuData* pMenuData = (KPopupMenuData*)&m_MenuData;
  66. pMenuData->nX = x;
  67. pMenuData->nY = y;
  68. pMenuData->nItemWidth = nWidth;
  69. KPopupMenu::Popup(pMenuData, pCaller, uParam);
  70. }
  71. void KUiSelColor::CancelMenu()
  72. {
  73. KPopupMenu::Cancel();
  74. }