Using Win32 functions in Visual FoxPro Image Gallery
Code examples:
Adding supplementary data to AVI files
Class library providing access to the System Registry
Enhanced GetFont dialog
Enumerating network sessions established on a server
GDI+: Storing content of the Clipboard to a bitmap file
Getting a bit more than the _CLIPTEXT offers
How to block the PrintScreen key
How to build UDP responder
How to position the GETPRINTER() dialog
How to retrieve configuration data for a specified printer stored in the registry (PrinterDriverData key)
MapiSendMail class for Visual FoxPro application
Obtaining addresses for the adapters on the local computer (Win XP/2003/Vista)
Smart Card Database Query Functions
Using vendor-neutral SQL constructs
Clipping mouse cursor area
Drawing a window caption using the DrawCaption routine
Enumerating Processes -- WinNT
How to set Creation Date/Time for a folder (WinNT)
Pocket PC: custom RAPI class for operating with files and folders on mobile device
Storing screen shot of a form to enhanced metafile (*.emf)
Using Change Notification Objects to monitor changes to the printer or print server
Using Font and Text functions
Writing to INI file
Creating the Save dialog box to specify the drive, directory, and name of a file to save
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
    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)
            = MESSAGEBOX(lcBitmap + Chr(13) + Chr(13) +;
                "Check if this is a valid bitmap file.",;
                32, " Unable to load an image from file")
    PROCEDURE ShowBitmap(hBitmap, lnX, lnY)
    *|typedef struct _BLENDFUNCTION {
    *|  BYTE     BlendOp;
    *|  BYTE     BlendFlags;
    *|  BYTE     SourceConstantAlpha;
    *|  BYTE     AlphaFormat;
        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,;
        IF lnResult = 0
        *  6 = The handle is invalid
        * 87 = The parameter is incorrect
            ? "Error:", GetLastError()
        = 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))
    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: 75  
    Listed functions:
    Printer friendly API declarations
    Word Index links for this example:
    Translate this page:
      Spanish    Portuguese    German    French    Italian offers instant, free translations of text or web pages.
    User Contributed Notes:
    There are no notes on this subject.

    Copyright 2001-2017 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.6.34), the Open Source standard SQL database, AceHTML Freeware Version 4, freeware HTML Editor of choice.   Hosted by Korax Online Inc.
    Last Topics Visited (
    2 sec.Example: 'Exporting DLL icon resources as .ICO files'
    3 sec.Function: 'getsockopt'
    4 sec.Example: 'How to create non-blocking Winsock server'
    Language: 'C++'
    6 sec.Example: 'HOWTO: Use the Win32 API to Access File Dates and Times'
    8 sec.Example: 'Opening access to the Microsoft Internet functions for the application'
    11 sec.Example: 'How to obtain Content-Type value for a file type from the System Registry'
    12 sec.Example: 'How to change display settings: screen resolution, screen refresh rate'
    14 sec.Function: 'waveInGetErrorText'
    Function group: 'Windows Multimedia'
    15 sec.Function: 'LsaClose'
    16 sec.
    Function group: 'Process and Thread'
    Advertise here!