Listbox ohne dialogfeld
-
Guten Abend,
ich wollte mal nachfragen, ob jemand ein Beispiel fuer eine Listbox hat, welches mit paar Elementen gefuellt ist, jedoch bitte nicht als Dialogfenster. Wollte es auf meiner Grafischen Oberflaeche einbinden.
Vielen Dank schon mal...
-
Gut das die MSDN Library wieder aus der Mode gerät -.-
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/wincontrols.aspsind alle Ctrls einmal aufgelistet... so dann klickt man da auf ListBox.... dann Using List Box .... jetzt sollte man sich noch die jeweiligen Beispiele mit ShowExample öffnen.... fertig -.-
-
Okay, ich habe nun meine ListBox erschaffen und mit paar Elementen gefuellt. Besser gesagt, mit der Anzahl der Zeilen eines Bildes
Wie lese ich nun das selctierte Element aus?
hwndList = CreateWindowEx(NULL, TEXT("listbox"), NULL, WS_CHILD | WS_VISIBLE | WS_VSCROLL , 400,20,100,100, hWnd, (HMENU)IDL_LISTBOXZ, NULL, NULL); for (i = 0; i < bitmap.bmHeight; i++){ itoa(i, string1, 10); SendMessage(hwndList, LB_ADDSTRING, 0,(LPARAM)(string1)); SendMessage(hwndList, LB_SETITEMDATA, i, (LPARAM)i); }
-
messages LB_GETCURSEL und LB_GETITEMDATA
bsp:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/listboxes/usinglistboxes.asp
-
Sorry, aber ich krieg es nicht hin.
Ich moechte das selektierte Element als MSG Box ausgeben. Koennte mir bitte jemand debei helfen!? DANKE
-
zeig doch mal deinen ansatz
-
Also ich brauche das Element, welches gerade ausgewaehlt wurde und das sollte dann an ein Label geschickt werden... Zu Testzwecken wollte ich es erstmal als MSGBOX ausgeben lassen...
LRESULT CALLBACK WndProc(HWND hWnd, UINT umsg, WPARAM wParam, LPARAM lParam) { char string[255]; static HINSTANCE hInstance; HDC hdc, hdcMem; static HBITMAP hBitMap; static BITMAP bitmap ; PAINTSTRUCT ps ; #define IDC_LIST 4000 static HWND hwndList; static HWND hwndLabel; int i; char help; char string1[5]; case WM_COMMAND: switch(LOWORD(wParam)){ //... case IDL_LISTBOXZ: switch (HIWORD(wParam)){ //case LBN_SELCHANGE: hwndList = GetDlgItem(hWnd, IDL_LISTBOXZ); nItem = SendMessage(hwndList, LB_GETCURSEL, 0, 0); i = SendMessage(hwndList, LB_GETITEMDATA, nItem, 0); itoa(i, string1, 5); MessageBox(hWnd,string1, "Die Nachricht WM_COMMAND wurde erzeugt", MB_OK); return TRUE; } break; } break;
-
wieso hast du LBN_SELCHANGE auskommentiert?
-
Weil ich ansonsten keine MsgBox erhalte
-
msdn schrieb:
Remarks
This notification message is not sent if the LB_SETCURSEL message changes the selection.
This notification message applies only to a list box that has the LBS_NOTIFY style.
-
Urploetzlich steht nu ein LBS_NOTIFY bei mir in der ListBox

hwndList = CreateWindowEx(... | LBS_NOTIFY , ...);VIELEN VIELEN DANK
