October 16, 2018
Hot Topics:

Quickstart Guide to Screensavers

  • November 20, 2002
  • By Karl Moore
  • Send Email »
  • More Articles »

Previewing your screensaver means recreating a smaller version of it in the 'Preview' panel in the Display applet. This is not as difficult as it sounds and simply requires you to copy-and-paste a chunk of code.

Previewing your Screensaver

  • Add the following code to a module in your screensaver application:
Private Type RECT   Left As Long   Top As Long   Right As Long   Bottom As LongEnd TypePrivate Const WS_CHILD = &H40000000Private Const GWL_STYLE = (-16)Private Const GWL_HWNDPARENT = (-8)Private Const HWND_TOP = 0&Private Const SWP_NOZORDER = &H4Private Const SWP_NOACTIVATE = &H10Private Const SWP_SHOWWINDOW = &H40Declare Function GetClientRect Lib "user32" _    (ByVal hwnd As Long, lpRect As RECT) As LongDeclare Function GetWindowLong Lib "user32" _    Alias "GetWindowLongA" (ByVal hwnd As Long, _    ByVal nIndex As Long) As LongDeclare Sub SetWindowPos Lib "user32" (ByVal _    hwnd As Long, ByVal hWndInsertAfter As Long, _    ByVal X As Long, ByVal Y As Long, ByVal _    cx As Long, ByVal cy As Long, ByVal wFlags As Long)Declare Function SetWindowLong Lib "user32" _    Alias "SetWindowLongA" (ByVal hwnd As Long, _    ByVal nIndex As Long, ByVal dwNewLong As Long) As LongDeclare Function SetParent Lib "user32" _    (ByVal hWndChild As Long, _    ByVal hWndNewParent As Long) As LongPublic Sub DoPreviewMode(PreviewForm As Form)        Dim lngStyle As Long, dispHWND As Long, DispRec As RECT        dispHWND = CLng(Right(Command, Len(Command) - 3))        Load PreviewForm    GetClientRect dispHWND, DispRec    lngStyle = GetWindowLong(PreviewForm.hwnd, GWL_STYLE)    lngStyle = lngStyle Or WS_CHILD ' Append "WS_CHILD"    SetWindowLong PreviewForm.hwnd, GWL_STYLE, lngStyle    SetParent PreviewForm.hwnd, dispHWND    SetWindowLong PreviewForm.hwnd, GWL_HWNDPARENT, dispHWND    SetWindowPos PreviewForm.hwnd, HWND_TOP, 0&, 0&, _        DispRec.Right, DispRec.Bottom, _        SWP_NOZORDER Or SWP_NOACTIVATE Or SWP_SHOWWINDOW        End Sub
  • When a preview is requested (see Determining the Mode), run the DoPreviewMode method, passing it your form to preview as an argument

Page 4 of 8

Comment and Contribute


(Maximum characters: 1200). You have characters left.



Enterprise Development Update

Don't miss an article. Subscribe to our newsletter below.

By submitting your information, you agree that developer.com may send you developer offers via email, phone and text message, as well as email offers about other products and services that developer believes may be of interest to you. developer will process your information in accordance with the Quinstreet Privacy Policy.


Thanks for your registration, follow us on our social networks to keep up-to-date