|
|
|
|
/**
|
|
|
|
|
* Copyright (C) 2014-2050 SOUI团队
|
|
|
|
|
* All rights reserved.
|
|
|
|
|
*
|
|
|
|
|
* @file SMessageBox.h
|
|
|
|
|
* @brief
|
|
|
|
|
* @version v1.0
|
|
|
|
|
* @author soui
|
|
|
|
|
* @date 2014-07-06
|
|
|
|
|
*
|
|
|
|
|
* Describe
|
|
|
|
|
*/
|
|
|
|
|
#pragma once
|
|
|
|
|
#include <core/shostdialog.h>
|
|
|
|
|
#include <helper/SDpiHelper.hpp>
|
|
|
|
|
namespace SOUI
|
|
|
|
|
{
|
|
|
|
|
//下面是几个在msgbox模板中必须指定的ID。
|
|
|
|
|
#define NAME_MSGBOX_BTNSWITCH L"btnSwitch" //一个包含3个页面的tabctrl
|
|
|
|
|
#define NAME_MSGBOX_TEXT L"msgtext" //文本控件,只需要指定两个坐标
|
|
|
|
|
#define NAME_MSGBOX_TITLE L"msgtitle" //标题ID
|
|
|
|
|
#define NAME_MSGBOX_ICON L"msgicon" //图标显示控件
|
|
|
|
|
#define NAME_MSGBOX_BTN1 L"button1st" //第1个按钮ID,按钮ID在显示时会自动修改为如IDOK,IDCANCEL这样的ID。
|
|
|
|
|
#define NAME_MSGBOX_BTN2 L"button2nd" //第2个按钮ID
|
|
|
|
|
#define NAME_MSGBOX_BTN3 L"button3rd" //第3个按钮ID
|
|
|
|
|
|
|
|
|
|
BOOL SOUI_EXP SetMsgTemplate(pugi::xml_node xmlNode);
|
|
|
|
|
|
|
|
|
|
pugi::xml_node SOUI_EXP GetMsgTemplate();
|
|
|
|
|
|
|
|
|
|
INT_PTR SOUI_EXP SMessageBox(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @class SMessageBoxImpl
|
|
|
|
|
* @brief 消息窗口模板
|
|
|
|
|
*
|
|
|
|
|
* Describe msgbox的消息处理对象,如果需要更加个性化的msgbox,可以派生该类。
|
|
|
|
|
*/
|
|
|
|
|
class SOUI_EXP SMessageBoxImpl:public SHostDialog, public SDpiHandler<SMessageBoxImpl>
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
/**
|
|
|
|
|
* SMessageBoxImpl::SMessageBoxImpl
|
|
|
|
|
* @brief 构造函数
|
|
|
|
|
*
|
|
|
|
|
* Describe 构造函数
|
|
|
|
|
*/
|
|
|
|
|
SMessageBoxImpl();
|
|
|
|
|
/**
|
|
|
|
|
* SMessageBoxImpl::MessageBox
|
|
|
|
|
* @brief 提示框
|
|
|
|
|
* @param HWND hWnd -- 窗口句柄
|
|
|
|
|
* @param LPCTSTR lpText -- 消息内容
|
|
|
|
|
* @param LPCTSTR lpCaption -- 窗口标题
|
|
|
|
|
* @param UINT uType -- 窗口类型
|
|
|
|
|
*
|
|
|
|
|
* Describe 提示框
|
|
|
|
|
*/
|
|
|
|
|
INT_PTR MessageBox( HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType);
|
|
|
|
|
protected:
|
|
|
|
|
/**
|
|
|
|
|
* OnInitDialog
|
|
|
|
|
* @brief MsgBox初始化
|
|
|
|
|
* @param HWND wnd -- host窗口句柄
|
|
|
|
|
* @param LPARAM lInitParam -- 不使用
|
|
|
|
|
* @return BOOL 不使用
|
|
|
|
|
*
|
|
|
|
|
* Describe
|
|
|
|
|
*/
|
|
|
|
|
BOOL OnInitDialog(HWND wnd, LPARAM lInitParam);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* SMessageBoxImpl::OnSetIcon
|
|
|
|
|
* @brief 设置图标
|
|
|
|
|
* @param UINT uType -- 类型
|
|
|
|
|
* @return 返回BOOL
|
|
|
|
|
*
|
|
|
|
|
* Describe 设置图标 可以重载该方法来显示自定义的图标
|
|
|
|
|
*/
|
|
|
|
|
virtual BOOL OnSetIcon(UINT uType);
|
|
|
|
|
|
|
|
|
|
virtual SStringT OnGetButtonText(int nBtnID) const;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* SMessageBoxImpl::OnBtnClick
|
|
|
|
|
* @brief 按钮响应函数
|
|
|
|
|
* @param int uID -- 控件ID
|
|
|
|
|
*
|
|
|
|
|
* Describe 消息响应函数
|
|
|
|
|
*/
|
|
|
|
|
void OnBtnClick(int uID)
|
|
|
|
|
{
|
|
|
|
|
EndDialog(uID);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
EVENT_MAP_BEGIN()
|
|
|
|
|
EVENT_ID_COMMAND_RANGE(IDOK,IDNO, OnBtnClick)
|
|
|
|
|
EVENT_MAP_END()
|
|
|
|
|
|
|
|
|
|
BEGIN_MSG_MAP_EX(SMessageBoxImpl)
|
|
|
|
|
CHAIN_MSG_MAP(SDpiHandler<SMessageBoxImpl>)
|
|
|
|
|
MSG_WM_INITDIALOG(OnInitDialog)
|
|
|
|
|
CHAIN_MSG_MAP(SHostDialog)
|
|
|
|
|
REFLECT_NOTIFICATIONS_EX()
|
|
|
|
|
END_MSG_MAP()
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
}//end of namespace
|
|
|
|
|
|