C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 팁&트릭
C++Builder Programming Tip&Tricks
[1178] 잠시 메시지 보여주고 스스로 사라지는 메시지창.
김태선 [cppbuilder] 1636 읽음    2016-05-17 11:24
어떨때 ShowMessage나 MessageBox로 메시지를 출력하고 몇초간 사용자가 창을 닫지 않으면
스스로 닫게 하는 메시지창이 필요할 경우도 있습니다.
그때 긁어 쓰기 좋은 코드.


class TShowMessageTimeout
{
	TTimer *Timer;
public:
	void __fastcall OnTimer(TObject *sender)
	{
		delete Timer;

		// Enter or ESC
		keybd_event(27, 0, 0, 0);
		keybd_event(27, 0, KEYEVENTF_KEYUP, 0);
	}

	TShowMessageTimeout(String msg, int time_ms)
	{
		Timer = new TTimer(Application);
		Timer->Interval = time_ms;
		Timer->Enabled = true;
		Timer->OnTimer = OnTimer;

		// 아래 메시지박스 창 계열은 다 됩니다.
		//ShowMessage(msg);
		MessageBox(Application->Handle, msg.c_str(), "Message", MB_OK);
	}

};

WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
        // 사용 : 메시지 보여주고 2초뒤 스스로 닫힙니다.
	TShowMessageTimeout msg("Program already running...", 2000);



원리는 메시지창 보여주고 ESC를 누른 것 같은 효과를 내주는 것인데,
이로 인한 단점이 하나 있습니다.
메시지 창이 표시 될때 사용자가 마우스를 다른 곳으로 이동해 클릭해서
메시지창이 포커스를 잃으면 망구(표준어: 아무) 소용 없다는 것.

하지만 단독으로 동작하는 프로그램이라면 큰 걱정 없이 쓸수도 있습니다.
아쉬우면 또 여기에 보강하면 되고요.


+ -

관련 글 리스트
1178 잠시 메시지 보여주고 스스로 사라지는 메시지창. 김태선 1636 2016-05-17
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.