BCB紀錄:Winapi 的 MessageBox
這程式碼我都已經弄成介面的基礎建設,放置在主程式的class中,這一切都是ShowMessage不夠Thread-Friendly的關係。
2009-06-05 附註:
若是要給不同class與檔案間都只共用這一組Method,建議去除掉這些Method的inline修飾詞,因為有些時候inline會被compiler展開,所以造成Linker找不到我們宣告的這些Method,在編譯時造成困擾!
inline void TMainForm::ShowMessage(const AnsiString& msg, const AnsiString& cap)
{
::MessageBox(this->Handle, msg.c_str(), cap.c_str(), MB_OK|MB_ICONINFORMATION);
}
inline void TMainForm::ErrorMessage(const AnsiString& msg, const AnsiString& cap)
{
::MessageBox(this->Handle, msg.c_str(), cap.c_str(), MB_OK|MB_ICONERROR);
}
inline void TMainForm::WarnMessage(const AnsiString& msg, const AnsiString& cap)
{
::MessageBox(this->Handle, msg.c_str(), cap.c_str(), MB_OK|MB_ICONWARNING);
}
inline bool TMainForm::ConfirmBox(const AnsiString& msg, const AnsiString& cap)
{
return (IDYES==::MessageBox(this->Handle, msg.c_str(), cap.c_str(), MB_YESNO|MB_ICONQUESTION));
}
2009-06-05 附註:
若是要給不同class與檔案間都只共用這一組Method,建議去除掉這些Method的inline修飾詞,因為有些時候inline會被compiler展開,所以造成Linker找不到我們宣告的這些Method,在編譯時造成困擾!
留言