메세지 박스 종류와 형태 AfxMessageBox MessageBox
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);
}
================================================