[ sucur @ 13.03.2006. 21:01 ] @
Dakle kako da dobijem i postavim vrijednost trenutnog indexa, jerdnostavnim pritiskom na neko dugme ili da jednostavno index odaberem pomcu misa.
Dakle kada ovo postavim u WM_CREATE:
int getCurent;
SendMessage(hComboBox, CB_SETCURSEL, 3, 0);
getCurent = SendMessage(hComboBox, CB_GETCURSEL, 0, 0);

On mi regularno postavi trenutni index na tri i u getCurent postavi takodje tri, ali ne znam kako da to obavljam dalje u radu programa, tj. van WM_CREATE.
Pokusavao sam ovako u WM_COMMAND:
case 80: //Ovo je hmenu Comboa
switch HIWORD(wParam)
{
case CBN_SELENDOK:
getCurent = SendMessage(hComboBox, CB_GETCURSEL, NULL, NULL) ;
return 0;

Al' kao getCurent uvijek dibijem 0. Dakle kako se ovo odradjuje ako moze primjer koda.
[ stargazer @ 13.03.2006. 22:20 ] @
ako i dalje koristiš "BUTTON" pri pravljenju comboa funkcijom CreateWindowEx, onda ti pomoći nema, ali ako ne :

probaj da obradiš CBN_SELCHANGE poruku
koliko znam ona ne zavisi od stilova koje si zadao pri pravljenju kontrole


[Ovu poruku je menjao stargazer dana 13.03.2006. u 23:35 GMT+1]
[ sucur @ 14.03.2006. 17:58 ] @
Ma sredjeno je to sa "button" ;-), al' ovo drugo nece da odradi kako treba.
[ stargazer @ 15.03.2006. 02:50 ] @
ako i dalje neće, daj ovde kod kojim praviš taj combo

[Ovu poruku je menjao stargazer dana 15.03.2006. u 03:51 GMT+1]
[ sucur @ 15.03.2006. 21:31 ] @
Ma kreira on uredno kombo i postavi i uzme trenutni aktivni element u neki int, kada pozovem sve to u WM_CREATE
al' kako da postavim i uzmem trenutnu vrijednost van Create message-a, jer ona samo sto bi se reklo inicijalizuje sve, dok u daljem radu se koriste ostale komande.
Evo koda:
Code:
int getCurent = 0;
case WM_CREATE:
SendMessage(CB, CB_SETCURSEL, 3, 0);
getCurent = SendMessage(CB, CB_GETCURSEL, 0, 0);

Evo ovdje dakle u WM_CREATE on uredno mi postavi 3 element kao aktivan i u getCurent integer stavi 3.
Ali dalje kako da radim sa njima, tj. kako dalje u programu da uzimam i postavljam trenutni element.
Evo kako sam pokusao:
Code:
case WM_COMMAND:
switch LOWORD(wParam)
{
case IDCOMBOBOX:
switch HIWORD(wParam)
{
case CBN_SELENDOK:
getCurent = SendMessage(CB, CB_GETCURSEL, NULL, NULL) ;
wsprintf(b, "Index: %i", getCurent);
MessageBox(hwnd, b, "info", MB_OK);
return 0;
}
return 0;
}

Al' u getCurent uvijek dobijem 0, pa mi nije jasno kako u WM_CREATE dobijem tacnu vrijednost, a ovdje nikako da to dobijem, vec uvijek 0, dakle kako se ovo odradjuje, znaci najednostavniji kod mi treba kada sa misem odaberem neki element sa combo liste, da na neki integer prenesem njegovu vrijednost, kako bi dalje mogao u programu da koristim taj izabrani element.
A evo kreiranja comboboxa
Code:
hComboBox = CreateWindowEx(0,"COMBOBOX", "", 
    WS_CHILD | WS_VISIBLE | WS_VSCROLL | CBS_DROPDOWNLIST , 
    0, 200, 100, 100, hwnd, (HMENU) IDCOMBOBOX, ((LPCREATESTRUCT)lParam)->hInstance, NULL);
[ sucur @ 15.03.2006. 21:46 ] @
Ej otklonio sam problem, eh kako je glup, al' jbg kad malo ne paznje uradite nesto pogresno, svi ste barem jednom
stavili ; iza for petlje ili if, gadne greske, e ja sam ovdje kreirao HWND cComboBox u WM_CREATE, zasto ne znam ni sam,
nepaznja, al' dobro je da je otklonjeno.