簡體   English   中英

c++ win32:將值添加到 ComboBox

[英]c++ win32 : adding values to ComboBox

我相信這個問題對你們所有的專家來說都很簡單,但我是 C++ 的新手,並試圖在我的程序中將 comboBox 添加到“選項”對話框中,我已經完成了以下操作,但仍然看不到組合中的任何項目box 你能告訴我我在這里缺少什么嗎?

在 Resource.h 中: #define IDD_TRIGGER_MODE 201

在 Project.rc 中: COMBOBOX IDD_TRIGGER_MODE, 64,22,68,14,WS_TABSTOP | WS_VSCROLL | CBS_DROPDOWN COMBOBOX IDD_TRIGGER_MODE, 64,22,68,14,WS_TABSTOP | WS_VSCROLL | CBS_DROPDOWN

.cpp 文件中的任何一個我都有以下代碼:

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){
int wmId, wmEvent;
PAINTSTRUCT ps;
HDC hdc;

switch (message)
{
case WM_COMMAND:    
    ///Other codes///
        case IDM_OPTIONS:       

    g_hToolbar = CreateDialog(hInst, MAKEINTRESOURCE(IDD_OPTION_BOX), hWnd, ToolDlgProc);
    if(g_hToolbar != NULL)
    {
        ShowWindow(g_hToolbar, SW_SHOW);
    }        
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    break;
///Other codes///
}

ToolDlgProc function:

INT_PTR CALLBACK ToolDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
UNREFERENCED_PARAMETER(lParam);
 HWND fgModes;

switch (message)
{
case WM_INITDIALOG:
     fgModes = ::GetDlgItem(hDlg, IDD_TRIGGER_MODE);
  fgModes = GetDlgItem(hDlg, IDD_TRIGGER_MODE); 
     if(fgModes!=NULL){
     if(SendMessage(fgModes,CB_ADDSTRING,0, reinterpret_cast<LPARAM (_T("FreeRun")))==NULL){            
        return (INT_PTR)FALSE ;          
     }                  
    return (INT_PTR)TRUE;
     }

case WM_COMMAND:
    if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
    {
        EndDialog(hDlg, LOWORD(wParam));
        return (INT_PTR)TRUE;
    }
    break;
}
return (INT_PTR)FALSE;
}

我申請解決這個問題的任何想法,謝謝

非常感謝你的幫助。 但我注意到我的代碼沒有問題,只是 ComboBox in.rc 文件的大小很小(因為我缺乏 c++ API 的經驗),所以我將它更改為 42,現在我可以看到我的項目了。 這是編輯后的代碼:

COMBOBOX IDD_TRIGGER_MODE, 64,22,69,42,WS_CHILD|WS_VISIBLE|CBS_DROPDOWNLIST

改變:

SendMessage(fgModes,CB_ADDSTRING,0, reinterpret_cast<LPARAM>("FreeRun"));

到:

SendMessage(fgModes,CB_ADDSTRING,0, reinterpret_cast<LPARAM>(_T("FreeRun")));

您混合使用CreateWindow/Ex和資源是否有充分的理由? 我假設是CreateWindow/Ex ,因為我看到您正在為第一個 cpp 使用WndProc ,而不是DialogProc

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM