- Published on
编辑器扩展:消息窗口
- Authors

- Name
- 东哥
前言
自定义和扩展消息窗口


消息窗口
先看两个枚举
namespace EAppMsgType
{
/**
* Enumerates supported message dialog button types.
*/
enum Type
{
Ok,
YesNo,
OkCancel,
YesNoCancel,
CancelRetryContinue,
YesNoYesAllNoAll,
YesNoYesAllNoAllCancel,
YesNoYesAll,
};
namespace EAppReturnType
{
/**
* Enumerates message dialog return types.
*/
enum Type
{
No,
Yes,
YesAll,
NoAll,
Cancel,
Ok,
Retry,
Continue,
};
前者为输入,后者会返回
可以通过返回类型的不同来做不同的逻辑
EAppReturnType::Type ReturnType = FMessageDialog::Open(EAppMsgType::OkCancel, DialogText);
- 强行封装蓝图库
UENUM(BlueprintType)
enum class EMsgType : uint8
{
Ok,
YesNo,
OkCancel,
YesNoCancel,
CancelRetryContinue,
YesNoYesAllNoAll,
YesNoYesAllNoAllCancel,
YesNoYesAll,
};
UENUM(BlueprintType)
enum class EMsgRetType : uint8
{
No,
Yes,
YesAll,
NoAll,
Cancel,
Ok,
Retry,
Continue,
};
EMsgRetType UFlib_IO::OpenMessageWindow(EMsgType Type, FText Msg)
{
EAppMsgType::Type tp;
switch (Type)
{
case EMsgType::Ok:
tp = EAppMsgType::Ok;
break;
case EMsgType::YesNo:
tp = EAppMsgType::YesNo;
break;
case EMsgType::OkCancel:
tp = EAppMsgType::OkCancel;
break;
case EMsgType::YesNoCancel:
tp = EAppMsgType::YesNoCancel;
break;
case EMsgType::CancelRetryContinue:
tp = EAppMsgType::CancelRetryContinue;
break;
case EMsgType::YesNoYesAllNoAll:
tp = EAppMsgType::YesNoYesAllNoAll;
break;
case EMsgType::YesNoYesAllNoAllCancel:
tp = EAppMsgType::YesNoYesAllNoAllCancel;
break;
case EMsgType::YesNoYesAll:
tp = EAppMsgType::YesNoYesAll;
break;
}
EAppReturnType::Type retType = FMessageDialog::Open(tp, Msg);
EMsgRetType returnType = EMsgRetType::Ok;
switch (retType)
{
case EAppReturnType::No:
returnType = EMsgRetType::No;
break;
case EAppReturnType::Yes:
returnType = EMsgRetType::Yes;
break;
case EAppReturnType::YesAll:
returnType = EMsgRetType::YesAll;
break;
case EAppReturnType::NoAll:
returnType = EMsgRetType::NoAll;
break;
case EAppReturnType::Cancel:
returnType = EMsgRetType::Cancel;
break;
case EAppReturnType::Ok:
returnType = EMsgRetType::Ok;
break;
case EAppReturnType::Retry:
returnType = EMsgRetType::Retry;
break;
case EAppReturnType::Continue:
returnType = EMsgRetType::Continue;
break;
}
return returnType;
}
