void OnMenuAbout() { if (gHwndAbout) { SetActiveWindow(gHwndAbout); return; } gHwndAbout = CreateWindow( ABOUT_CLASS_NAME, ABOUT_WIN_TITLE, WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, ghinst, NULL); if (!gHwndAbout) return; // get the dimensions required for the about box's content RECT rc; PAINTSTRUCT ps; HDC hdc = BeginPaint(gHwndAbout, &ps); UpdateAboutLayoutInfo(gHwndAbout, hdc, &rc); EndPaint(gHwndAbout, &ps); InflateRect(&rc, ABOUT_RECT_PADDING, ABOUT_RECT_PADDING); // resize the new window to just match these dimensions RECT wRc, cRc; GetWindowRect(gHwndAbout, &wRc); GetClientRect(gHwndAbout, &cRc); wRc.right += rect_dx(&rc) - rect_dx(&cRc); wRc.bottom += rect_dy(&rc) - rect_dy(&cRc); MoveWindow(gHwndAbout, wRc.left, wRc.top, rect_dx(&wRc), rect_dy(&wRc), FALSE); ShowWindow(gHwndAbout, SW_SHOW); }
void OnPaintAbout(HWND hwnd) { PAINTSTRUCT ps; RECT rc; HDC hdc = BeginPaint(hwnd, &ps); UpdateAboutLayoutInfo(hwnd, hdc, &rc); DrawAbout(hwnd, hdc, &rc); EndPaint(hwnd, &ps); }
static void OnPaintAbout(HWND hwnd) { PAINTSTRUCT ps; RectI rc; HDC hdc = BeginPaint(hwnd, &ps); UpdateAboutLayoutInfo(hwnd, hdc, &rc); DrawAbout(hwnd, hdc, rc, gLinkInfo); EndPaint(hwnd, &ps); }
void DrawAboutPage(WindowInfo& win, HDC hdc) { ClientRect rc(win.hwndCanvas); UpdateAboutLayoutInfo(win.hwndCanvas, hdc, &rc); DrawAbout(win.hwndCanvas, hdc, rc, win.staticLinks); if (HasPermission(Perm_SavePreferences | Perm_DiskAccess) && gGlobalPrefs.rememberOpenedFiles) { RectI rect = DrawBottomRightLink(win.hwndCanvas, hdc, _TR("Show frequently read")); win.staticLinks.Append(StaticLinkInfo(rect, SLINK_LIST_SHOW)); } }
void OnMenuAbout() { if (gHwndAbout) { SetActiveWindow(gHwndAbout); return; } if (!gAtomAbout) { WNDCLASSEX wcex; FillWndClassEx(wcex, ghinst, ABOUT_CLASS_NAME, WndProcAbout); wcex.hIcon = LoadIcon(ghinst, MAKEINTRESOURCE(IDI_SUMATRAPDF)); gAtomAbout = RegisterClassEx(&wcex); CrashIf(!gAtomAbout); } gHwndAbout = CreateWindow( ABOUT_CLASS_NAME, ABOUT_WIN_TITLE, WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, ghinst, NULL); if (!gHwndAbout) return; // get the dimensions required for the about box's content RectI rc; PAINTSTRUCT ps; HDC hdc = BeginPaint(gHwndAbout, &ps); UpdateAboutLayoutInfo(gHwndAbout, hdc, &rc); EndPaint(gHwndAbout, &ps); rc.Inflate(ABOUT_RECT_PADDING, ABOUT_RECT_PADDING); // resize the new window to just match these dimensions WindowRect wRc(gHwndAbout); ClientRect cRc(gHwndAbout); wRc.dx += rc.dx - cRc.dx; wRc.dy += rc.dy - cRc.dy; MoveWindow(gHwndAbout, wRc.x, wRc.y, wRc.dx, wRc.dy, FALSE); ShowWindow(gHwndAbout, SW_SHOW); }
const TCHAR *AboutGetLink(WindowInfo *win, int x, int y, AboutLayoutInfoEl **el) { if (gRestrictedUse) return NULL; // Update the link location information if (win) UpdateAboutLayoutInfo(win->hwndCanvas, win->hdcToDraw, NULL); else OnPaintAbout(gHwndAbout); for (int i = 0; gAboutLayoutInfo[i].leftTxt; i++) { if ((x < gAboutLayoutInfo[i].rightTxtPosX) || (x > gAboutLayoutInfo[i].rightTxtPosX + gAboutLayoutInfo[i].rightTxtDx)) continue; if ((y < gAboutLayoutInfo[i].rightTxtPosY) || (y > gAboutLayoutInfo[i].rightTxtPosY + gAboutLayoutInfo[i].rightTxtDy)) continue; if (el) *el = &gAboutLayoutInfo[i]; return gAboutLayoutInfo[i].url; } return NULL; }