//--------------------------------------------------------------------------- #include #pragma hdrstop #include "MessageFormUnit.h" #include "GlobalUnit.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "PNGButton" #pragma resource "*.dfm" TMessageForm *MessageForm; //--------------------------------------------------------------------------- __fastcall TMessageForm::TMessageForm(TComponent* Owner) : TForm(Owner) { m_pImgCheck = new TBitmap(); m_pImgCheck->LoadFromResourceName(int(HInstance), L"AutoLoginCheck"); m_iCheck = -1; Font->Color = RGB(60,43,23); SetTransparent( this ); } //--------------------------------------------------------------------------- __fastcall TMessageForm::~TMessageForm() { delete m_pImgCheck; } //--------------------------------------------------------------------------- void __fastcall TMessageForm::WMNCHitTest(TWMNCHitTest &Msg) { TForm::Dispatch(&Msg); if( Msg.Result==HTCLIENT && Msg.YPosVisible = false; m_iconError->Visible = false; m_iconQuestion->Visible = false; m_btnYes->Visible = false; m_btnNo->Visible = false; m_btnOk->Visible = false; m_btnCancel->Visible = false; int iIconType = AType & 0x0F0; if( iIconType==MB_ICONERROR ){ m_iconError->Visible = true; } else if( iIconType==MB_ICONQUESTION ) { m_iconQuestion->Visible = true; } else if( iIconType==MB_ICONINFORMATION ) { m_iconInformation->Visible = true; } int iButtonType = AType & 0x0F; if( iButtonType==MB_OK ){ m_btnOk->Visible = true; m_btnOk->Left = (Width - m_btnOk->Width)/2 + 6; } else if( iButtonType==MB_OKCANCEL ){ m_btnOk->Visible = true; m_btnCancel->Visible = true; m_btnOk->Left = (Width - (m_btnOk->Width+6)*2 )/2 + 6; m_btnCancel->Left = m_btnOk->Left + m_btnOk->Width + 6; } else if( iButtonType==MB_YESNO ){ m_btnYes->Visible = true; m_btnNo->Visible = true; m_btnYes->Left = (Width - (m_btnYes->Width+6)*2 )/2 + 6; m_btnNo->Left = m_btnYes->Left + m_btnYes->Width + 6; } else if( iButtonType==MB_YESNOCANCEL ){ m_btnYes->Visible = true; m_btnNo->Visible = true; m_btnCancel->Visible = true; m_btnYes->Left = (Width - (m_btnYes->Width+6)*3 )/2 + 6; m_btnNo->Left = m_btnYes->Left + m_btnYes->Width + 6; m_btnCancel->Left = m_btnNo->Left + m_btnNo->Width + 6; } int iCheckType = AType & 0xF00; if( iCheckType ){ if( iCheckType==MB_CHECKED ){ m_iCheck = 1; } else if( iCheckType==MB_UNCHECKED ){ m_iCheck = 0; } m_pbCheck->Show(); m_lblCheckMessage->Show(); } else{ m_pbCheck->Hide(); m_lblCheckMessage->Hide(); } m_lblMessage->Caption = AMessage; HRGN hRgn = CreateRoundRectRgn( 0, 0, Width+1, Height+2, 20, 20 ); SetWindowRgn( Handle, hRgn, false ); DeleteObject( hRgn ); return ShowModal(); } //--------------------------------------------------------------------------- void __fastcall TMessageForm::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift) { switch( Key ){ case VK_RETURN: case ' ': if( m_btnYes->Visible ) ModalResult = mrYes; else if( m_btnOk->Visible ) ModalResult = mrOk; break; case VK_ESCAPE: if( m_btnCancel->Visible ) ModalResult = mrCancel; break; case 'Y': if( m_btnYes->Visible ) ModalResult = mrYes; break; case 'N': if( m_btnNo->Visible ) ModalResult = mrNo; break; } } //--------------------------------------------------------------------------- void __fastcall TMessageForm::CheckPaint(TObject *Sender) { //绘制Check状态 if( m_iCheck>=0 ){ int x = 0; if( m_iCheck==0 ){ x = -m_pImgCheck->Width/2; } m_pbCheck->Canvas->Draw(x, 0, m_pImgCheck); } } //--------------------------------------------------------------------------- void _fastcall TMessageForm::SetCheckMessage( String strMessage ) { if( strMessage.IsEmpty() ){ m_lblCheckMessage->Caption = L"不再提示"; } else{ m_lblCheckMessage->Caption = strMessage; } } //--------------------------------------------------------------------------- void __fastcall TMessageForm::CheckClick(TObject *Sender) { //切换Check状态 if( m_iCheck==0 ){ m_iCheck = 1; } else{ m_iCheck = 0; } m_pbCheck->Invalidate(); } //--------------------------------------------------------------------------- void __fastcall TMessageForm::CheckMessageClick(TObject *Sender) { CheckClick( NULL ); } //--------------------------------------------------------------------------- bool TMessageForm::GetCheckState() { return (m_iCheck==1)?true:false; }