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
[1151] MessageBox() 사용시 소리가 짜증나는 1인...
박영목.월천 [gsbsoft] 13128 읽음    2014-01-28 19:19
GSBMessageBox.zip 361.8KB 소스 실행 파일
포럼에 한번씩 살짝 왔다 갔다 했습니다.... 프로그램을 조금씩 하다보니...ㅋㅋㅋ
올해는 프로그램을 아주 많이 해보려고 합니다.

작년에는 그렇게 바라던 음악분수 관리자도 해보고...  올해도 좀 봐달라고 하는데... 정규직으로
뽑아 줄 생각이 없는 것 같습니다. 올해도 분수연출곡을 대충 만들어야 하나... 힘이 안남....
프로그램 개발자가 직접 연출을 해주는데도... 이런 봉을 잡을 생각도 안합니다. 공무원 세계는
이해하기가 힘듭니다. 돌대가리인지... 비상한 것인지... ㅋㅋㅋ  그래서 all 자동화 해주고 싶어도....
해줄 마음도 없고... 연출도 대략...  이래서 공무원 사회가 발전을 못하는 것... 같습니다.
제 눈에는 계약직.... 없어져야 할 악으로 보입니다.

올해는 월급도 작년처럼 못준다고...ㅠㅠ 힘이 빠집니다. 그 대신 시간은 자유롭게 주겠다고...
부산시민공원에도 제 프로그램 많이 들어갔는데... 그쪽으로 기웃기웃 하고 있습니다.
그런데 이곳에는 자유시간이 없을 것 같아 고민하고 있습니다. 6~7개월 계약직에 시간을 많이 준다.
6개월 짜리는 내년에 들어온다는 보장도 없고.... ㅋㅋㅋ

C++Builder 6.0  이것 언제까지 사용할지....  손에 익다보니 계속 그냥 사용합니다.

제가 개발한 프로그램들 대부분이 ShowMessage 메세지는 잘 사용하지 않습니다.
이게 혹 한번씩 아빠 윈도우 뒤로 가는 현상이 있는 것을 발견한 후 부터 .. 겁이 나서...
그래서 자주 사용한 것이 WinAPI  MessageBox 입니다. 아이콘도 이쁘고.... 해서 그런데
결정적으로 아이콘에 따라 소리가 납니다. 쿵...  짜쯩이 몰려옵니다...

그래도 사용하는 사람들은 말이 없는데... 저는 짜증이 많이 납니다. 개발된 것 수정을 많이 하기 때문인지....
그래서 오늘은 소리를 나지 않게 해보자.... 몇년을 벼루고 벼루던 것을... 오늘로 끝내자... 아~~짜~~~~
그래서 한참을 검색하다 보니... 어떤 사이트에 소스도 있는 것으로 보이던데... 클릭하니 -300 점 어쩌고 저쩌고..
귀찮아 다시 구글 뒤져서....  쨘~~~ 완성.... 물론 사용하고 있는 분들도 있겠지만... ㅋㅋㅋ

핵심 함수는 이것인데 MessageBoxIndirect()...  아이콘을 집어넣는 것이 어렵더군요... MSDN 문장 잘못 이해한
것인지 아주 간단한데... LoadIcon을 사용해서.. 헐...   그런데 외국 사람도 이것 때문에... 고민한 것을 올려 두었더군요...
ㅋㅋㅋ...  역시 설명서는 볼랜드가 좋습니다. 문장 쉽고... 이해 잘되고... 아참.. GodeGear인가!!!

int __fastcall GSBMessageBox( HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType )  
{
  MSGBOXPARAMS params = {0};

  params.cbSize       = sizeof( MSGBOXPARAMS );
  params.hwndOwner    = hWnd;
  params.hInstance    = NULL;
  params.lpszText     = lpText;
  params.lpszCaption  = lpCaption;
  params.dwStyle      = (uType & 0x0F) | MB_USERICON;
  params.dwLanguageId = MAKELANGID(LANG_NEUTRAL,SUBLANG_NEUTRAL);

  UINT uIcon = uType & 0xF0;

  switch( uIcon )
  {
    case MB_ICONEXCLAMATION:      //MB_ICONWARNING:
         params.lpszIcon = IDI_WARNING;
         break;

    case MB_ICONINFORMATION:      //MB_ICONASTERISK:
         params.lpszIcon = IDI_INFORMATION;
         break;

    case MB_ICONQUESTION:
         params.lpszIcon = IDI_QUESTION;
         break;

    case MB_ICONSTOP:             //MB_ICONERROR, MB_ICONHAND
         params.lpszIcon = IDI_HAND;
         break;
  }

  return ::MessageBoxIndirect ( ¶ms );  // <-- & + params    빠뜨린 return 추가했습니당...  
}

장성호 [nasilso]   2014-01-28 19:36 X
볼랜드 ==> 코드기어 ==>엠바카데로 

6.0에서  ShowMessage는 TMessageForm이라는 TCustomForm상속받은 폼을 만들어서  ShowModal로 띄워주는것입니다.

원인을 정확히 말씀드리진 못하지만
저도 ShowMessage로 띄운 메세지박스가 뒤로 숨는현상을 격은적이 있습니다.

그래서
Screen->OnActiveFormChange 이벤트에서

ActiveForm되는 폼이 어떤놈인지 보고  메세지박스폼이면( TMessageForm)
강제로  앞으로 보내주곤 하는 꼼수를 쓴곤 했었습니다.

------------------------------------------------------------------------------

그런데 RAD 2007 이후 부터는

모든  TMessageForm 을 포함하여
모든 Sub폼이 생성될때 폼의  WndParent가   0(NULL) 이 아닌 MainForm->Handle로 지정할수 있습니다.

WinMain에서 폼 생성전에 아래와 같이 한줄 추가하시면..
Application->MainFormOnTaskBar = true;

저렇게 한후에 생성된 폼은
어떠한 경우라도 메인폼보다 항상 앞에 나타납니다.

------------------------------------------------

이제 슬슬 최선버젼으로 갈아타심도 고려해 보심이 ....
박영목.월천 [gsbsoft]   2014-01-29 01:31 X
호호호 감사합니다. 장성호님.... 잘 지내지요... ㅋㅋㅋ  

우리 아들 중 2 올라가는데... 배가 아프다고 해서 하루 굶겼는데... 저녁에 열이 제법 올라가는 것을 보고....
독감인가? 걱정하다. 병원 응급실로 직행...  배 눌러보고, 콧물, 피,오줌, 검사, X, CT 하더니... 독감은 아니고....
급성 맹장염입니다!...    젠장!!!.... 맹장도 필요하다고 하던데...아~~~  아들 입원시켜 놓고  방금 돌아왔습니다.
내일 아침 수술한다고 합니다. 새벽 4~5시 사이 오라고 하더구요....

자야겠습니다.... 피곤하네요...   그럼.....  올 명절은..... 갔습니다.....

명절 잘 보내세요.....   꾸벅~~~~~~~~~~
박영목.월천 [gsbsoft]   2014-01-29 08:40 X
헐~~~~    심심해서. 병원에서 보니. 마지막에 Return값을 처리하지 않았네요...ㅋ ㅋ ㅋ.   함수에서 return값 받아 return 해줘야겠습니당^^
김태선 [cppbuilder]   2014-02-03 20:19 X
ㅋㅋ 저도 MessageBox를 주로 이용합니다.
띵 소리는 그냥 신경 안쓰고 씁니다.
누가 소리나는거 귀잖다고 하면 연구를 했을텐데

일단 갈무리 해 두겠습니다.
박영목.월천 [gsbsoft]   2014-02-05 01:52 X
또 한분의 고수께서 댓글을 달아 주셨네요...^^  ㅎㅎㅎ...   새해 복 많이 받으세요... 태선님...

어제 분수쪽 개발된 프로그램들 다 적용시켰습니다.  함수명만 바꾸면 되도록 구성했기 때문에

바꾸는 시간도 얼마 걸리지 않았습니다.  소리가 안나니까...  햐!  너무 좋습니다!
 
leo21c [leo21c]   2014-08-14 12:18 X
API중에 비프음을 끄는 것이 있습니다.  SystemParametersInfo
어플 실행할 때 비프음을 비활성화 하고 어플 끝날때 다시 활성화 하면 편합니다.

http://msdn.microsoft.com/en-us/library/windows/desktop/ms724947(v=vs.85).aspx

+ -

관련 글 리스트
1151 MessageBox() 사용시 소리가 짜증나는 1인... 박영목.월천 13128 2014/01/28
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.