반응형


http://iq_up.blog.me/100125952192 

 

 

 

 

 

VC++ 에서

AfxMessageBox 및
MessageBox 사용 예

C:\Program Files\Microsoft Visual Studio\VC98>findstr /c:"MB_ICON" /s *.h
Include\MSI.H://  A message box icon type:  MB_ICON*, where no icon is the default
Include\MSIQUERY.H:// MB_ICONERROR, MB_ICONQUESTION, MB_ICONWARNING, MB_ICONINFORMATION
Include\WINUSER.H:#define MB_ICONHAND                 0x00000010L
Include\WINUSER.H:#define MB_ICONQUESTION             0x00000020L
Include\WINUSER.H:#define MB_ICONEXCLAMATION          0x00000030L
Include\WINUSER.H:#define MB_ICONASTERISK             0x00000040L
Include\WINUSER.H:#define MB_ICONWARNING              MB_ICONEXCLAMATION
Include\WINUSER.H:#define MB_ICONERROR                MB_ICONHAND
Include\WINUSER.H:#define MB_ICONINFORMATION          MB_ICONASTERISK
Include\WINUSER.H:#define MB_ICONSTOP                 MB_ICONHAND
Include\WINUSER.H:#define MB_ICONMASK                 0x000000F0L


Include\MSIQUERY.H://MB_OK,MB_OKCANCEL,MB_ABORTRETRYIGNORE,MB_YESNOCANCEL,MB_YESNO,MB_RETRYCANCEL
Include\MSIQUERY.H:// Returns Win32 button codes: IDOK IDCANCEL IDABORT IDRETRY IDIGNORE IDYES IDNO


MessageBox(hDlg,"message","title",MB_ICONWARNING|MB_YESNO);
이렇게 할 수 도 있고.

MessageBox(0,"desktop message","title",MB_ICONWARNING|MB_YESNO);
MessageBox(hDlg,"message","title",MB_ICONWARNING|MB_OK);

::AfxMessageBox("AfxMessageBox(\"메시지\")");
::AfxMessageBox("MB_ICONHAND",MB_ICONHAND);
::AfxMessageBox("MB_ICONQUESTION",MB_ICONQUESTION);
::AfxMessageBox("MB_ICONEXCLAMATION",MB_ICONEXCLAMATION);
::AfxMessageBox("MB_ICONASTERISK",MB_ICONASTERISK);
::AfxMessageBox("MB_ICONWARNING",MB_ICONWARNING);
::AfxMessageBox("MB_ICONERROR",MB_ICONERROR);
::AfxMessageBox("MB_ICONINFORMATION",MB_ICONINFORMATION);
::AfxMessageBox("MB_ICONSTOP",MB_ICONSTOP);
::AfxMessageBox("MB_ICONMASK",MB_ICONMASK);
::AfxMessageBox("MB_ICONMASK | MB_ABORTRETRYIGNORE",MB_ICONMASK | MB_ABORTRETRYIGNORE);//
::AfxMessageBox("MB_DEFBUTTON3 는 3번째 버튼을 디폴트로 활성화 합니다.(1~3)",MB_ICONMASK | MB_ABORTRETRYIGNORE|MB_DEFBUTTON3);//


::AfxMessageBox("AfxMessageBox(\"메시지\")");

유의: 아이콘에 대한 정의가 없으면 기본적으로 경고느낌표이다.

아래의 알림느낌표와 경고느낌표의 아이콘이 다름에도 유의하자.

- 정의하지 않거나,MB_ICONWARNING,MB_ICONEXCLAMINATION 이거나 3가지 경우이다.

 

::AfxMessageBox("MB_ICONHAND",MB_ICONHAND);


::AfxMessageBox("MB_ICONQUESTION",MB_ICONQUESTION);


::AfxMessageBox("MB_ICONEXCLAMATION",MB_ICONEXCLAMATION);



::AfxMessageBox("MB_ICONASTERISK",MB_ICONASTERISK);
알림 느낌표이다.

위의 경고느낌표와는 느낌이 조금 다르다.

Asterisk 는 별표이다. information으로 해도 된다.


::AfxMessageBox("MB_ICONWARNING",MB_ICONWARNING);

                                                         



::AfxMessageBox("MB_ICONERROR",MB_ICONERROR);



::AfxMessageBox("MB_ICONINFORMATION",MB_ICONINFORMATION);




::AfxMessageBox("MB_ICONSTOP",MB_ICONSTOP);

 



::AfxMessageBox("MB_ICONMASK",MB_ICONMASK);




::AfxMessageBox("MB_ICONMASK | MB_ABORTRETRYIGNORE",MB_ICONMASK | MB_ABORTRETRYIGNORE);


::AfxMessageBox("MB_DEFBUTTON3 는 3번째 버튼을 디폴트로 활성화 합니다.(1~3)",MB_ICONMASK | MB_ABORTRETRYIGNORE|MB_DEFBUTTON3);

 

AfxMessageBox 자동으로 닫기

출처: http://k.daum.net/qna/view.html?category_id=QCA&qid=0CoCn&q=AfxMessageBox

 

저는 OnTimer를 이용해서 닫는 방법을 소개하지요.. 
Test란 이름으로 Project를 만들었을 경우 

void CTestDlg::OnTest() 

SetTimer(1, 500, NULL); 
AfxMessageBox("kdkdkd"); 


void CTestDlg::OnTimer(UINT nIDEvent) 

CString strCaption; // 윈도우 캡션 
CWnd* pWnd=AfxGetMainWnd()->GetWindow(GW_HWNDFIRST); 
while(pWnd) { 
if(pWnd->IsWindowVisible() && 
pWnd->GetWindowTextLength() && pWnd->GetOwner != NULL) { 
pWnd->GetWindowText(strCaption); 
if(strstr(strCaption,"TEST") != NULL) break; 

pWnd = pWnd->GetWindow(GW_HWNDNEXT); 


if(pWnd) 

pWnd->SendMessage(WM_CLOSE, 0, 0L); 
KillTimer(1); 

CDialog::OnTimer(nIDEvent); 
}

================================================

참고: http://msdn.microsoft.com/ko-kr/library/w0kywcw3.aspx

http://msdn.microsoft.com/ko-kr/library/as6se7cb.aspx

반응형

+ Recent posts