jestem programistą-amatorem D, jednak rzecz którą się teraz zajmuję wymaga <ort>ode mnie </ort>modyfikacji kodu DC++, napisanego w VC++, którego kompletnie nie znam. dlatego moje pytanie może być głupie ale...trudno. więc - jak zmodyfikować interfejs tego programu ? nie mogę znaleźć tam nic wizualnego, żadnych form. dla próby utworzyłem taki swój pusty projekt 'windows forms application' - i w 'Header files' miałem coś takiego - formę którą mogłem edytować, na palecie toolbox pojawiły się komponenty. jak odnaleźć coś takiego w źródłach DC++ (żadna z ikonek nie wygląda tak jak ta z próbnego projektu) ? w 'Folder headers' znajdują się różne pliki, których nazwy wskazują na to że odpowiedzialne są właśnie za formy ! jak jednak je 'otworzyć', zwizualizować, umożliwić edycję ?
rzecz powstaje pod patronatem VC++ 7.1.
jeśliby odpowiedź na pytanie nie była oczywista i komuś chciało się zerknąć na kod...:
http://nchc.dl.sourceforge.net/sourceforge/dcplusplus/DCPlusPlus-0.673-src.zip
http://kent.dl.sourceforge.net/sourceforge/dcplusplus/DCPlusPlus-STLPort-4.6.2.zip
http://sourceforge.net/projects/wtl
na koniec próbka takiego pliku, który powinien być formą :
#if !defined(AFX_MAINFRM_H__E73C3806_489F_4918_B986_23DCFBD603D5__INCLUDED_)
#define AFX_MAINFRM_H__E73C3806_489F_4918_B986_23DCFBD603D5__INCLUDED_
#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
#include "../client/TimerManager.h"
#include "../client/HttpConnection.h"
#include "../client/HubManager.h"
#include "../client/QueueManagerListener.h"
#include "../client/Util.h"
#include "../client/LogManager.h"
#include "../client/version.h"
#include "FlatTabCtrl.h"
#include "SingleInstance.h"
#include "TransferView.h"
#include "UPnP.h"
#define SERVER_SOCKET_MESSAGE (WM_APP + 1235)
class MainFrame : public CMDIFrameWindowImpl<MainFrame>, public CUpdateUI<MainFrame>,
public CMessageFilter, public CIdleHandler, public CSplitterImpl<MainFrame, false>,
private TimerManagerListener, private HttpConnectionListener, private QueueManagerListener,
private LogManagerListener
{
public:
MainFrame();
virtual ~MainFrame();
DECLARE_FRAME_WND_CLASS(_T(APPNAME), IDR_MAINFRAME)
CMDICommandBarCtrl m_CmdBar;
enum {
DOWNLOAD_LISTING,
BROWSE_LISTING,
STATS,
AUTO_CONNECT,
PARSE_COMMAND_LINE,
VIEW_FILE_AND_DELETE,
STATUS_MESSAGE
};
virtual BOOL PreTranslateMessage(MSG* pMsg)
{
if(CMDIFrameWindowImpl<MainFrame>::PreTranslateMessage(pMsg))
return TRUE;
HWND hWnd = MDIGetActive();
if(hWnd != NULL)
return (BOOL)::SendMessage(hWnd, WM_FORWARDMSG, 0, (LPARAM)pMsg);
return FALSE;
}
virtual BOOL OnIdle()
{
UIUpdateToolBar();
return FALSE;
}
typedef CSplitterImpl<MainFrame, false> splitterBase;
BEGIN_MSG_MAP(MainFrame)
MESSAGE_HANDLER(WM_CREATE, OnCreate)
MESSAGE_HANDLER(WM_ERASEBKGND, OnEraseBackground)
MESSAGE_HANDLER(WM_CLOSE, OnClose)
[...]
COMMAND_ID_HANDLER(IDC_HELP_CONTENTS, onMenuHelp)
COMMAND_ID_HANDLER(ID_APP_EXIT, OnFileExit)
COMMAND_ID_HANDLER(ID_FILE_CONNECT, OnFileConnect)
NOTIFY_CODE_HANDLER(TTN_GETDISPINFO, onGetToolTip)
CHAIN_MDI_CHILD_COMMANDS()
CHAIN_MSG_MAP(CUpdateUI<MainFrame>)
CHAIN_MSG_MAP(CMDIFrameWindowImpl<MainFrame>)
CHAIN_MSG_MAP(splitterBase);
END_MSG_MAP()
BEGIN_UPDATE_UI_MAP(MainFrame)
UPDATE_ELEMENT(ID_VIEW_TOOLBAR, UPDUI_MENUPOPUP)
UPDATE_ELEMENT(ID_VIEW_STATUS_BAR, UPDUI_MENUPOPUP)
UPDATE_ELEMENT(ID_VIEW_TRANSFER_VIEW, UPDUI_MENUPOPUP)
END_UPDATE_UI_MAP()
LRESULT onSize(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BOOL& bHandled);
LRESULT onSpeaker(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BOOL& /*bHandled*/);
LRESULT onNotepad(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT onQueue(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT onFavorites(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT onHashProgress(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT onFavoriteUsers(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT OnClose(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& bHandled);
LRESULT onEndSession(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& bHandled);
LRESULT OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/);
LRESULT OnFileConnect(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT onSearchSpy(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT onNetStats(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT onFileADLSearch(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT OnFileSettings(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT OnFileSearch(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT OnAppAbout(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT onLink(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT onOpenFileList(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT onOpenOwnList(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT onTrayIcon(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOOL& /*bHandled*/);
LRESULT OnViewStatusBar(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT OnViewToolBar(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT OnViewTransferView(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT onGetToolTip(int idCtrl, LPNMHDR pnmh, BOOL& /*bHandled*/);
LRESULT onFinished(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT onFinishedUploads(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT onCopyData(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOOL& /*bHandled*/);
LRESULT onCloseDisconnected(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT onServerSocket(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/);
LRESULT onHelp(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/);
LRESULT onMenuHelp(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT onRefreshFileList(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT onQuickConnect(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
static DWORD WINAPI stopper(void* p);
void UpdateLayout(BOOL bResizeBars = TRUE);
void parseCommandLine(const tstring& cmdLine);
LRESULT onWhereAreYou(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/) {
return WMU_WHERE_ARE_YOU;
}
LRESULT onTrayQuit(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/) {
PostMessage(WM_CLOSE);
return 0;
}
LRESULT onTrayShow(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/) {
ShowWindow(SW_SHOW);
ShowWindow(maximized ? SW_MAXIMIZE : SW_RESTORE);
return 0;
}
LRESULT onTray(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/) {
updateTray(true);
return 0;
};
LRESULT onRowsChanged(UINT /*uMsg*/, WPARAM /* wParam */, LPARAM /*lParam*/, BOOL& /*bHandled*/) {
UpdateLayout();
Invalidate();
return 0;
}
LRESULT onSelected(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BOOL& /*bHandled*/) {
HWND hWnd = (HWND)wParam;
if(MDIGetActive() != hWnd) {
MDIActivate(hWnd);
} else if(BOOLSETTING(TOGGLE_ACTIVE_WINDOW)) {
::SetWindowPos(hWnd, HWND_BOTTOM, 0, 0, 0, 0, SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE);
MDINext(hWnd);
hWnd = MDIGetActive();
}
if(::IsIconic(hWnd))
::ShowWindow(hWnd, SW_RESTORE);
return 0;
}
[...]
};
#endif // !defined(AFX_MAINFRM_H__E73C3806_489F_4918_B986_23DCFBD603D5__INCLUDED_)
/**
* @file
* $Id: MainFrm.h,v 1.55 2005/03/12 13:36:50 arnetheduck Exp $
*/