我的任务是对特定程序的用户界面进行一些修改。部分原因是我正在向特定对话框添加更多信息。为了让它看起来更好,我认为有一个选项卡式界面会更好。目前,该程序中的所有布局都在资源 (.rc) 文件中完成。
我一直在阅读带有选项卡的对话框,我相信这是通过为每个选项卡创建一个对话框布局(没有边框和“子”样式),然后根据选择的选项卡显示布局来完成的。我的问题是我无法找到任何关于如何实际执行此操作的好的文档/示例。
一些代码:
//create the main dialog from WndProc - no problem here
DialogBox(hInst, (char*)IDD_DIALOG_MAIN, hWnd, MainDlgProc);
对话代码:
HWND hTab;
BOOL CALLBACK MainDlgProc(HWND hDlg, UINT Message, WPARAM wParam, LPARAM lParam)
{
TCITEM titem;
switch (Message) {
case WM_INITDIALOG:
//create tab control
//I didn't use a tabcontrol in the resource file because I could not figure out how to get a handle for it
hTab = CreateWindow(WC_TABCONTROL, NULL, WS_CHILD | WS_CLIPSIBLINGS | WS_VISIBLE,
30, 30, 400, 550, hDlg,(HMENU) ID_TABCTRL, hInst, NULL);
//add a couple of tabs
titem.mask = TCIF_TEXT;
titem.pszText = "Tab1";
TabCtrl_InsertItem(hTab, 0, &titem);
titem.pszText = "Tab2";
TabCtrl_InsertItem(hTab, 1, &titem);
//add content to tabs using dialog resource IDs???
//Obviously this doesn't work. It doesn't even point to which tab the content should be on
//CreateDialog(hInst,IDD_DIALOG_MAIN_TAB1, hTab, Tab1DlgProc);
//CreateDialog(hInst,IDD_DIALOG_MAIN_TAB2, hTab, Tab2DlgProc);
//EDIT: See my answer below for how I placed the dialogs in the tabs
//etc....
任何关于我可以在哪里阅读更多此类内容的建议将不胜感激。此外,如果我的方法中的任何内容似乎完全错误,请随时告诉我为什么会这样。