diff --git a/WFPCore/WFPCore.vcxproj b/WFPCore/WFPCore.vcxproj index 8670bbd..585eb03 100644 --- a/WFPCore/WFPCore.vcxproj +++ b/WFPCore/WFPCore.vcxproj @@ -147,7 +147,7 @@ - + diff --git a/WFPCore/WFPCore.vcxproj.filters b/WFPCore/WFPCore.vcxproj.filters index 97be353..992b1fc 100644 --- a/WFPCore/WFPCore.vcxproj.filters +++ b/WFPCore/WFPCore.vcxproj.filters @@ -21,7 +21,7 @@ Header Files - + Header Files diff --git a/WFPCore/Enumerators.h b/WFPCore/WFPEnumerators.h similarity index 100% rename from WFPCore/Enumerators.h rename to WFPCore/WFPEnumerators.h diff --git a/WFPExplorer/CalloutsView.h b/WFPExplorer/CalloutsView.h index 4cbb663..8583bc3 100644 --- a/WFPExplorer/CalloutsView.h +++ b/WFPExplorer/CalloutsView.h @@ -4,7 +4,7 @@ #include #include "Interfaces.h" #include -#include +#include class WFPEngine; diff --git a/WFPExplorer/FiltersView.cpp b/WFPExplorer/FiltersView.cpp index f8e9ea3..3b6545f 100644 --- a/WFPExplorer/FiltersView.cpp +++ b/WFPExplorer/FiltersView.cpp @@ -9,7 +9,7 @@ #include "WFPHelper.h" #include #include "AppSettings.h" -#include +#include #include #include #include @@ -163,7 +163,8 @@ LRESULT CFiltersView::OnActivate(UINT, WPARAM activate, LPARAM, BOOL&) { } LRESULT CFiltersView::OnDeleteFilter(WORD, WORD, HWND, BOOL&) { - ATLASSERT(m_List.GetSelectedCount() > 0); + int selected = m_List.GetSelectedCount(); + ATLASSERT(selected > 0); if (AtlMessageBox(m_hWnd, L"Delete selected filter(s)?", IDS_TITLE, MB_ICONWARNING | MB_YESNO | MB_DEFBUTTON2) == IDNO) return 0; @@ -177,7 +178,8 @@ LRESULT CFiltersView::OnDeleteFilter(WORD, WORD, HWND, BOOL&) { m_List.SelectAllItems(false); Refresh(); } - AtlMessageBox(m_hWnd, std::format(L"Deleted {} filters", deleted).c_str(), IDS_TITLE, MB_ICONINFORMATION); + if(deleted < selected) + AtlMessageBox(m_hWnd, std::format(L"Deleted {}/{} filters", deleted, selected).c_str(), IDS_TITLE, MB_ICONINFORMATION); return 0; } @@ -204,6 +206,52 @@ LRESULT CFiltersView::OnSave(WORD, WORD, HWND, BOOL&) { return 0; } +LRESULT CFiltersView::OnFind(UINT, WPARAM, LPARAM, BOOL&) { + auto findDlg = Frame()->GetFindDialog(); + auto searchDown = findDlg->SearchDown(); + int start = m_List.GetNextItem(-1, LVIS_SELECTED); + CString find(findDlg->GetFindString()); + auto ignoreCase = !findDlg->MatchCase(); + if (ignoreCase) + find.MakeLower(); + + auto columns = m_List.GetHeader().GetItemCount(); + auto count = m_List.GetItemCount(); + int from = searchDown ? start + 1 : start - 1 + count; + int to = searchDown ? count + start : start + 1; + int step = searchDown ? 1 : -1; + + int findIndex = -1; + CString text; + for (int i = from; i != to; i += step) { + int index = i % count; + for (int c = 0; c < columns; c++) { + m_List.GetItemText(index, c, text); + if (ignoreCase) + text.MakeLower(); + if (text.Find(find) >= 0) { + findIndex = index; + break; + } + } + if (findIndex >= 0) + break; + } + + if (findIndex >= 0) { + m_List.SelectItem(findIndex); + m_List.SetFocus(); + } + else { + AtlMessageBox(m_hWnd, L"Finsihed searching list.", IDS_TITLE, MB_ICONINFORMATION); + } + return 0; +} + +LRESULT CFiltersView::OnFindNext(WORD, WORD, HWND, BOOL&) { + return SendMessage(CFindReplaceDialog::GetFindReplaceMsg()); +} + void CFiltersView::DoSort(SortInfo const* si) { auto col = GetColumnManager(m_List)->GetColumnTag(si->SortColumn); auto asc = si->SortAscending; diff --git a/WFPExplorer/FiltersView.h b/WFPExplorer/FiltersView.h index 004bf3e..14f10c8 100644 --- a/WFPExplorer/FiltersView.h +++ b/WFPExplorer/FiltersView.h @@ -34,6 +34,7 @@ public: BEGIN_MSG_MAP(CFiltersView) MESSAGE_HANDLER(WM_ACTIVATE, OnActivate) + MESSAGE_HANDLER(CFindReplaceDialog::GetFindReplaceMsg(), OnFind) MESSAGE_HANDLER(WM_CREATE, OnCreate) CHAIN_MSG_MAP(CVirtualListView) CHAIN_MSG_MAP(CCustomDraw) @@ -43,6 +44,7 @@ public: COMMAND_ID_HANDLER(ID_VIEW_REFRESH, OnRefresh) COMMAND_ID_HANDLER(ID_EDIT_DELETE, OnDeleteFilter) COMMAND_ID_HANDLER(ID_EDIT_COPY, OnCopy) + COMMAND_ID_HANDLER(ID_EDIT_FINDNEXT, OnFindNext) COMMAND_ID_HANDLER(ID_FILE_SAVE, OnSave) END_MSG_MAP() @@ -82,6 +84,8 @@ private: LRESULT OnDeleteFilter(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/); LRESULT OnCopy(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/); LRESULT OnSave(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/); + LRESULT OnFind(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/); + LRESULT OnFindNext(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/); WFPEngine& m_Engine; diff --git a/WFPExplorer/HierarchyView.cpp b/WFPExplorer/HierarchyView.cpp index 9d696d4..e12350d 100644 --- a/WFPExplorer/HierarchyView.cpp +++ b/WFPExplorer/HierarchyView.cpp @@ -4,7 +4,7 @@ #include "StringHelper.h" #include #include "AppSettings.h" -#include +#include CHierarchyView::CHierarchyView(IMainFrame* frame, WFPEngine& engine) : CFrameView(frame), m_Engine(engine) { } diff --git a/WFPExplorer/Interfaces.h b/WFPExplorer/Interfaces.h index 3eb597f..aa7e987 100644 --- a/WFPExplorer/Interfaces.h +++ b/WFPExplorer/Interfaces.h @@ -5,5 +5,6 @@ struct IMainFrame abstract { virtual CUpdateUIBase& UI() = 0; virtual HFONT GetMonoFont() const = 0; virtual bool TrackPopupMenu(HMENU hMenu, DWORD flags, int x, int y, HWND hWnd = nullptr) = 0; + virtual CFindReplaceDialog* GetFindDialog() const = 0; }; diff --git a/WFPExplorer/LayersView.cpp b/WFPExplorer/LayersView.cpp index 0c52918..68bfeea 100644 --- a/WFPExplorer/LayersView.cpp +++ b/WFPExplorer/LayersView.cpp @@ -4,7 +4,7 @@ #include #include "WFPHelper.h" #include "LayerGeneralPage.h" -#include +#include #include #include diff --git a/WFPExplorer/MainFrm.cpp b/WFPExplorer/MainFrm.cpp index bafea55..6d4c182 100644 --- a/WFPExplorer/MainFrm.cpp +++ b/WFPExplorer/MainFrm.cpp @@ -21,6 +21,9 @@ const int WINDOW_MENU_POSITION = 4; BOOL CMainFrame::PreTranslateMessage(MSG* pMsg) { + if (m_pFindDlg && m_pFindDlg->IsDialogMessageW(pMsg)) + return TRUE; + if (CFrameWindowImpl::PreTranslateMessage(pMsg)) return TRUE; @@ -58,6 +61,9 @@ LRESULT CMainFrame::OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/ { ID_VIEW_SUBLAYERS, IDI_SUBLAYER }, { ID_VIEW_CALLOUTS, IDI_CALLOUT }, { ID_VIEW_PROVIDERCONTEXTS, IDI_CONTEXT }, + { 0 }, + { ID_EDIT_FIND, IDI_FIND }, + { ID_EDIT_FINDNEXT, IDI_FIND_NEXT }, }; CreateSimpleReBar(ATL_SIMPLE_REBAR_NOBORDER_STYLE); auto tb = ToolbarHelper::CreateAndInitToolBar(m_hWnd, buttons, _countof(buttons)); @@ -120,6 +126,10 @@ bool CMainFrame::TrackPopupMenu(HMENU hMenu, DWORD flags, int x, int y, HWND hWn return ShowContextMenu(hMenu, flags, x, y, hWnd); } +CFindReplaceDialog* CMainFrame::GetFindDialog() const { + return m_pFindDlg; +} + void CMainFrame::InitMenu() { struct { UINT id, icon; @@ -143,6 +153,8 @@ void CMainFrame::InitMenu() { { ID_VIEW_NETWORKEVENTS, IDI_EVENT }, { ID_FILE_OPEN, IDI_OPEN }, { ID_FILE_SAVE, IDI_SAVE }, + { ID_EDIT_FIND, IDI_FIND }, + { ID_EDIT_FINDNEXT, IDI_FIND_NEXT }, }; for (auto& cmd : cmds) { if (cmd.icon) @@ -161,6 +173,7 @@ void CMainFrame::UpdateUI() { UIEnable(ID_EDIT_DELETE, false); UIEnable(ID_VIEW_REFRESH, anyPage); UIEnable(ID_EDIT_PROPERTIES, false); + UIEnable(ID_EDIT_FIND, anyPage); } void CMainFrame::SetAlwaysOnTop(bool onTop) { @@ -341,3 +354,29 @@ LRESULT CMainFrame::OnAlwaysOnTop(WORD, WORD, HWND, BOOL&) { SetAlwaysOnTop(settings.AlwaysOnTop()); return 0; } + +LRESULT CMainFrame::OnEditFind(WORD, WORD, HWND, BOOL&) { + ATLASSERT(m_view.GetPageCount() > 0); + + if (m_pFindDlg == nullptr) { + m_pFindDlg = new CFindReplaceDialog; + m_pFindDlg->Create(TRUE, m_SearchText, nullptr, FR_DOWN | FR_HIDEWHOLEWORD, m_hWnd); + m_pFindDlg->ShowWindow(SW_SHOW); + } + + return 0; +} + +LRESULT CMainFrame::OnFind(UINT msg, WPARAM wp, LPARAM lp, BOOL&) { + if (m_pFindDlg->IsTerminating()) { + m_pFindDlg = nullptr; + return 0; + } + m_pFindDlg->SetFocus(); + + if (auto page = m_view.GetActivePage(); page >= 0) { + m_SearchText = m_pFindDlg->GetFindString(); + ::SendMessage(m_view.GetPageHWND(page), msg, wp, lp); + } + return 0; +} diff --git a/WFPExplorer/MainFrm.h b/WFPExplorer/MainFrm.h index 1db9044..2019325 100644 --- a/WFPExplorer/MainFrm.h +++ b/WFPExplorer/MainFrm.h @@ -30,6 +30,7 @@ public: COMMAND_ID_HANDLER(ID_VIEW_STATUS_BAR, OnViewStatusBar) COMMAND_ID_HANDLER(ID_VIEW_HIERARCHY, OnViewHierarchy) COMMAND_ID_HANDLER(ID_VIEW_NETWORKEVENTS, OnViewNetEvents) + MESSAGE_HANDLER(CFindReplaceDialog::GetFindReplaceMsg(), OnFind) COMMAND_ID_HANDLER(ID_APP_ABOUT, OnAppAbout) NOTIFY_CODE_HANDLER(TBVN_PAGEACTIVATED, OnPageActivated) COMMAND_ID_HANDLER(ID_OPTIONS_ALWAYSONTOP, OnAlwaysOnTop) @@ -42,6 +43,7 @@ public: MESSAGE_HANDLER(WM_DESTROY, OnDestroy) MESSAGE_HANDLER(WM_SHOWWINDOW, OnShowWindow) MESSAGE_HANDLER(WM_ERASEBKGND, OnEraseBkgnd) + COMMAND_ID_HANDLER(ID_EDIT_FIND, OnEditFind) COMMAND_ID_HANDLER(ID_APP_EXIT, OnFileExit) CHAIN_MSG_MAP(CAutoUpdateUI) CHAIN_MSG_MAP(COwnerDrawnMenu) @@ -58,6 +60,7 @@ private: CUpdateUIBase& UI() override; HFONT GetMonoFont() const override; bool TrackPopupMenu(HMENU hMenu, DWORD flags, int x, int y, HWND hWnd = nullptr) override; + CFindReplaceDialog* GetFindDialog() const override; void InitMenu(); void UpdateUI(); @@ -85,9 +88,13 @@ private: LRESULT OnWindowActivate(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/); LRESULT OnPageActivated(int /*idCtrl*/, LPNMHDR /*pnmh*/, BOOL& /*bHandled*/); LRESULT OnAlwaysOnTop(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/); + LRESULT OnEditFind(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/); + LRESULT OnFind(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/); WFPEngine m_Engine; CFont m_MonoFont; CCustomTabView m_view; CMultiPaneStatusBarCtrl m_StatusBar; + CFindReplaceDialog* m_pFindDlg{ nullptr }; + CString m_SearchText; }; diff --git a/WFPExplorer/NetEventsView.cpp b/WFPExplorer/NetEventsView.cpp index 96ba371..65ac316 100644 --- a/WFPExplorer/NetEventsView.cpp +++ b/WFPExplorer/NetEventsView.cpp @@ -1,6 +1,6 @@ #include "pch.h" #include "NetEventsView.h" -#include +#include #include #include "StringHelper.h" #include @@ -80,7 +80,7 @@ int CNetEventsView::GetRowImage(HWND, int row, int col) const { void CNetEventsView::UpdateUI() { } -CString const& CNetEventsView::GetLocalAddress(NetEventInfo& info) { +CString const& CNetEventsView::GetLocalAddress(NetEventInfo& info) const { if (info.LocalAddress.IsEmpty()) { auto const& header = info.Data->header; auto flags = header.flags; @@ -92,7 +92,7 @@ CString const& CNetEventsView::GetLocalAddress(NetEventInfo& info) { return info.LocalAddress; } -CString const& CNetEventsView::GetRemoteAddress(NetEventInfo& info) { +CString const& CNetEventsView::GetRemoteAddress(NetEventInfo& info) const { if (info.RemoteAddress.IsEmpty()) { auto const& header = info.Data->header; auto flags = header.flags; @@ -109,7 +109,7 @@ UINT16 CNetEventsView::GetLocalPort(NetEventInfo& info) const { } UINT16 CNetEventsView::GetRemotePort(NetEventInfo& info) const { - return (info.Data->header.flags & FWPM_NET_EVENT_FLAG_REMOTE_PORT_SET) ? info.Data->header.localPort : 0; + return (info.Data->header.flags & FWPM_NET_EVENT_FLAG_REMOTE_PORT_SET) ? info.Data->header.remotePort : 0; } CString const& CNetEventsView::GetAppId(NetEventInfo& info) { diff --git a/WFPExplorer/NetEventsView.h b/WFPExplorer/NetEventsView.h index c8a4700..0f86ff0 100644 --- a/WFPExplorer/NetEventsView.h +++ b/WFPExplorer/NetEventsView.h @@ -47,8 +47,8 @@ private: }; void UpdateUI(); - CString const& GetLocalAddress(NetEventInfo& info); - CString const& GetRemoteAddress(NetEventInfo& info); + CString const& GetLocalAddress(NetEventInfo& info) const; + CString const& GetRemoteAddress(NetEventInfo& info) const; UINT16 GetLocalPort(NetEventInfo& info) const; UINT16 GetRemotePort(NetEventInfo& info) const; CString const& GetAppId(NetEventInfo& info); diff --git a/WFPExplorer/ProviderContextView.cpp b/WFPExplorer/ProviderContextView.cpp index 3dcca76..f4b0ca0 100644 --- a/WFPExplorer/ProviderContextView.cpp +++ b/WFPExplorer/ProviderContextView.cpp @@ -3,7 +3,7 @@ #include "StringHelper.h" #include #include "resource.h" -#include +#include CProviderContextView::CProviderContextView(IMainFrame* frame, WFPEngine& engine) : CFrameView(frame), m_Engine(engine) { } diff --git a/WFPExplorer/ProvidersView.h b/WFPExplorer/ProvidersView.h index be072de..049ad18 100644 --- a/WFPExplorer/ProvidersView.h +++ b/WFPExplorer/ProvidersView.h @@ -4,7 +4,7 @@ #include #include "Interfaces.h" #include -#include +#include class WFPEngine; diff --git a/WFPExplorer/SessionsView.h b/WFPExplorer/SessionsView.h index c3e9e6d..42e4c5c 100644 --- a/WFPExplorer/SessionsView.h +++ b/WFPExplorer/SessionsView.h @@ -4,7 +4,7 @@ #include #include "Interfaces.h" #include -#include +#include class WFPEngine; diff --git a/WFPExplorer/SublayersView.cpp b/WFPExplorer/SublayersView.cpp index 28e2e29..227b2fc 100644 --- a/WFPExplorer/SublayersView.cpp +++ b/WFPExplorer/SublayersView.cpp @@ -3,7 +3,7 @@ #include "StringHelper.h" #include #include "resource.h" -#include +#include CSublayersView::CSublayersView(IMainFrame* frame, WFPEngine& engine) : CFrameView(frame), m_Engine(engine) { } diff --git a/WFPExplorer/WFPExplorer.rc b/WFPExplorer/WFPExplorer.rc index 9258b43..9e96a94 100644 --- a/WFPExplorer/WFPExplorer.rc +++ b/WFPExplorer/WFPExplorer.rc @@ -73,6 +73,9 @@ BEGIN MENUITEM "&Delete\tDel", ID_EDIT_DELETE MENUITEM SEPARATOR MENUITEM "Properties...\tAlt+Enter", ID_EDIT_PROPERTIES + MENUITEM SEPARATOR + MENUITEM "&Find...\tCtrl+F", ID_EDIT_FIND + MENUITEM "Find &Next\tF3", ID_EDIT_FINDNEXT END POPUP "&View" BEGIN @@ -194,6 +197,12 @@ IDI_SAVE ICON "res\\Save.ico" IDI_OPEN ICON "res\\Open.ico" +IDI_FIND ICON "res\\Find.ico" + +IDI_FIND_NEXT ICON "res\\Find-next.ico" + +IDI_FIND_PREV ICON "res\\Find-prev.ico" + ///////////////////////////////////////////////////////////////////////////// // @@ -305,17 +314,16 @@ FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN DEFPUSHBUTTON "OK",IDOK,164,246,50,14 PUSHBUTTON "Cancel",IDCANCEL,230,246,50,14 - LTEXT "Key:",IDC_STATIC,7,15,16,8 - EDITTEXT IDC_KEY,51,13,234,12,ES_AUTOHSCROLL | NOT WS_BORDER,WS_EX_STATICEDGE - LTEXT "Name:",IDC_STATIC,7,36,22,8 - EDITTEXT IDC_NAME,51,34,359,12,ES_AUTOHSCROLL | NOT WS_BORDER,WS_EX_STATICEDGE - LTEXT "Description:",IDC_STATIC,7,57,39,8 - EDITTEXT IDC_DESC,51,55,359,12,ES_AUTOHSCROLL | NOT WS_BORDER,WS_EX_STATICEDGE - LTEXT "ID:",IDC_STATIC,347,16,12,8 - EDITTEXT IDC_ID,365,14,70,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER,WS_EX_STATICEDGE - PUSHBUTTON "Generate",IDC_GENERATE,290,12,50,14 - LTEXT "Provider:",IDC_STATIC,7,81,30,8 - COMBOBOX IDC_PROVIDER,51,78,279,75,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP + LTEXT "Key:",IDC_STATIC,7,10,16,8 + EDITTEXT IDC_KEY,51,8,234,12,ES_AUTOHSCROLL | NOT WS_BORDER,WS_EX_STATICEDGE + LTEXT "Name:",IDC_STATIC,7,31,22,8 + EDITTEXT IDC_NAME,51,29,359,12,ES_AUTOHSCROLL | NOT WS_BORDER,WS_EX_STATICEDGE + LTEXT "Description:",IDC_STATIC,7,52,39,8 + EDITTEXT IDC_DESC,51,50,359,12,ES_AUTOHSCROLL | NOT WS_BORDER,WS_EX_STATICEDGE + PUSHBUTTON "Generate",IDC_GENERATE,290,7,50,14 + LTEXT "Provider:",IDC_STATIC,7,76,30,8 + COMBOBOX IDC_PROVIDER,51,73,279,75,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "Copy From...",IDC_COPYFROM,353,7,64,14 END @@ -397,6 +405,7 @@ BEGIN VK_INSERT, ID_EDIT_COPY, VIRTKEY, CONTROL, NOINVERT VK_DELETE, ID_EDIT_CUT, VIRTKEY, SHIFT, NOINVERT "X", ID_EDIT_CUT, VIRTKEY, CONTROL, NOINVERT + VK_DELETE, ID_EDIT_DELETE, VIRTKEY, NOINVERT "V", ID_EDIT_PASTE, VIRTKEY, CONTROL, NOINVERT VK_INSERT, ID_EDIT_PASTE, VIRTKEY, SHIFT, NOINVERT VK_RETURN, ID_EDIT_PROPERTIES, VIRTKEY, ALT, NOINVERT @@ -408,8 +417,9 @@ BEGIN "S", ID_FILE_SAVE, VIRTKEY, CONTROL, NOINVERT VK_F6, ID_NEXT_PANE, VIRTKEY, NOINVERT VK_F6, ID_PREV_PANE, VIRTKEY, SHIFT, NOINVERT - VK_DELETE, ID_EDIT_DELETE, VIRTKEY, NOINVERT VK_F5, ID_VIEW_REFRESH, VIRTKEY, NOINVERT + "F", ID_EDIT_FIND, VIRTKEY, CONTROL, NOINVERT + VK_F3, ID_EDIT_FINDNEXT, VIRTKEY, NOINVERT END @@ -608,6 +618,7 @@ BEGIN ID_VIEW_PROVIDERCONTEXTS "\nProvider Contexts" ID_VIEW_NETWORKEVENTS "\nNetwork Events" ID_NEW_FILTER "\nNew Filter" + ID_EDIT_FINDNEXT "\nFind Next" END #endif // English (United States) resources diff --git a/WFPExplorer/WFPExplorer.vcxproj b/WFPExplorer/WFPExplorer.vcxproj index 3f99cdd..7d91c0a 100644 --- a/WFPExplorer/WFPExplorer.vcxproj +++ b/WFPExplorer/WFPExplorer.vcxproj @@ -296,6 +296,9 @@ + + + diff --git a/WFPExplorer/WFPExplorer.vcxproj.filters b/WFPExplorer/WFPExplorer.vcxproj.filters index 32b7fb1..6a57f83 100644 --- a/WFPExplorer/WFPExplorer.vcxproj.filters +++ b/WFPExplorer/WFPExplorer.vcxproj.filters @@ -255,6 +255,15 @@ Resource Files\Icons + + Resource Files\Icons + + + Resource Files\Icons + + + Resource Files\Icons + diff --git a/WFPExplorer/res/Find-next.ico b/WFPExplorer/res/Find-next.ico new file mode 100644 index 0000000..63dcb07 Binary files /dev/null and b/WFPExplorer/res/Find-next.ico differ diff --git a/WFPExplorer/res/Find-prev.ico b/WFPExplorer/res/Find-prev.ico new file mode 100644 index 0000000..e4d5d3c Binary files /dev/null and b/WFPExplorer/res/Find-prev.ico differ diff --git a/WFPExplorer/res/Find.ico b/WFPExplorer/res/Find.ico new file mode 100644 index 0000000..b32cdf0 Binary files /dev/null and b/WFPExplorer/res/Find.ico differ diff --git a/WFPExplorer/resource.h b/WFPExplorer/resource.h index 2013b55..a6ba7d5 100644 --- a/WFPExplorer/resource.h +++ b/WFPExplorer/resource.h @@ -40,8 +40,11 @@ #define IDI_EVENT 235 #define IDD_NEWFILTER 236 #define IDI_SAVE 238 -#define IDI_ICON2 239 #define IDI_OPEN 239 +#define IDI_FIND 240 +#define IDI_FIND_NEXT 241 +#define IDI_ICON3 242 +#define IDI_FIND_PREV 242 #define IDC_VERSION 1000 #define IDC_COPYRIGHT 1001 #define IDC_KEY 1001 @@ -66,6 +69,7 @@ #define IDC_FLAGS 1017 #define IDC_TABS 1018 #define IDC_GENERATE 1019 +#define IDC_COPYFROM 1021 #define ID_WINDOW_CLOSE 32772 #define ID_WINDOW_CLOSE_ALL 32773 #define ID_OPTIONS_ALWAYSONTOP 32775 @@ -87,14 +91,16 @@ #define ID_NEW_FILTER 32791 #define ID_NEW_SIMPLEFILTER 32795 #define ID_NEW_PROVIDER 32796 +#define ID_EDIT_FIND32797 32797 +#define ID_EDIT_FINDNEXT 32798 // Next default values for new objects // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 240 -#define _APS_NEXT_COMMAND_VALUE 32797 -#define _APS_NEXT_CONTROL_VALUE 1021 +#define _APS_NEXT_RESOURCE_VALUE 243 +#define _APS_NEXT_COMMAND_VALUE 32801 +#define _APS_NEXT_CONTROL_VALUE 1022 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif diff --git a/wfpc/wfpc.cpp b/wfpc/wfpc.cpp index d843f78..91ae03a 100644 --- a/wfpc/wfpc.cpp +++ b/wfpc/wfpc.cpp @@ -3,7 +3,7 @@ #include "pch.h" #include "..\WFPCore\WFPEngine.h" -#include "..\WFPCore\Enumerators.h" +#include "..\WFPCore\WFPEnumerators.h" #pragma comment(lib, "Fwpuclnt.lib") #pragma comment(lib, "Shlwapi.lib")