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

模拟服务器

开发平台:

C/C++

  1. // -------------------------------------------------------------------------
  2. // 文件名 : UiSelDlg.cpp
  3. // 创建者 : 彭建波
  4. // 创建时间 : 2002-9-10 11:27:04
  5. // 功能描述 : 选择对话框
  6. //
  7. // -------------------------------------------------------------------------
  8. #include "KWin32.h"
  9. #include "KIniFile.h"
  10. #include "../Elem/WndMessage.h"
  11. #include "../Elem/Wnds.h"
  12. #include "UiSelDlg.h"
  13. #include "../../../core/src/coreshell.h"
  14. extern iCoreShell* g_pCoreShell;
  15. #define SCHEME_INI_SELDLG "多项选择界面.ini"
  16. KUiSelDlg g_UiSelDlg;
  17. //--------------------------------------------------------------------------
  18. // 功能:初始化
  19. //--------------------------------------------------------------------------
  20. int KUiSelDlg::Initialize()
  21. {
  22. AddChild(&m_IlluminateTxt);
  23. for (int i = 0; i < KUISEL_MAX_OPTION; i++)
  24. AddChild(&m_OptionBtn[i]);
  25. m_Style &= ~WND_S_VISIBLE;
  26. Wnd_AddWindow(this);
  27. return true;
  28. }
  29. //--------------------------------------------------------------------------
  30. // 功能:载入窗口的界面方案
  31. //--------------------------------------------------------------------------
  32. void KUiSelDlg::LoadScheme(const char* pScheme)
  33. {
  34. char Buff[128];
  35. KIniFile Ini;
  36. sprintf(Buff, "%s\%s", pScheme, SCHEME_INI_SELDLG);
  37. if (Ini.Load(Buff))
  38. {
  39. KWndImage::    Init(&Ini, "Main");
  40. for (int i = 0; i < KUISEL_MAX_OPTION; i++)
  41. {
  42. sprintf(Buff, "Option_%d", i);
  43. m_OptionBtn[i].Init(&Ini, Buff);
  44. }
  45. m_IlluminateTxt.Init(&Ini, "InfoText");
  46. }
  47. }
  48. //--------------------------------------------------------------------------
  49. // 功能:窗口消息函数
  50. //--------------------------------------------------------------------------
  51. int KUiSelDlg::WndProc(unsigned int uMsg, unsigned int uParam, int nParam)
  52. {
  53. if (uMsg != WND_N_BUTTON_CLICK)
  54. return KWndWindow::WndProc(uMsg, uParam, nParam);
  55. OnClickButton((KWndWindow*)uParam);
  56. return 0;
  57. }
  58. //--------------------------------------------------------------------------
  59. // 功能:响应点击按钮
  60. //--------------------------------------------------------------------------
  61. void KUiSelDlg::OnClickButton(KWndWindow* pWnd)
  62. {
  63. for (int i = 0; i < KUISEL_MAX_OPTION; i++)
  64. if (pWnd == (KWndWindow*)&m_OptionBtn[i])
  65. {
  66. Wnd_ReleaseExclusive(this);
  67. Hide();
  68. g_pCoreShell->OperationRequest(GOI_QUESTION_CHOOSE, 0, i);
  69. break;
  70. }
  71. }
  72. //--------------------------------------------------------------------------
  73. // 功能:显示窗口
  74. //--------------------------------------------------------------------------
  75. void KUiSelDlg::Show(KUiQuestionAndAnswer* pContent)
  76. {
  77. if (pContent && pContent->AnswerCount >= 0)
  78. {
  79. m_IlluminateTxt.SetText(pContent->Question, pContent->QuestionLen);
  80. int i = 0;
  81. if (pContent->AnswerCount == 0)
  82. {
  83. m_OptionBtn[i ].SetLabel("结束", 4);
  84. m_OptionBtn[i++].Show();
  85. }
  86. else
  87. for (i = 0; i < pContent->AnswerCount && i < KUISEL_MAX_OPTION; i++)
  88. {
  89. m_OptionBtn[i].SetLabel(pContent->Answer[i].AnswerText, pContent->Answer[i].AnswerLen);
  90. m_OptionBtn[i].Show();
  91. }
  92. while (i < KUISEL_MAX_OPTION)
  93. m_OptionBtn[i++].Hide();
  94. }
  95. KWndImage::Show();
  96. Wnd_SetExclusive(this);
  97. }