196 lines
4.7 KiB
C++
196 lines
4.7 KiB
C++
//---------------------------------------------------------------------------
|
|
#include <vcl.h>
|
|
#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.YPos<Top+24 )
|
|
Msg.Result = HTCAPTION;
|
|
}
|
|
|
|
//---------------------------------------------------------------------------
|
|
int __fastcall TMessageForm::ShowMessage( const String AMessage, int AType )
|
|
{
|
|
if( Visible )
|
|
return -1;
|
|
|
|
m_iconInformation->Visible = 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;
|
|
}
|