Hello MessageBox tutorial
Bài viết này chúng tôi giới thiệu đến bạn cách tạo và sử dụng các dạng messagebox được hỗ trợ trong Bada Form. Qua ví dụ này, bạn sẽ nắm bắt được hết các loại messagebox cũng như là cách bắt sự kiện trả về của messagebox.
Bạn làm các bước như sau:
1. Bạn tạo dự án mới với tên dự án là HelloMessageBox. Chọn kiểu của dự án là bada Frame Based Application.
2. Tại cửa sổ Resource:HelloMessageBox > Form, bạn tạo ra một form mới có tên IDF_FORM1. Trên form, bạn vẽ 1 label và 9 button như hình sau:
Tạo xong, bạn sẽ có form và các thành phần của form như sau:
3. Bạn tạo lớp mới từ form bạn vừa tạo xong, bằng cách click phải chuột vào form rồi chọn Add Class. Bạn nhập tên lớp cần tạo ví dụ: HelloMessageBoxForm, check vào nút Button rồi nhấn Finish để hoàn tất việc tạo lớp. Bạn có thể tham khảo chi tiết hơn về cách tạo lớp từ form trong bài viết HelloCopy.
Tạo xong bạn sẽ nhìn thấy trên cửa sổ Project Explorer như sau:
4. Trong tập tin src > HelloMessageBox.cpp, bạn thêm dòng khai báo giống như sau:
/** * Name : HelloMessageBox * Version : $(version) * Vendor : all we know * Description : MessageBox tutorial */ #include "HelloMessageBox.h" #include "HelloMessageBoxForm.h"
Bạn xóa hết nội dung cài đặt mặc định khi tạo dự án mới trong hàm OnForeground thành như sau:
void HelloMessageBox::OnForeground(void) { // TODO: // Start or resume drawing when the application is moved to the foreground. }
Bạn thêm nội dung cài đặt cho hàm OnAppInitializing như sau:
bool HelloMessageBox::OnAppInitializing(AppRegistry& appRegistry) { // TODO: // Initialize UI resources and application specific data. // The application's permanent data and context can be obtained from the appRegistry. // // If this method is successful, return true; otherwise, return false. // If this method returns false, the application will be terminated. HelloMessageBoxForm *pHelloMessageBoxForm = new HelloMessageBoxForm(); pHelloMessageBoxForm->Initialize(); GetAppFrame()->GetFrame()->AddControl(*pHelloMessageBoxForm); return true; }
5. Trong tập tin inc > HelloMessageBoxForm.h, bạn thêm các dòng khai báo như sau:
// Implementation protected: static const int ID_NONE = 100; static const int ID_OK = 101; static const int ID_CANCEL = 102; static const int ID_OKCANCEL = 103; static const int ID_YESNO = 104; static const int ID_YESNOCANCEL = 105; static const int ID_ABORTRETRYIGNORE = 106; static const int ID_CANCELTRYCONTINUE = 107; static const int ID_RETRYCANCEL = 108;
6. Trong tập tin src > HelloMessageBoxForm.cpp, bạn thêm các định nghĩa cho hàm OnInitializing như sau:
result HelloMessageBoxForm::OnInitializing(void) { result r = E_SUCCESS; Button *pButon1 = static_cast<Button *>(GetControl(L"IDC_BUTTON1")); pButon1->SetActionId(ID_NONE); pButon1->AddActionEventListener(*this); Button *pButon2 = static_cast<Button *>(GetControl(L"IDC_BUTTON2")); pButon2->SetActionId(ID_OK); pButon2->AddActionEventListener(*this); Button *pButon3 = static_cast<Button *>(GetControl(L"IDC_BUTTON3")); pButon3->SetActionId(ID_CANCEL); pButon3->AddActionEventListener(*this); Button *pButon4 = static_cast<Button *>(GetControl(L"IDC_BUTTON4")); pButon4->SetActionId(ID_OKCANCEL); pButon4->AddActionEventListener(*this); Button *pButon5 = static_cast<Button *>(GetControl(L"IDC_BUTTON5")); pButon5->SetActionId(ID_YESNO); pButon5->AddActionEventListener(*this); Button *pButon6 = static_cast<Button *>(GetControl(L"IDC_BUTTON6")); pButon6->SetActionId(ID_YESNOCANCEL); pButon6->AddActionEventListener(*this); Button *pButon7 = static_cast<Button *>(GetControl(L"IDC_BUTTON7")); pButon7->SetActionId(ID_ABORTRETRYIGNORE); pButon7->AddActionEventListener(*this); Button *pButon8 = static_cast<Button *>(GetControl(L"IDC_BUTTON8")); pButon8->SetActionId(ID_CANCELTRYCONTINUE); pButon8->AddActionEventListener(*this); Button *pButon9 = static_cast<Button *>(GetControl(L"IDC_BUTTON9")); pButon9->SetActionId(ID_RETRYCANCEL); pButon9->AddActionEventListener(*this); return r; }
Tại hàm OnActionPerformed, bạn thêm các định nghĩa như sau:
void HelloMessageBoxForm::OnActionPerformed(const Osp::Ui::Control& source, int actionId) { MessageBox myMSGBox; switch(actionId) { case ID_ABORTRETRYIGNORE: myMSGBox.Construct(L"AWK MessageBox", L"MSGBOX_STYLE_ABORTRETRYIGNORE", MSGBOX_STYLE_ABORTRETRYIGNORE, 0); break; case ID_CANCEL: myMSGBox.Construct(L"AWK MessageBox", L"MSGBOX_STYLE_CANCEL", MSGBOX_STYLE_CANCEL, 0); break; case ID_CANCELTRYCONTINUE: myMSGBox.Construct(L"AWK MessageBox", L"MSGBOX_STYLE_CANCELTRYCONTINUE", MSGBOX_STYLE_CANCELTRYCONTINUE, 0); break; case ID_NONE: myMSGBox.Construct(L"AWK MessageBox", L"MSGBOX_STYLE_NONE", MSGBOX_STYLE_NONE, 0); break; case ID_OK: myMSGBox.Construct(L"AWK MessageBox", L"MSGBOX_STYLE_OK", MSGBOX_STYLE_OK, 0); break; case ID_OKCANCEL: myMSGBox.Construct(L"AWK MessageBox", L"MSGBOX_STYLE_OKCANCEL", MSGBOX_STYLE_OKCANCEL, 0); break; case ID_RETRYCANCEL: myMSGBox.Construct(L"AWK MessageBox", L"MSGBOX_STYLE_RETRYCANCEL", MSGBOX_STYLE_RETRYCANCEL, 0); break; case ID_YESNO: myMSGBox.Construct(L"AWK MessageBox", L"MSGBOX_STYLE_YESNO", MSGBOX_STYLE_YESNO, 0); break; case ID_YESNOCANCEL: myMSGBox.Construct(L"AWK MessageBox", L"MSGBOX_STYLE_YESNOCANCEL", MSGBOX_STYLE_YESNOCANCEL, 0); break; } int modalResult = 0; myMSGBox.ShowAndWait(modalResult); Label *pLabel = static_cast<Label *>(GetControl(L"IDC_LABEL1")); switch(modalResult) { case MSGBOX_RESULT_ABORT: pLabel->SetText("MSGBOX_RESULT_ABORT"); break; case MSGBOX_RESULT_CANCEL: pLabel->SetText("MSGBOX_RESULT_CANCEL"); break; case MSGBOX_RESULT_CLOSE: pLabel->SetText("MSGBOX_RESULT_CLOSE"); break; case MSGBOX_RESULT_CONTINUE: pLabel->SetText("MSGBOX_RESULT_CONTINUE"); break; case MSGBOX_RESULT_IGNORE: pLabel->SetText("MSGBOX_RESULT_IGNORE"); break; case MSGBOX_RESULT_NO: pLabel->SetText("MSGBOX_RESULT_NO"); break; case MSGBOX_RESULT_OK: pLabel->SetText("MSGBOX_RESULT_OK"); break; case MSGBOX_RESULT_RETRY: pLabel->SetText("MSGBOX_RESULT_RETRY"); break; case MSGBOX_RESULT_TRY: pLabel->SetText("MSGBOX_RESULT_TRY"); break; case MSGBOX_RESULT_YES: pLabel->SetText("MSGBOX_RESULT_YES"); break; default: pLabel->SetText("NONE"); break; } RequestRedraw(); }
Lưu lại các thay đổi của bạn, xong tiến hành Build và Run là bạn có thể xem được thành quả trong vài phút vừa qua của bạn rồi đó.
Khi chương trình thực thi, bạn sẽ nhìn thấy như sau:
Bạn chọn vào mỗi nút, sẽ xuất hiện mỗi dạng messagebox với các nút khác nhau. Trên messagebox sẽ hiện thị lên MSGBOX_STYLE của messagebox. Khi bạn chọn vào nút trên messagebox thì messagebox sẽ mất đi và label trên màn hình sẽ hiển thị MSGBOX_RESULT – giá trị trả về của messagebox.
Ví dụ, bạn chọn vào nút AbortRetryIgnore, một messagebox sẽ xuất hiện như sau:
Giờ bạn chọn vào nút Ignore trên messagebox thì messagebox sẽ mất đi, trên mành hình sẽ hiển thị giá trị trả về của messagebox: MSGBOX_RESULT_IGNORE lên màn hình:
Vậy là qua ví dụ này, bạn đã có thể thao tác với tất cả các loại messagebox của bada rồi đó.
Chúc bạn thành công!
Hello MessageBox tutorial ¶
Bài viết này chúng tôi giới thiệu đến bạn cách tạo và sử dụng các dạng messagebox được hỗ trợ trong Bada Form. Qua ví dụ này, bạn sẽ nắm bắt được hết các loại messagebox cũng như là cách bắt sự kiện trả về của messagebox. Bạn làm các bước như sau:
1. Bạn tạo dự án mới với tên dự án là HelloMessageBox. Chọn kiểu của dự án là bada Frame Based Application.
2. Tại cửa sổ Resource:HelloMessageBox > Form, bạn tạo ra một form mới có tên IDF_FORM1. Trên form, bạn vẽ 1 label và 9 button như hình sau:







Mình dùng bản SDK 1.2.1 cũng làm như hướng dẫn nhưng không add class được, cái mục chọn add class bị ẩn thấy nhưng không kich vô được, phải làm sao hả bạn. ngoài ra thì nó có thêm mục add event handle.