2014-12-29 83 views
0

我有一個帶有多個按鈕的對話框。點擊它們中的任何一個都將基於單個模板創建一個「子對話框」(如果這是正確的術語......資源文件中的單個子對話框定義和ID)。如何獲得單擊打開對話框的按鈕的控件ID?

例如,從父對話的對話過程:

case WM_COMMAND: 
    switch (LOWORD(wparam)) { 
     case IDC_MAPBUT1: 
     case IDC_MAPBUT2: 
     case IDC_MAPBUT3: 
     case IDC_MAPBUT4: 
     case IDC_MAPBUT5: 
     case IDC_MAPBUT6: 
     case IDC_MAPBUT7: 
     case IDC_MAPBUT8: 
     case IDC_MAPBUT9: 
     case IDC_MAPBUT10: 
      DialogBox(
       g_hinstance, 
       MAKEINTRESOURCE(IDD_DIALOG2), 
       hwnd, 
       CPUMapDlgProc); 
      return TRUE; 
     //etc 

我需要知道其中一個按鈕被點擊它(同時還在子對話框),因爲我需要閱讀來自相應結構的數據。我怎樣才能做到這一點?

+0

您可以手動檢查每個按鈕是否已被點擊。或者,你可以寫一個函數,說「openDialog(buttonName)」,並在所有按鈕的「click」事件中調用該函數。 –

+5

將'LOWORD(wparam)'的值保存到'CPUMapDlgProc'可以查看的全局變量中,或者調用'DialogBoxParam'並將其作爲參數傳遞給'WM_INITDIALOG'消息。 –

+0

@JonathanPotter DialogBoxParam非常適合這項法案,謝謝。如果您將它作爲答案發布,我會接受它。 – eurotrash

回答

1

保存的LOWORD(wparam)值的全局變量CPUMapDlgProc可以看看,或致電DialogBoxParam並把它傳遞作爲WM_INITDIALOG消息的參數。

相關問題