#pragma once #include "uiBase.h" #include "FTextRender.h" class uiSystemMessage : public uiBase { enum UIControlPos { kControl_Title_Text = 0, // Á¦¸ñ kControl_Message_Text, // ³»¿ë kControl_VScroll, // ½ºÅ©·Ñ kControl_VScroll_Picture, // ½ºÅ©·ÑÀ̹ÌÁö kControl_Verify_Button, // È®Àιöư kControl_Confirm_Button, // ¿¹ kControl_Rejection_Button, // ¾Æ´Ï¿À kControl_Close_Button, // ´Ý±â kControl_Size, }; public: enum MessageType { kVerify_Type = 0, kConfirm_Type, kVerify_And_Dont_Close_Type, // ´Ý±â¹öư ¾ø´Â VerifyŸÀÔ (esc·Îµµ ´ÝÀ» ¼ö ¾øÀ½) kConfirm_And_Dont_Close_Type, // ´Ý±â¹öư ¾ø´Â ConfirmŸÀÔ (esc·Îµµ ´ÝÀ» ¼ö ¾øÀ½) kMax_Type, }; enum ButtonIndex { kVerify_Button = 0, kConfirm_Button, kRejection_Button, kClose_Button, kMax_Button, }; typedef void (*MessageCallback)(ButtonIndex button_index); typedef STLX_MAP UserDataContainer; public: uiSystemMessage(InterfaceManager* interface_manager); virtual ~uiSystemMessage(); virtual void Init(CDrawBase* draw_base); virtual void Release(); virtual void OnShowWindow(BOOL is_show); virtual void MessageProc(SI_MESSAGE* message); virtual void OnUpdateSolarDialog(); virtual void OnRenderSolarDialog(); void Clear(); void SetMessageType(MessageType type); void SetTitle(const TCHAR* title); void SetMessage(const TCHAR* message); void SetTimer(DWORD life_time); void SetButtonText(ButtonIndex button_index, DWORD string_code); void SetButtonText(ButtonIndex button_index, const TCHAR* button_text); void SetModal(bool show_lock_effect); void SetUserData(DWORD user_data); void set_callback_function(MessageCallback val) { callback_function_ = val; } static void DoSystemMessage(DWORD l_param, DWORD r_param); static DWORD GetUserData(); private: bool OnLButtonClick(SI_MESSAGE* message); bool OnVScrollUp(SI_MESSAGE* message); bool OnVScrollDown(SI_MESSAGE* message); bool OnVScrollThumb(SI_MESSAGE* message); void UpdateMessage(); MessageType message_type() const { return message_type_; } void set_message_type(MessageType val) { message_type_ = val; } FTextRender& message_text_renderer() { return message_text_renderer_; } DWORD expired_time() const { return expired_time_; } void set_expired_time(DWORD val) { expired_time_ = val; } bool is_modal() const { return is_modal_; } void set_modal(bool val) { is_modal_ = val; } bool is_show_lock_effect() const { return is_show_lock_effect_; } void set_show_lock_effect(bool val) { is_show_lock_effect_ = val; } MessageCallback callback_function() const { return callback_function_; } STLX_STRING& message_string() { return message_string_; } static UserDataContainer& GetUserDataContainer() { return user_data_container_; } static DWORD& CurrentDialogKey() { return current_dialog_key_; } private: MessageType message_type_; FTextRender message_text_renderer_; DWORD expired_time_; bool is_modal_; bool is_show_lock_effect_; MessageCallback callback_function_; STLX_STRING message_string_; static UserDataContainer user_data_container_; static DWORD current_dialog_key_; };