楓故事 ZXString、StringPool、CMsgbox與CMsgboxLinkWeb範例
StringPool::GetInstance 函式
語法
1
| StringPool * StringPool::GetInstance(void);
|
參數
不帶任何參數。
回傳值
回傳一個StringPool的Instance,若尚未建立則會自動建立一個。
StringPool::GetString 函式
語法
1 2 3 4 5
| template<typename T> ZXString<T> * StringPool::GetString( ZXString<T> *result, unsigned int nIdx );
|
參數
result[out]
用於存放取得的ZXString的指標。
nIdx
用於查詢的ID。[in]
回傳值
回傳一個ZXString的指標,如果該ID不存在,可能導致程式崩潰。
CMsgbox 與 CMsgboxLinkWeb 類別
程式庫提供兩種MsgBox,一個是CMsgbox,另一個是CMsgboxLinkWeb。使用方法都很簡單,參考下面範例就會了。
範例
很簡單的class使用,顯示一個訊息ID是0x102A的訊息窗。
CMsgbox只有一個OK按鈕,若連結網址不為空的話會顯示連結。
1 2 3 4 5
| ZXString<char> sDesc = ""; ZXString<char> sLink = ""; ZXString<char> sMsg; StringPool::GetInstance()->GetString(&sMsg, 0x102A); TSingleton<CMsgbox>::CreateInstance()->Init(sMsg, sLink, sDesc);
|
直接使用C-Style字串也是可以的,編譯器會自動配置class。
1
| TSingleton<CMsgbox>::CreateInstance()->Init("Test Text", "http://toby.logdown.com", "Test Link");
|
寫asm的話參考下面方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| push ebp mov ebp,esp sub ebp,40 call TSingleton<CMsgbox>::CreateInstance mov esi,eax xor edi,edi push ecx mov ecx,esp mov [ebp-04],esp push -01 push sDesc mov [ecx],edi call ZXString<char>::Assign push ecx mov ecx,esp mov [ebp-08],esp push -01 push sLink mov [ecx],edi call ZXString<char>::Assign push ecx mov ecx,esp mov [ebp-08],esp push -01 push sMsg mov [ecx],edi call ZXString<char>::Assign mov ecx,esi call CMsgbox::Init pop ebp ret
|
台灣楓故事DEMO:
CMsgboxLinkWeb則是Yes-No訊息方塊,按Yes會打開連結。
1 2 3
| ZXString<char> sLink = ""; ZXString<char> sMsg = ""; TSingleton<CMsgboxLinkWeb>::CreateInstance()->Init(sMsg, sLink);
|
台灣楓故事DEMO: