Глючит ListView помогите пожалуйста! СРОЧНО!
От: soolitarY  
Дата: 31.05.11 18:22
Оценка:
Здравствуйте

Впервые пишу программу с интерфейсом — форма на чистом WinAPI. Столкнулся с такой проблемой:

На форме 2 ListView в них выводятся числовые данные, при появлении полосы прокрутки на одном из ListView все дочерние объекты на форме перестают отображаться. а скролл ListView сильно мерцает. при нажатии на этот ListView — всё проходит. Я уже не знаю что и делать. привожу создание объектов:


case WM_CREATE:
        {
        GetClientRect(hWnd, &Rect);

        h_Chk1 = CreateWindow(TEXT("button"), TEXT("Graphic"),
                 WS_VISIBLE | WS_CHILD | BS_CHECKBOX,
                 Rect.right - 550, 
         300  + 10, 
         100, 
         20,
         hWnd, (HMENU)0xCB01, (HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE), NULL);
            h_Chk2 = CreateWindow(TEXT("button"), TEXT("Diagram"),
                 WS_VISIBLE | WS_CHILD | BS_CHECKBOX,
                 Rect.right - 550, 
         300  + 35, 
         100, 
         20,
         hWnd, (HMENU)0xCB02, (HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE), NULL);
            CheckDlgButton(hWnd, 0xCB01, BST_UNCHECKED);
        CheckDlgButton(hWnd, 0xCB02, BST_UNCHECKED);
                
                hListViewCh = CreateWindow(
                    WC_LISTVIEW, 
                    _T("MyList"),
                    LVS_REPORT|WS_CHILD|WS_VISIBLE,
                    Rect.right - 265,
                    377,
                         250,
                    200,
                    hWnd, (HMENU)listViewCh, (HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE), NULL);
                //--
                LVCOLUMN lvColumn = {0};
                lvColumn.mask = LVCF_FMT|LVCF_WIDTH|LVCF_TEXT;
                lvColumn.fmt = LVCFMT_CENTER;
                lvColumn.pszText = "№";
                lvColumn.cx = 30;
                ListView_InsertColumn(hListViewCh, 0, &lvColumn);
                lvColumn.pszText = "Property";
                lvColumn.cx = 70;
                ListView_InsertColumn(hListViewCh, 1, &lvColumn);
                lvColumn.pszText = "Value";
                lvColumn.cx = 120;
                ListView_InsertColumn(hListViewCh, 2, &lvColumn);
                //--
             hListView = CreateWindow(
              WC_LISTVIEW,
              _T("Set of variate values"),
              LVS_REPORT|WS_CHILD|WS_VISIBLE,
              Rect.right - 550,
              Rect.top   +  15,
              535,
              275,
              hWnd,
              (HMENU)listView,
              (HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE),
              NULL);
                //--
                lvColumn.mask = LVCF_FMT|LVCF_WIDTH|LVCF_TEXT;
                lvColumn.pszText = "No";
                lvColumn.fmt = LVCFMT_CENTER;
                lvColumn.cx = 43;
                                ListView_InsertColumn(hListView, 0, &lvColumn);
                //--
                lvColumn.pszText = "[ a[i-1]      ,         a[i] )";
                lvColumn.cx = 151;
                ListView_InsertColumn(hListView, 1, &lvColumn);
                //--
                lvColumn.pszText = "xi";
                lvColumn.cx = 85;
                ListView_InsertColumn(hListView, 2, &lvColumn);
                //--
                lvColumn.pszText = "ni";
                ListView_InsertColumn(hListView, 3, &lvColumn);
                //--
                lvColumn.pszText = "V";
                ListView_InsertColumn(hListView, 4, &lvColumn);
                //--
                lvColumn.pszText = "EV";
                ListView_InsertColumn(hListView, 5, &lvColumn);
                break;
}

в WM_PAINT есть функции перерисовки, чтобы при расширении окон всё было красиво и двигалось с ними

            //-- LISTVIEW POSITION
            SetWindowPos(hListViewCh, NULL,\
                                Rect.right - 265,
                                312,
                                250,
                                200,
                                SWP_NOSIZE);
            //-- LISTVIEW POSITION
            SetWindowPos(hListView, NULL,\
                                Rect.right - 550,\
                                Rect.top   +  15,\
                                535,\
                                340,\
                                SWP_NOSIZE|SWP_NOZORDER);
            //--


Не представляю в чем проблема. ПОМОГИТЕ СРОЧНО!

02.06.11 11:38: Перенесено из 'C/C++. Прикладные вопросы'
c++ winapi
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.