Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

ListView - dodawanie elementów z innych kontrolek po naciśnięciu przycisku

Ostatnio zmodyfikowano 2011-05-11 23:43
Autor Wiadomość
Osina
Temat założony przez niniejszego użytkownika
» 2011-05-09 16:38:34
Tak potrafię to zrobić. Tylko że jeśli zamiast funkcji MessageBox(...) do WM_COMMAND wstawię makra ListView_InsertItem i ListView_SetItemText to to nie działa.


/edit:

No więc, potrafi mi ktoś pomóc? MessageBox wyświela się bez problemu, a tekst nie chce. Zauważyłem, że chyba wszystko co dotyczy ListView musi być w jednym miejscu - w tym wypadku WM_INITDIALOG. Jeżeli część (LVITEM, ListView_InsertItem i ListView_SetItemText) przerzucę do WM_COMMAND to tekst się po naciśnięciu buttona najzwyczajniej w świecie nie wyświetla. Proszę was o pomoc jestem w całkowitej kropce, już nic nie przychodzi mi do głowy.
P-32900
Osina
Temat założony przez niniejszego użytkownika
» 2011-05-11 22:31:01
No więc, może mi ktoś pomóc? To jest dla mnie bardzo ważne i dość pilne, a nie mam pojęcia jak to zrobić
P-32973
malan
» 2011-05-11 23:43:10
C/C++
#include <Windows.h>
#include <Commctrl.h>

HWND editBoxControlHandle, listViewControlHandle;
INT currentItemIndex;

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

INT WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, INT nCmdShow )
{
    HWND addButtonHandle, windowHandle;
   
    WNDCLASSEX windowClass;
    windowClass.cbSize = sizeof( WNDCLASSEX );
    windowClass.style = NULL;
    windowClass.lpfnWndProc = WndProc;
    windowClass.cbClsExtra = NULL;
    windowClass.cbWndExtra = NULL;
    windowClass.hInstance = hInstance;
    windowClass.hIcon = LoadIcon( NULL, IDI_APPLICATION );
    windowClass.hCursor = LoadCursor( NULL, IDC_ARROW );
    windowClass.hbrBackground =( HBRUSH ) COLOR_WINDOW;
    windowClass.lpszMenuName = NULL;
    windowClass.lpszClassName = L"WindowClassName";
    windowClass.hIconSm = LoadIcon( NULL, IDI_APPLICATION );
   
    if( !RegisterClassEx( & windowClass ) )
    {
        //...
        return 1;
    }
   
    INITCOMMONCONTROLSEX initCommonControls;
    initCommonControls.dwSize = sizeof INITCOMMONCONTROLSEX;
    initCommonControls.dwICC = ICC_LISTVIEW_CLASSES;
    if( !InitCommonControlsEx( & initCommonControls ) )
    {
        //...
        return 2;
    }
   
    windowHandle = CreateWindowEx( WS_EX_CLIENTEDGE, L"WindowClassName", L"T - 4254", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 640, 480, NULL, NULL, hInstance, NULL );
    if( !windowHandle )
    {
        //...
        return 3;
    }
   
    editBoxControlHandle = CreateWindowEx( WS_EX_CLIENTEDGE, L"EDIT", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER, 50, 50, 200, 25, windowHandle, NULL, hInstance, NULL );
    if( !editBoxControlHandle )
    {
        //...
        return 4;
    }
   
    addButtonHandle = CreateWindowEx( WS_EX_CLIENTEDGE, L"BUTTON", L"Dodaj", WS_CHILD | WS_VISIBLE, 50, 100, 200, 25, windowHandle,( HMENU ) 1, hInstance, NULL );
    if( !addButtonHandle )
    {
        //...
        return 5;
    }
   
    listViewControlHandle = CreateWindowEx( 0, WC_LISTVIEW, NULL, WS_CHILD | WS_VISIBLE | LVS_REPORT, 50, 150, 200, 100, windowHandle,( HMENU ) 1000, hInstance, NULL );
    if( !listViewControlHandle )
    {
        //...
        return 6;
    }
   
    LVCOLUMN column;
    column.mask = LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
   
    column.iSubItem = 0;
    column.cx = 200;
    column.pszText = L"Dane";
    ListView_InsertColumn( listViewControlHandle, 0, & column );
   
    ListView_SetExtendedListViewStyle( listViewControlHandle, LVS_EX_GRIDLINES );
   
    ShowWindow( windowHandle, SW_SHOW );
   
    MSG message;
    while( GetMessage( & message, NULL, 0, 0 ) )
    {
        TranslateMessage( & message );
        DispatchMessage( & message );
    }
   
    return message.wParam;
}

LRESULT CALLBACK WndProc( HWND hWindow, UINT msg, WPARAM wParam, LPARAM lParam )
{
    switch( msg )
    {
    case WM_CLOSE:
        DestroyWindow( hWindow );
        break;
       
    case WM_COMMAND:
        {
            if(( HMENU ) wParam ==( HMENU ) 1 )
            {
                DWORD textLength = GetWindowTextLength( editBoxControlHandle );
                if( textLength > 0 )
                {
                    ++textLength;
                    WCHAR * text = new WCHAR[ textLength ];
                   
                    if( GetWindowText( editBoxControlHandle, text, textLength ) > 0 )
                    {
                        LVITEM item;
                        item.mask = LVIF_TEXT;
                       
                        item.pszText = text;
                        item.iItem = currentItemIndex;
                        item.iSubItem = 0;
                       
                        if( ListView_InsertItem( listViewControlHandle, & item ) != - 1 )
                             ++currentItemIndex;
                       
                    }
                    delete[] text;
                }
            } //if
        }
        break;
       
    case WM_DESTROY:
        PostQuitMessage( 0 );
        break;
       
        default:
        return DefWindowProc( hWindow, msg, wParam, lParam );
    }
   
    return 0;
}
Wybaczcie mi bracia i siostry. Wiem, że zgrzeszyłem, ale już nie wytrzymałem. Kierowałem się emocjami. Jestem gotów ponieść stosowną karę...
P-32974
1 2 « 3 »
Poprzednia strona Strona 3 z 3