Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions WinHTTrack/OptionTab8.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,8 @@ COptionTab8::COptionTab8() : CPropertyPage(COptionTab8::IDD)
m_updhack = FALSE;
m_urlhack = FALSE;
m_cookiesfile = _T("");
m_sitemap = FALSE;
m_sitemapurl = _T("");
//}}AFX_DATA_INIT
}

Expand All @@ -82,6 +84,9 @@ void COptionTab8::DoDataExchange(CDataExchange* pDX)
DDX_Check(pDX, IDC_updhack, m_updhack);
DDX_Check(pDX, IDC_urlhack, m_urlhack);
DDX_Text(pDX, IDC_cookiesfile, m_cookiesfile);
DDX_Check(pDX, IDC_sitemap, m_sitemap);
DDX_Text(pDX, IDC_sitemapurl, m_sitemapurl);
DDV_MaxChars(pDX, m_sitemapurl, 1023); // HTS_URLMAXSIZE, past which the engine aborts the mirror
//}}AFX_DATA_MAP
}

Expand Down Expand Up @@ -122,6 +127,9 @@ BOOL COptionTab8::OnInitDialog()
GetDlgItem(IDC_robots) ->ModifyStyle(0,WS_DISABLED);
GetDlgItem(IDC_STATIC_checktype) ->ModifyStyle(0,WS_DISABLED);
GetDlgItem(IDC_STATIC_spider) ->ModifyStyle(0,WS_DISABLED);
GetDlgItem(IDC_sitemap) ->ModifyStyle(0,WS_DISABLED);
GetDlgItem(IDC_sitemapurl) ->ModifyStyle(0,WS_DISABLED);
GetDlgItem(IDC_STATIC_sitemapurl)->ModifyStyle(0,WS_DISABLED);
} else {
GetDlgItem(IDC_cookies) ->ModifyStyle(WS_DISABLED,0);
GetDlgItem(IDC_checktype) ->ModifyStyle(WS_DISABLED,0);
Expand All @@ -133,6 +141,9 @@ BOOL COptionTab8::OnInitDialog()
GetDlgItem(IDC_robots) ->ModifyStyle(WS_DISABLED,0);
GetDlgItem(IDC_STATIC_checktype) ->ModifyStyle(WS_DISABLED,0);
GetDlgItem(IDC_STATIC_spider) ->ModifyStyle(WS_DISABLED,0);
GetDlgItem(IDC_sitemap) ->ModifyStyle(WS_DISABLED,0);
GetDlgItem(IDC_sitemapurl) ->ModifyStyle(WS_DISABLED,0);
GetDlgItem(IDC_STATIC_sitemapurl)->ModifyStyle(WS_DISABLED,0);
}

if (LANG_T(-1)) { // Patcher en français
Expand All @@ -145,6 +156,8 @@ BOOL COptionTab8::OnInitDialog()
SetDlgItemTextCP(this, IDC_updhack,LANG(LANG_I62b));
SetDlgItemTextCP(this, IDC_urlhack,LANG(LANG_I62b2));
SetDlgItemTextCP(this, IDC_STATIC_cookiesfile,LANG(LANG_COOKIEFILE));
SetDlgItemTextLang(this, IDC_sitemap,LANG(LANG_SITEMAP));
SetDlgItemTextLang(this, IDC_STATIC_sitemapurl,LANG(LANG_SITEMAPURL));
SetCombo(this,IDC_checktype,LISTDEF_7);
SetCombo(this,IDC_robots,LISTDEF_8);
}
Expand Down Expand Up @@ -202,6 +215,8 @@ const char* COptionTab8::GetTip(int ID)
case IDC_updhack: return LANG(LANG_I1k); break;
case IDC_urlhack: return LANG(LANG_I1k2); break;
case IDC_cookiesfile: return LANG(LANG_COOKIEFILETIP); break;
case IDC_sitemap: return LANG(LANG_SITEMAPTIP); break;
case IDC_sitemapurl: return LANG(LANG_SITEMAPURLTIP); break;
}
return "";
}
Expand Down
2 changes: 2 additions & 0 deletions WinHTTrack/OptionTab8.h
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,8 @@ class COptionTab8 : public CPropertyPage
BOOL m_updhack;
BOOL m_urlhack;
CString m_cookiesfile;
BOOL m_sitemap;
CString m_sitemapurl;
//}}AFX_DATA


Expand Down
21 changes: 21 additions & 0 deletions WinHTTrack/OptionTab9.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,9 @@ COptionTab9::COptionTab9() : CPropertyPage(COptionTab9::IDD)
m_index2 = FALSE;
m_index_mail = FALSE;
m_warc = FALSE;
m_singlefile = FALSE;
m_singlefilemax = _T("");
m_changes = FALSE;
//}}AFX_DATA_INIT
}

Expand All @@ -80,6 +83,10 @@ void COptionTab9::DoDataExchange(CDataExchange* pDX)
DDX_Check(pDX, IDC_index2, m_index2);
DDX_Check(pDX, IDC_index_mail, m_index_mail);
DDX_Check(pDX, IDC_warc, m_warc);
DDX_Check(pDX, IDC_singlefile, m_singlefile);
DDX_Text(pDX, IDC_singlefilemax, m_singlefilemax);
DDV_MaxChars(pDX, m_singlefilemax, 19); // an LLint byte count is 19 digits at most
DDX_Check(pDX, IDC_changes, m_changes);
//}}AFX_DATA_MAP
}

Expand All @@ -105,6 +112,9 @@ BOOL COptionTab9::OnInitDialog()
SetDlgItemTextCP(this, IDC_logf,LANG(LANG_I36)); // "Fichiers d'audit");
SetDlgItemTextCP(this, IDC_Cache2,LANG(LANG_I61));
SetDlgItemTextCP(this, IDC_norecatch,LANG(LANG_I34b));
SetDlgItemTextLang(this, IDC_singlefile,LANG(LANG_SINGLEFILE));
SetDlgItemTextLang(this, IDC_STATIC_singlefilemax,LANG(LANG_SINGLEFILEMAX));
SetDlgItemTextLang(this, IDC_changes,LANG(LANG_CHANGES));
SetCombo(this,IDC_logtype,LISTDEF_9);
}

Expand All @@ -117,6 +127,10 @@ BOOL COptionTab9::OnInitDialog()
GetDlgItem(IDC_logf) ->ModifyStyle(0,WS_DISABLED);
GetDlgItem(IDC_Cache2) ->ModifyStyle(0,WS_DISABLED);
GetDlgItem(IDC_warc) ->ModifyStyle(0,WS_DISABLED);
GetDlgItem(IDC_singlefile)->ModifyStyle(0,WS_DISABLED);
GetDlgItem(IDC_singlefilemax)->ModifyStyle(0,WS_DISABLED);
GetDlgItem(IDC_STATIC_singlefilemax)->ModifyStyle(0,WS_DISABLED);
GetDlgItem(IDC_changes) ->ModifyStyle(0,WS_DISABLED);
GetDlgItem(IDC_logtype) ->ModifyStyle(0,WS_DISABLED);
} else {
GetDlgItem(IDC_norecatch)->ModifyStyle(WS_DISABLED,0);
Expand All @@ -126,6 +140,10 @@ BOOL COptionTab9::OnInitDialog()
GetDlgItem(IDC_logf) ->ModifyStyle(WS_DISABLED,0);
GetDlgItem(IDC_Cache2) ->ModifyStyle(WS_DISABLED,0);
GetDlgItem(IDC_warc) ->ModifyStyle(WS_DISABLED,0);
GetDlgItem(IDC_singlefile)->ModifyStyle(WS_DISABLED,0);
GetDlgItem(IDC_singlefilemax)->ModifyStyle(WS_DISABLED,0);
GetDlgItem(IDC_STATIC_singlefilemax)->ModifyStyle(WS_DISABLED,0);
GetDlgItem(IDC_changes) ->ModifyStyle(WS_DISABLED,0);
GetDlgItem(IDC_logtype) ->ModifyStyle(WS_DISABLED,0);
}

Expand Down Expand Up @@ -180,6 +198,9 @@ const char* COptionTab9::GetTip(int ID)
case IDC_logf: return LANG(LANG_I7); break; // "Create log files for error and info report","Générer des fichiers d'audit pour les erreurs et les messages"); break;
case IDC_Cache2: return LANG(LANG_I1e); break;
case IDC_warc: return "Write an ISO-28500 WARC archive (.warc.gz)"; break;
case IDC_singlefile: return LANG(LANG_SINGLEFILETIP); break;
case IDC_singlefilemax: return LANG(LANG_SINGLEFILEMAXTIP); break;
case IDC_changes: return LANG(LANG_CHANGESTIP); break;
case IDC_logtype: return LANG(LANG_I1f); break;
}
return "";
Expand Down
3 changes: 3 additions & 0 deletions WinHTTrack/OptionTab9.h
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,9 @@ class COptionTab9 : public CPropertyPage
BOOL m_index2;
BOOL m_index_mail;
BOOL m_warc;
BOOL m_singlefile;
CString m_singlefilemax;
BOOL m_changes;
//}}AFX_DATA


Expand Down
76 changes: 76 additions & 0 deletions WinHTTrack/Shell.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -557,6 +557,11 @@ void compute_options() {
if(maintab->m_option2.m_external) ShellOptions->external = "x"; else ShellOptions->external = "";
if(maintab->m_option2.m_nopurge) ShellOptions->nopurge = "X0"; else ShellOptions->nopurge = "";
if(maintab->m_option9.m_warc) ShellOptions->warc = "1"; else ShellOptions->warc = "";
if(maintab->m_option8.m_sitemap) ShellOptions->sitemap = "1"; else ShellOptions->sitemap = "";
ShellOptions->sitemapurl = maintab->m_option8.m_sitemapurl;
if(maintab->m_option9.m_singlefile) ShellOptions->singlefile = "1"; else ShellOptions->singlefile = "";
ShellOptions->singlefilemax = maintab->m_option9.m_singlefilemax;
if(maintab->m_option9.m_changes) ShellOptions->changes = "1"; else ShellOptions->changes = "";
if(maintab->m_option2.m_hidepwd) ShellOptions->hidepwd = "%x"; else ShellOptions->hidepwd = "";
if(maintab->m_option2.m_hidequery) ShellOptions->hidequery = "%q0"; else ShellOptions->hidequery = "";

Expand Down Expand Up @@ -1856,6 +1861,28 @@ static void splitStringInArray(CSimpleArray<CString> &args,
}
}

// A value restored from a profile never met the dialog's validation, so an option's
// argument is checked here as well: the engine aborts the whole mirror on one that is
// over-long, or that starts with a dash, which it reads as the argument being missing.
static BOOL isEngineArgument(const CString &value) {
if (value.IsEmpty() || value[0] == '-')
return FALSE;
// the engine measures the UTF-8 bytes strdupt_utf8() will hand it, not these characters
char *utf8 = hts_convertStringSystemToUTF8(value, value.GetLength()); // freet() nulls it, so not const
const BOOL fits = utf8 == NULL || strlen(utf8) < HTS_URLMAXSIZE;
if (utf8 != NULL)
freet(utf8);
return fits;
}

static BOOL isAllDigits(const CString &value) {
for(int i = 0 ; i < value.GetLength() ; i++) {
if (value[i] < '0' || value[i] > '9')
return FALSE;
}
return !value.IsEmpty();
}

// Lancement
void lance(void) {
char **argv;
Expand Down Expand Up @@ -1954,6 +1981,35 @@ void lance(void) {
args.Add("--warc");
}

// Long forms, own tokens: same reason as --warc above. Each option's own checkbox
// gates it, so an unticked box never reaches the engine through a field left filled.
if (ShellOptions->sitemap.GetLength() != 0) {
CString sitemapurl = ShellOptions->sitemapurl;
sitemapurl.Trim();
// an address given here replaces the robots.txt then /sitemap.xml probe
if (isEngineArgument(sitemapurl)) {
args.Add("--sitemap-url");
args.Add(sitemapurl);
} else {
args.Add("--sitemap");
}
}

if (ShellOptions->singlefile.GetLength() != 0) {
args.Add("--single-file");
CString singlefilemax = ShellOptions->singlefilemax;
singlefilemax.Trim();
// the cap implies --single-file, so it must not leak out on its own
if (isAllDigits(singlefilemax) && isEngineArgument(singlefilemax)) {
args.Add("--single-file-max-size");
args.Add(singlefilemax);
}
}

if (ShellOptions->changes.GetLength() != 0) {
args.Add("--changes");
}

if (ShellOptions->user.GetLength() != 0) {
args.Add("-F");
args.Add(ShellOptions->user);
Expand Down Expand Up @@ -2516,6 +2572,11 @@ void Write_profile(CString path,int load_path) {
MyWriteProfileInt(path,strSection, "NoQueryStrings",maintab->m_option2.m_hidequery);
MyWriteProfileInt(path,strSection, "NoPurgeOldFiles",maintab->m_option2.m_nopurge);
MyWriteProfileInt(path,strSection, "Warc",maintab->m_option9.m_warc);
MyWriteProfileInt(path,strSection, "Sitemap",maintab->m_option8.m_sitemap);
MyWriteProfileString(path,strSection, "SitemapUrl",maintab->m_option8.m_sitemapurl);
MyWriteProfileInt(path,strSection, "SingleFile",maintab->m_option9.m_singlefile);
MyWriteProfileString(path,strSection, "SingleFileMaxSize",maintab->m_option9.m_singlefilemax);
MyWriteProfileInt(path,strSection, "Changes",maintab->m_option9.m_changes);
MyWriteProfileInt(path,strSection, "Cookies",maintab->m_option8.m_cookies);
MyWriteProfileInt(path,strSection, "CheckType",maintab->m_option8.m_checktype);
MyWriteProfileInt(path,strSection, "ParseJava",maintab->m_option8.m_parsejava);
Expand Down Expand Up @@ -2718,13 +2779,23 @@ void Write_profile(CString path,int load_path) {
MyWriteProfileInt(path,strSection, "URLHack", n);
maintab->m_option8.GetDlgItemText(IDC_cookiesfile,st);
MyWriteProfileString(path,strSection, "CookiesFile", st);
n=maintab->m_option8.IsDlgButtonChecked(IDC_sitemap);
MyWriteProfileInt(path,strSection, "Sitemap", n);
maintab->m_option8.GetDlgItemText(IDC_sitemapurl,st);
MyWriteProfileString(path,strSection, "SitemapUrl", st);
maintab->m_option4.GetDlgItemText(IDC_pausefiles,st);
MyWriteProfileString(path,strSection, "PauseFiles", st);
// 9
maintab->m_option9.GetDlgItemText(IDC_Cache2,st);
MyWriteProfileString(path,strSection, "StoreAllInCache", st);
maintab->m_option9.GetDlgItemText(IDC_logtype,st);
MyWriteProfileString(path,strSection, "LogType", st);
n=maintab->m_option9.IsDlgButtonChecked(IDC_singlefile);
MyWriteProfileInt(path,strSection, "SingleFile", n);
maintab->m_option9.GetDlgItemText(IDC_singlefilemax,st);
MyWriteProfileString(path,strSection, "SingleFileMaxSize", st);
n=maintab->m_option9.IsDlgButtonChecked(IDC_changes);
MyWriteProfileInt(path,strSection, "Changes", n);
// 10
maintab->m_option10.GetDlgItemText(IDC_prox,st);
MyWriteProfileString(path,strSection,"Proxy",st);
Expand Down Expand Up @@ -2859,6 +2930,11 @@ void Read_profile(CString path,int load_path) {
maintab->m_option2.m_hidequery = MyGetProfileInt(path,strSection, "NoQueryStrings",0);
maintab->m_option2.m_nopurge = MyGetProfileInt(path,strSection, "NoPurgeOldFiles",0);
maintab->m_option9.m_warc = MyGetProfileInt(path,strSection, "Warc",0);
maintab->m_option8.m_sitemap = MyGetProfileInt(path,strSection, "Sitemap",0);
maintab->m_option8.m_sitemapurl = MyGetProfileString(path,strSection, "SitemapUrl");
maintab->m_option9.m_singlefile = MyGetProfileInt(path,strSection, "SingleFile",0);
maintab->m_option9.m_singlefilemax = MyGetProfileString(path,strSection, "SingleFileMaxSize");
maintab->m_option9.m_changes = MyGetProfileInt(path,strSection, "Changes",0);
maintab->m_option8.m_cookies = MyGetProfileInt(path,strSection, "Cookies",1);
maintab->m_option8.m_checktype = MyGetProfileInt(path,strSection, "CheckType",1);
maintab->m_option8.m_parsejava = MyGetProfileInt(path,strSection, "ParseJava",1);
Expand Down
2 changes: 1 addition & 1 deletion WinHTTrack/Shell.h
Original file line number Diff line number Diff line change
Expand Up @@ -262,7 +262,7 @@ class CShellOptions {
maxconn, maxlinks, hh, mm, ss, buff_filtres, buff_MIME,
_RasString, accept_language, other_headers, default_referer,
cookiesfile, pausefiles, keepwww, keepslashes, keepqueryorder,
stripquery;
stripquery, sitemap, sitemapurl, singlefile, singlefilemax, changes;
CString LINE_back;
RASDIALPARAMS _dial;
};
Expand Down
11 changes: 9 additions & 2 deletions WinHTTrack/WinHTTrack.rc
Original file line number Diff line number Diff line change
Expand Up @@ -624,7 +624,7 @@ BEGIN
LTEXT "Tip: To have ALL GIF files included, use something like +www.someweb.com/*.gif. \n(+*.gif / -*.gif will include/exclude ALL GIFs from ALL sites)",IDC_STATIC_tip,16,150,289,36
END

IDD_OPTION8 DIALOGEX 0, 0, 272, 161
IDD_OPTION8 DIALOGEX 0, 0, 272, 192
STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION | WS_SYSMENU
CAPTION "Spider"
FONT 8, "MS Sans Serif", 0, 0, 0x0
Expand All @@ -642,9 +642,12 @@ BEGIN
LTEXT "Load cookies from file:",IDC_STATIC_cookiesfile,16,144,120,8
EDITTEXT IDC_cookiesfile,140,142,96,12,ES_AUTOHSCROLL
PUSHBUTTON "...",IDC_cookiesfilebrowse,240,142,16,12
CONTROL "Seed the crawl from the site's sitemap",IDC_sitemap,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,160,244,9
LTEXT "Sitemap address:",IDC_STATIC_sitemapurl,16,176,120,8
EDITTEXT IDC_sitemapurl,140,174,116,12,ES_AUTOHSCROLL
END

IDD_OPTION9 DIALOGEX 0, 0, 325, 143
IDD_OPTION9 DIALOGEX 0, 0, 325, 176
STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION | WS_SYSMENU
CAPTION "Log, Index, Cache"
FONT 8, "MS Sans Serif", 0, 0, 0x0
Expand All @@ -658,6 +661,10 @@ BEGIN
CONTROL "Make an index",IDC_index,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,80,304,9
CONTROL "Make a word database",IDC_index2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,96,304,9
CONTROL "Build a mail archive",IDC_index_mail,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,112,306,9
CONTROL "Inline assets as data: URIs (self-contained pages)",IDC_singlefile,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,128,305,9
LTEXT "Largest inlined asset (bytes):",IDC_STATIC_singlefilemax,32,145,140,8
EDITTEXT IDC_singlefilemax,175,143,64,12,ES_AUTOHSCROLL | ES_NUMBER
CONTROL "Report what changed since the previous mirror",IDC_changes,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,160,305,9
END

IDD_OPTION10 DIALOG 0, 0, 309, 61
Expand Down
10 changes: 10 additions & 0 deletions WinHTTrack/cpp_lang.h
Original file line number Diff line number Diff line change
Expand Up @@ -508,6 +508,16 @@ Please visit our Website: http://www.httrack.com
#define LANG_KEEPQUERYORDERTIP LANGSEL("LANG_KEEPQUERYORDERTIP")
#define LANG_STRIPQUERY LANGSEL("LANG_STRIPQUERY")
#define LANG_STRIPQUERYTIP LANGSEL("LANG_STRIPQUERYTIP")
#define LANG_SITEMAP LANGSEL("LANG_SITEMAP")
#define LANG_SITEMAPTIP LANGSEL("LANG_SITEMAPTIP")
#define LANG_SITEMAPURL LANGSEL("LANG_SITEMAPURL")
#define LANG_SITEMAPURLTIP LANGSEL("LANG_SITEMAPURLTIP")
#define LANG_SINGLEFILE LANGSEL("LANG_SINGLEFILE")
#define LANG_SINGLEFILETIP LANGSEL("LANG_SINGLEFILETIP")
#define LANG_SINGLEFILEMAX LANGSEL("LANG_SINGLEFILEMAX")
#define LANG_SINGLEFILEMAXTIP LANGSEL("LANG_SINGLEFILEMAXTIP")
#define LANG_CHANGES LANGSEL("LANG_CHANGES")
#define LANG_CHANGESTIP LANGSEL("LANG_CHANGESTIP")

#endif

Expand Down
6 changes: 6 additions & 0 deletions WinHTTrack/newlang.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -647,6 +647,12 @@ BOOL SetDlgItemTextUTF8(CWnd* wnd, int nIDDlgItem, LPCSTR lpString) {
return SetDlgItemTextUTF8(wnd->m_hWnd, nIDDlgItem, lpString);
}

BOOL SetDlgItemTextLang(CWnd* wnd, int nIDDlgItem, LPCSTR lpString) {
if (lpString == NULL || *lpString == '\0')
return FALSE;
return SetDlgItemTextCP(wnd->m_hWnd, nIDDlgItem, lpString);
}

BOOL SetWindowTextCP(HWND hWnd, LPCSTR lpString) {
if (NewLangCP != CP_THREAD_ACP)
return SetWindowTextW(hWnd, ConvertCodepage(lpString, NewLangCP));
Expand Down
3 changes: 3 additions & 0 deletions WinHTTrack/newlang.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,9 @@ void conv_printf(char* from,char* to);

BOOL SetDlgItemTextCP(HWND hDlg, int nIDDlgItem, LPCSTR lpString);
BOOL SetDlgItemTextCP(CWnd* wnd, int nIDDlgItem, LPCSTR lpString);
/* As SetDlgItemTextCP(), but keeps the .rc caption when lpString is empty:
LANGSEL() yields "" for a key the loaded language file does not carry. */
BOOL SetDlgItemTextLang(CWnd* wnd, int nIDDlgItem, LPCSTR lpString);
BOOL SetDlgItemTextUTF8(HWND hDlg, int nIDDlgItem, LPCSTR lpString);
BOOL SetDlgItemTextUTF8(CWnd* wnd, int nIDDlgItem, LPCSTR lpString);
BOOL SetWindowTextCP(HWND hWnd, LPCSTR lpString);
Expand Down
9 changes: 8 additions & 1 deletion WinHTTrack/resource.h
Original file line number Diff line number Diff line change
Expand Up @@ -545,6 +545,13 @@ Please visit our Website: http://www.httrack.com
#define IDC_stripquery 1318
#define IDC_STATIC_stripquery 1319
#define IDC_cookiesfilebrowse 1320
#define IDC_sitemap 1322
#define IDC_sitemapurl 1323
#define IDC_STATIC_sitemapurl 1324
#define IDC_singlefile 1325
#define IDC_singlefilemax 1326
#define IDC_STATIC_singlefilemax 1327
#define IDC_changes 1328
#define ID_MENUITEM32771 32771
#define ID_MENUITEM32772 32772
#define ID_EXIT 32772
Expand Down Expand Up @@ -616,7 +623,7 @@ Please visit our Website: http://www.httrack.com
#define _APS_3D_CONTROLS 1
#define _APS_NEXT_RESOURCE_VALUE 247
#define _APS_NEXT_COMMAND_VALUE 32837
#define _APS_NEXT_CONTROL_VALUE 1322
#define _APS_NEXT_CONTROL_VALUE 1329
#define _APS_NEXT_SYMED_VALUE 108
#endif
#endif
Loading