[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