Avatar billede bjering Nybegynder
19. december 2004 - 01:34 Der er 6 kommentarer og
1 løsning

List Control, indsætte tekst i multi column boxen.

Hejsa eksperter.

Kan ikke rigtig finde noget info der hjælper mig så her er spørgsmålet:

Jeg er ved at lave en list control boks i min win32api vc++ 6.0 program, men kan ikke rigtig finde ud af at sætte tekst ind (dette er min log vindue)

Du kan se hvordan den ser ud her:

http://www.freeplay.dk/box.jpg

bruger lige nu, denne kode, og den virker ikke (ved godt den ikke virker, men måske den kan hjælpe):

void ComWindows::WriteLog(HWND hdwnd, char* Str)
{
  LVCOLUMN lvc;

  char buffer[SIZE];
  time_t curtime;
  struct tm *loctime;
  curtime = time (NULL);
  loctime = localtime (&curtime);
  strftime (buffer, SIZE, "[%D/%M/%Y][%H:%M:%S]", loctime);

  int itemIndex;
  char * iSubItemText=Str;
  char * iItemText=buffer;

  itemIndex=SendDlgItemMessage(hdwnd, IDC_LOGGING, LVM_GETITEMCOUNT , 0 ,0);

  lvc.mask = LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;

  lvc.cx = 135;
  lvc.iSubItem=itemIndex;
  lvc.pszText=iItemText;

  SendDlgItemMessage(hdwnd, IDC_LOGGING, LVM_INSERTITEM, 0, (LPARAM)&lvc);
}

jeg skulle gerne have den til at skrive tiden i Time / Date kolonnen, og teksten (Str) i Log kolonnen, men nu har jeg prøvet 10 forskellige ting, og den vil bare ikke.....

Nogen ide'er, fix's eller spørgsmål?

Takker
Avatar billede bertelbrander Novice
19. december 2004 - 02:02 #1
Du bør nok nulstille lvc inden brug:
memset(&lvc, 0, sizeof(lvc));

Det burde ikke være nødvendigt at sætte WIDTH og SUBITEM, så du bør lave:
lvc.mask = LVCF_TEXT;

Og droppe lvc.cx = 135; og lvc.iSubItem=itemIndex;
Du skal derimod sætte lvc.iItem til itemIndex (SubItem er kolonne nummer).
Avatar billede bertelbrander Novice
19. december 2004 - 02:05 #2
Du burde kunne bruge disse linier til at sætte treksten for anden kolone:

  lvc.pszText = iSubItemText;
  lvc.iSubItem = 1;
  SendDlgItemMessage(hdwnd, IDC_LOGGING, LVM_SETITEMTEXT, itemIndex, (LPARAM )&lvc);
Avatar billede bertelbrander Novice
19. december 2004 - 02:40 #3
Det var ikke helt så let, et komplet eksempel:

void WriteLog(HWND hdwnd, char *Str)
{
  char buffer[256];
  time_t curtime;
  struct tm *loctime;
  curtime = time (NULL);
  loctime = localtime(&curtime);
  strftime(buffer, sizeof(buffer), "[%D/%M/%Y][%H:%M:%S]", loctime);

  int ItemIndex = SendDlgItemMessage(hdwnd, IDC_LOGGING, LVM_GETITEMCOUNT, 0, 0);
  LVITEM lvc;
  memset(&lvc, 0, sizeof(lvc));
  lvc.mask = LVIF_TEXT;
  lvc.pszText = buffer;
  lvc.iItem = ItemIndex;
  SendDlgItemMessage(hdwnd, IDC_LOGGING, LVM_INSERTITEM, 0, (LPARAM )&lvc);

  lvc.pszText = Str;
  lvc.iSubItem = 1;
  SendDlgItemMessage(hdwnd, IDC_LOGGING, LVM_SETITEMTEXT, ItemIndex, (LPARAM )&lvc);
}

Bemærk specielt:    lvc.mask = LVIF_TEXT;
Avatar billede bjering Nybegynder
19. december 2004 - 03:34 #4
ja det virker, vil lige læse lidt op på det jeg fik at vide her (og komme i seng, kl er alt for mange :P (3:34))...

hvis du smider et svar :)
Avatar billede bertelbrander Novice
19. december 2004 - 19:59 #5
Jeg samler ikke på point.
Avatar billede bjering Nybegynder
19. december 2004 - 20:06 #6
rigtigt, havde jeg næsten glemt :o men mange tak
Avatar billede bjering Nybegynder
19. december 2004 - 20:06 #7
skulle have været svar :(
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester