`
bcyy
  • 浏览: 1817480 次
文章分类
社区版块
存档分类
最新评论

选项卡控件SDK程序

 
阅读更多
#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版)》.pdf

     《google android sdk开发范例大全(第3版)》在上一版的基础上,以android手机应用程序开发(采用android sdk 2.3.3)为主题,超过200多个范例全面且深度地整合了手机、网络及服务等多个开发领域,为读者提高程序设计...

    Google Android SDK开发范例大全(第3版) 4/5

    《Google Android SDK开发范例大全(第3版)》在上一版的基础上,以Android手机应用程序开发(采用Android SDK 2.3.3)为主题,超过200多个范例全面且深度地整合了手机、网络及服务等多个开发领域,为读者提高程序设计...

    Google Android SDK开发范例大全(第3版) 3/5

    《Google Android SDK开发范例大全(第3版)》在上一版的基础上,以Android手机应用程序开发(采用Android SDK 2.3.3)为主题,超过200多个范例全面且深度地整合了手机、网络及服务等多个开发领域,为读者提高程序设计...

    Google Android SDK开发范例大全(第3版) 5/5

    《Google Android SDK开发范例大全(第3版)》在上一版的基础上,以Android手机应用程序开发(采用Android SDK 2.3.3)为主题,超过200多个范例全面且深度地整合了手机、网络及服务等多个开发领域,为读者提高程序设计...

    Google Android SDK开发范例大全(第3版)part2

     《Google Android SDK开发范例大全(第3版)》在上一版的基础上,以Android手机应用程序开发(采用Android SDK 2.3.3)为主题,超过200多个范例全面且深度地整合了手机、网络及服务等多个开发领域,为读者提高程序...

    Google Android SDK开发范例大全(PDF高清完整版1)(4-1)

    第4章 史上超豪华的手机控件 4.1 EditText与TextView共舞——setOnKeyListener事件 4.2 设计具有背景图的按钮——ImageButton的焦点及事件处理 4.3 给耶诞老人的信息——Toast对象的使用 4.4 我同意条款——CheckBox...

    Google Android SDK开发范例大全(PDF完整版4)(4-4)

    第4章 史上超豪华的手机控件 4.1 EditText与TextView共舞——setOnKeyListener事件 4.2 设计具有背景图的按钮——ImageButton的焦点及事件处理 4.3 给耶诞老人的信息——Toast对象的使用 4.4 我同意条款——CheckBox...

    Google Android SDK开发范例大全(完整版)

    2.1 安装AndroidSDK与ADTplug-in 2.2 建立第一个Android项目(HelloAndroid!) 2.3 Android应用程序架构——从此开始 2.4 可视化的界面开发工具 2.5 部署应用程序到Android手机 第3章 用户人机界面 3.1 更改与显示...

    Google Android SDK开发范例大全(PDF高清完整版3)(4-3)

    第4章 史上超豪华的手机控件 4.1 EditText与TextView共舞——setOnKeyListener事件 4.2 设计具有背景图的按钮——ImageButton的焦点及事件处理 4.3 给耶诞老人的信息——Toast对象的使用 4.4 我同意条款——CheckBox...

    Google Android SDK开发范例大全的目录

    2.1 安装AndroidSDK与ADTplug-in 2.2 建立第一个Android项目(HelloAndroid!) 2.3 Android应用程序架构——从此开始 2.4 可视化的界面开发工具 2.5 部署应用程序到Android手机 第3章 用户人机界面 3.1 更改与显示...

    Google Android SDK开发范例大全(第3版) 1/5

    《Google Android SDK开发范例大全(第3版)》在上一版的基础上,以Android手机应用程序开发(采用Android SDK 2.3.3)为主题,超过200多个范例全面且深度地整合了手机、网络及服务等多个开发领域,为读者提高程序设计...

    Google Android SDK开发范例大全(完整版附部分源码).pdf

    第4章 史上超豪华的手机控件 4.1 EditText与TextView共舞——setOnKeyListener事件 4.2 设计具有背景图的按钮——ImageButton的焦点及事件处理 4.3 给耶诞老人的信息——Toast对象的使用 4.4 我同意条款——...

    Visual C++2010开发权威指南(共三部分).part1.rar

    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 ...

    VideoKioskWPF:视频会议亭。 C#上的软件源代码。 Windows Presentation Foundation(WPF)应用程序开发。 此应用程序基于Windows的TrueConf SDK-windows source code

    这是带有TrueConf SDK控件和按钮的简单应用程序。 主要特点: 通过单击按钮从通讯录中呼叫随机用户; 在具有指定显示超时的弹出窗口上显示传入的聊天消息; 自动接受所有来电和邀请。 设定值 应用程序还包含...

    google android sdk开发范例大全 第二版 PDF 光盘代码

     4.20 以动态列表配置选项   4.21 查找程序根目录下所有文件   4.22 加载手机磁盘里的图片文件   4.23 动态放大缩小ImageView里的图片   4.24 动态旋转图片   4.25 猜猜我在想什么   4.26...

    Google Android SDK 开发范例大全01

    第4章 史上超豪华的手机控件 4.1 EditText与TextView共舞——setOnKeyListener事件 4.2 设计具有背景图的按钮——ImageButton的焦点及事件处理 4.3 给耶诞老人的信息——Toast对象的使用 4.4 我同意条款——CheckBox...

Global site tag (gtag.js) - Google Analytics