C++ WinApi tabela

0

Siema

Mam problem z kodem:

 #include <windows.h>

LPSTR Okno = "Baza danych v0.1";
MSG Komunikat;

LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam );

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
    
    WNDCLASSEX okno;
    HWND przycisk_nowy;
    HWND przycisk_otworz;
    HWND przycisk_usun;
    HWND ramka;
    HWND tabela;
    
    okno.cbSize = sizeof( WNDCLASSEX );
    okno.style = 0;
    okno.lpfnWndProc = WndProc;
    okno.cbClsExtra = 0;
    okno.cbWndExtra = 0;
    okno.hInstance = hInstance;
    okno.hIcon = LoadIcon( NULL, IDI_APPLICATION );
    okno.hCursor = LoadCursor( NULL, IDC_ARROW );
    okno.hbrBackground =( HBRUSH )( COLOR_WINDOW + 1 );
    okno.lpszMenuName = NULL;
    okno.lpszClassName = Okno;
    okno.hIconSm = LoadIcon( NULL, IDI_APPLICATION );
    
    if( !RegisterClassEx( & okno ) )
    {
        MessageBox( NULL, "Błąd", "Błąd: ",
        MB_ICONEXCLAMATION | MB_OK );
        return 1;
    }
    
    HWND hwnd;
    
    hwnd = CreateWindowEx( WS_EX_CLIENTEDGE, Okno, "Baza danych v0.1", WS_OVERLAPPEDWINDOW,
    CW_USEDEFAULT, CW_USEDEFAULT, 650, 430, NULL, NULL, hInstance, NULL );
    
    przycisk_nowy = CreateWindowEx( 0, "BUTTON", "Nowy", WS_CHILD | WS_VISIBLE,
    450,50, 150, 30, hwnd, NULL, hInstance, NULL ); 
    
    przycisk_otworz = CreateWindowEx( 0, "BUTTON", "Otworz", WS_CHILD | WS_VISIBLE,
    450,120, 150, 30, hwnd, NULL, hInstance, NULL ); 
    
    przycisk_usun = CreateWindowEx( 0, "BUTTON", "Usun", WS_CHILD | WS_VISIBLE,
    450,190, 150, 30, hwnd, NULL, hInstance, NULL ); 
    
    if( hwnd == NULL )
    {
        MessageBox( NULL, "Błąd", "Ale kicha...", MB_ICONEXCLAMATION );
        Beep(3000,700);
        return 1;
    }
    
    ShowWindow( hwnd, nCmdShow ); 
    UpdateWindow( hwnd );
    
    while( GetMessage( & Komunikat, NULL, 0, 0 ) )
    {
        TranslateMessage( & Komunikat );
        DispatchMessage( & Komunikat );
    }
    return Komunikat.wParam;
}


LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
    switch( msg )
    {
    case WM_CLOSE:
        DestroyWindow( hwnd );
        break;
        
    case WM_DESTROY:
        PostQuitMessage( 0 );
        break;
        
        default:
        return DefWindowProc( hwnd, msg, wParam, lParam );
    }
    
    return 0;
}

Po kompilacji okienko otwiera się pojawiają się przyciski ale tabeli nie ma.
Z góry dziękuję za pomoc.

2

Jaka tabela? W tym kodzie nie tworzysz niczego oprócz okna i trzech przycisków.

0

Oj sorry miałem dwa kody jeden ten i drugi z tabelą i mi się pomyliły. Tutaj ten poprawny kod:

 #include <windows.h>
#include <commctrl.h>

LPSTR Okno = "Baza danych v0.1";
MSG Komunikat;

LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam );

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
    
    WNDCLASSEX okno;
    HWND przycisk_nowy;
    HWND przycisk_otworz;
    HWND przycisk_usun;
    HWND ramka;
    HWND tabela;
    
    okno.cbSize = sizeof( WNDCLASSEX );
    okno.style = 0;
    okno.lpfnWndProc = WndProc;
    okno.cbClsExtra = 0;
    okno.cbWndExtra = 0;
    okno.hInstance = hInstance;
    okno.hIcon = LoadIcon( NULL, IDI_APPLICATION );
    okno.hCursor = LoadCursor( NULL, IDC_ARROW );
    okno.hbrBackground =( HBRUSH )( COLOR_WINDOW + 1 );
    okno.lpszMenuName = NULL;
    okno.lpszClassName = Okno;
    okno.hIconSm = LoadIcon( NULL, IDI_APPLICATION );
    
    if( !RegisterClassEx( & okno ) )
    {
        MessageBox( NULL, "Błąd", "Błąd: ",
        MB_ICONEXCLAMATION | MB_OK );
        return 1;
    }
    
    HWND hwnd;
    
    hwnd = CreateWindowEx( WS_EX_CLIENTEDGE, Okno, "Baza danych v0.1", WS_OVERLAPPEDWINDOW,
    CW_USEDEFAULT, CW_USEDEFAULT, 650, 430, NULL, NULL, hInstance, NULL );
    
    
    RECT rcl;
    GetClientRect( hwnd, & rcl );
    tabela = CreateWindowEx( 0, WC_LISTVIEW, NULL, WS_CHILD | WS_VISIBLE | LVS_REPORT |
    LVS_EDITLABELS, 200, 200, rcl.right - rcl.left, rcl.bottom - rcl.top,
    hwnd,( HMENU ) 1000, hInstance, NULL );
    
    LVITEM lvi;
    lvi.mask = LVIF_TEXT;

    lvi.pszText = "file.dat";
    lvi.iItem = 0;
    lvi.iSubItem = 0;

    ListView_InsertItem( tabela, & lvi );

    lvi.pszText = "program.exe";
    lvi.iItem = 1;
    lvi.iSubItem = 0;

    ListView_InsertItem( tabela, & lvi );

    lvi.pszText = "archive.zip";
    lvi.iItem = 2;
    lvi.iSubItem = 0;

    ListView_InsertItem(tabela, & lvi );
    
    przycisk_nowy = CreateWindowEx( 0, "BUTTON", "Nowy", WS_CHILD | WS_VISIBLE,
    450,50, 150, 30, hwnd, NULL, hInstance, NULL ); 
    
    przycisk_otworz = CreateWindowEx( 0, "BUTTON", "Otworz", WS_CHILD | WS_VISIBLE,
    450,120, 150, 30, hwnd, NULL, hInstance, NULL ); 
    
    przycisk_usun = CreateWindowEx( 0, "BUTTON", "Usun", WS_CHILD | WS_VISIBLE,
    450,190, 150, 30, hwnd, NULL, hInstance, NULL ); 
    
    if( hwnd == NULL )
    {
        MessageBox( NULL, "Błąd", "Błąd: okienko nie otworzyło się!", MB_ICONEXCLAMATION );
        Beep(3000,700);
        return 1;
    }
    
    ShowWindow( hwnd, nCmdShow ); 
    UpdateWindow( hwnd );
    
    while( GetMessage( & Komunikat, NULL, 0, 0 ) )
    {
        TranslateMessage( & Komunikat );
        DispatchMessage( & Komunikat );
    }
    return Komunikat.wParam;
}


LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
    switch( msg )
    {
    case WM_CLOSE:
        DestroyWindow( hwnd );
        break;
        
    case WM_DESTROY:
        PostQuitMessage( 0 );
        break;
        
        default:
        return DefWindowProc( hwnd, msg, wParam, lParam );
    }
    
    return 0;
}
0
	LV_COLUMN lvc;
	ZeroMemory(&lvc, sizeof(lvc));
	lvc.mask = LVCF_TEXT | LVCF_WIDTH;
	lvc.pszText = "kolumna 1";	
	lvc.cx = 75; // szerokość [px]
	ListView_InsertColumn(tabela, 0, &lvc);

1 użytkowników online, w tym zalogowanych: 0, gości: 1