Click here to Skip to main content
13,003,930 members (130,743 online)
Click here to Skip to main content
Add your own
alternative version


39 bookmarked
Posted 12 Jun 2003

A simple tab like dialog control

, 31 Aug 2003
Rate this:
Please Sign up or sign in to vote.
CTabDialog bundles buttons and dialogs, so users can add their owner draw buttons and dialogs

Sample Image - TabDialog.gif


Nowadays dialog based applications are becoming more and more popular. To make my future development for dialog based application easier I worked out this CTabDialog, which operates like a Tab control, but gives you more chance to have your owner draw buttons and dialogs added. Hopefully CTabDialog will make your development of dialog based application easier.

Using the code

To use the class

  • Include the class to your application <PRE lang=c++>#include "TabDialog.h"
  • Add the CTabDialog data member to your application: <PRE lang=c++>private: CTabDialog* m_pTabDialog;
  • In OnInitDialog() of your application, initialize the CTabDialog <PRE lang=c++>//create the TabDialog m_pTabDialog = new CTabDialog(IDD_TABDLG, this); if (m_pTabDialog->Create(IDD_TABDLG, this) == FALSE) return FALSE; //set the TabDialog's positon m_pTabDialog->SetWindowPos(this, rect.left,, 0 , 0, SWP_NOSIZE | SWP_NOZORDER | SWP_SHOWWINDOW);

    Note: you need to create a dialog resource for the CTabDialog control.

  • You then need to add pages to the control <PRE lang=c++>//////////////////////////////////////////////////////////// //Add pages (include button and dialog) to TabDialog BOOL CTabDialogTestDlg::AddPagesToTabDialog() { //create first button m_pBtnOne = new CButton(); RECT rectOne; rectOne.left = BTNONE_LOCATION.x; rectOne.right = BTNONE_LOCATION.x+BUTTON_WIDTH; = BTNONE_LOCATION.y; rectOne.bottom = BTNONE_LOCATION.y+BUTTON_HEIGHT; m_pBtnOne->Create("One", WS_CHILD | WS_VISIBLE | WS_TABSTOP, rectOne, m_pTabDialog, BUTTON_ONE); //create first dialog m_pPageOne = new CPageOneDlg(m_pTabDialog); if (m_pPageOne->Create(IDD_PAGE_ONE, m_pTabDialog) == FALSE) return FALSE; //add first page m_pTabDialog->AddPage(m_pPageOne, m_pBtnOne); //Create second button m_pBtnTwo = new CButton(); RECT rectTwo; rectTwo.left = BTNTWO_LOCATION.x; rectTwo.right = BTNTWO_LOCATION.x+BUTTON_WIDTH; = BTNTWO_LOCATION.y; rectTwo.bottom = BTNTWO_LOCATION.y+BUTTON_HEIGHT; m_pBtnTwo->Create("Two", WS_CHILD | WS_VISIBLE | WS_TABSTOP, rectTwo, m_pTabDialog, BUTTON_TWO); //create second dialog m_pPageTwo = new CPageTwoDlg(m_pTabDialog); if(m_pPageTwo->Create(IDD_PAGE_TWO, m_pTabDialog) == FALSE) return FALSE; //add second page m_pTabDialog->AddPage(m_pPageTwo, m_pBtnTwo); //Create third button m_pBtnThree = new CButton(); RECT rectThree; rectThree.left = BTNTHREE_LOCATION.x; rectThree.right = BTNTHREE_LOCATION.x+BUTTON_WIDTH; = BTNTHREE_LOCATION.y; rectThree.bottom = BTNTHREE_LOCATION.y+BUTTON_HEIGHT; m_pBtnThree->Create("Three", WS_CHILD | WS_VISIBLE | WS_TABSTOP, rectThree, m_pTabDialog, BUTTON_THREE); //create third dialog m_pPageThree = new CPageThreeDlg(m_pTabDialog); if(m_pPageThree->Create(IDD_PAGE_THREE, m_pTabDialog) == FALSE) return FALSE; //add third page m_pTabDialog->AddPage(m_pPageThree, m_pBtnThree); return TRUE; }
  • You then need to call InitPagesShow() member function of CTabDialog to set the default showing of the control. <PRE lang=c++>//initialize the showing of TabDialog m_pTabDialog->InitPagesShow();


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

Wang Yingwu
Web Developer
Singapore Singapore
No Biography provided

You may also be interested in...


Comments and Discussions

QuestionMemory leak Pin
msopengl10-Oct-11 18:26
membermsopengl10-Oct-11 18:26 
GeneralGreat work! Pin
xtjie21-Nov-10 21:52
memberxtjie21-Nov-10 21:52 
Generalquestion about create a dlg Pin
husoso25-Feb-08 15:55
memberhusoso25-Feb-08 15:55 
QuestionHow to get SetFocus Pin
sheshidar26-Sep-07 20:45
membersheshidar26-Sep-07 20:45 
Generalou very much for this beautifull article.How to get SetFocus Pin
sheshidar26-Sep-07 20:41
membersheshidar26-Sep-07 20:41 
QuestionHow change the position of the button? and add new one? Pin
freddy1ca29-Aug-04 10:38
memberfreddy1ca29-Aug-04 10:38 
AnswerRe: How change the position of the button? and add new one? Pin
husoso25-Feb-08 18:50
memberhusoso25-Feb-08 18:50 
GeneralXie xie Wang Yingwu! Pin
Gray Dragon8-Jan-04 18:47
memberGray Dragon8-Jan-04 18:47 
GeneralChange tab without really click the button Pin
ycjack29-Nov-03 16:34
sussycjack29-Nov-03 16:34 
GeneralRe: Change tab without really click the button Pin
prakashjagdale11-Jan-04 3:20
memberprakashjagdale11-Jan-04 3:20 
GeneralProject file missing Pin
smesser2-Sep-03 10:59
membersmesser2-Sep-03 10:59 
GeneralRe: Project file missing Pin
Wang Yingwu2-Sep-03 15:38
memberWang Yingwu2-Sep-03 15:38 
GeneralRe: Project file missing Pin
Chris Maunder2-Sep-03 16:14
adminChris Maunder2-Sep-03 16:14 
GeneralRe: Project file missing Pin
Wang Yingwu2-Sep-03 16:18
memberWang Yingwu2-Sep-03 16:18 
GeneralMemory leak!!! Pin
Grant Chan15-Aug-03 18:47
memberGrant Chan15-Aug-03 18:47 
GeneralRe: Memory leak!!! Pin
Wang Yingwu31-Aug-03 22:24
memberWang Yingwu31-Aug-03 22:24 
GeneralInteresting! Pin
WREY13-Jun-03 8:48
memberWREY13-Jun-03 8:48 
GeneralRe: Interesting! Pin
Chris Maunder16-Jun-03 13:08
adminChris Maunder16-Jun-03 13:08 
GeneralRe: Interesting! Pin
Wang Yingwu31-Aug-03 22:28
memberWang Yingwu31-Aug-03 22:28 

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

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

Permalink | Advertise | Privacy | Terms of Use | Mobile
Web02 | 2.8.170627.1 | Last Updated 1 Sep 2003
Article Copyright 2003 by Wang Yingwu
Everything else Copyright © CodeProject, 1999-2017
Layout: fixed | fluid