Using Win32 functions in Visual FoxPro Image Gallery
Code examples:
Displaying bitmap using the AlphaBlend function
Dragging files from Explorer window and dropping them on FoxPro control (requires VFP9)
Testing serial ports
Using Video Capture: displaying on FoxPro form frames and previewing video obtained from a digital camera
How to disable the Windows Clipboard (VFP9)
How to make a VFP form fading out when released (GDI+ version)
Using WM_COPYDATA for interprocess communication (VFP9)
How to suspend or hibernate your system
Vertical Label control
How to prevent users from accessing the Windows Desktop and from switching to other applications
Using FlashWindowEx to flash the taskbar button of the VFP application
Copying picture of the active form to the Clipboard using Enhanced Metafile API functions
Testing Clipboard functions: emptying the clipboard
How to make application automatically close all documents it opened
How to change the name and the size of the font in the MessageBox dialog
Confining Windows calculator inside the VFP main window
Extensible Storage Engine class library
How to create MD-5 and SHA-1 hash values from a string
Creating irregularly shaped FoxPro form using transparency color key
How to create non-blocking Winsock server
How to ping a remote site using ICMP API calls
How to put a vertical text scrolling on the form (a movie cast)
How to retrieve configuration data for a specified printer stored in the registry (PrinterDriverData key)
Using Common Controls: the Header Control
Displaying bitmap using the AlphaBlend function

User rating: 9/10 (1 votes)
Rate this code sample:
  • ~
More code examples    Listed functions    Add comment     W32 Constants      Translate this page Printer friendly version of this code sample
Before you begin:
The AlphaBlend function displays bitmaps that have transparent or semitransparent pixels.

See also:
  • Bitmap Class for Visual FoxPro application
  • Semi-transparent Form
  • Form Magnifier
  • GDI+: Color Transparency
  •  
    #DEFINE LR_LOADFROMFILE 16
    #DEFINE AC_SRC_OVER 0
    #DEFINE AC_SRC_ALPHA 1
    #DEFINE AC_SRC_NO_ALPHA 2
    #DEFINE IMAGE_BITMAP 0
    #DEFINE SRCCOPY 0xCC0020
    #DEFINE BITMAP_STRU_SIZE 24
     
    DO declare
     
    LOCAL lcBitmap
    *lcBitmap = "C:\WinNT\system32\setup.bmp"
    lcBitmap = "C:\Windows\Forest.bmp"
    = LoadAndShowBitmap(lcBitmap, LR_LOADFROMFILE, 20,100)
    * end of main
     
    PROCEDURE LoadAndShowBitmap(lcBitmap, lnLoadOptions, lnX,lnY)
        LOCAL hBitmap
        hBitmap = LoadImage(0, lcBitmap, IMAGE_BITMAP,;
            0,0, lnLoadOptions)
     
        IF hBitmap <> 0
            = ShowBitmap(hBitmap, lnX,lnY)
            = DeleteObject(hBitmap)
        ELSE
            = MESSAGEBOX(lcBitmap + Chr(13) + Chr(13) +;
                "Check if this is a valid bitmap file.",;
                32, " Unable to load an image from file")
        ENDIF
     
    PROCEDURE ShowBitmap(hBitmap, lnX, lnY)
    *|typedef struct _BLENDFUNCTION {
    *|  BYTE     BlendOp;
    *|  BYTE     BlendFlags;
    *|  BYTE     SourceConstantAlpha;
    *|  BYTE     AlphaFormat;
    *|}BLENDFUNCTION, *PBLENDFUNCTION, *LPBLENDFUNCTION;
     
        LOCAL hWindow, hDC, hMemDC, lnWidth, lnHeight
        STORE 0 TO lnWidth, lnHeight
        = GetBitmapSize(hBitmap, @lnWidth, @lnHeight)
     
        hWindow = GetActiveWindow()
        hDC = GetWindowDC(hWindow)
     
        hMemDC = CreateCompatibleDC(hDC)
        = SelectObject(hMemDC, hBitmap)
     
        LOCAL lnAlphaBlend, lnResult,;
            lnBlendOp, lnBlendFlags, lnSrcConstAlpha, lnAlphaFormat
     
        lnBlendOp = AC_SRC_OVER  && always
        lnBlendFlags = 0         && always
        lnSrcConstAlpha = 48     && intensity, up to 255
        lnAlphaFormat = 0        && try AC_SRC_ALPHA on non-white background
     
        * assembling the BLENDFUNCTION structure 
        lnAlphaBlend = lnBlendOp +;
            BitLShift(lnBlendFlags, 8) +;
            BitLShift(lnSrcConstAlpha, 16) +;
            BitLShift(lnAlphaFormat, 24)
     
        lnResult = AlphaBlend(hDC, lnX,lnY, lnWidth,lnHeight,;
            hMemDC, 0,0, lnWidth,lnHeight,;
            lnAlphaBlend)
     
        IF lnResult = 0
        *  6 = The handle is invalid
        * 87 = The parameter is incorrect
            ? "Error:", GetLastError()
        ENDIF
     
        = DeleteDC(hMemDC)
        = ReleaseDC(hWindow, hDc)
    RETURN .T.
     
    FUNCTION GetBitmapSize(hBitmap, lnWidth, lnHeight)
        LOCAL lcBuffer
        lcBuffer = Repli(Chr(0), BITMAP_STRU_SIZE)
     
        IF GetObjectA(hBitmap, BITMAP_STRU_SIZE, @lcBuffer) <> 0
            lnWidth  = buf2dword(SUBSTR(lcBuffer, 5,4))
            lnHeight = buf2dword(SUBSTR(lcBuffer, 9,4))
           ENDIF
     
    FUNCTION buf2dword(lcBuffer)
    RETURN Asc(SUBSTR(lcBuffer, 1,1)) + ;
        BitLShift(Asc(SUBSTR(lcBuffer, 2,1)),  8) +;
        BitLShift(Asc(SUBSTR(lcBuffer, 3,1)), 16) +;
        BitLShift(Asc(SUBSTR(lcBuffer, 4,1)), 24)
     
    PROCEDURE declare
        DECLARE INTEGER CreateCompatibleDC IN gdi32 INTEGER hdc
        DECLARE INTEGER DeleteDC IN gdi32 INTEGER hdc
        DECLARE INTEGER GetActiveWindow IN user32
        DECLARE INTEGER GetWindowDC IN user32 INTEGER hWindow
        DECLARE INTEGER ReleaseDC IN user32 INTEGER hWindow, INTEGER dc
        DECLARE INTEGER DeleteObject IN gdi32 INTEGER hObject
        DECLARE INTEGER SelectObject IN gdi32 INTEGER hdc, INTEGER hObject
     
        DECLARE INTEGER LoadImage IN user32;
            INTEGER hinst, STRING lpszName, INTEGER uType,;
            INTEGER cxDesired, INTEGER cyDesired, INTEGER fuLoad
     
        DECLARE INTEGER GetObject IN gdi32 AS GetObjectA;
            INTEGER hgdiobj, INTEGER cbBuffer, STRING @lpvObject
     
        DECLARE INTEGER AlphaBlend IN Msimg32;
            INTEGER hDestDC, INTEGER x, INTEGER y,;
            INTEGER nWidth, INTEGER nHeight, INTEGER hSrcDC,;
            INTEGER xSrc, INTEGER ySrc, INTEGER nWidthSrc,;
            INTEGER nHeightSrc, INTEGER blendFunction
     
        DECLARE INTEGER GetLastError IN kernel32
     
     
     

    User rating: 9/10 (1 votes)
    Rate this code sample:
    • ~
    3476 bytes  
    Created: 2002-03-23 10:43:13  
    Modified: 2009-01-17 11:17:30  
    Visits in 7 days: 197  
    Listed functions:
    AlphaBlend
    CreateCompatibleDC
    DeleteDC
    DeleteObject
    GetActiveWindow
    GetLastError
    GetObject
    GetWindowDC
    LoadImage
    ReleaseDC
    SelectObject
    Printer friendly API declarations
    Word Index links for this example:
    Translate this page:
      Spanish    Portuguese    German    French    Italian  
    FreeTranslation.com offers instant, free translations of text or web pages.
    User Contributed Notes:
    There are no notes on this subject.


    Copyright © 2001-2013 News2News, Inc. Before reproducing or distributing any data from this site please ask for an approval from its owner. Unless otherwise specified, this page is for your personal and non-commercial use. The information on this page is presented AS IS, meaning that you may use it at your own risk. Microsoft Visual FoxPro and Windows are trade marks of Microsoft Corp. All other trademarks are the property of their respective owners. 

    Privacy policy
    Credits: PHP (4.4.9), an HTML-embedded scripting language, MySQL (5.1.55-log), the Open Source standard SQL database, AceHTML Freeware Version 4, freeware HTML Editor of choice.   Hosted by Korax Online Inc.
    Last Topics Visited (184.72.91.94)
    4 sec.Example: 'GDI+: creating scaled copy of image file'
    4.65 hrs.Example: 'Creating a file, then moving it to another destination'
    6.46 hrs.Function: 'CryptEnumProviderTypes'
    Function group: 'Cryptography Reference'
     Example: 'Subclassing CommandButton control to create BackColor property'
    7.97 hrs.Function: 'PathToRegion'
    12.07 hrs.Example: 'Adding and deleting Scheduled Tasks using NetScheduleJob API functions'
     Example: 'Displaying dimmed window behind VFP top-level form'
    14.37 hrs.Links
    Page 5
     Function: 'CreateJobObject'
    Function group: 'Process and Thread'
     Function: 'CeCreateFile'
    Function group: 'Remote Application Programming (RAPI)'
    Google
    Advertise here!