2013-07-16 94 views
2

我飼養的約定製的消息框設計這個MSDN文章:消息框

User Interface Text

和本地消息框看起來是這樣的:

但我的留言箱看起來像這樣:

這裏就是我想:

我使用C++,這裏是我的代碼(一個爲退出消息確認):

int ccm() 
{ 
    int msgbox = MessageBox(
     NULL, 
     (LPCWSTR)L"Do you really want to quit?", 
     (LPCWSTR)L"Music", 
     MB_ICONQUESTION | MB_YESNO | MB_DEFBUTTON2 
    ); 

    switch (msgbox) 
    { 
     case IDYES: 
      initdw(); 
      break; 
     case IDNO: 
      adw(); 
      break; 
    } 

    return msgbox; 
} 

我打電話CCM();當用戶想退出,我發現它像

case WM_CLOSE: 
    ccm(); 
    return 0; 

,但我想,看起來像原來的windows風格的代碼 我不想設計定製的消息我想本機代碼

+2

我想很多人都表現的例子並不是標準的消息框,他們已經設計成類似於標準的自定義窗口。 –

+0

以及油漆,寫字板,語音識別是本地的 –

回答

5

那種您正在尋找的定製可以通過使用TaskDialog()TaskDialogIndirect()而不是MessageBox()來實現。它們是Vista和更高版本Windows上的首選消息框功能,因爲它們更加靈活,並且可以更多地使用標準化的Windows UI元素,以便與其他UI保持更一致的外觀。

例如:

TaskDialog(hMyWnd, hInstance, L"Music", L"You have the latest version of Music", NULL, TDCBF_OK_BUTTON, MAKEINTRESOURCE(MY_MUSIC_ICON_ID), NULL); 

int iBtn = IDNO; 
if (TaskDialog(hMyWnd, NULL, L"Music", L"Do you really want to quit?", NULL, TDCBF_YES_BUTTON | TDCBF_NO_BUTTON, NULL, &iBtn) == S_OK) 
{ 
    switch (iBtn) 
    { 
     case IDYES: 
      initdw(); 
      break; 
     case IDNO: 
      adw(); 
      break; 
    } 
}