2

现在我有一个由大约 1400k 行代码组成的大型 C++ 项目。现在我有一个要求:向每个派生自 CDialog、CWnd 或 CListCtrl 的类添加一行代码。我无法手动执行此操作。我想也许UltraEdit正则表达式可以帮我一把,但是我不能自己写相关的正则表达式。

任何人都可以帮助我吗?

这是要添加的代码行:

virtual ULONG GetGestureStatus(CPoint ptTouch) { return 0;}

这是我的代码结构(仅用于说明):

class CRibbonAddPlaceDialog : public CDialog
{
    DECLARE_DYNAMIC(CRibbonAddPlaceDialog)

public:
    CRibbonAddPlaceDialog();
    virtual ~CRibbonAddPlaceDialog();
    enum { IDD = IDD_RIBBON_ADDPLACE };

protected:
    virtual ULONG GetGestureStatus(CPoint ptTouch) { return 0;}//the line to add
    virtual void DoDataExchange(CDataExchange* pDX);
    DECLARE_MESSAGE_MAP()
    afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
    afx_msg void OnDestroy();
    virtual BOOL OnInitDialog();
    virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo);
public:
    BOOL AddButton(CFX_WideString csTitle, AddPlaceButtonProc proc, void* pClientData, CFX_DIBitmap* pButtonImage);
public:

    CReader_RibbonFilePageManager* m_pRibbonFilePageMgr;
    CReader_RibbonStyle_Static*       m_pAddPlace;
    CReader_RibbonStyle_Static*       m_pAddPlaceTip;
    CTypedPtrArray<CPtrArray, buttondata*> m_arButtonData;
    CTypedPtrArray<CPtrArray, CBCGPButton*>m_arButton;

};
4

2 回答 2

3

假设您想在打开之后立即放置该行{,请尝试搜索(打开 Perl 正则表达式):

^(class\b.*\bC(?:Dialog|Wnd|ListCtrl).*\r?\n\{\r?\n)

并替换为

\1virtual ULONG GetGestureStatus(CPoint ptTouch) { return 0;}\r\n
于 2013-07-17T09:22:43.047 回答
1

perl -ibak -pe "s/protected:\n/protected:\n virtual ULONG GetGestureStatus(CPoint ptTouch) { return 0;}/" file_name

于 2013-07-17T09:39:52.627 回答