#undef UNICODE
#undef _UNICODE
#include <windows.h>
#include <commctrl.h>
#include "resource.h"
BOOL CALLBACK DialogProc(
HWND hwndDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
TCITEM item;
RECT rcClient, rcTab;
static HWND hTabCtl;
static HWND hPage[2]; //与选项卡index对应,方便操作
static int curPage = 0;
switch ( uMsg )
{
case WM_INITDIALOG:
{
hTabCtl = GetDlgItem(hwndDlg, IDC_TAB1);
item.mask = TCIF_TEXT;
//添加两个选项卡
item.pszText = "Tab1";
TabCtrl_InsertItem(hTabCtl, 0, &item );
item.pszText = "Tab2";
TabCtrl_InsertItem(hTabCtl, 1, &item );
GetClientRect(hTabCtl, &rcClient); //显示区域矩形
SendMessage(hTabCtl, TCM_GETITEMRECT, 0, (LPARAM)&rcTab); //Tab矩形
hPage[0] = CreateDialog(GetModuleHandle(NULL), MAKEINTRESOURCE(IDD_PAGE1), hTabCtl, NULL);
hPage[1] = CreateDialog(GetModuleHandle(NULL), MAKEINTRESOURCE(IDD_PAGE2), hTabCtl, NULL);
ShowWindow(hPage[0], SW_SHOW);
ShowWindow(hPage[1], SW_SHOW);
//重新摆放两个子对话框
SetWindowPos(hPage[0], NULL, \
rcTab.left-1, rcTab.bottom+1, \
rcClient.right-rcTab.left-1, rcClient.bottom-rcTab.bottom-3, \
SWP_SHOWWINDOW);
SetWindowPos(hPage[1], NULL, \
rcTab.left-1, rcTab.bottom+1, \
rcClient.right-rcTab.left-1, rcClient.bottom-rcTab.bottom-3, \
SWP_SHOWWINDOW);
}
break;
case WM_NOTIFY:
if ( IDC_TAB1 == wParam )
{
if ( TCN_SELCHANGE == ((LPNMHDR)lParam)->code )
{
int i = 0;
i = SendMessage(hTabCtl, TCM_GETCURFOCUS, 0, 0 );
if ( i != curPage )
{
ShowWindow(hPage[curPage], SW_HIDE);
curPage = i;
ShowWindow(hPage[i], SW_SHOW);
}
}
}
break;
case WM_CLOSE:
EndDialog(hwndDlg, 0);
break;
}
return FALSE;
}
int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nShowCmd
)
{
DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, DialogProc );
return 0;
}
rc文件:
IDD_DIALOG1 DIALOGEX 0, 0, 316, 186
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Dialog"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
DEFPUSHBUTTON "OK",IDOK,205,165,50,14
PUSHBUTTON "Cancel",IDCANCEL,259,165,50,14
CONTROL "",IDC_TAB1,"SysTabControl32",0x0,7,17,302,140
END
IDD_PAGE1 DIALOGEX 0, 0, 240, 98
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_SYSMENU
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
LTEXT "第一页",IDC_STATIC,115,50,29,8
END
IDD_PAGE2 DIALOGEX 0, 0, 243, 96
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_SYSMENU
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
LTEXT "第二页",IDC_STATIC,115,50,29,8
END
分享到:
相关推荐
《google android sdk开发范例大全(第3版)》在上一版的基础上,以android手机应用程序开发(采用android sdk 2.3.3)为主题,超过200多个范例全面且深度地整合了手机、网络及服务等多个开发领域,为读者提高程序设计...
《Google Android SDK开发范例大全(第3版)》在上一版的基础上,以Android手机应用程序开发(采用Android SDK 2.3.3)为主题,超过200多个范例全面且深度地整合了手机、网络及服务等多个开发领域,为读者提高程序设计...
《Google Android SDK开发范例大全(第3版)》在上一版的基础上,以Android手机应用程序开发(采用Android SDK 2.3.3)为主题,超过200多个范例全面且深度地整合了手机、网络及服务等多个开发领域,为读者提高程序设计...
《Google Android SDK开发范例大全(第3版)》在上一版的基础上,以Android手机应用程序开发(采用Android SDK 2.3.3)为主题,超过200多个范例全面且深度地整合了手机、网络及服务等多个开发领域,为读者提高程序设计...
《Google Android SDK开发范例大全(第3版)》在上一版的基础上,以Android手机应用程序开发(采用Android SDK 2.3.3)为主题,超过200多个范例全面且深度地整合了手机、网络及服务等多个开发领域,为读者提高程序...
第4章 史上超豪华的手机控件 4.1 EditText与TextView共舞——setOnKeyListener事件 4.2 设计具有背景图的按钮——ImageButton的焦点及事件处理 4.3 给耶诞老人的信息——Toast对象的使用 4.4 我同意条款——CheckBox...
第4章 史上超豪华的手机控件 4.1 EditText与TextView共舞——setOnKeyListener事件 4.2 设计具有背景图的按钮——ImageButton的焦点及事件处理 4.3 给耶诞老人的信息——Toast对象的使用 4.4 我同意条款——CheckBox...
2.1 安装AndroidSDK与ADTplug-in 2.2 建立第一个Android项目(HelloAndroid!) 2.3 Android应用程序架构——从此开始 2.4 可视化的界面开发工具 2.5 部署应用程序到Android手机 第3章 用户人机界面 3.1 更改与显示...
第4章 史上超豪华的手机控件 4.1 EditText与TextView共舞——setOnKeyListener事件 4.2 设计具有背景图的按钮——ImageButton的焦点及事件处理 4.3 给耶诞老人的信息——Toast对象的使用 4.4 我同意条款——CheckBox...
2.1 安装AndroidSDK与ADTplug-in 2.2 建立第一个Android项目(HelloAndroid!) 2.3 Android应用程序架构——从此开始 2.4 可视化的界面开发工具 2.5 部署应用程序到Android手机 第3章 用户人机界面 3.1 更改与显示...
《Google Android SDK开发范例大全(第3版)》在上一版的基础上,以Android手机应用程序开发(采用Android SDK 2.3.3)为主题,超过200多个范例全面且深度地整合了手机、网络及服务等多个开发领域,为读者提高程序设计...
第4章 史上超豪华的手机控件 4.1 EditText与TextView共舞——setOnKeyListener事件 4.2 设计具有背景图的按钮——ImageButton的焦点及事件处理 4.3 给耶诞老人的信息——Toast对象的使用 4.4 我同意条款——...
5.12.1 选项卡和选项卡控件属性 235 5.12.2 选项卡控件的使用方法 235 5.12.3 创建选项卡控件的方法 235 5.12.4 处理选项卡控件通知消息 236 5.12.5 ctabctrl类简介 236 5.13 Visual C++ 2010 IP控件简介与开发 241 ...
这是带有TrueConf SDK控件和按钮的简单应用程序。 主要特点: 通过单击按钮从通讯录中呼叫随机用户; 在具有指定显示超时的弹出窗口上显示传入的聊天消息; 自动接受所有来电和邀请。 设定值 应用程序还包含...
4.20 以动态列表配置选项 4.21 查找程序根目录下所有文件 4.22 加载手机磁盘里的图片文件 4.23 动态放大缩小ImageView里的图片 4.24 动态旋转图片 4.25 猜猜我在想什么 4.26...
第4章 史上超豪华的手机控件 4.1 EditText与TextView共舞——setOnKeyListener事件 4.2 设计具有背景图的按钮——ImageButton的焦点及事件处理 4.3 给耶诞老人的信息——Toast对象的使用 4.4 我同意条款——CheckBox...