Выпуск WinAPI Combo Box - Пропущено в зависимости от ситуации - PullRequest
1 голос
/ 01 марта 2012

Привет всем, интересно, если кто-нибудь может сказать мне, что я делаю неправильно, я сделал диалоговое приложение, и все это было сделано, за исключением одной проблемы - моих комбинированных окон. Я добавил их на вкладку, и они вызываются обработчиком.ниже.Моя проблема в том, где добавить поля со списком, т.е.

   // Sets up the combo box menu 
   HWND hwndComboTab = GetDlgItem(hwndDlg, IDC_COMBO1);
   ComboBox_AddString(hwndComboTab, "Option 1");
   ComboBox_AddString(hwndComboTab, "Option 2");
   ComboBox_AddString(hwndComboTab, "Option 3");

Я предполагал, что это будет под WM_INITDIALOG, но я всегда получаю пропущенную ошибку.Я предполагаю, что это должно быть внутри

вариант 1: например, это правильно?и если да, то какие переменные публикуются в этом разделе как bool?

Также я попытался добавить его до формулировок переключателя, и он работает, но панель параметров многократно копируется, давая мне спам-параметры.

INT_PTR CALLBACK MyTabDialogOne(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam) 
{ 

   // Switches the message for tab 1 control
    switch (uMsg) 
    { 
    case WM_INITDIALOG: // Tryed here case error
        break; 
    case WM_COMMAND:      
        { 
            switch (LOWORD(wParam)) // No point here as this is after a button is clicked
            { 
    case IDC_GET_CODE: // Handles the GET Code button in tab
// Displays the result to main window
HWND hwndEdit2 = GetDlgItem(GetParent(GetParent(hwndDlg)), IDC_OUTPUT);
SetWindowText(hwndEdit2,buffer);
// Displays the result to bottom bar
HWND hwndStatic1 = GetDlgItem(GetParent(GetParent(hwndDlg)), IDC_STATIC1); 
Static_SetText(hwndStatic1, "Completed");
//MessageBox(hwndDlg,TEXT("Selected"),TEXT("Button"),0); 
            break; 
            } 
            break; 
        } 
    } 
    return FALSE ; 
} 

Заранее спасибо

1 Ответ

1 голос
/ 01 марта 2012

Я подозреваю, что когда вы пытались поместить его в WM_INITDIALOG, вы допустили общую ошибку, не ставя скобки вокруг блока:

INT_PTR CALLBACK MyTabDialogOne(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam) 
{ 

   // Switches the message for tab 1 control
    switch (uMsg) 
    { 
    case WM_INITDIALOG:
        {
            HWND hwndComboTab = GetDlgItem(hwndDlg, IDC_COMBO1);
            ComboBox_AddString(hwndComboTab, "Option 1");
            ComboBox_AddString(hwndComboTab, "Option 2");
            ComboBox_AddString(hwndComboTab, "Option 3");
            break; 
        }
    case WM_COMMAND:      
        { 
            switch (LOWORD(wParam)) // No point here as this is after a button is clicked
            { 
                case IDC_GET_CODE: // Handles the GET Code button in tab
                    {
                        // Displays the result to main window
                        HWND hwndEdit2 = GetDlgItem(GetParent(GetParent(hwndDlg)), IDC_OUTPUT);
                        HWND hwndStatic1 = GetDlgItem(GetParent(GetParent(hwndDlg)), IDC_STATIC1); 
                        SetWindowText(hwndEdit2,buffer);
                        // Displays the result to bottom bar
                        Static_SetText(hwndStatic1, "Completed");
                        //MessageBox(hwndDlg,TEXT("Selected"),TEXT("Button"),0); 
                        break; 
                    }
                default:
                    return FALSE;
            } 
            break; 
        } 
    default:
        return FALSE; 
    }

    return TRUE;
} 

Не добавление скобок приводит к объявлению hwndComboTabбыть пропущенным.Я также разобрался с вашими ответными заявлениями.Если вы обработали сообщение, вы должны вернуть TRUE, иначе FALSE.Это за исключением нескольких сообщений, которые задокументированы здесь .

Последнее, что я сделал, - переместил ваши объявления в начало каждой области.Я предполагаю, что ваш файл .cpp, даже если вы, кажется, кодируете C. Если ваше расширение было .c, VC ​​++ будет рассматривать файл как источник C, а то, как вы делаете свои объявления, даже не скомпилируется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...