It is easy to do a screen capture of the entire window, including titlebar, menubar and frames. This method uses the API call GetDCEx from user32.dll. API functions from gdi32.dll are used to complete the task.
'nomainwin savefile$="" 'save file name WindowWidth=600:WindowHeight=400 menu #1, "&File", "&Save As...",[saveAs],"E&xit",[quit] button #1, "Save Capture", [saveAs],UL,10,10,100,30 graphicbox #1.g, 10, 50, 500, 270 open "Window Screen Capture" for window as #1 #1 "trapclose [quit]" #1.g "down; backcolor yellow; place 10 10; boxfilled 100 100;flush" hWindow=hwnd(#1) '_DCX_PARENTCLIP - Uses the visible region of the parent window. 'The parent's WS_CLIPCHILDREN and CS_PARENTDC style bits are ignored. 'The origin is set to the upper-left corner of the window identified by hWnd. '_DCX_WINDOW - Returns a DC that corresponds to the window rectangle 'rather than the client rectangle. flags=_DCX_PARENTCLIP or _DCX_WINDOW calldll #user32, "GetDCEx",hWindow as ulong, 0 as ulong, flags as long, hDC as ulong CallDLL #gdi32, "CreateCompatibleDC",hDC as ulong, hDst as ulong CallDLL #gdi32, "CreateCompatibleBitmap", _ hDC as ulong, WindowWidth as long, WindowHeight as long,_ hBitmap as ulong CallDLL #gdi32, "SelectObject", _ hDst as ulong, hBitmap as ulong, oldObj as ulong CallDll #gdi32, "BitBlt", hDst as ulong,0 as long, 0 as long,_ DisplayWidth as long, DisplayHeight as long, hDC as long, 0 as long, 0 as long,_ _SRCCOPY as long, re as long 'select original bmp into hDst DC CallDLL #gdi32, "SelectObject", hDst as ulong, oldObj as ulong, re as ulong 'the screen capture is displayed in a graphicbox for demonstration purposes loadbmp "capture",hBitmap #1.g "horizscrollbar on; vertscrollbar on" #1.g "discard; cls; drawbmp capture 0 0;flush" wait [quit] if hBitmap<>0 then CallDll #gdi32,"DeleteObject",hBitmap as ulong, re as long unloadbmp ("capture") end if CallDLL #gdi32, "DeleteDC", hDst as ulong,result as long CallDll #user32, "ReleaseDC",hWindow as ulong, hDC as ulong, r as long close #1:end [saveAs] filedialog "Save As... ","*.bmp",savefile$ if savefile$="" or hBitmap=0 then notice "Not able to save." wait end if b$=".bmp" if lower$(right$(savefile$,4))<>b$ then savefile$=savefile$+b$ bmpsave "capture",savefile$ wait