}
/////////////////////////////////////////////////// CMapHyperLink implementation
void CMapHyperLink::SetDefaultCursor()
{
if (m_hLinkCursor == NULL) // No cursor handle - load our own
{
// Get the windows directory
CString strWndDir;
GetWindowsDirectory(strWndDir.GetBuffer(MAX_PATH), MAX_PATH);
strWndDir.ReleaseBuffer();
strWndDir += _T("\winhlp32.exe");
// This retrieves cursor #106 from winhlp32.exe, which is a hand pointer
HMODULE hModule = LoadLibrary(strWndDir);
if (hModule) {
HCURSOR hHandCursor = ::LoadCursor(hModule, MAKEINTRESOURCE(106));
if (hHandCursor)
m_hLinkCursor = CopyCursor(hHandCursor);
}
FreeLibrary(hModule);
}
}
LONG CMapHyperLink::GetRegKey(HKEY key, LPCTSTR subkey, LPTSTR retdata)
{
HKEY hkey;
LONG retval = RegOpenKeyEx(key, subkey, 0, KEY_QUERY_VALUE, &hkey);
if (retval == ERROR_SUCCESS) {
long datasize = MAX_PATH;
TCHAR data[MAX_PATH];
RegQueryValue(hkey, NULL, data, &datasize);
lstrcpy(retdata,data);
RegCloseKey(hkey);
}
return retval;
}
void CMapHyperLink::ReportError(int nError)
{
CString str;
switch (nError) {
case 0:
str = "The operating system is out\nof memory or resources."; break;
case SE_ERR_PNF:
str = "The specified path was not found."; break;
case SE_ERR_FNF:
str = "The specified file was not found."; break;
case ERROR_BAD_FORMAT:
str = "The .EXE file is invalid\n(non-Win32 .EXE or error in .EXE image)."; break;
case SE_ERR_ACCESSDENIED:
str = "The operating system denied\naccess to the specified file."; break;
case SE_ERR_ASSOCINCOMPLETE:
str = "The filename association is\nincomplete or invalid."; break;
case SE_ERR_DDEBUSY:
str = "The DDE transaction could not\nbe completed because other DDE transactions\nwere being processed."; break;
case SE_ERR_DDEFAIL:
str = "The DDE transaction failed."; break;
case SE_ERR_DDETIMEOUT:
str = "The DDE transaction could not\nbe completed because the request timed out."; break;
case SE_ERR_DLLNOTFOUND:
str = "The specified dynamic-link library was not found."; break;
case SE_ERR_NOASSOC:
str = "There is no application associated\nwith the given filename extension."; break;
case SE_ERR_OOM:
str = "There was not enough memory to complete the operation."; break;
case SE_ERR_SHARE:
str = "A sharing violation occurred. ";
default:
str.Format("Unknown Error (%d) occurred.", nError); break;
}
str = "Unable to open hyperlink:\n\n" + str;
AfxMessageBox(str, MB_ICONEXCLAMATION | MB_OK);
}
HINSTANCE CMapHyperLink::GotoURL(LPCTSTR url, int showcmd)
{
TCHAR key[MAX_PATH + MAX_PATH];
// First try ShellExecute()
HINSTANCE result = ShellExecute(NULL, _T("open"), url, NULL,NULL, showcmd);
// If it failed, get the .htm regke