DEFINE_RESPONSE_TABLE1(TDialogOptions, TDialog)
EV_TVN_SELCHANGED(IDC_TREEVIEW1,EvTreeSelChanged),
END_RESPONSE_TABLE;
TDialogOptions::TDialogOptions(TWindow* parent, TResId resId)
: TDialog(parent, resId), TWindow(parent)
{
for(int i=0;i<100;i++)
treeStruct[i]=new struct TreeDataStruct;
tree=new TTreeWindow(this,IDC_TREEVIEW1);
tree->Attr.Style &= ~(WS_VSCROLL);
}
TDialogOptions::~TDialogOptions()
{
for(int i=0;i<100;i++)
delete treeStruct[i];
Destroy();
}
void TDialogOptions::SetupWindow()
{
TDialog::SetupWindow();
DilaogButtons=new TDilaogButtons(this,IDD_BUTTONS);
DilaogListWindow=new TDilaogListWindow(this,IDD_LISTWINDOW);
DilaogRichEdit=new TDilaogRichEdit(this,IDD_RICHEDIT);
DilaogButtons->Create();
DilaogListWindow->Create();
DilaogRichEdit->Create();
//find out where to put the control
dialogs
TRect rc;
::GetWindowRect(GetDlgItem(IDC_STATIC_BACKGROUND),&rc);
TPoint p=rc.TopLeft();
ScreenToClient(p);
DilaogButtons->SetWindowPos(0,p.x,p.y,rc.Width(),rc.Height(),SWP_SHOWWINDOW);
DilaogListWindow->SetWindowPos(0,p.x,p.y,rc.Width(),rc.Height(),SWP_HIDEWINDOW);
DilaogRichEdit->SetWindowPos(0,p.x,p.y,rc.Width(),rc.Height(),SWP_HIDEWINDOW);
//setup treewindow
TTreeNode root = tree->GetRoot();
TTreeNode node = tree->GetRoot();
node = root.AddChild(TTreeNode(*tree, "Buttons"));//,0,0));
TreeSetIndex(node,0);//defined
below...
node = root.AddChild(TTreeNode(*tree, "ODListWindow"));//,0,0));
TreeSetIndex(node,1);
node = root.AddChild(TTreeNode(*tree, "RichEditEx"));//,0,0));
TreeSetIndex(node,2);
}
void TDialogOptions::TreeSetIndex(TTreeNode &treenode,
int
page)
{
// assign a page number to each
tree node
int arrayReference=page;
treeStruct[arrayReference]->Page = page;
treenode.SetMask(TVIF_PARAM);
treenode.SetItemData((uint32)treeStruct[arrayReference],true);
}
void TDialogOptions::EvTreeSelChanged(TTwNotify&)
{
char buf[10];
strcpy(buf,"");
uint32 data;
TTreeNode node=tree->GetSelection();
if((HTREEITEM)node==NULL) return;
node.SetMask(TVIF_PARAM);
node.GetItemData(data);
int page=((struct TreeDataStruct*)data)->Page;
DilaogButtons-> ShowWindow((page==0)?SW_SHOW:SW_HIDE);
DilaogListWindow-> ShowWindow((page==1)?SW_SHOW:SW_HIDE);
DilaogRichEdit-> ShowWindow((page==2)?SW_SHOW:SW_HIDE);
switch(page)
{
case 0:
::SetWindowText(GetDlgItem(IDC_STATIC_HEADING),"Extended
Buttons");
break;
case 1:
::SetWindowText(GetDlgItem(IDC_STATIC_HEADING),"Owner
draw list window");
break;
case 2:
::SetWindowText(GetDlgItem(IDC_STATIC_HEADING),"Rich
Edit Example");
DilaogRichEdit->Edit->Read("readme.rtf");
break;
default: break;
}
}