Click here to Skip to main content
Click here to Skip to main content

CWBButton - Resizable Bitmap Button

, 2 Jun 2000
Rate this:
Please Sign up or sign in to vote.
CWBButton is a resizable bitmap button like GTK+ or Window Blinds.
<!-- Link to source file download -->
  • Download source files - 8 Kb
  • <!-- Link to demo file download -->
  • Download demo project - 37 Kb
  • <!-- Article image -->

    Sample Image - CWBButton.jpg

    <!-- Add the rest of your HTML here -->


    CWBButton is a 'WindowBlinds' like resizable image button derived from a CButton. In MFC, You can use the class called CBitmapButton, but that's not enough. The size of button is the size of the bitmap, and you can't put a text by calling the API SetWindowText(). I wanted REAL Bitmap Button like GTK+ or WindowBlinds. So I try to create a REAL Bitmap Button referring WindowBlinds.

    How to Use

    Using CWBButton is simple.

    1. Add Files to your project. WBButton.h, WBButton.cpp, AutoFont.h, AutoFont.cpp
    2. To the Dialog's header file: #include "WBButton.h"
    3. Create a button on your dialog, and make sure you turn on the "Owner Draw" property.
    4. Inside the Dialog class: CButton m_btn1 to CWBButton m_btn1
    5. Initialize the CWBButton in the event handler OnInitDialog() as described below:
         IDB_BITMAP1,  // Bitmap resource ID
         5,            // Num of Bitmaps
         15,           // TopHeight
         6,            // BottomHeight
         15,           // LeftWidth
         8             // RightWidth

    To initialize correctly, you know how to be implemented in the WindowBlinds. Each rectangle lead by LeftWidth, RightWidth, TopHeight, and BottomHeight is static, and not stretched. The others are stretched by the size of button. So you can get natural button images. It may be difficult to set the parameters correctly, but you can refer the Initialize file of WindowBlinds, which name is '*.uis', on the section '[Buttons]'.


    1. The bitmap you load should be separate at least four parts. The First is 'Normal' state, the second is 'Select' state, the Third is 'Disable' state, and the fourth is 'Focus' state.
    2. To transparent the button, the bitmap background color should be RGB(255,0,255), also you can change the transparent color by calling the function SetBackColor()


    I tested this source on the Japanese version VC6.0 and Windows. Problems may occur on other language environments.


    This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

    A list of licenses authors might use can be found here


    About the Author

    No Biography provided

    Comments and Discussions

    GeneralThanks! PinmemberVincent-Lin31-Jul-07 20:49 
    GeneralWM_ERASEBKGN PinmemberAndrianG1-Mar-07 10:56 
    QuestionWhats the fifth bitmap state for ? PinmemberChrisRibe12-Dec-06 5:28 
    Generaldialog Bk color Pinmembernmg4-Dec-03 20:42 
    Generalhum... Pinmemberkim jyeong hyeon1-Dec-03 23:20 
    Generaldisable/enable Pinmemberyary19-Dec-02 2:37 
    GeneralOwnerDraw PinmemberCosmoS2k11-Feb-02 22:32 
    GeneralAny Other Controls PinmemberMatt Newman4-Jul-01 9:11 
    GeneralComments... PinsussOrlando Llanes16-Jun-00 7:11 
    The CWBButton class works great, it easily integrates into your class. Four steps and you have a fully bitmapped button ready to use.
    The following features would greatly enhance this excellent class for future versions:
    * True custom bitmap shapes (not everybody uses the window's or dialog's background color). This can be accomplished by using regions
    * Use of the regions to perform accurate hit testing
    * Change button's bitmap when mouse is on it (like JavaScript's onMouseOver event)
    * "Auto-sizing", the CWBButton class should not rely on the programmer to set the correct button size
    GeneralRe: Comments... Pinmemberzjufish15-Nov-00 22:30 
    GeneralRe: Comments... PinmemberDavide Calabro3-May-01 8:40 

    General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

    Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

    | Advertise | Privacy | Terms of Use | Mobile
    Web04 | 2.8.150327.1 | Last Updated 3 Jun 2000
    Article Copyright 2000 by Shinya Miyaoto
    Everything else Copyright © CodeProject, 1999-2015
    Layout: fixed | fluid