In einem Listenfenster Nachricht bekommen wenn der Scrollbutton gedrückt wurde



  • Wenn ich das SubClass bekomme ich probleme in der WM_PAINT:...
    Da werden verschiedene bereiche des Fensters neu gezeichnet oder als falsch markiert....



  • Wenn ich das SubClass bekomme ich probleme in der WM_PAINT:...
    Da werden verschiedene bereiche des Fensters neu gezeichnet oder als falsch markiert....

    😕 Du musst doch nicht WM_PAINT behandeln!



  • LRESULT CALLBACK PROClistbox(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
    	return CallWindowProc(wndProcTab3,hWnd, message, wParam, lParam);
    }
    
    LRESULT CALLBACK wndProcTab3(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
    {
    	static HWND LHours;
    
    	switch(uMsg)
    	{
    		case WM_CREATE:
    		{	
    		LHours=CreateWindow("listbox",0,WS_CHILD|WS_VSCROLL|WS_VISIBLE|WS_CAPTION,
    							  100,100,100,60,hWnd,(HMENU)23,hInst,0);
    			SendMessage(LHours, LB_INSERTSTRING, 0, (LPARAM) "la");
    			SendMessage(LHours, LB_INSERTSTRING, 0, (LPARAM) "la");
    			SendMessage(LHours, LB_INSERTSTRING, 0, (LPARAM) "la");
    			SendMessage(LHours, LB_INSERTSTRING, 0, (LPARAM) "la");
    		// SetWindowLong(LHours,GWL_WNDPROC,(LONG)PROClistbox);
    

    Lasse Ich SetWindowLong weg, werden die Einträge angezeigt. Wenn ich jedoch die Kommentare entferne werden die Einzelnen Einträge nicht angezeigt.... 😮



  • {
    	static HWND LHours;
    
    	switch(uMsg)
    	{
    		case WM_CREATE:
    		{	
    			LHours=CreateWindow("listbox",0,WS_CHILD|WS_VSCROLL|WS_VISIBLE|WS_CAPTION,
    							  100,100,100,60,hWnd,(HMENU)23,hInst,0);
    
    			if(SendMessage(LHours, LB_INSERTSTRING, 0, (LPARAM) "la")==LB_ERR)MessageBox(0,"lol",0,0);
    			SendMessage(LHours, LB_INSERTSTRING, 0, (LPARAM) "la");
    			SendMessage(LHours, LB_INSERTSTRING, 0, (LPARAM) "la");
    			SendMessage(LHours, LB_INSERTSTRING, 0, (LPARAM) "la");
    			break;
    		}
    		case WM_CTLCOLORLISTBOX:
    			{
    				SetWindowLong(LHours,GWL_WNDPROC,(LONG)PROClistbox);
    				break;
    			}
    

    Jetzt Funktionierts 😉



  • Funktioniert doch nicht. Wenn ich wie gesagt ein paar Strings reinsetze, und dann das Teil subclasse, werden die Strings nicht mehr angezeigt....Wie kann ich das vermeiden? - ich brauche unbedingt die WM_VHSCROLL von der listbox



  • keiner eine idee?



  • du speicherst nirgendwo den rückgabewert von SetWindowLong. hast du subclassing überhaupt verstanden?



  • augen auf...
    LRESULT CALLBACK PROClistbox(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
    return CallWindowProc(wndProcTab3,hWnd, message, wParam, lParam);
    }



  • ROFL.



  • hmmmmmm schrieb:

    ROFL.

    Zu Untertrieben 😃

    [cpp]
    static WNDPROC AlteWndProcDerListBox (WNDPROC)SetWindowLong(....PROClistbox...)
    //...
    LRESULT CALLBACK PROClistbox(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
    return CallWindowProc(AlteWndProcDerListBox,hWnd, message, wParam, lParam);
    }
    [/cpp]


Anmelden zum Antworten