struct path_string { char Item[sizeof(URL)]; int was_first; }; #define MAX_HISTORY_NUM 40 path_string history_list[MAX_HISTORY_NUM]; struct UrlsHistory { int links_count; int current; dword CurrentUrl(); dword GetUrl(); dword GetFirstLine(); void AddUrl(); byte GoBack(); byte GoForward(); } BrowserHistory; dword UrlsHistory::CurrentUrl() { return #history_list[current].Item; } dword UrlsHistory::GetUrl(int id) { return #history_list[id].Item; } dword UrlsHistory::GetFirstLine(int id) { return history_list[id].was_first; } void UrlsHistory::AddUrl() { int i; if (links_count>0) && (!strcmp(#URL,#history_list[current].Item)) return; if (current>=MAX_HISTORY_NUM-1) { current/=2; for (i=0; i