![]() |
Desktop Development »
Tabs & Property Pages »
Owner Drawn
Intermediate
A simple tab like dialog controlBy Wang YingwuCTabDialog bundles buttons and dialogs, so users can add their owner draw buttons and dialogs |
VC6, VC7, VC7.1Win2K, WinXP, Win2003, MFC, Dev
|
|
Advanced Search Add to IE Search |
|
|
|
||||||||||||||||

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.
To use the class
#include
"TabDialog.h"
CTabDialog data member to your application: private:
CTabDialog* m_pTabDialog;
OnInitDialog() of your application, initialize the CTabDialog //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, rect.top, 0 , 0,
SWP_NOSIZE | SWP_NOZORDER | SWP_SHOWWINDOW);
Note: you need to create a dialog resource for the CTabDialog control.
////////////////////////////////////////////////////////////
//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;
rectOne.top = 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;
rectTwo.top = 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;
rectThree.top = 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;
}
InitPagesShow() member function of CTabDialog to set the default showing of the control. //initialize the showing of TabDialog
m_pTabDialog->InitPagesShow();
General
News
Question
Answer
Joke
Rant
Admin
|
PermaLink |
Privacy |
Terms of Use
Last Updated: 31 Aug 2003 Editor: Nick Parker |
Copyright 2003 by Wang Yingwu Everything else Copyright © CodeProject, 1999-2009 Web21 | Advertise on the Code Project |