📄 titlewindow.cpp
字号:
//
// TitleWindow.cpp
//
#include "RecogWindow.hpp"
#include "TitleWindow.hpp"
#include "ShelfWindow.hpp"
#include "pself.hpp"
#include "SGRSoftkeyWindow.hpp"
#include "SGRSoftkeyToolbox.hpp"
#include "SGRSoftkeyToolbox.hpp"
#include "InputWindow.hpp"
#include "InformationWindow.hpp"
TitleWindow::TitleWindow(Void) : SFRPlainWindow(SFRApplication::GetInstance(),
SGRSoftkeyToolbox::GetWindowPosition()), _focus(0) static_throws
{
// 昤夋僴儞僪儔傪搊榐
if (static_try()) {
static_throw(
RegisterHandler(SREVT_RESPONDER_RENDER, SRP16_RENDER_CONTENT,
HANDLER_BEFORE, HANDLER_FUNCTION(OnRender)));
}
// 僉乕 僴儞僪儔傪搊榐
if (static_try()) {
static_throw(
RegisterHandler(SFEVT_KEY, HANDLER_AFTER, HANDLER_FUNCTION(OnKey)));
}
// 僜僼僩僉乕偺搊榐
SGRSoftkeyWindowPtr softkey;
SGRSoftkeyWindow::Initialize(this);
static_throw(RegisterHandler(static_cast<SFCEventEnum>(SGRSoftkeyWindow::USEREVT_SOFTKEY), HANDLER_AFTER, HANDLER_FUNCTION(OnSoftkey)));
if (static_try()) {
if ((softkey = SGRSoftkeyWindow::GetInstance()) != null) {
//static_throw(softkey->Register(this, SGRSoftkeyWindow::SOFTKEY_1, ""));
//if (static_try()) {
static_throw(softkey->Register(this, SGRSoftkeyWindow::SOFTKEY_2, "廔椆"));
if (static_try()) {
static_throw(softkey->Register(this, SGRSoftkeyWindow::SOFTKEY_3, "慖戰"));
if (static_try()) {
SetReference(softkey->Bind(this));
}
}
//}
}
}
return;
}
// 僨僗僩儔僋僞乮僂傿儞僪僂攋婞帪偵幚峴乯
TitleWindow::~TitleWindow(Void)
{
return;
}
// 昤夋僴儞僪儔乮僂傿儞僪僂撪偵昤夋乯
HANDLER_IMPLEMENT_VOIDRENDER(TitleWindow, OnRender, graphics)
{
// 敀偔揾傝偮傇偡
// GetContentWorld() 偼僂傿儞僪僂偺拞偺昤夋椞堟傪昞偡巐妏宍乮SFXRectangle乯傪曉偡
// SFXRGBColor(0xFF, 0xFF, 0xFF, 0x00) 偼怓傪昞偡乮嵍偐傜R,G,B,傾儖僼傽抣乯丅
graphics->FillRectangle(GetContentWorld(), SFXRGBColor(0xFF, 0xFF, 0xFF, 0x00));
SFXRGBColor color;
SFXRGBColor black = SFXRGBColor(0x00, 0x00, 0x00, 0x00);
SFXRGBColor yellow = SFXRGBColor(0xFF, 0xFF, 0x00, 0x00);
// 儘僑偺昞帵(夋憸偵曄峏梊掕)
color = SFXRGBColor(0xFF, 0xCC, 0xCC, 0x00);
graphics->FillCircle(SFXCircle(10, 10, 5), color);
graphics->FillCircle(SFXCircle(230, 10, 5), color);
graphics->FillCircle(SFXCircle(10, 100, 5), color);
graphics->FillCircle(SFXCircle(230, 100, 5), color);
graphics->FillRectangle(SFXRectangle(13, 5, 220, 101), color);
graphics->FillRectangle(SFXRectangle(5, 13, 231, 90), color);
graphics->DrawText("pself (壖)", SFXGrid(25, 30), black);
graphics->DrawText("LOGO", SFXGrid(25, 55), black);
SFXAnsiString str[] = {"僶乕僐乕僪撉傒庢傝", "ISBN庤擖椡", "杮扞嶲徠"};
SFXAnsiString icon[] = {"\xF6\xFB", "\xF6\xFC", "\xF7\x40"};
SInt16 fontHeight = SFXGraphics::GetFontHeight(AEE_FONT_NORMAL); // 僼僅儞僩偺崅偝傪庢摼
SFXGrid grid = SFXGrid(0, 0); // 昤夋弶婜埵抲
SInt16 margin = (170 - fontHeight * 3) / 4;
SInt16 fontWidth = SFXGraphics::MeasureText(AEE_FONT_NORMAL, " ");
SInt16 i;
// 慖戰埵抲偺揾傝偮傇偟
graphics->FillRectangle(SFXRectangle(15 + fontWidth * (3 * (_focus + 1)), 100 + margin + (margin + fontHeight) * _focus,
SFXGraphics::MeasureText(AEE_FONT_NORMAL, str[_focus]), fontHeight), SFXRGBColor(0x33, 0x33, 0xFF, 0x00));
// 崁栚偺昞帵
grid = SFXGrid(15, 100 + margin);
for(i = 0; i < 3; i++){
graphics->DrawText(icon[i], grid, black);
if(i == _focus) {
color = yellow;
}
else {
color = black;
}
graphics->DrawText(str[i], grid.AddX(fontWidth * 3), color);
grid.AddY(margin + fontHeight);
}
return;
}
// 僉乕 僴儞僪儔乮僂傿儞僪僂偑慜柺偵偁傞偲偒偵僉乕偑墴偝傟傞偲幚峴偝傟傞乯
HANDLER_IMPLEMENT_BOOLEVENT(TitleWindow, OnKey, event)
{
UInt16 key = event.GetP16();
// 僥儞僉乕偱偺擖椡傪張棟偡傞
if (AVK_1 <= key && key <= AVK_3) {
_focus = event.GetP16() - AVK_1;
key = AVK_SELECT;
}
switch (key) {
case AVK_SELECT: // 崁栚偺慖戰
if (_focus == 0) { // "僶乕僐乕僪撉傒庢傝"
// 僶乕僐乕僪撉傒庢傝僂僀儞僪僂傪奐偔
::new RecogWindow();
} else if (_focus == 1) { // "ISBN庤擖椡"
::new InputWindow();
} else if (_focus == 2) { // "杮扞嶲徠"
// 杮扞僂傿儞僪僂傪奐偔
::new ShelfWindow();
}
return true;
case AVK_UP: // 僼僅乕僇僗傪忋偵堏摦
if(_focus > 0) {
--_focus;
}
else {
_focus = 2;
}
InvalidateContent();
return true;
case AVK_DOWN: // 僼僅乕僇僗傪壓偵堏摦
if(_focus < 2) {
++_focus;
}
else {
_focus = 0;
}
InvalidateContent();
return true;
case AVK_CLR: // 傾僾儕乕働乕僔儑儞傪廔椆偡傞
SFRApplication::Terminate();
return true;
}
return false;
}
// 僜僼僩 僉乕偑墴偝傟偨
HANDLER_IMPLEMENT_VOIDEVENT(TitleWindow, OnSoftkey, event)
{
switch (event.GetP16()) {
case SGRSoftkeyWindow::SOFTKEY_1:
break;
case SGRSoftkeyWindow::SOFTKEY_2:
// 傾僾儕乕働乕僔儑儞傪廔椆偡傞
SFRApplication::Terminate();
break;
}
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -