Adding Buttons to Dialog Caption

(Fabi Pantera)

Environment: Windows NT 4 SP5, Visual C++ 6 SP2

This source code demonstrates how you can add buttons to dialog caption bar and also how you can paint the caption.

A lot of peoples asked me to show how they can add buttons to the caption. Of course, first the question is:
Is it possible to add buttons to the non-client area?
The answer is NO.
So what is this article about? Well, this demo shows how to add buttons to the non-client area.

As you probably now you can add controls only in the client area. To add something similar in the non-client area, you have to draw everything by yourself and handle the mouse message for the non-client area. For this you have just to implement WM_NCPAINT message and draw whatever you want. I drawed a gradient caption and some buttons:

void CTemplateDlg::OnNcPaint()
{
 Default();//call default to let windows handle first
 
 CRect rc, rcwin; 
 CalculateCaptionTextRect(this, &rc);
 
 CDC* pDC = GetWindowDC();
 CDC dcMem;
 dcMem.CreateCompatibleDC(pDC);
 CBitmap bitmap;
 bitmap.CreateCompatibleBitmap(pDC, rc.Width(), rc.Height());
 CBitmap* pOldBitmap = dcMem.SelectObject(&bitmap);
 
 CSize sizeButton(GetSystemMetrics(SM_CXSIZE),
  GetSystemMetrics(SM_CYSIZE));
 DoGradientFill(this, acLeft, m_startColor, m_endColor);
 rc.right -= 5;
 rc.top += 1;
 rc.bottom -= 3;
 CRect rcBitBlt = rc;
 for (int i = 0; i < 6; i++)
 {
  rc.right -= sizeButton.cx;
  rc.left = rc.right - sizeButton.cx;
  switch (i)
  {
   case 0:
    {
     if (mPushedButton[i] == TRUE)
     //this draw button
      dcMem.DrawFrameControl(rc, DFC_BUTTON , 
       DFCS_BUTTONPUSH | DFCS_CHECKED);
     else
      dcMem.DrawFrameControl(rc, DFC_BUTTON , 
       DFCS_BUTTONPUSH);//same
     break;
    }
   case 1:
 .
 .
 .
}
After this, you should treat the WM_NCHITTEST, WM_NCLBUTTONDOWN, WM_LBUTTONUP messages and force a redraw in the non-client area by sending a WM_NCPAINT message:
PostMessage(WM_NCPAINT,NULL, NULL);
For now, that's all for the custom drawing in the non-client area. Anyway, this demo can be reused. The class that implements the previous behaviour is called CTemplateDlg. This class is an abstract class which provide in its interface, 6 virtual functions: Button0, BUtt1,...,Button5. This are the "callback" functions which handle the left button up click message on every button. So, to use this class just derive your CDialog class from CTemplateDlg and simply implement this functions. Of course you also have to modify the construction, but you can take a look in the code.

If everyone need to modify this code or to create a smart control don't hesitate to e-mail me.

Downloads

Download demo project - 24 Kb


Comments

  • Plancha ghd rosa de 2010, por lo que siempre será amado por los usuarios de ghd

    Posted by srakoy207 on 07/16/2013 11:48pm

    He descubierto hace poco y he visto Palma Glam con mis propios ojos que no Danmarklancerer 2008 Edición limitada Purple GHD IV Styler Nueva Año Set.GHD IV Mark4 es ​​la marca líder mundial de planchas para el pelo año fladjern.Nye llevar a cabo una nueva edición limitada set de regalo, y este año hay planchas anderledes.ghd están en camino! Cuenta con estilos innovadores y muchos colores. y todos los productos expuestos en nuestra página web están disponibles y tienen las poblaciones here.We ofrecen precios muy especiales para nuestros clientes, y planchas ghd muy rápidas y seguridad son levering.Vores venta en descuento ahora, algunos de ellos son hasta un 44% de descuento . podemos entrega dentro de 24 horas después de recibir su payment.It es muy seguro puerta a puerta, no tener problemas con la aduana. [url=http://planchas-ghd.manifo.com/ ]Comprar GHD Planchas[/url] Tan pronto como el pelo muy rizado sin duda ser que usted podría utilizar un buen sistema de productos para mantener todo más justo destinado a largo plazo, junto con la prevención de frizz. Se basa en la forma en que la forma natural agradable del cabello muy rizado es completamente seguro, y que puede soportar bien básico, sin productos y servicios adicionales. Plancha para el cabello GHD falsos tienden a ser creados por diferentes cantidades de alta calidad y hemos visto innumerables cantidades de ejemplares, en mi profesión, también he notado las historias de miedo asociados con falsos alisadores de pelo GHD sobrecalentamiento y lleno de fuego. Este particular demostrar muy fácilmente por qué se debe impedir, sin problema what.The enfrenta GHD es realmente el hecho probado de que los individuos están interesados ​​GHD barato es tan bueno como ellos no les importa que las tienen, esta verdad particular en su propio viaje la apertura de la puerta a fin de ejercicio ilícito. [url=http://ghdplanchasde.blinkweb.com/]GHD España[/url] Hoy en dia, hay muchas herramientas para que podamos hacer nuestro cabello más style.men la plancha ghd es nuestra mejor opción, ya que puede tener el pelo más sano y fashion.I sugieren se lava el cabello y secarlo completamente antes de uso de alisadores. Si usted utiliza el pelo o cualquier otro planchas de pelo, causarán daños reparables para el cabello que está húmeda o no completamente tør.Vi ofrecen muchos tipos de Babyliss baratos GHD, marca de plancha de pelo ghd baratas, nueva llegada, descuento planchas ghd, etc nuevos estilos, buen precio, varios colores, entrega rápida, orden de la pequeña cantidad accepteret.Efter mi opinión, que vuelve a alegrar por la noticia de que ghd está preparado para you.All la ghd es muy chi y barato con una calidad superior. son absolutamente el mejor producto en el mercado.

    Reply
  • Ghd rettetang er perfekt Verktøy

    Posted by carpinteyrokxq on 06/14/2013 11:02am

    [url=http://www.rettetangnewsnorge.com/falske-ghd]rettetang ghd[/url] Mange lurer på hvilken type rettetang som er aller best og holder lenge, for meg er det kun ett riktig svar på dette. Nemlig GHD! Den varmes opp på under 30 sekunder, glir lett gjennom håret og er enkel å bruke uansett om man har erfaring med rettetenger fra før av, eller om man aldri har vært borti en.Med tengene følger det med en 2 års garanti som er veldig omfattende. Ghd tengene finnes i 3 størrelser .Julen sendte GHD til kjæresten din! [url=http://www.rettetangnewsnorge.com/ghd-omsorg]ghd rettetang pris[/url] En InStyle magazine beste skjønnhet kjøp for flere år running.Hai er keramiske plater er belagt for å beskytte håret mot varme. Dette flatt jern blir varm nok til å rette håret (og hår forblir rett), men ikke for varmt å skade håret. Pluss det er klart til bruk på under 30 sekunder. Kanskje den beste flatt jern på markedet i dag, er det FHI Heat Runway en favoritt blant proffene fordi det skaper elegante, glatt hår med bare en eller to pasninger, ifølge stylist Jonathan Hanousek i 2009 utgaven av InStyle Magazine, som kalte den en Best Beauty Buy for 2009. Med en prislapp på mer enn $ 300, vil FHI Heat Runway (med Tourmaline plater, selvfølgelig) vare livet ut. [url=http://www.rettetangnewsnorge.com/]ghd rettetang pris[/url] Disse nyeste GHD strykejern kommer med en beskyttende vakt slik at du kan pop det når du er ferdig å beskytte dine rettetang. Glam svart vattert roll bag er det perfekte tilbehør til Red Metallic GHD. Samt å være helt varmebestandig på innsiden roll bag gir deg også en varme bevis matte for å tillate en trygg hvilested for køllene mens i bruk.Prøver å plukke den beste flatt jern eller glattejernet kan være skremmende. Hvordan vite hvilke som ikke vil bryte, ikke vil skade håret og vil arbeide raskest? Jeg har gjort jobben for deg, å forske på de beste flatt jern og hår straighteners på markedet. Du vil finne kostbar flatt jern argumenter kjærlighet og de mer rimelige flate strykejern som ikke vil bryte på deg.

    Reply
  • Als men mist zijn / haar richting, kom op luisteren naar liedjes

    Posted by mrswanzi on 06/06/2013 01:09am

    [url=http://koptelefoon-monsterbeats.blogspot.com/]monster beats koptelefoon[/url] Beats By Dre Kopen doe je bij een geautoriseerde dealer. Bij een geautoriseerde dealer weer je zeker dat je een originele beats by dre koopt. Tevens heeft het kopen bij een geautoriseerde dealer het voordeel dat je ook weet dat je garantie goed zit. De dealer handelt samen met jouw garantiekwesties af. Onofficiele gaan dit soort dingen het liefst uit de weg. [url=http://koptelefoon-monsterbeats.manifo.com/]Beats by dre Goedkope[/url] Voor diverse andere merken reden genoeg ook toenadering te zoeken bij een grote artiest. Mode zit van oudsher stevig verweven in de Amerikaanse hip hop en rap cultuur. De uitingen die artiesten dragen worden door (jonge) fans makkelijk geadopteerd. Dr. Dre geldt in deze cultuur nog altijd als een invloedrijk persoon. Door de samenwerking met de Amerikaanse rapper aan te gaan, legde Monster direct het fundament voor een succesvolle introductie van de Beats hoofdtelefoons. De aanwezigheid van Dr. Dre zorgde voor een fundamentele verandering in hoofdtelefoonland. Niet langer was het product een noodzaak, maar meer een accessoire. Beats by Dr. Dre Studio hoofdtelefoons: Kleurrijke kleur [url=http://monsterbeats.webgarden.es/]beats by dre[/url] Beleef nu echt de muziek zoals die bedoeld is met de Beats by Dr Dre Studio koptelefoon, Beats by Dr Dre Studio de hoge kwaliteit koptelefoon gemaakt door de top arties Dr Dre. Veel mensen zijn aan slecht geluids kwaliteit gewent, dat ik ook niet zo gek. Al die lage kwaliteit speakers, oordopjes en koptelefoons die je overal tegen komt¡­ mensen moesten eens weten wat ze missen¡­ Als je eenmaal aan de kwaliteit standaard van deze koptelefoon gewent bent wil je niet meer anders!

    Reply
  • BlÃ¥ Guitar Collection Keramisk

    Posted by wanzixiao on 05/30/2013 09:34am

    [url=http://www.glattejernghd.bloguedobebe.com/]Billigt Glattejern[/url] Den alsidighed ghd glattejern giver dig mulighed for at gøre meget mere end bare glatte hår. Den ghd lilla kommer med en intensitet uvillig ghd glattejern omfatter grund ghd glattejern indpakket i et eksklusivt designet rotere måtten med alle nye packaging.With lidt øvelse, kan du skabe volumen og krøller med lethed. [url=http://www.ghdglattejern.tripod.com/]ghd danmark[/url] Vi er bekymrede over deres foretrukne stjerner, ikke blot mere forståelse for, hvad de siger, vil de smager mere bekymret for den kjole, retro-mode i dag er stadig gal bunden, Ms krøllet hår end glat hår så populær og mere volumen hår design er ikke svært at se, hvad du vælger ghd fladjern og har evnerne, så dagens gav dig et hår pind. [url=http://www.glattejernghdpris.webs.com/]glattejern ghd pris[/url] Straks efter sammen med din gode hår dage manke styling ædle metaller, erhverve vidunderlige såvel som fysiske egnethed ud over velfærd retsmiddel langs med lægge på det med hensyn til at bruge. Leder af hår vil i alle sandsynlighed ender med at blive avanceret disheveled det samme som bølger kontakt med velkendte mænd og kvinder langs med design og stil plus formatindstillinger. Lige før en person vælger du at efterspørgslen disheveled vises, er du i stand til at oprette din egen personlige personlige bruge højere blot ved besidder en design og storheden brug. Den nøjagtige udformning og elegance draw på vil sandsynligvis fastholde de faktiske private bølger for at kunne du overlegen partier ekstra. Hår på grund af dette vil helt sikkert næsten helt sikkert ofte være innovative sammenholdt med fabelagtig. Du kan konvertere hoved af hår Implementer mens betydeligt, mens alle ønsker når du besidder denne bestemte visse gode hår dage manke hår styling stål.

    Reply
  • Does not work with Windows Vista

    Posted by pavitx on 08/21/2009 05:09am

    Nice article but so old it does not work with Windows Vista. The caption area has flicker (yes) and none of the buttons works. A real pity. I converted the dsp project into Visual Studio 2008.

    Reply
  • put CButton on caption - is it possible???

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

    Originally posted by: mamont

    I'm shocked!!
    How put a ownerdrawn button on the caption does anyone know???

    thx for any advices...

    Reply
  • dialog

    Posted by Legacy on 06/13/2002 12:00am

    Originally posted by: Ramya

    how to creat a dialog boex,
    how to modify help in dialog box

    Reply
  • Can i add the buttons with my own GUI

    Posted by Legacy on 11/13/2001 12:00am

    Originally posted by: vivek dabral

    Can i add the minimize & close button which have the appearance as my bitmap.
    How & which handlers can i call on mouse clicking?

    Thanx in advance
    Vivek Dabral

    Reply
  • Thank you!

    Posted by Legacy on 05/21/2001 12:00am

    Originally posted by: Nick Kong

    Thank you , It's cool! just i want

    Reply
  • Logical Syntax Error

    Posted by Legacy on 01/27/2000 12:00am

    Originally posted by: Paul Mestemaker II

    On line 642 of the TemplateDlg.cpp file there is an error:
    
    int iB = GetGValue(crStart);
    I am assuming that this should be:
    int iB = GetBValue(crStart);

    Reply
  • Loading, Please Wait ...

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

Top White Papers and Webcasts

  • Protecting business operations means shifting the priorities around availability from disaster recovery to business continuity. Enterprises are shifting their focus from recovery from a disaster to preventing the disaster in the first place. With this change in mindset, disaster recovery is no longer the first line of defense; the organizations with a smarter business continuity practice are less impacted when disasters strike. This SmartSelect will provide insight to help guide your enterprise toward better …

  • Live Event Date: August 20, 2014 @ 1:00 p.m. ET / 10:00 a.m. PT When you look at natural user interfaces as a developer, it isn't just fun and games. There are some very serious, real-world usage models of how things can help make the world a better place – things like Intel® RealSense™ technology. Check out this upcoming eSeminar and join the panel of experts, both from inside and outside of Intel, as they discuss how natural user interfaces will likely be getting adopted in a wide variety …

Most Popular Programming Stories

More for Developers

Latest Developer Headlines

RSS Feeds