|
자답입니다.
정상적으로 Title bar 잔상이 안남는 건 확인했는데
왜 정상동작 하는지는 감이 안잡히네요 -_-;
아무래도 ShowWindow( Handle, SW_MINIMIZE ); 가 제대로 동작하도록 해주는 것 같긴한데 ..
음..
1. FormCreate에 다음 코드를 넣어 줍니다.
ShowWindow( Application->Handle, SW_HIDE);
SetWindowLong(Application->Handle, GWL_EXSTYLE,
GetWindowLong(Application->Handle, GWL_EXSTYLE) & !WS_EX_APPWINDOW | WS_EX_TOOLWINDOW);
ShowWindow(Application->Handle, SW_SHOW);
2. CreateParams 이라는 함수를 생성합니다.
void __fastcall TfrmMain::CreateParams( TCreateParams &Params )
{
TForm::CreateParams(Params);
Params.ExStyle = Params.ExStyle & !WS_EX_TOOLWINDOW | WS_EX_APPWINDOW;
}
//---------------------------------------------------------------------------
3. Main 헤더파일에 선언
void __fastcall CreateParams( TCreateParams &Params );
4. 최소화, 최소화에서 Restore 이벤트 잡아서 처리해줍니다.
WM_SYSCOMMAND 이벤트 입니다.
void __fastcall TfrmMain::OnSysCommand( TMessage &Msg )
{
switch( Msg.WParam )
{
case SC_MINIMIZE:
{
ShowWindow( Handle, SW_MINIMIZE );
return;
}
case SC_RESTORE:
{
ShowWindow(Handle, SW_RESTORE);
return;
}
}
}
TForm::Dispatch(&Msg);
}
//---------------------------------------------------------------------------
고래 님이 쓰신 글 :
: C++ Builder 6.0 사용중에 있습니다.
:
: C++ Builder에서 빈 프로젝트를 만든다음에 (無 코딩)
:
: 실행파일 하나만 가지고
:
: VISTA Basic 테마 윈도우에서 실행시킨 다음에요
:
: '최소화' 버튼.. Minimize 버튼을 클릭하면
:
: Title bar 잔상이 남는문제가 발생하는데요
:
: 이게 났다가 안났다가 그래요
:
: 이 문제가 xp, vista 에어로 테마에서는 전혀 문제가 나지 않고 VISTA Basic 테마에서만 문제가 나는데..
:
: 뭔가 이유가 있을까요?
:
: C++ Builder 만의 무언가..
:
: 빈 프로젝트의 BorderStyle은 bsSingle 이구요..
:
: Width, Height가 크면 클수록 잘 납니다.
:
:
: 이런 문제가 발생해서 해본 방법으로
:
: 최소화 이벤트 잡아서 그때 바탕화면 다시 그려주고.. 그래도
:
: 발생 빈도는 줄어도 잔상이 남는건 여전한데요..
:
: 음..
:
: 최소화 후에 바탕화면 다시 그려주는걸 수행하면
:
: 잔상이 남은 화면에서 사라지는게 눈으로 보여서요
:
: 그게 좀 이상하네요
:
: Form 최소화 시 Title bar 잔상이 왜 남는걸까요
:
: Title bar 위로 한줄이 남아버립니다.
:
: 조언 부탁 드립니다.
|