DC++ source

0

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.ne[...]plus/DCPlusPlus-0.673-src.zip
http://kent.dl.sourceforge.ne[...]/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 $
 */
0

To jest Visual C++, MFC na dodatek, a nie Borland VCL :P
Okno to okno, tworzy się przez CreateWindow w API, a nie żadne formy. W MFC okno dziedziczy z jakiejś klasy bazowej, tu: CMDIFrameWindowImpl i tyle, klasy, klasy, klasy...
Jedyne co można obejrzeć to zasoby programu, gdzie mogą być okna dialogowe, menu, itd.

0

jejku :)

to jak wy programujecie wszelkie GUI ? kodujecie, kompilujecie, a potem sprawdzacie jak wygląda ?
;)
[...]
tzn...jak chcę coś zmienić, np dodać kolumnę w tabeli albo coś w tym stylu, to mam tego sobie szukać w kodzie (w D klikam na wizualną kolumnę i edytuję jej właściwości) ? najpierw zgadując który plik odpowiada za daną część z tabelą, a następnie odnajdując jej deklarację i włąściwości (czy jak się to tam w VC++ nazywa) ?
O_O

[EDIT]
i dzięki za odpowiedź !

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0