Listenfeld-Problem
-
Hallo,
kann mir jemand sagen, was ich hier falsch mache?
Hab den Dialog Listenfeld, in dem sich nur das Listenfeld IDC_LIST1 und der Button IDC_TEST befinden. Ich will einfach nur das Listenfeld ansprechen und mit Text füllen, wenn ich den Butten drücke, aber es kommt hier immer schon zum zum Absturz bei der Zeile "pLC->InsertColumn(0, "First Name", LVCFMT_LEFT, 50)".
Irgendwas stimmt da mit den Zeigern nicht...wüsste ich nur was. Geht das nicht so einfach, wie ich es hier versuche?Sicher ne dumme Frage, aber weiss echt nicht weiter
CListCtrl* pLC; INT WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR, INT) { DialogBox(hInst, MAKEINTRESOURCE(IDD_LISTENFELD), NULL, Listenfeld); return TRUE; } INT_PTR CALLBACK Listenfeld(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam) { switch( msg ) { case WM_COMMAND: switch(LOWORD(wParam)) { case IDC_TEST: pLC = (CListCtrl*) GetDlgItem(hDlg,IDC_LIST1); pLC->InsertColumn(0, "First Name", LVCFMT_LEFT, 50); ...
-
Versuchs mal mit Klammern '()' :
pLC->InsertColumn(0, ("First Name"), LVCFMT_LEFT, 50);
Gruß
:: NoName ::
-
Nee, daran lag's nicht...
-
Du scheinst Win API zu programmieren, da bin ich nicht fit - aber:
Existiert das Control schon? Wäre das MFC würde ich sagen, du arbeitest vor OnInitDialog damit.
Um die Funktionen zu nutzen muss das Fenster schon erstellt sein.Mach doch mal ein ASSERT(pLC); vor die Zeile wo es knallt.
Oder schau mit dem Debugger, ob es NULL ist oder nicht.
-
Du hast einen Zeiger auf einen ListCtrl.
Du musst also erstmal mit new eins erstellen, um damit arbeiten zu können.
Wenn Du mit new eins erstellen, musst Du es auch mit delete wieder löschen!Außerdem mischt Du MFC mit WinAPI...
per WinAPI kannst Du so ein ListCtrl erstellen:HWND hListCtrl; int WINAPI WinMain( ... ) { ... hListCtrl = CreateWindowEx( NULL, "SysListView32", "Bla", WS_CHILD | WS_VISIBLE, 40, 40, 50, 50, hWnd, NULL, hInstance, NULL ); ... } Nähere Infos zu den Parametern von CreateWindowEx findest Du in der MSDN