[C con Clase] HDN BEGINTRACK ListView

Fernando profacua en yahoo.com.mx
Mar Jun 10 08:26:39 CEST 2008


IDE..: Dev-C++
Leng.: API-C
S.O..: Win98

Hola Steven, ya intenté agregar las instrucciones a mi dialogo y no c q pasa, pues aún no se deshabilita el cursor en el LV, tengo dos proyectos: en uno sólo tengo un diálogo y en otro proyecto tengo una ventana c menu q activa un Dlg junto c el LV; sin embargo en ninguno jala... el código sig. es del Dlg s/ ventana:

#define _WIN32_IE 0x501
#include <windows.h>
#include <commctrl.h>
#include "ids.h"

WNDPROC WndProcOriginal;

LRESULT CALLBACK HeaderProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam ); 

LRESULT CALLBACK HeaderProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam ) 
{
    HD_HITTESTINFO hti; 
    
    switch( message ) 
    { 
        case WM_LBUTTONDOWN: 
        case WM_LBUTTONDBLCLK: 
            hti.pt.x = LOWORD(lParam); 
            hti.pt.y = HIWORD(lParam); 
            SendMessage( hwnd, HDM_HITTEST, 0, (LPARAM)(&hti) ); 
            if( hti.flags & (HHT_ONDIVIDER | HHT_ONDIVOPEN) ) 
            return 0; 
        break; 
        case WM_SETCURSOR: 
            return TRUE;
    } 
    return CallWindowProc( WndProcOriginal, hwnd, message, wParam, lParam ); 
}



BOOL CALLBACK ProcDlg(HWND hDlg, UINT uMje, WPARAM wParam, LPARAM lParam)
{
    
    static HWND hwndListView;
    static HWND hHeader;
    
    LVCOLUMN lvc;
    LVITEM liEle;
    
    static char *pcColumnas[6]={"Cantidad","Unidad","Código","Descripción","Prec.Unit.","Importe"};
    static char *pcElemListView[4][6]=
    {
        {"5","KG","0001","HUEVO ROJO","12.00","65.00"},
        {"10","CN","0005","CONO VACIO",".50","5.00"},
        {"2","KG","0002","HUEVO BLANCO","13.00","26.00"},
        {"7","CJ","0006","LECHE LALA LIGHT","10.50","73.50"},
    };

   int iCol;
   int static i=0, iFil=0, iLong=10;
   
    switch(uMje)
    {
        case WM_INITDIALOG:
            InitCommonControls();
            
            hHeader = ListView_GetHeader( hwndListView ); 
            WndProcOriginal = (WNDPROC)SetWindowLongPtr( hHeader, GWLP_WNDPROC, (LONG_PTR)HeaderProc ); 

            hwndListView = GetDlgItem(hDlg, IDC_LISTVIEW);
            for(iCol=0; iCol<6; iCol++)
            {
                lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
                lvc.iSubItem = iCol;
                lvc.pszText = pcColumnas[iCol];
                iLong*=(strlen(pcColumnas[iCol]));
                lvc.cx = iLong;
                lvc.fmt = LVCFMT_CENTER;
                ListView_InsertColumn(hwndListView, iCol, &lvc);
                iLong=10;
            }
            ListView_SetExtendedListViewStyle(hwndListView, LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_HEADERDRAGDROP);
            break;
        case WM_COMMAND:
            switch(LOWORD(wParam))
            {
                case BTN_ACEPTAR:
                    hwndListView = GetDlgItem(hDlg, IDC_LISTVIEW);
                    liEle.mask = LVIF_TEXT;
                    liEle.iItem = iFil ;
                    for(iCol=0; iCol<6; iCol++)
                    {
                        liEle.iSubItem = iCol;
                        liEle.pszText= pcElemListView[i][iCol];
                        liEle.cchTextMax = strlen(pcElemListView[i][iCol]);
                        if(iCol==0) ListView_InsertItem(hwndListView, &liEle);
                        else ListView_SetItem(hwndListView, &liEle);
                    }
                    iFil++; i++;
                    if(i==4) i=0;
                    break;
                case BTN_LIMPIAR:
                      break;
            }
            break;
        case WM_CLOSE:
            EndDialog(hDlg, FALSE);
            break;
        case WM_DESTROY:
            SetWindowLongPtr( hHeader, GWLP_WNDPROC, (LONG_PTR)WndProcOriginal ); 
            EndDialog(hDlg, FALSE);
            break;
        default:
            return(FALSE);
    }
    return(TRUE);
}

int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hInstPrev, LPSTR lpszEntrada, int iModoVisu)
{
    return(DialogBox(hInst, MAKEINTRESOURCE(DLG_GRAL),NULL,ProcDlg));
}


GRACIAS... Fer.


Más información sobre la lista de distribución Cconclase