TabControl mit ICON oder BITMAP ??? Bitte anschauen



  • Hallo :xmas1:
    wie kann ich ein Icon oder Bitmap in mein Register (CTabControl) setzen?
    Schaut mal auf meinem Code....geht so leider nicht 😞 😞 😞

    BOOL CMyDlg::OnInitDialog()
    {
    	CDialog::OnInitDialog();
    
    	// 
    
    	// 
    	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
    	ASSERT(IDM_ABOUTBOX < 0xF000);
    
    	CMenu* pSysMenu = GetSystemMenu(FALSE);
    	if (pSysMenu != NULL)
    	{
    		CString strAboutMenu;
    		strAboutMenu.LoadString(IDS_ABOUTBOX);
    		if (!strAboutMenu.IsEmpty())
    		{
    			pSysMenu->AppendMenu(MF_SEPARATOR);
    			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
    		}
    	}
    
    	// 
    	//  
    	SetIcon(m_hIcon, TRUE);			// 
    	SetIcon(m_hIcon, FALSE);		// 
          //#########################################################
          CMyApp *pApp;
          pApp=(CMyApp*)AfxGetApp();
    
    	m_imageTab.Create(16,16,0,0,1);
    	m_imageTab.Add(pApp->LoadIcon(IDI_ICON1));
    
    	CTabCtrl *pTab =(CTabCtrl*) GetDlgItem(IDC_TAB1);
    	pTab->SetImageList(&m_imageTab);
    
    	TC_ITEM Register;
    	Register.mask = TCIF_IMAGE;
    	Register.iImage = 1;
    
    	pTab->SetItem(0,&Register);
         //#########################################################
    
    	return TRUE;  //
    }
    

    Für jede Anregung und Hilfe bin ich sehr danbar.
    Happy Holidays
    :xmas1: :xmas2: Thomas





  • guenni81 schrieb:

    http://www.codeguru.com/cpp/controls/propertysheet/article.php/c611/

    Habe hiermit Probleme....läuft so nicht ??? 😞 😞 😞

    BOOL bResult = CPropertySheet::OnInitDialog();
    

    Hier der ganze code von codeguru.com

    BOOL CMyPropSheet::OnInitDialog()
    {
    	BOOL bResult = CPropertySheet::OnInitDialog();
    
    	m_imageTab.Create( IDB_TABIMAGES, 13, 1, RGB(255,255,255) );
    	CTabCtrl *pTab = GetTabControl();
    	pTab->SetImageList( &m_imageTab );
    
    	TC_ITEM tcItem;
    	tcItem.mask = TCIF_IMAGE;
    	for( int i = 0; i < 3; i++ )
    	{
    		tcItem.iImage = i;
    		pTab->SetItem( i, &tcItem );
    	}
    	return bResult
    

    mfg
    Thomas



  • Du benötigst natürlich auch ein Property-Sheet, damit du dessen Methoden aufrufen kannst - und das bedeutet letztendlich, daß deine Dialog-Klasse von CPropertySheet abgeleitet werden sollte.

    (wenn das nicht passt: eine Fehlermeldung sagt normalerweise mehr aus als "das geht nicht" ;))



  • CStoll schrieb:

    Du benötigst natürlich auch ein Property-Sheet, damit du dessen Methoden aufrufen kannst - und das bedeutet letztendlich, daß deine Dialog-Klasse von CPropertySheet abgeleitet werden sollte.

    (wenn das nicht passt: eine Fehlermeldung sagt normalerweise mehr aus als "das geht nicht" ;))

    Wie kann ich meine Dialog-Klasse von CPropertySheet ableiten?
    Wie überscheibe ich OnInitDialog() ?

    BOOL CMyDlg::OnInitDialog()
    {
    	CDialog::OnInitDialog();
    
    	// Hinzufügen des Menübefehls "Info..." zum Systemmenü.
    
    	// IDM_ABOUTBOX muss sich im Bereich der Systembefehle befinden.
    	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
    	ASSERT(IDM_ABOUTBOX < 0xF000);
    
    	CMenu* pSysMenu = GetSystemMenu(FALSE);
    	if (pSysMenu != NULL)
    	{
    		CString strAboutMenu;
    		strAboutMenu.LoadString(IDS_ABOUTBOX);
    		if (!strAboutMenu.IsEmpty())
    		{
    			pSysMenu->AppendMenu(MF_SEPARATOR);
    			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
    		}
    	}
    
    	// Symbol für dieses Dialogfeld festlegen. Wird automatisch erledigt
    	//  wenn das Hauptfenster der Anwendung kein Dialogfeld ist
    	SetIcon(m_hIcon, TRUE);			// Großes Symbol verwenden
    	SetIcon(m_hIcon, FALSE);		// Kleines Symbol verwenden
    
    	// TODO: Hier zusätzliche Initialisierung einfügen
    
    	return TRUE;  // Geben Sie TRUE zurück, außer ein Steuerelement soll den Fokus erhalten
    }
    

    Sorry immernoch eine Anfänger 😕

    CDialog::OnInitDialog();
    

    ändern auf

    BOOL bResult = CPropertySheet::OnInitDialog();
    

    Ergibt Fehler: Unzulässiger Aufruf einer nicht stat. Memberfunktion
    Was mache ich wohl falsch ??? 😕



  • Du gehst in die Header-Datei deiner Dialogklasse (CMyDlg.h oder so) und änderst dort die Definition

    class CMyDlg : public CDialog
    {
    

    in

    class CMyDlg : public CPropertySheet
    {
    

    (ich hab' die genaue Klassenhierarchie nicht im Kopf - eventuell müsstest du also weitere Anpassungen vornehmen)


Anmelden zum Antworten