ListView win32 Callback



  • kann ich einem ListView ein eigenes CallBack für window messages zuweisen, oder muss es das callback des MainWindow sein wo die Listview aufgebettet ist?

    lg
    bh



  • pOrgWndProc = SetWindowLong(hListView,GWL_WNDPROC,&WndProc_SubClass);
    ...
    LRESULT WNDPROC WndProc_SubClass(...)
    {
        switch(uMsg)
        {
        case ???:
        {
         ...
        }break;
        default:
            return CallWindowProc(pOrgWndProc,...);
        }
        retrun 0;
    }
    

  • Mod

    Man muss in jedem Fall eine eigene WndProc zuordnen. Die Messagees des ListView werden doch ganz anders behandelt...



  • naja kann ich über wenn cih mit CreateWindow ein Listview erzeuge dann auch eine RegisterClass anweisung durchführen die instantz also intialisieren und dann eben per CreateWindow zuorden?' werden dann alle Messeges die das ListView betreffen auf das CallBack zugordnet?

    sind jez nur teile eines codes:

    ATOM ListViewRegisterClass(HINSTANCE hInstance)
    {
    	WNDCLASSEX wcex;
    
    	wcex.cbSize = sizeof(WNDCLASSEX);
    
    	wcex.style			= CS_HREDRAW | CS_VREDRAW;
    	wcex.lpfnWndProc	= ListViewCallBack;
    	wcex.cbClsExtra		= 0;
    	wcex.cbWndExtra		= 0;
    	wcex.hInstance		= hInstance;
    	//wcex.hIcon			= LoadIcon(hInstance, MAKEINTRESOURCE(IDI_A_FORMS));
    	wcex.hCursor		= LoadCursor(NULL, IDC_ARROW);
    	wcex.hbrBackground	= (HBRUSH)(COLOR_WINDOW+1);
    	wcex.lpszMenuName	= NULL;//L"NoMenu";//MAKEINTRESOURCE(IDC_A_FORMS);
    	wcex.lpszClassName	= L"ListViewClass";
    	//wcex.hIconSm		= LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));
    
    	return RegisterClassEx(&wcex);
    }
    
    ListViewRegisterClass(g_hInst);
    
    HWND hWndListView = CreateWindow(WC_LISTVIEW, 
                                    ListName, 
                                    WS_CHILD | LVS_REPORT | LVS_EDITLABELS |LVS_SORTDESCENDING,
                                    PosX, 
                                    PosY, 
                                    Width, 
                                    Hight, 
                                    hwndParent, 
                                    (HMENU)ID_LISTVIEW, 
                                    g_hInst, 
                                    NULL);
    

    und nun eben das callback, werdend a jez alle messeges des ListView CreateWindow behandelt?

    LRESULT CALLBACK ListViewCallBack(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){
    	 	LV_DISPINFO *lvinfo;
    		switch(message)
    {
    case WM_NOTIFY:
    ...
    ..
    .
    

Anmelden zum Antworten