closeable tabs für search funktio

hi

die ssearchparams hat glaub nichts damit zu tun, ich habe nun rausbekomen
das im source von

SearchResultsWnd.cpp/.h bestimmt dinge für das closeable tabs existieren

habe davon diese abschnitte in
mein SearchDlg.cpp einfügt :



#include "UserMsgs.h"

bei BEGIN_MESSAGE_MAP(CMuteSearchDlg, CResizableDialog)
//{{AFX_MSG_MAP(CMuteSearchDlg)

ON_BN_CLICKED(IDC_CLEARALL, OnBnClickedClearall)
ON_NOTIFY(TCN_SELCHANGE, IDC_TAB1, OnTcnSelchangeTab1)
ON_MESSAGE(UM_CLOSETAB, OnCloseTab)
ON_MESSAGE(UM_DBLCLICKTAB, OnDblClickTab)

und

AddAnchor(IDC_CLEARALL, TOP_RIGHT);

in SearchDlg.h

// Generated message map functions
//{{AFX_MSG(CMuteSearchDlg)

afx_msg void OnBnClickedClearall();
afx_msg LRESULT OnCloseTab(WPARAM wParam, LPARAM lParam);
afx_msg LRESULT OnDblClickTab(WPARAM wParam, LPARAM lParam);
afx_msg void OnTcnSelchangeTab1(NMHDR *pNMHDR, LRESULT *pResult);

den rest weis ich momentan noch nicht was vom SearchResultsWnd.cpp/.h
in mein SearchDlg.cpp/.h intregrieren musss!

habe nun ein paar fehler wieder:

MFC_MUTE_GUI fatal error LNK1120: 4 unaufgelöste externe Verweise
MFC_MUTE_GUI error LNK2001: Nichtaufgelöstes externes Symbol "protected: long __thiscall CMuteSearchDlg::OnCloseTab(unsigned int,long)" (?OnCloseTab@CMuteSearchDlg@@IAEJIJ@Z)
MFC_MUTE_GUI error LNK2001: Nichtaufgelöstes externes Symbol "protected: long __thiscall CMuteSearchDlg::OnDblClickTab(unsigned int,long)" (?OnDblClickTab@CMuteSearchDlg@@IAEJIJ@Z)
MFC_MUTE_GUI error LNK2001: Nichtaufgelöstes externes Symbol "protected: void __thiscall CMuteSearchDlg::OnBnClickedClearall(void)" (?OnBnClickedClearall@CMuteSearchDlg@@IAEXXZ)
MFC_MUTE_GUI error LNK2001: Nichtaufgelöstes externes Symbol "protected: void __thiscall CMuteSearchDlg::OnTcnSelchangeTab1(struct tagNMHDR *,long *)" (?OnTcnSelchangeTab1@CMuteSearchDlg@@IAEXPAUtagNMHDR@@PAJ@Z)

hier der dialog von search:
http://img26.imageshack.us/img26/8867/dialogsearch4lt.jpg
 
Zuletzt bearbeitet:
Die Fehlermeldungen weisen darauf hin, daß dem Linker eine Bibliothek fehlt. Du mußt mal überprüfen, ob in dem Projekt, von dem du den Code übernommen hast, ein Hinweis auf eine Lib steht. Die fehlende Lib mußt du im Dialog "Projekt->Eigenschaften von..." unter "Linker->Zusätzliche Abhängigkeiten" eintragen.

Mfg

langer
 
ich habe das in mein SearchDlg.h intregriert

#include "ResizableLib\ResizableFormView.h"

aber es kommen jetzt haufen von fehlern

weil das stand in der SearchResultsWnd.h datei!

e:\MUTE\MFC-MUTE-0.0.6-searchtabs-15.09.05\MFC_MUTE_GUI\ResizableLib\ResizableLayout.h(30): error C2086: 'const CSize TOP_LEFT': Neudefinition
e:\MUTE\MFC-MUTE-0.0.6-searchtabs-15.09.05\MFC_MUTE_GUI\ResizableLib\ResizableDialog.h(31): Siehe Deklaration von 'TOP_LEFT'
e:\MUTE\MFC-MUTE-0.0.6-searchtabs-15.09.05\MFC_MUTE_GUI\ResizableLib\ResizableLayout.h(32): error C2086: 'const CSize BOTTOM_CENTER': Neudefinition
e:\MUTE\MFC-MUTE-0.0.6-searchtabs-15.09.05\MFC_MUTE_GUI\ResizableLib\ResizableLayout.h(32): error C2086: 'const CSize BOTTOM_CENTER': Neudefinition
e:\MUTE\MFC-MUTE-0.0.6-searchtabs-15.09.05\MFC_MUTE_GUI\ResizableLib\ResizableDialog.h(33): Siehe Deklaration von 'BOTTOM_CENTER'
e:\MUTE\MFC-MUTE-0.0.6-searchtabs-15.09.05\MFC_MUTE_GUI\ResizableLib\ResizableLayout.h(32): error C2086: 'const CSize BOTTOM_CENTER': Neudefinition
e:\MUTE\MFC-MUTE-0.0.6-searchtabs-15.09.05\MFC_MUTE_GUI\ResizableLib\ResizableDialog.h(33): Siehe Deklaration von 'BOTTOM_CENTER'
e:\MUTE\MFC-MUTE-0.0.6-searchtabs-15.09.05\MFC_MUTE_GUI\ResizableLib\ResizableLayout.h(32): error C2086: 'const CSize BOTTOM_LEFT': Neudefinition
e:\MUTE\MFC-MUTE-0.0.6-searchtabs-15.09.05\MFC_MUTE_GUI\ResizableLib\ResizableLayout.h(32): error C2086: 'const CSize BOTTOM_LEFT': Neudefinition
e:\MUTE\MFC-MUTE-0.0.6-searchtabs-15.09.05\MFC_MUTE_GUI\ResizableLib\ResizableDialog.h(33): Siehe Deklaration von 'BOTTOM_LEFT'
e:\MUTE\MFC-MUTE-0.0.6-searchtabs-15.09.05\MFC_MUTE_GUI\ResizableLib\ResizableLayout.h(32): error C2086: 'const CSize BOTTOM_LEFT': Neudefinition
e:\MUTE\MFC-MUTE-0.0.6-searchtabs-15.09.05\MFC_MUTE_GUI\ResizableLib\ResizableDialog.h(33): Siehe Deklaration von 'BOTTOM_LEFT'
e:\MUTE\MFC-MUTE-0.0.6-searchtabs-15.09.05\MFC_MUTE_GUI\ResizableLib\ResizableLayout.h(32): error C2086: 'const CSize BOTTOM_RIGHT': Neudefinition
e:\MUTE\MFC-MUTE-0.0.6-searchtabs-15.09.05\MFC_MUTE_GUI\ResizableLib\ResizableLayout.h(32): error C2086: 'const CSize BOTTOM_RIGHT': Neudefinition
e:\MUTE\MFC-MUTE-0.0.6-searchtabs-15.09.05\MFC_MUTE_GUI\ResizableLib\ResizableDialog.h(33): Siehe Deklaration von 'BOTTOM_RIGHT'
e:\MUTE\MFC-MUTE-0.0.6-searchtabs-15.09.05\MFC_MUTE_GUI\ResizableLib\ResizableLayout.h(32): error C2086: 'const CSize BOTTOM_RIGHT': Neudefinition
e:\MUTE\MFC-MUTE-0.0.6-searchtabs-15.09.05\MFC_MUTE_GUI\ResizableLib\ResizableDialog.h(33): Siehe Deklaration von 'BOTTOM_RIGHT'
e:\MUTE\MFC-MUTE-0.0.6-searchtabs-15.09.05\MFC_MUTE_GUI\ResizableLib\ResizableLayout.h(31): error C2086: 'const CSize MIDDLE_CENTER': Neudefinition
e:\MUTE\MFC-MUTE-0.0.6-searchtabs-15.09.05\MFC_MUTE_GUI\ResizableLib\ResizableDialog.h(32): Siehe Deklaration von 'MIDDLE_CENTER'
e:\MUTE\MFC-MUTE-0.0.6-searchtabs-15.09.05\MFC_MUTE_GUI\ResizableLib\ResizableLayout.h(31): error C2086: 'const CSize MIDDLE_CENTER': Neudefinition
e:\MUTE\MFC-MUTE-0.0.6-searchtabs-15.09.05\MFC_MUTE_GUI\ResizableLib\ResizableDialog.h(32): Siehe Deklaration von 'MIDDLE_CENTER'
e:\MUTE\MFC-MUTE-0.0.6-searchtabs-15.09.05\MFC_MUTE_GUI\ResizableLib\ResizableLayout.h(31): error C2086: 'const CSize MIDDLE_CENTER': Neudefinition
e:\MUTE\MFC-MUTE-0.0.6-searchtabs-15.09.05\MFC_MUTE_GUI\ResizableLib\ResizableDialog.h(32): Siehe Deklaration von 'MIDDLE_CENTER'
e:\MUTE\MFC-MUTE-0.0.6-searchtabs-15.09.05\MFC_MUTE_GUI\ResizableLib\ResizableLayout.h(31): error C2086: 'const CSize MIDDLE_LEFT': Neudefinition
e:\MUTE\MFC-MUTE-0.0.6-searchtabs-15.09.05\MFC_MUTE_GUI\ResizableLib\ResizableLayout.h(31): error C2086: 'const CSize MIDDLE_LEFT': Neudefinition
e:\MUTE\MFC-MUTE-0.0.6-searchtabs-15.09.05\MFC_MUTE_GUI\ResizableLib\ResizableDialog.h(32): Siehe Deklaration von 'MIDDLE_LEFT'
e:\MUTE\MFC-MUTE-0.0.6-searchtabs-15.09.05\MFC_MUTE_GUI\ResizableLib\ResizableLayout.h(31): error C2086: 'const CSize MIDDLE_LEFT': Neudefinition
e:\MUTE\MFC-MUTE-0.0.6-searchtabs-15.09.05\MFC_MUTE_GUI\ResizableLib\ResizableDialog.h(32): Siehe Deklaration von 'MIDDLE_LEFT'
e:\MUTE\MFC-MUTE-0.0.6-searchtabs-15.09.05\MFC_MUTE_GUI\ResizableLib\ResizableLayout.h(31): error C2086: 'const CSize MIDDLE_RIGHT': Neudefinition
e:\MUTE\MFC-MUTE-0.0.6-searchtabs-15.09.05\MFC_MUTE_GUI\ResizableLib\ResizableLayout.h(31): error C2086: 'const CSize MIDDLE_RIGHT': Neudefinition
e:\MUTE\MFC-MUTE-0.0.6-searchtabs-15.09.05\MFC_MUTE_GUI\ResizableLib\ResizableDialog.h(32): Siehe Deklaration von 'MIDDLE_RIGHT'
e:\MUTE\MFC-MUTE-0.0.6-searchtabs-15.09.05\MFC_MUTE_GUI\ResizableLib\ResizableLayout.h(31): error C2086: 'const CSize MIDDLE_RIGHT': Neudefinition
e:\MUTE\MFC-MUTE-0.0.6-searchtabs-15.09.05\MFC_MUTE_GUI\ResizableLib\ResizableDialog.h(32): Siehe Deklaration von 'MIDDLE_RIGHT'
e:\MUTE\MFC-MUTE-0.0.6-searchtabs-15.09.05\MFC_MUTE_GUI\ResizableLib\ResizableLayout.h(29): error C2086: 'const CSize NOANCHOR': Neudefinition
e:\MUTE\MFC-MUTE-0.0.6-searchtabs-15.09.05\MFC_MUTE_GUI\ResizableLib\ResizableLayout.h(29): error C2086: 'const CSize NOANCHOR': Neudefinition
e:\MUTE\MFC-MUTE-0.0.6-searchtabs-15.09.05\MFC_MUTE_GUI\ResizableLib\ResizableLayout.h(29): error C2086: 'const CSize NOANCHOR': Neudefinition
e:\MUTE\MFC-MUTE-0.0.6-searchtabs-15.09.05\MFC_MUTE_GUI\ResizableLib\ResizableLayout.h(30): error C2086: 'const CSize TOP_CENTER': Neudefinition
e:\MUTE\MFC-MUTE-0.0.6-searchtabs-15.09.05\MFC_MUTE_GUI\ResizableLib\ResizableLayout.h(30): error C2086: 'const CSize TOP_CENTER': Neudefinition
e:\MUTE\MFC-MUTE-0.0.6-searchtabs-15.09.05\MFC_MUTE_GUI\ResizableLib\ResizableDialog.h(31): Siehe Deklaration von 'TOP_CENTER'
e:\MUTE\MFC-MUTE-0.0.6-searchtabs-15.09.05\MFC_MUTE_GUI\ResizableLib\ResizableLayout.h(30): error C2086: 'const CSize TOP_CENTER': Neudefinition
e:\MUTE\MFC-MUTE-0.0.6-searchtabs-15.09.05\MFC_MUTE_GUI\ResizableLib\ResizableDialog.h(31): Siehe Deklaration von 'TOP_CENTER'
e:\MUTE\MFC-MUTE-0.0.6-searchtabs-15.09.05\MFC_MUTE_GUI\ResizableLib\ResizableLayout.h(30): error C2086: 'const CSize TOP_LEFT': Neudefinition
e:\MUTE\MFC-MUTE-0.0.6-searchtabs-15.09.05\MFC_MUTE_GUI\ResizableLib\ResizableLayout.h(30): error C2086: 'const CSize TOP_LEFT': Neudefinition
e:\MUTE\MFC-MUTE-0.0.6-searchtabs-15.09.05\MFC_MUTE_GUI\ResizableLib\ResizableDialog.h(31): Siehe Deklaration von 'TOP_LEFT'
e:\MUTE\MFC-MUTE-0.0.6-searchtabs-15.09.05\MFC_MUTE_GUI\ResizableLib\ResizableLayout.h(30): error C2086: 'const CSize TOP_RIGHT': Neudefinition
e:\MUTE\MFC-MUTE-0.0.6-searchtabs-15.09.05\MFC_MUTE_GUI\ResizableLib\ResizableLayout.h(30): error C2086: 'const CSize TOP_RIGHT': Neudefinition
e:\MUTE\MFC-MUTE-0.0.6-searchtabs-15.09.05\MFC_MUTE_GUI\ResizableLib\ResizableDialog.h(31): Siehe Deklaration von 'TOP_RIGHT'
e:\MUTE\MFC-MUTE-0.0.6-searchtabs-15.09.05\MFC_MUTE_GUI\ResizableLib\ResizableLayout.h(30): error C2086: 'const CSize TOP_RIGHT': Neudefinition
e:\MUTE\MFC-MUTE-0.0.6-searchtabs-15.09.05\MFC_MUTE_GUI\ResizableLib\ResizableDialog.h(31): Siehe Deklaration von 'TOP_RIGHT'
 
so siehts jetzt mein SearchDlg.h oberer abschnitte mit den includes aus:

Code:
#if !defined(AFX_MUTESEARCHDLG_H__3CCC811C_5408_4ADE_A9BC_29E6B9BA087D__INCLUDED_)
 #define AFX_MUTESEARCHDLG_H__3CCC811C_5408_4ADE_A9BC_29E6B9BA087D__INCLUDED_
 
 #if _MSC_VER > 1000
 #pragma once
 #endif // _MSC_VER > 1000
 
 #include "MuteSearchListCtrl.h"
 
 #include "minorGems/system/MutexLock.h"
 #include "minorGems/system/Thread.h"
 #include "minorGems/util/stringUtils.h"
 #include "minorGems/util/SimpleVector.h"
 #include "ClosableTabCtrl.h"
 
 #include "ResizableLib\ResizableDialog.h"
 #include "ResizableLib\ResizableFormView.h"
 #include "Led.h"
 #include "Label.h"
 #include "StrParse.h"
 #include "NumberEdit.h"
 #include "BtnST.h"
 
 #include "SearchThread.h"
 #include "ExternString.h"
 
Das bedeutet ganz einfach, daß die genannten Symbole schon an einer anderen Stelle definiert wurden. Da hast du des Guten zuviel getan. Und wenn du zuvor das Projekt ohne Fehler compilieren konntest und erst der Linker Fehler brachte, bedeutet das, daß dem Compiler nichts fehlte zur Code-Erstellung. Dann braucht auch keine weitere Header-Datei includiert werden. Was du brauchst (oder besser der Linker), ist die Lib, in der die Symbole implementiert sind, die vorher als nicht aufgelöst moniert wurden. Gibts da irgendwo eine Datei "RezisableLib.lib" oder so ähnlich? Kein Ordner! Ich nehme mal den Namen, weil du da die Header her hast. Ob das aber die richtige Lib ist, kann ich von hier nicht beurteilen. Wenn eine solche existiert, dem Linker in "Zusätzliche Abhängigkeiten" den Pfad mitteilen. Dann kann er die Funktionen in die .exe-Datei einbauen.

Mfg

langer
 
ja ich das project vorher ohne porbleme kompiliert!

aber leider geht das mit den tabs nicht deswegen musss ich notwendigen dinge einbauen!

ich weiss selber nicht ob das

#include "ResizableLib\ResizableFormView.h notwendig ist!

mein project hat ResizableLib und CxImage ordner!

habe das wieder entfernt "ResizableLib\ResizableFormView.h im SearchDlg.h
 
beim emule 46a source sind search tabs in das ssearchparams usw intregriert!

mit dem hin und her kopieren weis ich nociht ob ich hinbekommen das es geht!

das ganze ist gesplittet in verschiedenen dateien wie

SearchResultsWnd.cpp/.h #include "ClosableTabCtrl.h" im .h enthalten
SearchParamsWnd.cpp/.h
SearchDlg.cpp/.h
SearchList.cpp/.h #include "ClosableTabCtrl.h" im ..h enthalten
SearchListCtrl.cpp/.h #include "ClosableTabCtrl.h" im ..cpp enthalten

searchDlg.h:
Code:
#pragma once
 
 struct SSearchParams;
 class CSearchResultsWnd;
 class CSearchParamsWnd;
 class CSearchFile;
 class CClosableTabCtrl;
 
 
 ///////////////////////////////////////////////////////////////////////////////
 // CSearchDlg frame
 
 class CSearchDlg : public CFrameWnd
 {
 	DECLARE_DYNCREATE(CSearchDlg)
 
 public:
     CSearchDlg();		   // protected constructor used by dynamic creation
 	virtual ~CSearchDlg();
 
 	BOOL Create(CWnd* pParent);
 
 	void Localize();
 	void CreateMenus();
 
 	void RemoveResult(const CSearchFile* toremove);
 
 	bool DoNewEd2kSearch(SSearchParams* pParams);
 	bool DoNewKadSearch(SSearchParams* pParams);
 	void CancelSearch();
 	void CancelKadSearch(UINT uSearchID);
 
 	void DownloadSelected();
 	void DownloadSelected(bool paused);
 
 	bool CanDeleteSearch(uint32 nSearchID) const;
 	bool CanDeleteAllSearches() const;
 	void DeleteSearch(uint32 nSearchID);
 	void DeleteAllSearchs();
 
 	void LocalSearchEnd(uint16 count, bool bMoreResultsAvailable);
 	void AddUDPResult(uint16 count);
 
 	bool CreateNewTab(SSearchParams* pParams);
 	void ShowSearchSelector(bool visible);
 	CClosableTabCtrl& GetSearchSelector();
 
 	uint8 GetSelectedCat();
 	void UpdateCatTabs();
 	void SaveAllSettings();
 	BOOL SaveSearchStrings();
 	void ResetHistory();
 
 	void SetToolTipsDelay(UINT uDelay);
 	void DeleteAllSearchListCtrlItems();
 
 	BOOL IsSearchParamsWndVisible() const;
 	void OpenParametersWnd();
 
 protected:
 	CSearchParamsWnd* m_pwndParams;
 	CSearchResultsWnd* m_pwndResults;
 
 	DECLARE_MESSAGE_MAP()
 	afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
 	afx_msg void OnShowWindow(BOOL bShow, UINT nStatus);
 	afx_msg void OnSetFocus(CWnd* pOldWnd);
 	afx_msg void OnClose();
 	afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
 };

also haufen dinge ! weis nicht so arg was ich da grad tue!
 
Also, ich würde mir um den Code erstmal keine Gedanken mehr machen, wenn er sich ohne Probleme compilieren läßt. Erstmal mußt du das Problem mit den externen Verweisen lösen. Wenn du dein Programm linken kannst, dann kannst du wieder daran gehen, es zu testen und zu schauen, wo du noch was ändern mußt.

Mfg

langer
 
das problem ist das ich per search taste ein suche starte und diese suche erzeugt eine tab!

das ist momentan nicht in mein search eingebaut!

das müste die suchfunktion wissen?

es weis noch nicht das es die tabs aufrufen soll bei neuem suchen usw
wie bei emule!

deswegen klappts nciht das es beim suchen starten kein tabs kommen!
 
Ach so, das Linker-Problem ist behoben? Was passiert denn im Einzelschrittbetrieb an den entscheidenden Stellen? Hast du das mal mit dem Debugger überprüft?

Mfg

langer
 

Neue Beiträge

Zurück