Initial commit
This commit is contained in:
418
MyCode/Gui/MessageBox.cpp
Normal file
418
MyCode/Gui/MessageBox.cpp
Normal file
@@ -0,0 +1,418 @@
|
||||
#include"MessageBox.h"
|
||||
|
||||
#define CH 30 //Caption Height
|
||||
|
||||
void TMessageBox::Init(int x1, int y1, int aW, int aH, int OwnerX, int OwnerY, u32 aColor)
|
||||
{
|
||||
|
||||
unsigned short Left,Right, Top, Bottom, Width, Height, i;
|
||||
Bound.SetBySize(OwnerX + x1, OwnerY + y1, aW, aH);
|
||||
Left = Bound.Left +3;
|
||||
Top = Bound.Top+3;
|
||||
Width = aW - 7;
|
||||
Height = aH - 7;
|
||||
Right = Bound.Right -4;
|
||||
Bottom = Bound.Bottom -4;
|
||||
Caption.Init(Left,Top,Width, CH, 0, 0, clWhite, clMaroon);
|
||||
Content.Set(Left, Top+CH, Right, Bottom);
|
||||
BoxBound.Set(Left+200,Top+CH+50, Right-200, Bottom-180);
|
||||
SText.Init(60,24,BoxBound.Width - 60 - 7, CH, BoxBound.Left, BoxBound.Top, clNearBlack, clFrmFace);
|
||||
|
||||
Caption.Border.Color = clGray;
|
||||
|
||||
Color = aColor;
|
||||
TextColor = clNearBlack;
|
||||
SelectedColor = clBlue;
|
||||
SelectedTextColor = clNearWhite;
|
||||
BoxColor = clFrmFace;
|
||||
|
||||
sIndex = 2;
|
||||
|
||||
DoWhatDone = 0;
|
||||
ReturnVal[0] = guiMsgReturn;
|
||||
ReturnVal[1] = guiMsgReturn;
|
||||
ReturnVal[2] = guiMsgReturn;
|
||||
ReturnVal[3] = guiMsgReturn;
|
||||
|
||||
Btn[0].Init(0,0,90,36, BoxBound.Left,BoxBound.Top,clNearBlack,clFrmFace);
|
||||
Btn[1].Init(200,90,70,36, BoxBound.Left,BoxBound.Top,clNearBlack,clFrmFace);
|
||||
Btn[2].Init(310,90,70,36, BoxBound.Left,BoxBound.Top,clNearBlack,clFrmFace);
|
||||
Btn[3].Init(310,90,70,36, BoxBound.Left,BoxBound.Top,clNearBlack,clFrmFace);
|
||||
|
||||
Caption.TextClear();
|
||||
SText.TextClear();
|
||||
Btn[0].Caption.Clear();
|
||||
Btn[1].Caption.Clear();
|
||||
Btn[2].Caption.Clear();
|
||||
Btn[3].Caption.Clear();
|
||||
}
|
||||
|
||||
void TMessageBox::RenderBackGround(void)
|
||||
{
|
||||
RectFillRender(Content.Left, Content.Top, Content.Right, Content.Bottom, Color);
|
||||
}
|
||||
|
||||
void TMessageBox::RenderBackGround(unsigned int aClr)
|
||||
{
|
||||
RectFillRender(Content.Left, Content.Top, Content.Right, Content.Bottom, aClr);
|
||||
}
|
||||
|
||||
void TMessageBox::DrawSelf(void)
|
||||
{
|
||||
unsigned int x, y, x2, y2, w, h;
|
||||
|
||||
VertLineRender(Bound.Left, Bound.Top, Bound.Height -1, 0xFFFFFFFF);
|
||||
VertLineRender(Bound.Right -1, Bound.Top +1, Bound.Height -2, 0xFF808080);
|
||||
VertLineRender(Bound.Right, Bound.Top, Bound.Height, 0xFF404040);
|
||||
|
||||
HorizLineRender(Bound.Left, Bound.Top, Bound.Width - 1, 0xFFFFFFFF);
|
||||
HorizLineRender(Bound.Left +1, Bound.Bottom -1, Bound.Width - 2, 0xFF808080);
|
||||
HorizLineRender(Bound.Left, Bound.Bottom, Bound.Width, 0xFF404040);
|
||||
|
||||
x = Bound.Left +2 ;
|
||||
x2 = Bound.Right -2;
|
||||
y = Bound.Top +2;
|
||||
y2 = Bound.Bottom - 2;
|
||||
w = Bound.Width -4;
|
||||
h = Bound.Height - 4;
|
||||
VertLineRender (x, y, h-1, 0xFF808080);
|
||||
HorizLineRender (x, y, w-1, 0xFF808080);
|
||||
|
||||
VertLineRender (x+1, y+1, h-2, 0xFF404040);
|
||||
HorizLineRender (x+1, y+1, w-2, 0xFF404040);
|
||||
|
||||
VertLineRender (x2-1, y+1, h-2, 0xFFD4D0C8);
|
||||
HorizLineRender (x+1, y2-1, w-2, 0xFFD4D0C8);
|
||||
|
||||
VertLineRender (x2, y, h, 0xFFFFFFFF);
|
||||
HorizLineRender (x, y2, w, 0xFFFFFFFF);
|
||||
}
|
||||
|
||||
void TMessageBox::SetBtnOkCancel()
|
||||
{
|
||||
sIndex = 2;
|
||||
|
||||
Btn[0].Visible = 0;
|
||||
Btn[1].Visible = 0;
|
||||
Btn[2].Visible = 0;
|
||||
|
||||
Btn[0].Init(0,0,90,36, BoxBound.Left,BoxBound.Top,clNearBlack,clFrmFace);
|
||||
Btn[1].Init(200,90,70,36, BoxBound.Left,BoxBound.Top,clNearBlack,clFrmFace);
|
||||
Btn[2].Init(310,90,70,36, BoxBound.Left,BoxBound.Top,clNearBlack,clFrmFace);
|
||||
|
||||
Btn[1].Enable = 0;
|
||||
Btn[1].Visible = 1;
|
||||
Btn[1].SetCaptionLeftSpacing(6);
|
||||
Btn[1].SelectedColor = clBlue;
|
||||
Btn[2].Enable = 1;
|
||||
Btn[2].Visible = 1;
|
||||
Btn[2].SetCaptionLeftSpacing(6);
|
||||
Btn[2].SelectedColor = clBlue;
|
||||
|
||||
Btn[1].Caption.FromStr("确定");
|
||||
Btn[2].Caption.FromStr("返回");
|
||||
}
|
||||
|
||||
void TMessageBox::SetBtnOk1Ok2Cancel()
|
||||
{
|
||||
sIndex = 2;
|
||||
|
||||
Btn[0].Visible = 0;
|
||||
Btn[1].Visible = 0;
|
||||
Btn[2].Visible = 0;
|
||||
Btn[3].Visible = 0;
|
||||
|
||||
|
||||
Btn[0].Init(90, 90,70,36, BoxBound.Left,BoxBound.Top,clNearBlack,clFrmFace);
|
||||
Btn[1].Init(200,90,70,36, BoxBound.Left,BoxBound.Top,clNearBlack,clFrmFace);
|
||||
Btn[2].Init(310,90,70,36, BoxBound.Left,BoxBound.Top,clNearBlack,clFrmFace);
|
||||
Btn[3].Init(310,90,70,36, BoxBound.Left,BoxBound.Top,clNearBlack,clFrmFace);
|
||||
|
||||
Btn[0].Enable = 0;
|
||||
Btn[0].Visible = 1;
|
||||
Btn[0].SetCaptionLeftSpacing(6);
|
||||
Btn[0].SelectedColor = clBlue;
|
||||
Btn[1].Enable = 0;
|
||||
Btn[1].Visible = 1;
|
||||
Btn[1].SetCaptionLeftSpacing(6);
|
||||
Btn[1].SelectedColor = clBlue;
|
||||
Btn[2].Enable = 1;
|
||||
Btn[2].Visible = 1;
|
||||
Btn[2].SetCaptionLeftSpacing(6);
|
||||
Btn[2].SelectedColor = clBlue;
|
||||
}
|
||||
|
||||
void TMessageBox::DrawBox(void)
|
||||
{
|
||||
RectFillRender(BoxBound.Left, BoxBound.Top, BoxBound.Right, BoxBound.Bottom, BoxColor);
|
||||
|
||||
VertLineRender(BoxBound.Left, BoxBound.Top, BoxBound.Height -1, 0xFFFFFFFF);
|
||||
VertLineRender(BoxBound.Right -1, BoxBound.Top +1, BoxBound.Height -2, 0xFF808080);
|
||||
VertLineRender(BoxBound.Right, BoxBound.Top, BoxBound.Height, 0xFF404040);
|
||||
|
||||
HorizLineRender(BoxBound.Left, BoxBound.Top, BoxBound.Width - 1, 0xFFFFFFFF);
|
||||
HorizLineRender(BoxBound.Left +1, BoxBound.Bottom -1, BoxBound.Width - 2, 0xFF808080);
|
||||
HorizLineRender(BoxBound.Left, BoxBound.Bottom, BoxBound.Width, 0xFF404040);
|
||||
}
|
||||
|
||||
void TMessageBox::DrawBtn()
|
||||
{
|
||||
if(Btn[0].Visible){
|
||||
Btn[0].Show();
|
||||
}
|
||||
if(Btn[1].Visible){
|
||||
Btn[1].Show();
|
||||
}
|
||||
if(Btn[2].Visible){
|
||||
Btn[2].Show();
|
||||
}
|
||||
if(Btn[3].Visible){
|
||||
Btn[3].Show();
|
||||
}
|
||||
}
|
||||
|
||||
void TMessageBox::SetBoxColor(unsigned int aClr)
|
||||
{
|
||||
BoxColor = aClr;
|
||||
}
|
||||
|
||||
void TMessageBox::CheckSelect()
|
||||
{
|
||||
Btn[0].Selected=0;
|
||||
Btn[1].Selected=0;
|
||||
Btn[2].Selected=0;
|
||||
Btn[3].Selected=0;
|
||||
if(sIndex == 0){
|
||||
Btn[0].Selected = 1;
|
||||
}else
|
||||
if(sIndex == 1){
|
||||
Btn[1].Selected = 1;
|
||||
}
|
||||
if(sIndex == 2){
|
||||
Btn[2].Selected = 1;
|
||||
}else
|
||||
if(sIndex == 3){
|
||||
Btn[3].Selected = 1;
|
||||
}
|
||||
}
|
||||
|
||||
void TMessageBox::DrawMessage()
|
||||
{
|
||||
SText.Show();
|
||||
}
|
||||
|
||||
void TMessageBox::Show(void)
|
||||
{
|
||||
RenderBackGround();
|
||||
DrawSelf();
|
||||
Caption.Show();
|
||||
DrawBox();
|
||||
DrawMessage();
|
||||
CheckSelect();
|
||||
DrawBtn();
|
||||
}
|
||||
|
||||
int TMessageBox::FindNextBtn(int aLR)
|
||||
{
|
||||
int i, aInx;
|
||||
aInx = sIndex;
|
||||
if(DoWhatDone){
|
||||
if(aLR <0){
|
||||
for(i=0; i<4; i++){
|
||||
aInx--;
|
||||
if(aInx < 0)aInx = 3;
|
||||
if(Btn[aInx].Enable){
|
||||
sIndex = aInx;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}else
|
||||
if(aLR >0){
|
||||
for(i=0; i<4; i++){
|
||||
aInx++;
|
||||
if(aInx >3)aInx = 0;
|
||||
if(Btn[aInx].Enable){
|
||||
sIndex = aInx;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
TGuiMsgReturn TMessageBox::KeyIn(unsigned char aKey)
|
||||
{
|
||||
TGuiMsgReturn aMsg = guiMsgNone;
|
||||
unsigned char aCh;
|
||||
|
||||
if(aKey == VK_LEFT){
|
||||
if(DoWhatDone){
|
||||
if(FindNextBtn(-1)){
|
||||
CheckSelect();
|
||||
DrawBtn();
|
||||
}
|
||||
}
|
||||
}else
|
||||
if(aKey == VK_RIGHT){
|
||||
if(FindNextBtn(1)){
|
||||
CheckSelect();
|
||||
DrawBtn();
|
||||
}
|
||||
}
|
||||
|
||||
if(aKey == VK_EXECUTE){
|
||||
//Save Data Here
|
||||
if(DoWhatDone){
|
||||
aMsg = ReturnVal[sIndex];
|
||||
}
|
||||
}else
|
||||
if(aKey == VK_RETURN){
|
||||
aMsg = guiMsgReturn;
|
||||
}
|
||||
|
||||
return aMsg;
|
||||
}
|
||||
|
||||
|
||||
void TMessageBox::SetReturnValue(TGuiMsgReturn aV0, TGuiMsgReturn aV1, TGuiMsgReturn aV2, TGuiMsgReturn aV3)
|
||||
{
|
||||
ReturnVal[0] = aV0;
|
||||
ReturnVal[1] = aV1;
|
||||
ReturnVal[2] = aV2;
|
||||
ReturnVal[3] = aV3;
|
||||
}
|
||||
|
||||
void TMessageBox::DoWait4ExitLogin()
|
||||
{
|
||||
volatile unsigned int i;
|
||||
SText.Init(100,24,BoxBound.Width - 40 -7, CH, BoxBound.Left, BoxBound.Top, clNearBlack, clFrmFace);
|
||||
SText.SetText("确认退出登录", 24);
|
||||
SText.TextColor = clRed;
|
||||
Btn[1].Visible = 1;
|
||||
Btn[2].Visible = 1;
|
||||
DrawMessage();
|
||||
DoWhatDone = 1;
|
||||
Btn[1].Enable = 1;
|
||||
DrawBtn();
|
||||
}
|
||||
|
||||
void TMessageBox::DoWait4RunMode()
|
||||
{
|
||||
volatile unsigned int i;
|
||||
Btn[0].Visible = 0;
|
||||
Btn[1].Visible = 0;
|
||||
Btn[2].Visible = 0;
|
||||
Btn[3].Visible = 0;
|
||||
|
||||
|
||||
Btn[0].Init(70, 90,110,36, BoxBound.Left,BoxBound.Top,clNearBlack,clFrmFace);
|
||||
Btn[1].Init(190,90,110,36, BoxBound.Left,BoxBound.Top,clNearBlack,clFrmFace);
|
||||
Btn[2].Init(310,90,70,36, BoxBound.Left,BoxBound.Top,clNearBlack,clFrmFace);
|
||||
Btn[3].Init(310,90,70,36, BoxBound.Left,BoxBound.Top,clNearBlack,clFrmFace);
|
||||
|
||||
Btn[0].Enable = 0;
|
||||
Btn[0].Visible = 1;
|
||||
Btn[0].SetCaptionLeftSpacing(6);
|
||||
Btn[0].SelectedColor = clBlue;
|
||||
Btn[1].Enable = 0;
|
||||
Btn[1].Visible = 1;
|
||||
Btn[1].SetCaptionLeftSpacing(6);
|
||||
Btn[1].SelectedColor = clBlue;
|
||||
Btn[2].Enable = 1;
|
||||
Btn[2].Visible = 1;
|
||||
Btn[2].SetCaptionLeftSpacing(6);
|
||||
Btn[2].SelectedColor = clBlue;
|
||||
|
||||
SText.Init(25,24,300, CH, BoxBound.Left, BoxBound.Top, clNearBlack, clFrmFace);
|
||||
SText.SetText("选择要运行的状态,按确定执行", 24);
|
||||
SText.TextColor = clRed;
|
||||
Btn[0].Visible = 1;
|
||||
Btn[1].Visible = 1;
|
||||
Btn[2].Visible = 1;
|
||||
Btn[0].Caption.FromStr("正常运行");
|
||||
Btn[1].Caption.FromStr("调试运行");
|
||||
Btn[2].Caption.FromStr("返回");
|
||||
Btn[0].Enable = 1;
|
||||
Btn[1].Enable = 1;
|
||||
SText.TextColor = clNearBlack;
|
||||
|
||||
DoWhatDone = 1;
|
||||
}
|
||||
|
||||
void TMessageBox::DoWait4EnterSelfCheck()
|
||||
{
|
||||
volatile unsigned int i;
|
||||
SText.Init(60,24,BoxBound.Width - 60 -7, CH, BoxBound.Left, BoxBound.Top, clNearBlack, clFrmFace);
|
||||
SText.SetText("按确定键开始系统自检", 24);
|
||||
SText.TextColor = clRed;
|
||||
Btn[1].Visible = 1;
|
||||
Btn[2].Visible = 1;
|
||||
DrawMessage();
|
||||
for(i=0; i< 40000000; i++);
|
||||
DoWhatDone = 1;
|
||||
Btn[1].Enable = 1;
|
||||
SText.TextColor = clNearBlack;
|
||||
DrawBtn();
|
||||
}
|
||||
|
||||
void TMessageBox::DoWait4SaveCurrent()
|
||||
{
|
||||
volatile unsigned int i;
|
||||
SText.Init(40,24,BoxBound.Width - 40 -7, CH, BoxBound.Left, BoxBound.Top, clNearBlack, clFrmFace);
|
||||
SText.SetText("按确定键保存,按返回键返回", 24);
|
||||
SText.TextColor = clRed;
|
||||
Btn[1].Visible = 1;
|
||||
Btn[2].Visible = 1;
|
||||
DrawMessage();
|
||||
for(i=0; i< 40000000; i++);
|
||||
DoWhatDone = 1;
|
||||
Btn[1].Enable = 1;
|
||||
SText.TextColor = clNearBlack;
|
||||
DrawBtn();
|
||||
}
|
||||
|
||||
void TMessageBox::DoReadWriteBusPad()
|
||||
{
|
||||
volatile unsigned int i;
|
||||
SText.Init(25,24,BoxBound.Width - 25 -7, CH, BoxBound.Left, BoxBound.Top, clNearBlack, clFrmFace);
|
||||
SText.SetText("选择要运行的状态,按确定执行", 24);
|
||||
SText.TextColor = clRed;
|
||||
Btn[0].Visible = 1;
|
||||
Btn[1].Visible = 1;
|
||||
Btn[2].Visible = 1;
|
||||
Btn[0].Caption.FromStr("读取编程");
|
||||
Btn[1].Caption.FromStr("保存编程");
|
||||
Btn[2].Caption.FromStr("返回");
|
||||
DrawMessage();
|
||||
for(i=0; i< 40; i++);
|
||||
DoWhatDone = 1;
|
||||
Btn[0].Enable = 1;
|
||||
Btn[1].Enable = 1;
|
||||
SText.TextColor = clNearBlack;
|
||||
DrawMessage();
|
||||
DrawBtn();
|
||||
}
|
||||
|
||||
void TMessageBox::ReqAdjMode()
|
||||
{
|
||||
volatile unsigned int i;
|
||||
SText.Init(100,24,200, CH, BoxBound.Left, BoxBound.Top, clNearBlack, clFrmFace);
|
||||
SText.SetText("进入调试状态", 24);
|
||||
SText.TextColor = clRed;
|
||||
Btn[1].Visible = 1;
|
||||
Btn[2].Visible = 1;
|
||||
DrawMessage();
|
||||
DoWhatDone = 1;
|
||||
Btn[1].Enable = 1;
|
||||
DrawBtn();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user