포럼에 한번씩 살짝 왔다 갔다 했습니다.... 프로그램을 조금씩 하다보니...ㅋㅋㅋ
올해는 프로그램을 아주 많이 해보려고 합니다.
작년에는 그렇게 바라던 음악분수 관리자도 해보고... 올해도 좀 봐달라고 하는데... 정규직으로
뽑아 줄 생각이 없는 것 같습니다. 올해도 분수연출곡을 대충 만들어야 하나... 힘이 안남....
프로그램 개발자가 직접 연출을 해주는데도... 이런 봉을 잡을 생각도 안합니다. 공무원 세계는
이해하기가 힘듭니다. 돌대가리인지... 비상한 것인지... ㅋㅋㅋ 그래서 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 추가했습니당...
}
6.0에서 ShowMessage는 TMessageForm이라는 TCustomForm상속받은 폼을 만들어서 ShowModal로 띄워주는것입니다.
원인을 정확히 말씀드리진 못하지만
저도 ShowMessage로 띄운 메세지박스가 뒤로 숨는현상을 격은적이 있습니다.
그래서
Screen->OnActiveFormChange 이벤트에서
ActiveForm되는 폼이 어떤놈인지 보고 메세지박스폼이면( TMessageForm)
강제로 앞으로 보내주곤 하는 꼼수를 쓴곤 했었습니다.
------------------------------------------------------------------------------
그런데 RAD 2007 이후 부터는
모든 TMessageForm 을 포함하여
모든 Sub폼이 생성될때 폼의 WndParent가 0(NULL) 이 아닌 MainForm->Handle로 지정할수 있습니다.
WinMain에서 폼 생성전에 아래와 같이 한줄 추가하시면..
Application->MainFormOnTaskBar = true;
저렇게 한후에 생성된 폼은
어떠한 경우라도 메인폼보다 항상 앞에 나타납니다.
------------------------------------------------
이제 슬슬 최선버젼으로 갈아타심도 고려해 보심이 ....