Класс "listbox"
От: IgorKr Украина  
Дата: 25.12.10 17:30
Оценка:
Хочу создать окно класса "listbox". Но выбрасывает ошибки.
Пример кода:
#include <windows.h>

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

#define ID_LISTBOX 3000;

char szClassName[] = "MyClass";
char szClasslistbox[]= "listbox";
HWND hMainWnd,hListBox;
HINSTANCE hInst;
///////////////////////////////////////////////////////////////////////////////////////////////
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    hInst=hInstance;
    MSG msg;
    WNDCLASSEX wc;
    
    // Заполняем структуру класса окна
    wc.cbSize        = sizeof(wc);        
    wc.style         = CS_HREDRAW | CS_VREDRAW;
    wc.lpfnWndProc   = WndProc;
    wc.cbClsExtra     = 0;
    wc.cbWndExtra    = 0;
    wc.hInstance     = hInstance;
    wc.hIcon         = LoadIcon(NULL, IDI_APPLICATION);
    wc.hCursor       = LoadCursor(NULL, IDC_ARROW);
    wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
    wc.lpszMenuName  = NULL;
    wc.lpszClassName = szClassName;
    wc.hIconSm       = LoadIcon(NULL, IDI_APPLICATION);

    // Регистрируем класс окна
    if (!RegisterClassEx(&wc)) {
        MessageBox(NULL, "Cannot register Main class", "Error", MB_OK);
        return 0;
    }

    // Создаем основное окно приложения
    hMainWnd = CreateWindow( 
        szClassName, "MainWindow", WS_OVERLAPPEDWINDOW|WS_VISIBLE,
        CW_USEDEFAULT, CW_USEDEFAULT, 600, 400,
        (HWND)NULL, (HMENU)NULL,
        (HINSTANCE)hInstance, NULL
    );
    if (!hMainWnd) {
        MessageBox(NULL, "Cannot create main window", "Error", MB_OK);
        return 0;
    }
    CreateWindow("ListBox",NULL,WS_CHILD|WS_VISIBLE|WS_BORDER,0,0,50,100,(HWND)hMainWnd,(HMENU)ID_LISTBOX,hInst,NULL);
    
    // Показываем наше окно
    ShowWindow(hMainWnd, nCmdShow); 
//    ShowWindow(hsubmain, nCmdShow);


//    UpdateWindow(hMainWnd);

    // Выполняем цикл обработки сообщений до закрытия приложения
    while (GetMessage(&msg, NULL, 0, 0))  {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

    return msg.wParam;
}


///////////////////////////////////////////////////////////////////////////////////////////////
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    HDC hDC;
    PAINTSTRUCT ps;
    RECT rect;

    switch (msg)
    {
    case WM_PAINT:
        {
        hDC = BeginPaint(hWnd, &ps);

        GetClientRect(hWnd, &rect);
        DrawText(hDC, "TEXT. MAIN WINDOW.", -1, &rect,
            DT_SINGLELINE | DT_CENTER | DT_VCENTER );
        
        EndPaint(hWnd, &ps);
        return 0;
        }
    /*case WM_RBUTTONDOWN:
        {
            hListBox=CreateWindow("listbox","",WS_CHILD|WS_VISIBLE|WS_BORDER,0,0,50,100,(HWND)hWnd,(HMENU)ID_LISTBOX,hInst,NULL);
            return 0;
        }*/
    case WM_CLOSE:
        DestroyWindow(hWnd);
        return 0;

    case WM_DESTROY:
        PostQuitMessage(0);
        return 0;

    default:
        return DefWindowProc(hWnd, msg, wParam, lParam);
    }

    return 0;
}
///////////////////////////////////////////////////////////////////////////////////////////////


Ошибки следующие:
Error 1 error C2143: syntax error : missing ')' before ';'
Error 2 error C2660: 'CreateWindowExA' : function does not take 10 arguments
Error 3 error C2143: syntax error : missing ';' before ','
Error 4 error C2059: syntax error : ')'
Все ошибки указывают на рядок где создается listbox.
В чем то проблема?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.