#pragma once namespace shared { /** @class Toast * @brief 提供一个简易的提示窗体,相当于MessageBox的简化版 * @copyright (c) 2016, NetEase Inc. All rights reserved * @author Redrain * @date 2016/8/24 */ class Toast : public ui::WindowImplBase { public: /** * 在屏幕中间显示一个提示框 * @param[in] content 提示内容 * @param[in] duration 持续时间(毫秒),0代表一直显示 * @param[in] parent 父窗口句柄,如果提供的话toast会显示在父窗口的中心 * @return void 无返回值 */ static void ShowToast(const std::wstring &content, int duration = 0, HWND parent = NULL); public: Toast(){}; ~Toast(){}; //覆盖虚函数 virtual std::wstring GetSkinFolder() override; virtual std::wstring GetSkinFile() override; virtual std::wstring GetWindowClassName() const override; virtual std::wstring GetWindowId() const /*override*/; virtual UINT GetClassStyle() const override; /** * 窗口初始化函数 * @return void 无返回值 */ virtual void InitWindow() override; /** * 拦截并处理底层窗体消息 * @param[in] uMsg 消息类型 * @param[in] wParam 附加参数 * @param[in] lParam 附加参数 * @return LRESULT 处理结果 */ virtual LRESULT HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam) override; /** * 设置窗体的显示时长 * @param[in] duration 持续时间,单位毫秒 * @return void 无返回值 */ void SetDuration(int duration); private: /** * 处理所有控件单击消息 * @param[in] msg 消息的相关信息 * @return bool true 继续传递控件消息,false 停止传递控件消息 */ bool OnClicked(ui::EventArgs* msg); /** * 设置提示内容 * @param[in] str 提示内容 * @return void 无返回值 */ void SetContent(const std::wstring &str); public: static const LPCTSTR kClassName; private: ui::RichEdit *content_; ui::Button *close_button_; }; }