导航:  Windows Procedures >

AfxCaptureDisplay

上一页返回章节概述下一页

描述

 

捕获显示并返回位图的句柄.

 

FreeBASIC 语法

 

FUNCTION AfxCaptureDisplay () AS HBITMAP

 

返回值

 

位图句柄.

 

用法示例

 

DIM hBitmap AS HBITMAP = AfxCaptureDisplay

 

示例

 

' ########################################################################################

' Microsoft Windows

' File: CW_GraphCtxSkeletonStretchable.fbtpl

' Contents: CWindow Graphic Control Skeleton

' Compiler: FreeBasic 32 & 64 bit

' Copyright (c) 2016 José Roca. Freeware. Use at your own risk.

' THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER

' EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF

' MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.

' ########################################################################################

 

#define UNICODE

#INCLUDE ONCE "Afx/CWindow.inc"

#INCLUDE ONCE "Afx/CGraphCtx.inc"

USING Afx

 

CONST IDC_GRCTX = 1001

 

DECLARE FUNCTION WinMain (BYVAL hInstance AS HINSTANCE, _

                        BYVAL hPrevInstance AS HINSTANCE, _

                        BYVAL szCmdLine AS ZSTRING PTR, _

                        BYVAL nCmdShow AS LONG) AS LONG

 

 END WinMain(GetModuleHandleW(NULL), NULL, COMMAND(), SW_NORMAL)

 

DECLARE FUNCTION WndProc (BYVAL hwnd AS HWND, BYVAL uMsg AS UINT, BYVAL wParam AS WPARAM, BYVAL lParam AS LPARAM) AS LRESULT

 

' ========================================================================================

' Main

' ========================================================================================

FUNCTION WinMain (BYVAL hInstance AS HINSTANCE, _

                BYVAL hPrevInstance AS HINSTANCE, _

                BYVAL szCmdLine AS ZSTRING PTR, _

                BYVAL nCmdShow AS LONG) AS LONG

 

 ' // 设置处理DPI感知

 AfxSetProcessDPIAware

 

 ' // Create the main window

 DIM pWindow AS CWindow

 pWindow.Create(NULL, "CWindow Graphic Control Skeleton", @WndProc)

 pWindow.SetClientSize(600, 350)

 pWindow.Center

 

 ' // 添加图形控件

 DIM pGraphCtx AS CGraphCtx = CGraphCtx(@pWindow, IDC_GRCTX, "", 0, 0, pWindow.ClientWidth, pWindow.ClientHeight)

 pGraphCtx.Clear BGR(255, 255, 255)

 

 ' // Set it stretchable

 pGraphCtx.Stretchable = TRUE

 

 ' // Capture the desktop window and display it in the control

 DIM hBitmap AS HBITMAP = AfxCaptureDisplay

 pGraphCtx.SetVirtualBufferSize(AfxGetBitmapWidth(hBitmap), AfxGetBitmapHeight(hBitmap))

 AfxDrawBitmap(pGraphCtx.GetMemDC, 0, 0, hBitmap)

 DeleteObject hBitmap

 

 ' // Dispatch Windows events

 FUNCTION = pWindow.DoEvents(nCmdShow)

 

END FUNCTION

' ========================================================================================

 

' ========================================================================================

' 窗口处理程序

' ========================================================================================

FUNCTION WndProc (BYVAL hwnd AS HWND, BYVAL uMsg AS UINT, BYVAL wParam AS WPARAM, BYVAL lParam AS LPARAM) AS LRESULT

 

 SELECT CASE uMsg

 

    CASE WM_COMMAND

       SELECT CASE GET_WM_COMMAND_ID(wParam, lParam)

          CASE IDCANCEL

             ' // If ESC key pressed, close the application sending an WM_CLOSE message

             IF GET_WM_COMMAND_CMD(wParam, lParam) = BN_CLICKED THEN

                SendMessageW hwnd, WM_CLOSE, 0, 0

                EXIT FUNCTION

             END IF

       END SELECT

 

    CASE WM_SIZE

       ' // If the window isn't minimized, resize it

       IF wParam <> SIZE_MINIMIZED THEN

          DIM pWindow AS CWindow PTR = AfxCWindowPtr(hwnd)

          IF pWindow THEN pWindow->MoveWindow GetDlgItem(hwnd, IDC_GRCTX), 0, 0, pWindow->ClientWidth, pWindow->ClientHeight, CTRUE

       END IF

 

         CASE WM_DESTROY

       ' // End the application

       PostQuitMessage(0)

       EXIT FUNCTION

 

 END SELECT

 

 ' // Default processing of Windows messages

 FUNCTION = DefWindowProcW(hWnd, uMsg, wParam, lParam)

 

END FUNCTION

' ========================================================================================

 

引用文件

 

AfxWin.inc