CDialogBarEx : A Dialog bar with initialization

Environment: ****** -->

In the MFC architecture CDialogBar can provide more flexible ways to create a control bar in the application than traditional toolbars using CToolBar. Apart from standard button like controls of toolbar, a dialog bar can include other windows controls (such as combobox ) and OCX controls as well. They also provide very flexible layout since we can use dialog editor to create a dialog template for the dialog bar.

Limitations of CDialogBar:

However, one limitation of CDialogBar is it lacks suitable initialisation function such as OnInitDialog() which is available in all standard CDialog derived classes. This creates trouble in subclassing windows controls created through dialog template. We need to subclass windows controls with suitable MFC class objects to send messages to the control and to alter their behaviour. Without the help of MFC supplied classes, changing the property of Active X controls will require   complex code, not so easy to comprehend.

With the help of Class Wizard, subclassing the controls created from dialog template,    becomes very easy as the Class Wizard automatically adds DDX_Control( CDataExchange* pDX, int nIDC, CWnd& rControl ); statements in DoDataExchange() override of CDialog derived class. DoDataExchange is called by UpdateData( BOOL bSaveandValidate) function, which in turn is called by OnInitDialog() in response to WM_INITDIALOG message.

All these steps of initialising does not automatically  occur in the CDialogbBar as it is derived from CControlBar and not from CDialog. 

Solution:

    We write a class which does the job of initialising the dialog bar, which can be reused whenever we want to create a dialog bar.  Let's call this class CDialogBarEx which would provide functionality of initialising the dialog bar.

    The function which initialise the dialog bar should normally be called immediately after the dialog bar is created. We can not use OnCreate() override alone, for this purpose as OnCreate is called during the window creation ( before CreateEx returns ) and not after that. We so we just post a custom WM_INITDIALOGBAR message ( WM_USER + 1)) to the dialog bar itself from our override of OnCreate. This assures that handler for WM_INITDIALOGBAR will called immediately after the dialog bar is fully created and ready to use. We also write handler for WM_INITDIALOG bar ( lets call it OnInitHandler() ) which should call a virtual function OnInitDialogBar() and from the same handler we call UpdateData(FALSE) before we call OnInitDialogBar() ;

The bottom line:

  • Users of this class  can put DDX_Control   statements  in side DoDataExchange,  as done by Class Wizard for CDialog and its derived classes.
  • Users can override OnInitDialogBar to perform other custom initialisation.

How to use CDialogBarEx:

  • Add files DialogBarEx.h and DialogBarEx.cpp to your Visual C++ project
  • Derive your own class ( for example say "CYourClass" ) from CDialogBarEx ;
  • Add DDX_Control statements in your override of DoDataExchange as done by class wizard, to subclass the dialog bar controls with MFC classes.
  • Override OnInitDialogBar() function to do any further initialisation of this class.

Other steps to create the dialog bar are the same as recommended by MFC documentation..

  1. Create dialog resource template . Set child property on, visible off.
  2. Declare one CDialogBarEx derived member in CMainFrame class;
  3. In the CMainFrame::OnCreate override call create function of CDialogBarEx derived class.

The demo contains both source and sample program. The demo shows how to set hyperlink in dialog bar using CLabel and how to set initial null ( null means not yet defined and not NULL of C++) value in SysDateTime32 control.

ACKNOWLEDGEMENTS:

To make this demo I have used following classes from www.codeguru.com

  • CDateTimeCtrl class written by Chris Maunder 
  • CLabel class downloaded from codeguru with modifications.
  • I have also incorporated a modification to CLabel class suggested to me by Ed Dixon of Mountain System Inc. via e-mail.

Download demo project - 42KB



Comments

  • Chi lisseur vous donne une coiffure différente chaque jour

    Posted by fgjmvf933 on 07/16/2013 02:39am

    Comme nous le savons tous, lisseur ghd maintenant un nom de ménage. mais il ya encore beaucoup de gens se plaignent de leurs prix élevés, cela a aussi conduit à beaucoup de gens ne peuvent pas posséder lisseur ghd. En fait, vous pouvez acheter un bon marché lisseur ghd straightener.ghd bon marché est accueilli par le peuple. Ils peuvent également répondre à vos besoins. En 2001, les redresseurs ghd pas cher engagés à développer les produits les plus efficaces et innovantes pour l'industrie des soins capillaires. Creats GHD différents et belle lisseurs ghd conduisent à des résultats étonnants. [url=http://ghdpascherferfr.blinkweb.com/]ghd pas cher lisseur[/url] GHD Styler Hair utilise des plaques en céramique chauffées à la fois les cheveux raides et boucle. Un bon entretien permettra d'assurer votre styler GHD dure aussi longtemps que possible. Nettoyage des résidus de produits coiffants de style devrait faire partie de l'entretien régulier. Il gardera le styler est à son meilleur. Vous pouvez facilement nettoyer votre styler GHD sans causer de défrisants damage.Ceramic sont préférés pour le salon et le style de la maison. [url=http://ghdpascherfer.hpage.com/]lisseur ghd styler[/url] Faites le jour de Noël et tous les jours pendant une bonne journée de cheveux avec l'édition limitée ghd Metallic Collection cadeau set.Inspired de l'esprit de Noël, look métallique collection ghd styler ghd classique V donné un glamour make-over avec une belle nouvelle Rich Ruby ombre rouge et éclat métallique éblouissante finish.Created avec sleekest ghd à ce jour, la collection Metallic ghd étincelante plaques profilées noires glisser sans effort dans les cheveux - en laissant votre style lisse et brillant si vous choisissez lisse et les cheveux raides, les vagues sexy ou boucles gros et plein d'entrain, exactement ce que vous attendez avec la qualité superbe de certains lisseur ghd stylers et.

    Reply
  • Ghd rettetang er best for menneskene

    Posted by carpinteyroits on 06/14/2013 05:55am

    [url=http://www.rettetangnewsnorge.com/]ghd rettetang pris[/url] Det beste er å gjøre når du prøver å finne billige hår straighteners, er å undersøke den sanne verdien av alle merker. Hvis du skal punge ut over £ 100 for noen, må du sørge for at du får dine penger verdt. Les forbruker vurderinger, da disse er de mest ærlige vurderinger du vil få i bransjen. Dette vil hjelpe deg å ta den rette avgjørelsen når du er ute etter billige hår rettetang.Selvfølgelig er rosa ghd ikke bare en myr standard ghd styler. Det er en ghd som ble unnfanget for å heve penger for brystkreft veldedighetsorganisasjoner. Faktisk, så suksessen har rosa rettetang vært at i henhold til GHD det har resultert i £ 1m blir donert. Det er også en stor hit med kjendiser, deriblant Jennifer Aniston og Victoria Beckham. [url=http://www.rettetangnorgenews.net/]ghd rettetang norge[/url] Når du blir spurt om Mermaid photoshoot for ghd, Katy Perry sa: “Jeg elsker det fordi jeg er så fan av Disney filmer. Ariel er en så stor innflytelse. Det er alltid gøy å kle opp en gang i livet som en havfrue og har som fisk fin hale. David La Chapelle gjort settet fantastisk. Det var moro – jeg fikk til å ha lilla hår som bebudet den virkelige lilla hår jeg hadde i fjor høst. Det er som om Lisa Frank hadde gjort The Little Mermaid. “Mens det er nok å være en hårfarge som Katy Perry kunne ikke bære, de mørkere nyanser virkelig få ut hennes egenskaper. Hvilken farge er neste Katy Perry? Vi må bare vente og se! [url=http://www.rettetangnewsnorge.com/falske-ghd]rettetang ghd[/url] Gjør juledag og hver dag etter en god hair day med begrenset opplag ghd Metallic Collection gave set.Inspired av en ånd av julen, ser ghd Metallic samling den klassiske ghd V styler gitt en glamorøs make-over med en nydelig nye Rich Ruby Red skygge og blendende metallisk glans finish.Created med ghd flateste til dags dato, har den ghd Metallic Collection glitrende svart profilerte plater som glir uanstrengt gjennom håret – forlater din stil glatt og skinnende om du velger slanke og rett låser, sexy bølger eller store og bouncy krøller, akkurat hva du forventer med super kvalitet av noen ghd rettetang og Hårstylere.

    Reply
  • clarisonic mia selling in the ebay is worth to comprise

    Posted by iouwanzi on 06/05/2013 08:20pm

    [url=http://www.miaclarisonicaustralia.org/clarisonic-classic]clarisonic classic[/url] Dr. Dre Beats by Dre hovedtelefoner tendens til at være så dygtige i mange hovedtelefoner producerer. Blandt det store udvalg af Monster Beatshovedtelefoner med næsten alle håndsæt kan individuelt kunne være Fahion trend med blanding, med fremragende fordele. De behøver ikke nødvendigvis giver et individ af Dr. Dre hovedtelefoner som de to sider. [url=http://www.australiaclarisonic.com/]clarisonic mia[/url] ikke blot disse hovedtelefoner kommer beriget med den nyeste teknologiske trends, men de kommer også i trendy stilarter og smukke farver, så de hårde dem kan vælge de hårde farver og resten som pr deres normale valg. Den stereoanlæg kvaliteten af hver af hovedtelefonerne er udestående. “Vi tror på kvalitet, og det er grunden til, vi tilbyder dem i den højeste kvalitet til de mest gennemførlige satser”, erklærede en af bestyrelsesmedlemmerne. Hovedtelefoner beats også omfatte en ny sort, der er på høje ender.Virksomheden ser en stigende kurve af overskud og tager sigte på at nå til en større del af det digitale samfund. [url=http://www.australiaclarisonic.com/clarisonic-mia]clarisonic mia[/url] Derudover skal du få en dobbelt-strenget fly adapter sammen med en kvart tomme adapter til brug med dit hjem audio teknik. Endvidere vil en hård skal rejse sag med en tilsluttet karabiner, er beskyttet. Rekorder også komme som har en oprydning klud til at sikre, at de leder efter positive.Skulle du være bekymret for lyd og vises, vil du elske denne særlige laptop. Allerførste, vil denne pc giver dig ekstra at behandle din egen lyd resultat. Der er normalt sofistikerede antal audio muligheder, du vil aldrig afsløre sammen med andre pc’er.Søg efter gadgets er specielt designet til brug med elektriske mp3 enheder. I betragtning af at over-ear typer kan være store, søge efter versioner med neodymium varme. Næsten dine motiver udføre magneter synes vidunderlige, de har en tendens til at være mindre og lettere.

    Reply
  • Beats headset alle omkring dig kan være en velkendt fænomen

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

    [url=http://beatsbydrehretelefoner.weebly.com/]Beats by dre billig pris[/url] Men hvis du ønsker at lytte til musik via en Bluetooth audio support uden at lukke dit problem stadig et kabel. Via USB giver dig de Beats by Dr. Dre Wireless på kort tid til 10 timers lytteglæde. Bare nyde i stil og trådløst fra din yndlingsmusik med Beats by Dr. Dre Wireless.The Beats Wireless leverer ligesom alle Beats By Dr. Dre produkter krystal klar diskant, naturlig mellemtone og en kraftfuld stram bas. Til også via bluetooth bedste præstation at levere den Beats Wireless med de nyeste Bluetooth-teknologi og er egnet til at modtage AAC og apt-X signaler. Selvfølgelig er dette Beats med ControlTalk. [url=http://beatsbydrdredanmark.moonfruit.com/]beats by dre tilbud[/url] Fordelene og ulemperne ved de forskellige typer af hovedtelefonerHeadset hovedtelefoner, takket være en større enhed, lydkvaliteten er mere bedre, men på grund af nogle store volumen, ikke er nem at bære. Ørepropper lille enhed design, kompakt og let at bære, velegnet til udendørs brug. Ørekrog øretelefon typen headset med ørepropper i mellem et smukt udseende, komfortable at bære, lyde bedre egenskaber end ørepropper ulempe er følsom over for støj udefra, som er egnet til at bære i foråret, og denne sæson . Forskellige typer hovedtelefoner er anderledes, for at se om du ønsker at bruge under hvilke omstændigheder. [url=http://beatsbydrehretelefoner.weebly.com/]beats by dre høretelefoner[/url] Beats By Dr. Dre Beats Wireless har annonceret et trådløst Bluetooth-headset. Dette er udformningen af den populære Solo HD og kan let kobles med en smartphone eller tablet. Den nye model er også udstyret med ControlTalk, med en mikrofon i øret og alle nødvendige kontroller. Beats By Dr. Dre introducerer Beats trådløse Bluetooth hovedtelefoner Beats By Dr. Dre Beats introducerer den trådløse Bluetooth-hovedtelefoner lytteren fuld musikalsk frihed.

    Reply
  • Hvor lang tid det tager at rejse Dr. Dre Beats

    Posted by wanzixiao on 06/03/2013 08:47pm

    [url=http://www.beatsbydrdredanmark.weebly.com/]Beats by dre danmark[/url] On deep bass tracks, like the Knife’s “Silent Shout,” the Noontec Zoro suffers some minor distortion at maximum volume—but it isn’t over-the-top, and you also shouldn’t be listening at levels that high if you want to preserve your hearing. At more moderate-to-loud volume levels, the distortion disappears. The deep bass of the electronic kick drum resonates powerfully, but not as intensely as on a bass-heavy model like the Beats by Dr. Dre. Instead the Zoro does a nice job highlighting the mid- and high-frequency response—you don’t lose the crisp high attack that often gets lost on a typical pair of budget headphones. [url=http://www.beatsbydrdredanmark.webstarts.com/]Køb høretelefoner billig[/url] Uanset om du har brug for netværks personlig brug derhjemme, eller hvis du har brug for at udstyre dit barns skole, som er en meget sød, med henblik på at få en favorit Beats hovedtelefoner nysgerrig, jeg gravede lidt dybere, og jeg gotta jeg ser frem til i alle de basale behov klik her. Faktisk ønsker jeg dig til at bryde det ned til den korte form.Da jeg fik den elskede monster beats hovedtelefoner, og jeg føler meget glad og spændt, men hvad er den virkelige god pleje af det, selv om de nye hovedtelefoner altid vil indtage markedet hurtigt, men når jeg har beats er stadig som ny, tilfredshed aldrig forladt. Vi taler om nogle enkle opførsel om forlængelse af levetiden for headsettet [url=http://www.beatsbydrdredanmark.webstarts.com/]Køb høretelefoner billig[/url] Beats by Dr. Dre Studio – hvor det faktisk fungere særdeles godt på alle enhederne hver især.Vi vil alle sammen have mest muligt udbytte af headsettet og lydkvaliteten, når vi snakker om musik. Musikken skal glide igennem øregangen og det skal lyde formidabelt foruden kunstnerens eget værk. Derudover hævdes der jo også at man mister hørelsen med al for høj lyd, men i disse Beats er det overhovedet ikke en nødvendighed at skrue særlig højt op, da de har elektronisk støjdæmning, som holder støjen på ydersiden og musikken på indersiden og dermed er lyden klar og går her direkte glidende igennem. Selve høretelefonerne sidder utrolig godt på hovedet, da der er bløde puder på henholdsvis bøjlen og ørekopperne, hvor de også omslutter sig ørerne rigtig godt. Funktionerne på høretelefonerne er ganske lige til, da der sidder en tænd/sluk-knap, som gør at den indbyggede forstærkerkreds fungere. Ligeledes kan man holde logoet (b’et) inde på højre, som gør det muligt

    Reply
  • Clas Wizard does not know CDialogBar

    Posted by Legacy on 02/16/2003 12:00am

    Originally posted by: Jason

    Clas Wizard does not know CDialogBar. so how do i derive from this class using the wizard? (vc 6.0)

    thanks!

    Reply
  • Problem with Windows Me?

    Posted by Legacy on 11/26/2002 12:00am

    Originally posted by: Ben Katz

    I am using Windows Me, Visual Studio 6.0 (sp5), with the latest SDK.  The dialogbar works great, but only in release mode.  In debug mode, it crashes before the application appears.  CVScrollArea is my class that derives from CDialogBarEx.  The call stack upon crashing is as follows:
    
    

    KERNEL32! bff66878()
    _CrtDbgReport(int 2, const char * 0x005454f4 THIS_FILE, int 43, const char * 0x00000000, const char * 0x00000000) line 353
    AfxAssertFailedLine(const char * 0x005454f4 THIS_FILE, int 43) line 39 + 19 bytes
    CDataExchange::PrepareCtrl(int 116) line 43 + 21 bytes
    DDX_Control(CDataExchange * 0x007da7ec, int 116, CWnd & {CWnd hWnd=0x00000000}) line 626 + 12 bytes
    CVScrollArea::DoDataExchange(CDataExchange * 0x007da7ec) line 44
    CWnd::UpdateData(int 0) line 3109
    CDialogBarEx::InitDialogBarHandler(unsigned short 0, unsigned long 0) line 66
    CWnd::OnWndMsg(unsigned int 1025, unsigned int 0, long 0, long * 0x007da98c) line 1815 + 17 bytes
    CWnd::WindowProc(unsigned int 1025, unsigned int 0, long 0) line 1585 + 30 bytes
    CControlBar::WindowProc(unsigned int 1025, unsigned int 0, long 0) line 480 + 20 bytes
    AfxCallWndProc(CWnd * 0x01024ef8 {CVScrollArea hWnd=0x00000db8}, HWND__ * 0x00000db8, unsigned int 1025, unsigned int 0, long 0) line 215 + 26 bytes
    AfxWndProc(HWND__ * 0x00000db8, unsigned int 1025, unsigned int 0, long 0) line 368
    KERNEL32! bff63613()
    KERNEL32! bff848f7()


    Are there any known problems with Windows Me?
    Thanks,
    Ben

    Reply
  • Doesnt work in C++.NET (7.0)

    Posted by Legacy on 10/11/2002 12:00am

    Originally posted by: Mike Pliam

    This works great in Visual C++ 6.0. But when I tried to port an app over to C++ 7.0 (C++.NET), I received the following error message pertaining to the message map code in the DialogBarEx.cpp file:

    BEGIN_MESSAGE_MAP(CDialogBarEx, CDialogBar)
    //{{AFX_MSG_MAP(CDialogBarEx)
    ON_WM_CREATE()
    ON_MESSAGE(WM_INITDIALOGBAR, InitDialogBarHandler )
    //{{AFX_MSG>MAP[
    END_MESSAGE_MAP()

    error C2440: 'static_cast': cannot convert from 'void(__thiscall CDialogBarEx::*)(WORD,DWORD)' to'LRESULT (__thiscall CWnd::*)(WPARAM,LPARAM)'

    Does anybody know how to work around or fix this problem?

    Mike Pliam

    Reply
  • Catching SelChange() in Combo Box

    Posted by Legacy on 10/30/2000 12:00am

    Originally posted by: Petr Jodas

    I have class CDirBarDlg which is derived from CDialogBarEx. In this class I have control CComboBoxEx and I need catch message OnSelChange(). How I can do it ? Thanx...

    Reply
  • does CDialogBar work?

    Posted by Legacy on 09/30/2000 12:00am

    Originally posted by: ali nouri

    hi,
    I want to make a structure viewer on the left of an editor(
    like the treeView in the VC environment itself) it should be CControlBar derived class but i couldn't make it with a CDialogBar) what should i do?
    thnx

    Reply
  • Loading, Please Wait ...

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

Top White Papers and Webcasts

  • Packaged application development teams frequently operate with limited testing environments due to time and labor constraints. By virtualizing the entire application stack, packaged application development teams can deliver business results faster, at higher quality, and with lower risk.

  • Live Event Date: September 16, 2014 @ 11:00 a.m. ET / 8:00 a.m. PT Are you starting an on-premise-to-cloud data migration project? Have you thought about how much space you might need for your online platform or how to handle data that might be related to users who no longer exist? If these questions or any other concerns have been plaguing you about your migration project, check out this eSeminar. Join our speakers Betsy Bilhorn, VP, Product Management at Scribe, Mike Virnig, PowerSucess Manager and Michele …

Most Popular Programming Stories

More for Developers

Latest Developer Headlines

RSS Feeds