Tab Control



  • wenn ich das mit dialogen machen wollte - woher soll ich wissen welches dialog gezeigt werden soll wenn ich nie TCN_SELCHANGE bekomm ?



  • hoffe hab s net falsch verstanden?

    phDlg    = new HWND[2];
                 phDlg[0] = CreateDialog(((LPCREATESTRUCT)lParam)->hInstance, 
                    MAKEINTRESOURCE(IDD_DIALOG1), hWnd, DlgProc1);
                 phDlg[1] = CreateDialog(((LPCREATESTRUCT)lParam)->hInstance, 
                    MAKEINTRESOURCE(IDD_DIALOG2), hWnd, DlgProc2);
    
    case TCN_SELCHANGE:
                          // Diese Notification wird gesendet, *nachdem* das TabCtrl
                          // die Auswahl geaendert hat. Dies ist ein guter Zeitpunkt,
                          // um den zur Auswahl passenden Dialog anzuzeigen
                          phDlg   = (HWND*)GetWindowLongPtr(hWnd, GWLP_USERDATA);
                          nCurSel = TabCtrl_GetCurSel(((LPNMHDR)lParam)->hwndFrom);
    
                          if(0 == nCurSel)
                              ShowWindow(phDlg[0], SW_SHOW);
                          else if(1 == nCurSel)
                              ShowWindow(phDlg[1], SW_SHOW);
    


  • ja hast du

    du fuehrst aktionen in

    case TCN_SELCHANGE:

    aus, nur
    ich bekomm die message TCN_SELCHANGE nie
    wird bei mir nie ausgefuehrt



  • warum switch (wmEvent)

    und nicht switch(((LPNMHDR)lParam)->code)



  • weil das nichts aendert

    switch(((LPNMHDR)lParam)->code)
    

    ist ebenfalls 0

    /=

    selbst wenn ich das tab control in spy++ reinzieh und das tab wechsel, zeigt spy++ keine message - und im hauptfenster immer nur das WM_NOTIFY, das param ist immer 0



  • Schwieriger Kunde kannst du den rest von deinen code zeigen



  • japs, ich find das auch sehr merkwuerdig

    die messages fliegen alle ungefiltert in diese methode

    LRESULT CMyApp::Messages(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
    	int wmId = LOWORD(wParam);
    	int wmEvent = HIWORD(wParam);
    	this->hWnd = hWnd;
    	switch(message)	{
    		case WM_NOTIFY:
    			switch(wmEvent){
    			case TCN_SELCHANGING:
    			case TCN_SELCHANGE:
    				int iPage = TabCtrl_GetCurSel(m_TabCtrl);
    				OnTabPaint(iPage+1);
    				break; 
    			}
    			break;
    		case WM_CREATE:		OnCreate();		break;
    		case WM_SIZE:		OnSize();		break;
    		case WM_PAINT:		OnPaint();		break;
    		case WM_DESTROY:	OnDestroy();	break;
    		default:	return DefWindowProc(hWnd, message, wParam, lParam);
    	}
    	return 0;
    }
    

    das TCN_SELCHANGING hab ich zu testzwecken dazu gepackt, da komm ich auch nie hin



  • Benutzt du ne seperate Classe fuer dein TabCtrls



  • ne, habs aber grad rausgefunden

    ich hab immer wParam verwendet da ich das dachte ueberall gelesen zu haben, das von dir hatte ich probiert, aber versehentlich auch mit wParam

    nu gehts

    dank



  • ok 😃 :xmas1:


Anmelden zum Antworten