@@ -11,10 +11,13 @@ class CWebToolWindow : public IWebToolWindow, IWebDiffEventHandler
11
11
{
12
12
public:
13
13
CWebToolWindow () :
14
- m_hWnd (NULL )
15
- , m_hInstance(NULL )
16
- , m_pWebDiffWindow(NULL )
14
+ m_hWnd (nullptr )
15
+ , m_hInstance(nullptr )
16
+ , m_hComparePopup(nullptr )
17
+ , m_hEventSyncPopup(nullptr )
18
+ , m_pWebDiffWindow(nullptr )
17
19
, m_bInSync(false )
20
+ , m_nRef(0 )
18
21
{
19
22
}
20
23
@@ -26,13 +29,19 @@ class CWebToolWindow : public IWebToolWindow, IWebDiffEventHandler
26
29
{
27
30
m_hInstance = hInstance;
28
31
m_hWnd = CreateDialogParam (hInstance, MAKEINTRESOURCE (IDD_DIALOGBAR), hWndParent, DlgProc, reinterpret_cast <LPARAM>(this ));
32
+ m_hComparePopup = LoadMenu (hInstance, MAKEINTRESOURCE (IDR_POPUP_WEBPAGE_COMPARE));
33
+ m_hEventSyncPopup = LoadMenu (hInstance, MAKEINTRESOURCE (IDR_POPUP_WEBPAGE_SYNC_EVENTS));
29
34
return m_hWnd ? true : false ;
30
35
}
31
36
32
37
bool Destroy ()
33
38
{
34
39
BOOL bSucceeded = DestroyWindow (m_hWnd);
35
- m_hWnd = NULL ;
40
+ m_hWnd = nullptr ;
41
+ DestroyMenu (m_hComparePopup);
42
+ m_hComparePopup = nullptr ;
43
+ DestroyMenu (m_hEventSyncPopup);
44
+ m_hEventSyncPopup = nullptr ;
36
45
return !!bSucceeded;
37
46
}
38
47
@@ -61,17 +70,6 @@ class CWebToolWindow : public IWebToolWindow, IWebDiffEventHandler
61
70
EnableWindow (GetDlgItem (m_hWnd, IDC_HEIGHT), !m_pWebDiffWindow->GetFitToWindow ());
62
71
63
72
/*
64
- SendDlgItemMessage(m_hWnd, IDC_DIFF_HIGHLIGHT, BM_SETCHECK, m_pWebDiffWindow->GetShowDifferences() ? BST_CHECKED : BST_UNCHECKED, 0);
65
- SendDlgItemMessage(m_hWnd, IDC_DIFF_BLOCKSIZE_SLIDER, TBM_SETPOS, TRUE, m_pWebDiffWindow->GetDiffBlockSize());
66
- SendDlgItemMessage(m_hWnd, IDC_DIFF_BLOCKALPHA_SLIDER, TBM_SETPOS, TRUE, static_cast<LPARAM>(m_pWebDiffWindow->GetDiffColorAlpha() * 100));
67
- SendDlgItemMessage(m_hWnd, IDC_DIFF_CDTHRESHOLD_SLIDER, TBM_SETPOS, TRUE, static_cast<LPARAM>(m_pWebDiffWindow->GetColorDistanceThreshold()));
68
- SendDlgItemMessage(m_hWnd, IDC_OVERLAY_ALPHA_SLIDER, TBM_SETPOS, TRUE, static_cast<LPARAM>(m_pWebDiffWindow->GetOverlayAlpha() * 100));
69
- SendDlgItemMessage(m_hWnd, IDC_ZOOM_SLIDER, TBM_SETPOS, TRUE, static_cast<LPARAM>(m_pWebDiffWindow->GetZoom() * 8 - 8));
70
- SendDlgItemMessage(m_hWnd, IDC_DIFF_INSERTION_DELETION_DETECTION_MODE, CB_SETCURSEL, m_pWebDiffWindow->GetInsertionDeletionDetectionMode(), 0);
71
- SendDlgItemMessage(m_hWnd, IDC_OVERLAY_MODE, CB_SETCURSEL, m_pWebDiffWindow->GetOverlayMode(), 0);
72
- SendDlgItemMessage(m_hWnd, IDC_PAGE_SPIN, UDM_SETRANGE, 0, MAKELONG(1, m_pWebDiffWindow->GetMaxPageCount()));
73
- SendDlgItemMessage(m_hWnd, IDC_PAGE_SPIN, UDM_SETPOS, 0, MAKELONG(m_pWebDiffWindow->GetCurrentMaxPage() + 1, 0));
74
-
75
73
int w = static_cast<CWebDiffWindow *>(m_pWebDiffWindow)->GetDiffImageWidth();
76
74
int h = static_cast<CWebDiffWindow *>(m_pWebDiffWindow)->GetDiffImageHeight();
77
75
@@ -123,6 +121,51 @@ class CWebToolWindow : public IWebToolWindow, IWebDiffEventHandler
123
121
wcscpy_s (translated, org);
124
122
return std::wstring (translated);
125
123
};
124
+
125
+ struct StringIdControlId
126
+ {
127
+ int stringId;
128
+ int controlId;
129
+ };
130
+ static const StringIdControlId stringIdControlId[] = {
131
+ {IDS_COMPARE, IDC_COMPARE},
132
+ {IDS_ZOOM, IDC_ZOOM_LABEL},
133
+ {IDS_SYNC_EVENTS, IDC_SYNC_EVENTS},
134
+ {IDS_SHOWDIFFERENCES, IDC_SHOWDIFFERENCES},
135
+ };
136
+ for (auto & e: stringIdControlId)
137
+ ::SetDlgItemText (m_hWnd, e.controlId, translateString(e.stringId).c_str());
138
+
139
+ static const StringIdControlId stringIdControlId1[] = {
140
+ {IDS_WEB_COMPARE_SCREENSHOTS, ID_WEB_COMPARE_SCREENSHOTS},
141
+ {IDS_WEB_COMPARE_FULLSIZE_SCREENSHOTS, ID_WEB_COMPARE_FULLSIZE_SCREENSHOTS},
142
+ {IDS_WEB_COMPARE_HTMLS, ID_WEB_COMPARE_HTMLS},
143
+ {IDS_WEB_COMPARE_TEXTS, ID_WEB_COMPARE_TEXTS},
144
+ {IDS_WEB_COMPARE_RESOURCETREES, ID_WEB_COMPARE_RESOURCETREES},
145
+ };
146
+ for (auto & e : stringIdControlId1)
147
+ {
148
+ std::wstring str = translateString (e.stringId );
149
+ MENUITEMINFO mii = { sizeof (MENUITEMINFO) };
150
+ mii.fMask = MIIM_STRING;
151
+ mii.dwTypeData = const_cast <LPWSTR>(str.c_str ());
152
+ ::SetMenuItemInfo (m_hComparePopup, e.controlId, FALSE , &mii);
153
+ }
154
+ static const StringIdControlId stringIdControlId2[] = {
155
+ {IDS_WEB_SYNC_ENABLED, ID_WEB_SYNC_ENABLED},
156
+ {IDS_WEB_SYNC_SCROLL, ID_WEB_SYNC_SCROLL},
157
+ {IDS_WEB_SYNC_CLICK, ID_WEB_SYNC_CLICK},
158
+ {IDS_WEB_SYNC_INPUT, ID_WEB_SYNC_INPUT},
159
+ {IDS_WEB_SYNC_GOBACKFORWARD, ID_WEB_SYNC_GOBACKFORWARD},
160
+ };
161
+ for (auto & e : stringIdControlId2)
162
+ {
163
+ std::wstring str = translateString (e.stringId );
164
+ MENUITEMINFO mii = { sizeof (MENUITEMINFO) };
165
+ mii.fMask = MIIM_STRING;
166
+ mii.dwTypeData = const_cast <LPWSTR>(str.c_str ());
167
+ ::SetMenuItemInfo (m_hEventSyncPopup, e.controlId, FALSE , &mii);
168
+ }
126
169
}
127
170
128
171
private:
@@ -141,8 +184,7 @@ class CWebToolWindow : public IWebToolWindow, IWebDiffEventHandler
141
184
RECT rc;
142
185
GetWindowRect (GetDlgItem (m_hWnd, IDC_COMPARE), &rc);
143
186
POINT point{ rc.left , rc.bottom };
144
- HMENU hPopup = LoadMenu (GetModuleHandle (L" WinWebDiffLib.dll" ), MAKEINTRESOURCE (IDR_POPUP_WEBPAGE_COMPARE));
145
- HMENU hSubMenu = GetSubMenu (hPopup, 0 );
187
+ HMENU hSubMenu = GetSubMenu (m_hComparePopup, 0 );
146
188
TrackPopupMenu (hSubMenu, TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x , point.y , 0 , m_hWnd, nullptr );
147
189
}
148
190
@@ -151,8 +193,7 @@ class CWebToolWindow : public IWebToolWindow, IWebDiffEventHandler
151
193
RECT rc;
152
194
GetWindowRect (GetDlgItem (m_hWnd, IDC_SYNC_EVENTS), &rc);
153
195
POINT point{ rc.left , rc.bottom };
154
- HMENU hPopup = LoadMenu (GetModuleHandle (L" WinWebDiffLib.dll" ), MAKEINTRESOURCE (IDR_POPUP_WEBPAGE_SYNC_EVENTS));
155
- HMENU hSubMenu = GetSubMenu (hPopup, 0 );
196
+ HMENU hSubMenu = GetSubMenu (m_hEventSyncPopup, 0 );
156
197
CheckMenuItem (hSubMenu, ID_WEB_SYNC_ENABLED, m_pWebDiffWindow->GetSyncEvents () ? MF_CHECKED : MF_UNCHECKED);
157
198
CheckMenuItem (hSubMenu, ID_WEB_SYNC_SCROLL, m_pWebDiffWindow->GetSyncEventFlag (IWebDiffWindow::EVENT_SCROLL) ? MF_CHECKED : MF_UNCHECKED);
158
199
CheckMenuItem (hSubMenu, ID_WEB_SYNC_CLICK, m_pWebDiffWindow->GetSyncEventFlag (IWebDiffWindow::EVENT_CLICK) ? MF_CHECKED : MF_UNCHECKED);
@@ -224,6 +265,7 @@ class CWebToolWindow : public IWebToolWindow, IWebDiffEventHandler
224
265
case IDC_SYNC_EVENTS:
225
266
if (codeNotify == BN_CLICKED)
226
267
ShowSyncEventsPopupMenu ();
268
+ break ;
227
269
case ID_WEB_SYNC_ENABLED:
228
270
m_pWebDiffWindow->SetSyncEvents (!m_pWebDiffWindow->GetSyncEvents ());
229
271
break ;
@@ -381,7 +423,7 @@ class CWebToolWindow : public IWebToolWindow, IWebDiffEventHandler
381
423
382
424
HRESULT STDMETHODCALLTYPE QueryInterface (REFIID riid, void ** ppvObject) override { return E_NOTIMPL; }
383
425
ULONG STDMETHODCALLTYPE AddRef (void ) override { return ++m_nRef; }
384
- ULONG STDMETHODCALLTYPE Release (void ) override { if (--m_nRef == 0 ) { delete this ; return 0 ; } return m_nRef; }
426
+ ULONG STDMETHODCALLTYPE Release (void ) override { if (--m_nRef == 0 ) { return 0 ; } return m_nRef; }
385
427
386
428
HRESULT Invoke (const WebDiffEvent& event)
387
429
{
@@ -396,8 +438,10 @@ class CWebToolWindow : public IWebToolWindow, IWebDiffEventHandler
396
438
397
439
HWND m_hWnd;
398
440
HINSTANCE m_hInstance;
441
+ HMENU m_hComparePopup;
442
+ HMENU m_hEventSyncPopup;
399
443
IWebDiffWindow *m_pWebDiffWindow;
400
444
bool m_bInSync;
401
- int m_nRef = 0 ;
445
+ int m_nRef;
402
446
403
447
};
0 commit comments