Zum Inhalt springen

TinTin

Mitglieder
  • Gesamte Inhalte

    433
  • Benutzer seit

  • Letzter Besuch

Beiträge von TinTin

  1. Ich habe einen Programm der mit DAO auf einen Access 2000 DB zugreift

    Es funktioniert alles super, leider haben die Admins Office 2003 installiert,

    zeit dessen bringt das Programm Fehler bei der Methode Open:

    „Nicht erkennbares Datenbankformatâ€

    Hat da schon jemand Erfahrungen damit gemacht ??

    Mich würde interessieren wie du das gemacht hast. Soweit ich bisher zu wissen

    glaubte, kann man mit VC++ 6.0 und DAO (also dem Jet Treiber) nur auf Access97

    zugreifen. Mit welcher Entwicklungsumgebung arbeites du denn? Falls es VC++6

    sein sollte, würde es mich echt brenned interessieren wie du das gemacht hast.

    TinTin

  2. Der Vollständigkeit halber, so hab ich 's gelöst:

    
    void CMyDlg::OnBuFolder() 
    
    {
    
    
        char szBuffer[MAX_PATH];
    
        LPMALLOC pMalloc = NULL;
    
        LPITEMIDLIST pidl = NULL;
    
        BROWSEINFO bi;
    
    
    
        CoInitialize(NULL);
    
        ZeroMemory(&bi, sizeof(BROWSEINFO));
    
    
        bi.hwndOwner = m_hWnd;
    
    
        bi.ulFlags = BIF_NEWDIALOGSTYLE | BIF_USENEWUI | BIF_EDITBOX | BIF_RETURNONLYFSDIRS | BIF_STATUSTEXT;
    
        bi.lpfn = (BFFCALLBACK)&BrowseCallbackProc;
    
        bi.lParam = (LPARAM)this;
    
    
        pidl = SHBrowseForFolder(&bi);
    
        if (pidl != NULL)
    
    	{
    
    		SHGetPathFromIDList(pidl,szBuffer);
    
    
    		if (szBuffer[0] == '\0') 
    
    			GetCurrentDirectory(sizeof(szBuffer),szBuffer);
    
    		m_csFolder = szBuffer;
    
    
    		if (m_csFolder.ReverseFind('\\') != m_csFolder.GetLength()-1)
    
    		{
    
    			m_csFolder += "\\";
    
    		}
    
    	}
    
    
    	if(SUCCEEDED(SHGetMalloc(&pMalloc)) && pMalloc)
    
    	{
    
            pMalloc->Free(pidl);  
    
            pMalloc->Release(); 
    
    	}
    
        CoUninitialize();
    
    
    	UpdateData(FALSE);
    
    }
    
    
    int CALLBACK CMyDlg::BrowseCallbackProc(HWND hWnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
    
    {
    
    	CName2TagVvDlg* pThis = (CName2TagVvDlg*)lpData;
    
    	ASSERT( pThis != NULL );
    
    
        switch(uMsg)
    
        {
    
        case BFFM_INITIALIZED:
    
            {
    
    			TCHAR szText[MAX_PATH] = {0};
    
    			if (!pThis->m_csFolder.IsEmpty())
    
    			{
    
    				strcpy(szText,pThis->m_csFolder);
    
    			}
    
    			else GetCurrentDirectory(sizeof(szText),szText);
    
    			::SendMessage( hWnd,BFFM_SETSELECTION, TRUE, reinterpret_cast<LPARAM>(szText));
    
    
            }
    
            break;
    
    
        case BFFM_SELCHANGED:
    
            {
    
                TCHAR szText[MAX_PATH] = {0};
    
                SHGetPathFromIDList(reinterpret_cast<LPITEMIDLIST>(lParam), szText);
    
                ::SendMessage(hWnd, BFFM_SETSTATUSTEXT, 0,reinterpret_cast<LPARAM>(szText));
    
            }
    
            break;
    
        }
    
    
        return 0;
    
    
    }
    
    

    TinTin

  3. Sorry, ich hab deine Frage jetzt ein paar mal gelesen, aber wirklich verstanden

    was du willst habe ich nicht. Liegen deine Tabellen nur im HTML-Format vor?

    Oder hast du die Werte in irgend einer anderen Form vorliegen?

    TinTin

    PS: Form, Rechtschreibung und Ausdruck sind nicht nur schmückendes Beiwerk.

  4. int CALLBACK BrowseCallbackProc(
    
        HWND hWnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
    
    {
    
        	if(BFFM_INITIALIZED == uMsg)
    
    	{        
    
    			TCHAR szText[MAX_PATH] = {0};
    
    			GetCurrentDirectory(sizeof(szText),szText);
    
    
              SendMessage(hWnd, BFFM_SETSELECTION, TRUE, reinterpret_cast<LPARAM>(szText));
    
    
    	}
    
    	return 0;
    
    
    
    }

    OK, so gehts jetzt. Stelltsich nur abschliesend die Frage, wie übergebe ich am

    besten dynamisch einen Pfad über den lParam in die BROWSEINFO?

    Wie Übergebe ich das am besten?

    TinTin

  5. ich habe meine Callback Funktion jetzt so aufgebaut, aber da tut sich nichts.

    Will meinen es wird nichts vorbelegt, bzw. aufgeklappt.

    int CALLBACK BrowseCallbackProc(
    
        HWND hWnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
    
    {
    
    	WCHAR pChar[MAX_PATH] = L"d:\\temp\0";
    
    
        	if(BFFM_INITIALIZED == uMsg)
    
    	{
    
    			AfxMessageBox("BFFM_INITIALIZED");
    
    			SendMessage(hWnd, BFFM_SETSELECTION, TRUE, reinterpret_cast<LPARAM>(pChar));
    
    	}
    
    	return 0;
    
    
    
    }

  6. Sind die einzelnen Buttons Kindfenster der Toolbar? Dann könntest du die einfach durchenumerieren.

    
    if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, [B][COLOR=DarkRed]WS_CHILD[/COLOR][/B] | WS_VISIBLE | CBRS_TOP
    
    		| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
    
    		!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
    
    	{
    
    		TRACE0("Symbolleiste konnte nicht erstellt werden\n");
    
    		return -1;      // Fehler bei Erstellung
    
    	}
    
    

    Nach dem hier:

    WS_CHILD Creates a child window. Cannot be used with the WS_POPUP style.

    ist die ToolBar ein Kindfenster vom MainFrm, was jetzt aber mit den Button ist

    kann ich nicht genau sagen. Was müsste ich denn machen um die durchzunummerieren?

    Kann mir jemand was zu dem Assertion fehler Sagen, was stimmt nicht mit

    meinem h_hWnd???

    Es muss doch möglich sein den Blöden ToolTipText zur laufzeit zu ändern.

    TinTin

  7. Du fragst ja Sachen. Kann ich Dir gar nicht genau sagen. Das Project ist ein

    standard MFC/MDI Projekt. Und derToolBar ist 'IDR_MAINFRAME' mit Neu, Öffnen, usw.

    
    
    int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
    
    {
    
    	if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
    
    		return -1;
    
    
    	if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
    
    		| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
    
    		!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
    
    	{
    
    		TRACE0("Symbolleiste konnte nicht erstellt werden\n");
    
    		return -1;      // Fehler bei Erstellung
    
    	}
    
    	CString csText;
    
    	CToolInfo ToolInfo;
    
    	m_wndToolBar.GetToolBarCtrl().GetToolTips()->GetText(csText,XXX);
    
    
    	return 0;
    
    }
    
    
    
    So Schaut das bei mir in der 'mainfrm.cpp' aus. Egal ob GetText() oder GetToolTips(), immer wenn ich sachen wie NULL, this usw, als Pointer bekomme ich eine Access Violation mit einem Hinweis auf diese Stelle.
      void CToolTipCtrl::GetText(CString& str, CWnd* pWnd, UINT nIDTool) const
    
    {
    
    [COLOR=DarkOrange][B]->[/B][/COLOR]	ASSERT(::IsWindow(m_hWnd));
    
    	ASSERT(pWnd != NULL);
    
    
    	TOOLINFO ti;
    
    	FillInToolInfo(ti, pWnd, nIDTool);
    
    	ti.lpszText = str.GetBuffer(256);
    
    	::SendMessage(m_hWnd, TTM_GETTEXT, 0, (LPARAM)&ti);
    
    	str.ReleaseBuffer();
    
    }

  8. 	CToolInfo ToolInfo;
    
    	m_wndToolBar.GetToolBarCtrl().GetToolTips()->GetToolInfo(ToolInfo,[COLOR=DarkRed][B]XXX[/B][/COLOR]);
    so komme ich wohl von der Nase ans Gehirn. Bleibt nur die Frage was gebe ich der Methode zu fressen (XXX)? Und jetzt bitte keine himweise wie z.B.
      BOOL GetToolInfo(
    
       CToolInfo& ToolInfo,
    
       CWnd* pWnd,
    
       UINT_PTR nIDTool = 0
    
    ) const;

    Wie komme ich an den sch**ß Fensterzeiger.

    Nichts für Ungut, nur fehlen mir schon fast alle Haare ...

  9. so, nach einigen probieren und wenigen ergebnissen bin ich wieder da und meine frage hat sich etwas verändert.

    so steht es in meiner 'mainfrm.cpp'

    
    if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
    
    		| CBRS_GRIPPER | [B][COLOR=DarkRed]CBRS_TOOLTIPS[/COLOR][/B] | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
    
    		!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
    
    {
    
    	TRACE0("Symbolleiste konnte nicht erstellt werden\n");
    
    	return -1;      // Fehler bei Erstellung
    
    }
    
    

    zu CBRS_TOOLTIP heisst es in der MSDN:

    CBRS_TOOLTIPS Control bar displays tool tips.

    wenn ich CBRS_TOOLTIP aus dem Code entferne

    werden keine ToolTips eingeblendet.

    Frage, was muss ich machen um eine eigen ToolTipCtrl für den o.g Toobar

    zu erstellen?

    Wie kann ich beim CToolTipCtrl::Create() auf mein m_wndToolBar bezugnehmen?

    Ciao TinTin

    PS:

    Falls ich mich unklar ausdrücken sollte, einfach nochmal nachfragen. BITTE!

  10. Ok,

    folgeden Fragestellung ist zu der Shellfunktion hier wohl noch nicht erörtert worden:

    Kann man einen Aufgeklappten Baum vorbelegen? Soll heissen, gibt es eine

    Möglichkeit den Dialog zu öffnen, so dass er einen Pfad ausgeklappt hat.

    z.B. soll c:\winnt\system32 vorbelegt sein.

    Ich meine nicht das Wurzelverzeichnis, dass mit

    LPCITEMIDLIST pidlRoot;

    aus BROWSEINFO vorbelegtwerdenkann.

    Ich hoffe ich habe mich nicht zu kompiziert ausgedrückt.

    Ciao TinTin

  11. Folgendes Problem:

    Ich möchte den Text der in Statuszeile und als Tooltip angezeigt wir, wenn die Maus über

    die Toolbar-Buttons geht, ändern und dies zur Laufzeit. Ich weiss, dass die Texte mit

    dazugehörigen IDs in der String Table abgelegt sind und diese möchte ändern. Oder einem

    Toolbarbutton zur Laufzeit einen Text zuweisen.

    Das ganze soll in einem MFC/MDI VS6.0 Projekt passieren.

    Kann mir jemand einen Hinweis geben, wie und wo ich das anpacken muss.

    ciao TinTin

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...