BOOL GetShortcutPath(InstallCfg *cfg) { // スタートメニュー&デスクトップに登録 TRegistry reg(HKEY_CURRENT_USER, BY_MBCS); if (reg.OpenKey(REGSTR_SHELLFOLDERS)) { char buf[MAX_PATH] = ""; reg.GetStr(REGSTR_PROGRAMS, buf, MAX_PATH); cfg->startMenu = AtoWs(buf); reg.GetStr(REGSTR_DESKTOP, buf, MAX_PATH); cfg->deskTop = AtoWs(buf); reg.CloseKey(); return TRUE; } return FALSE; }
/* Window 生成時の CallBack */ BOOL TShellExtDlg::EvCreate(LPARAM lParam) { if (!shellExt.Load(cfg->execDir, AtoWs(CURRENT_SHEXTDLL))) { TMsgBox(this).Exec("Can't load " CURRENT_SHEXTDLL); PostMessage(WM_CLOSE, 0, 0); return FALSE; } ReflectStatus(); if (rect.left == CW_USEDEFAULT) { GetWindowRect(&rect); int xsize = rect.right - rect.left, ysize = rect.bottom - rect.top; int cx = ::GetSystemMetrics(SM_CXFULLSCREEN), cy = ::GetSystemMetrics(SM_CYFULLSCREEN); int x = (cx - xsize)/2; int y = (cy - ysize)/2; MoveWindow((x < 0) ? 0 : x % (cx - xsize), (y < 0) ? 0 : y % (cy - ysize), xsize, ysize, FALSE); } else MoveWindow(rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top, FALSE); return TRUE; }