Scrollable List of Buttons

Sample Image

Environment: VC6 SP2, NT4, Win95

This class allows you to create a scrollable list of buttons. It is derived from Chris Maunder's excellent Grid Control which appears here on the CodeGuru site. Note that users of this control are bound by Chris' copyright requirements detailed on his web page.

My application has a feature which allows a user to define one or more "commands". The commands become buttons whose numbers can grow without limit. My users prefer this scrollable list of buttons over a combobox and "go" button implementation (often see on a Web sites) because:

  • It's less clicking
  • They can see more than one command at a time

Don't fret too much about using an entire grid implementation to do something as trivial as a list of buttons. The grid's executable footprint is quite small. In addition, if you would like to change fonts, change text colors, add an image to the button, etc. you can call the appropriate grid functions to make this happen.

To Use

Get CGridCtrl Source. Create a new project in VC++. Create a new subdirectory within the project folder named "GridCtrl". Download the latest version of the Grid Control and place all source files within your new GridCtrl folder. Add these files to your VC++ project.

Add Button List Source. Download the button list source files and add to the VC++ project.

Add the Button List Control to your Dialog. Use VC++ dialog editor to create a custom control whose class name is: MFCGridCtrl.

Edit your Dialog Header File:


        #include "BtnListCtrl.h"
        ...

    // Dialog Data
        ...

        CBtnListCtrl m_BtnListCtrl;

Edit your Dialog Implementation File:


    // register the control per CGridCtrl requirements

        void CMyDlg::DoDataExchange(CDataExchange* pDX)
        {
            CDialog::DoDataExchange(pDX);
            //{{AFX_DATA_MAP(CMyDlg)
            //}}AFX_DATA_MAP
            ...
            DDX_GridControl(pDX, IDC_BTNLIST, m_BtnListCtrl);
        }


    // add message handling for button clicks

        BEGIN_MESSAGE_MAP(CMyDlg, CDialog)
            //{{AFX_MSG_MAP(CMyDlg)
            //}}AFX_MSG_MAP
            ...
            ON_NOTIFY(GVN_COLUMNCLICK, IDC_BTNLIST, OnBtnClick)
        END_MESSAGE_MAP()
        ...

        void CMyDlg::OnBtnClick( NMHDR* pNMHDR, LRESULT* pResult)
        {
            GV_DISPINFO *pgvDispInfo = (GV_DISPINFO *)pNMHDR;
            GV_ITEM     *pgvItem = &pgvDispInfo->item;

            if( pgvItem->row > -1 ) // -1 indicates clicked on control but not button
            {
                TRACE( "Clicked Btn Row=%i", pgvItem->row);
            }
            *pResult = 0;
        }

    // Initialize the button list class

        BOOL CMyDlg::OnInitDialog()
        {
            ...

            // TODO: Add extra initialization here
            m_BtnListCtrl.InitializeButtons();

            return TRUE;  // return TRUE  unless you set the focus to a control
        }

    // set the button labels anytime after initialization
        ...

        CStringArray StringArrayLabels;
        StringArrayLabels.Add( "Btn Label");
        m_BtnListCtrl.WriteButtonLabels( StringArrayLabels);

Downloads

Download demo project (includes exe and Grid source)- 109 Kb

Download source - 4 Kb

History



Comments

  • effekten er en smuk hovedtelefoner

    Posted by wherewanzi on 06/05/2013 08:46pm

    [url=http://www.nyebeatsbydrdre.350.com/]Nye beats by dr dre[/url] Producenter frembringer deres egne beats på nettet åbner ubegrænsede samarbejdsmuligheder med hensyn til designere på et stramt budget. Den særlige udseende tilgængelig er utallige der en bred vifte af friske rekorder på markedet hver dag derude sted. I tilfælde af at du synes at købe overgår, anmeld af din web selskabet samt høre deres varer. Du er i stand til at Google eller måske Ask tilstande såsom “internet-producenter” eller “køb er bedre end online” og masser af troværdige producent internetsider vil helt sikkert producere.En anden tendens jeg opdager i trap rekorder kunne være den store brug af rumklang omkring den primære enhed. Der er typisk en enkelt pind ud værktøj put, der har en velvoksen reverb effekt sige for eksempel en grand violin, guitar, samt synth. I de fleste tilfælde en let melodi, der gentager flere gange samt modulerer op eller ned. Processen mod kaos er meget simpelt, så prøv ikke at under vurdere de grunde, der kan placeres i dette. beats [url=http://beatsbydrdredanmark.webstarts.com/]beats by dre danmark[/url] Beats enkel sammen med skiftes i sammen med frigivet eventuelle udskiftelige pandebånd er nået smertefri sammen med sat på mod stillet af blot beats by dremagneter. Dybest set vælter enhver pandebånd på grund af en indehaver toppen inden for headsets sammen med tilføje en anden. Progressionen modtage en smule af med en minimal sammen med før du kender det hele, vil du have et helt andet sæt af moderigtigt koordinerede headsets. Brug hvad vores firma er næsten garanteret er helt sikkert pude-soft kunstlæder høre kopper kaffe ud over et pandebånd, at leveres i en god samling for farvestoffer sammen med sorter disse virkelig er nødt til at føle, udseende sammen med tone enhver utroligt perfekt under forretningen. [url=http://beatsbydrehretelefoner.weebly.com/]Beats by dre billig pris[/url] Dr. Dre beats menes at være på listen over mange specialiserede service-hovedtelefoner kan gøre. Blandt det store udvalg vedrørende hovedtelefoner fra Monster Beats hovedtelefoner rundt næsten alle blandet Fahion mode især med exceptionelle egenskaber. De bestemt ikke efterlade en person typer et par dr dre lados.beats ofte sker i jagten på en højere visuel appel forekommer fremragende og charmerende.fordi jeg tror, at monster beats hovedtelefoner online shopping med hovedtelefoner i almindelighed en god elsker melodier, eller måske du nødt til at gå med musik i en krævende teknik, eller bare har brug for at få en Koronar nyde en god nats søvn , så du helt sikkert ønsker at få beruset for den mest pålidelige høj kvalitet udseende fremragende.

    Reply
  • GHD glattejern er helt unike og det er ogsÃ¥ derfor de sælger sÃ¥ godt

    Posted by wanzixiao on 05/30/2013 05:49am

    [url=http://www.glattejernghd.350.com/]glattejern ghd[/url] Ret når du muligvis har rettede denne kuffert område region hoved af hår beskæftiger bestemt ghd glattejern Straightner, kunne du op kommer der lægges inden placere maj biceps og hænder og fingre forbrug fingre fingre manifestation alligevel stadig medtage frontward inde i store forbrug palms hænderne overvejelser for dig at udføre nøglen særlig bestemt team generelt kanter inde i det krøllede hår. Altid kan være let at udnytte og foreslår derfor en enkeltperson blot krav 2 film. Masser af i hvilke forsøg motion pictures til at være i stand til at hjælpe med skilsmisse eller separation hår kan være den bedste metode til herald på GHD hår frisør ædle metal. [url=http://www.glattejernghd.350.com/]glattejern ghd[/url] GHD håret, uanset prisen i markedet eller i butikker eller på internettet detailmarkedet ikke er for høj. Forsyning GHD håret til at lagre mere fornøjelig. For det andet, GHD glattejern til high-tech produkter. Ensretter med GHD og menneskers velfærd automatisk temperaturregulering. Brug ikke GHD30 minutter, efter at lukke automatisk. Dette er i hænderne på sikkerhedselementer er meget nyttigt, hvis du er en distraktion. [url=http://www.ghdglattejern.tripod.com/]ghd danmark[/url] Fortsæt med den faktiske afslappende miljø i tilfælde låsene er Ghd Glattejern plumper, vanskelig, coaching eller måske rå, sammen med lille atmosfære at erhverve skinny, beskadiget sammen med bleget Lokker. Med hensyn til alle, der er at ansætte en stor appartment stål, hvoraf inde i denne ofte forekommer at være produkter virkelig personer sammen med grundlæggende at producere ved hjælp af. Som ofte kan være effektiv med hinanden langs med billige er sædvanligvis en sand vanskelighed.

    Reply
  • Bigger font size and images in the buttons

    Posted by ptolomeoo on 10/21/2008 11:29am

    Hello, I am a completely noob. I wanted to put a bigger font size in the buttons, and insert a little icon on a side of those buttons but couldn't figure out how to do that. Could anyone throw a hint on this issue? Thanks in advance.

    • I could figure out about the font size...

      Posted by ptolomeoo on 10/21/2008 11:53am

      Hello. I could figure out how to increase the font size :-) Just doin: (pCell->lfFont).lfHeight=30; in this function (in GridCtrl.cpp) CGridCell* CGridCtrl::CreateCell(int nRow, int nCol) { CGridCell* pCell = new CGridCell; if (!pCell) return NULL; // Make format same as cell above if (nRow > 0 && nCol >= 0 && nCol < m_nCols) pCell->nFormat = GetItemFormat(nRow-1, nCol); // Make font default grid font memcpy(&(pCell->lfFont), &m_Logfont, sizeof(LOGFONT)); (pCell->lfFont).lfHeight=30; return pCell; }

      Reply
    Reply
Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • Live Event Date: August 14, 2014 @ 2:00 p.m. ET / 11:00 a.m. PT Data protection has long been considered "overhead" by many organizations in the past, many chalking it up to an insurance policy or an extended warranty you may never use. The realities of today make data protection a must-have, as we live in a data driven society. The digital assets we create, share, and collaborate with others on must be managed and protected for many purposes. Check out this upcoming eSeminar and join eVault Chief Technology …

  • Live Event Date: July 30, 2014 @ 11:00 a.m. ET / 8:00 a.m. PT You may already know about some of the benefits of Bluemix, IBM's open platform for developing and deploying mobile and web applications. Check out this upcoming eSeminar that focuses on building an Android application using the MobileData service, with a walk-through of the real process and workflow used to build and link the MobileData service within your application. Join IBM's subject matter experts as they show you the way to build a base …

Most Popular Programming Stories

More for Developers

Latest Developer Headlines

RSS Feeds