实例介绍
#include "stdafx.h"
#include <windows.h>
#include <windowsx.h>
#include "Resource.h"
#include "TabDlg1.h"
#include "winsock2.h"
#include "stdafx.h"
#include <windows.h>
#include <windowsx.h>
#include "Resource.h"
#include "MainDlg.h"
#include "TabDlg1.h"
#include "TabDlg2.h"
#include "TabDlg3.h"
#include "winsock2.h"
#define WM_CLICKBIT (WM_USER 1) //最小化,消息定义
NOTIFYICONDATA nid;
RECT RectForm; //广告窗口坐标
HFONT hFontURLNotVisit;//字体
HFONT hFontURLVisited;
extern TCHAR tcRunPath[MAX_PATH]; //程序当前路径目录
HINSTANCE hInst;
static HWND Child1hWnd,Child2hWnd,Child3hWnd; //TAB Control 3个子窗口句柄
int initDialog(HWND hwnd)//初始化TAB CTR控件
{
//TCHAR szWebSite[100]="http://returnc.com/archives/300.html";
//ShellExecute(hwnd,TEXT("open"),szWebSite,TEXT(""),NULL,SW_SHOWMAXIMIZED);
HWND hwndTab = GetDlgItem(hwnd, IDC_TAB1);
InitCommonControls();
TCITEM ItemStruct;//定义TAB的参数的结构体
ItemStruct.mask = TCIF_TEXT;//标签
ItemStruct.iImage = 0;//图像
ItemStruct.lParam = 0;
ItemStruct.pszText = "SMTP设置";//选项的字符
ItemStruct.cchTextMax = 10;
SendMessage(hwndTab, TCM_INSERTITEM, 0, (LPARAM)&ItemStruct);//不用SendMessage用
//TabCtrl_InsertItem(hwndTab,0,&ItemStruct);是一样一样的。
ItemStruct.pszText = "邮件内容";//同上,就是重新定义一下选项的字符
SendMessage(hwndTab, TCM_INSERTITEM, 1, (LPARAM)&ItemStruct);
ItemStruct.pszText = "收件箱";
SendMessage(hwndTab, TCM_INSERTITEM, 2, (LPARAM)&ItemStruct);
//Child1hWnd = CreateDialogParam(hInst, MAKEINTRESOURCE(IDD_DIALOG1), hwndTab, (DLGPROC)NULL, 0);
//网上出现的是上面这个版本,我一开始用这个,给折腾到死都没得到子窗口控件,得不到控件就没法设置了
//因为后面的(DLGPROC)被置空了。这里置空,TAB只能当摆设,所以改成你自己建好的TAB1.CPP中的PROC函数就好了
Child1hWnd = CreateDialogParam((HINSTANCE) GetWindowLong(hwnd, GWL_HINSTANCE),MAKEINTRESOURCE(IDD_DIALOG1),hwndTab,(DLGPROC)TAB1_Proc,0);//创建子窗口
Child2hWnd = CreateDialogParam((HINSTANCE) GetWindowLong(hwnd, GWL_HINSTANCE),MAKEINTRESOURCE(IDD_DIALOG2),hwndTab,(DLGPROC)TAB2_Proc,0);
Child3hWnd = CreateDialogParam((HINSTANCE) GetWindowLong(hwnd, GWL_HINSTANCE),MAKEINTRESOURCE(IDD_DIALOG3),hwndTab,(DLGPROC)TAB3_Proc,0);
ShowWindow(Child1hWnd, SW_SHOWDEFAULT); //默认显示一下第一个窗口
return 0;
}
BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{ HWND hwndTab = GetDlgItem(hWnd, IDC_TAB1);//TAB Control句柄
HWND hwnd_Link=GetDlgItem(hWnd,IDC_SYSLINK1);//Syslink Control 文字链接——版权句柄
switch(uMsg)
{
HANDLE_MSG(hWnd, WM_INITDIALOG, Main_OnInitDialog);
HANDLE_MSG(hWnd, WM_COMMAND, Main_OnCommand);
HANDLE_MSG(hWnd,WM_CLOSE, Main_OnClose);
HANDLE_MSG(hWnd, WM_SYSCOMMAND, Main_OnSysCommand); //最小化到托盘
HANDLE_MSG(hWnd,WM_LBUTTONDOWN,Main_OnLButtonDown);//左键点击
HANDLE_MSG(hWnd,WM_MOUSEMOVE, Main_OnMouseMove); //鼠标移动范围
HANDLE_MSG(hWnd,WM_PAINT, Main_OnPaint); //点击后显示网站
//HANDLE_MSG(hwnd,WM_CTLCOLORSTATIC, Main_OnCtlColor);
case WM_CLICKBIT://最小化后,点击图标
{
if(wParam == IDI_ICON1)
{
switch(lParam)
{
case WM_LBUTTONDBLCLK://左键双击事件
{
ShowWindow(hWnd, SW_SHOWNORMAL); //显示窗口
Shell_NotifyIcon(NIM_DELETE, &nid);//删除托盘图标
SetWindowPos(hWnd, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);//设置窗口坐标
}
break;
case WM_RBUTTONUP://右键起来时弹出快捷菜单,待完善”
{
MessageBox(hWnd,TEXT("作者比较懒,右键功能还没添加,双击左键恢复主窗口"),TEXT("憨笑"),MB_OK);
}
break;
default:
// ShowWindow(hWnd, SW_HIDE);
break;
}
return TRUE;
}
else
{
return FALSE;
}
}
break;
case WM_NOTIFY:
{
/*
switch (((LPNMHDR)lParam)->code)//文字链接部分 //TAB CONTROL 控件选择操作&文字链接 **********这一段经百次测试,10分之一左右的概率出现内存读取错误,疑似(LPNMHDR)lParam)->code读取问题
{
case NM_CLICK ://点击
//case NM_RETURN ://回车键都可以打开链接
{
PNMLINK pNMLink = (PNMLINK)lParam;
LITEM item = pNMLink->item;
NMHDR hdr = pNMLink->hdr;
if ((hdr.hwndFrom == hwnd_Link) && (item.iLink == 0))
{
ShellExecute(hWnd,TEXT("open"),"http://www.bachengxie.com/?p=300",TEXT(""),NULL,SW_SHOWMAXIMIZED);//打开网站
return TRUE;
}
else
{
return FALSE;
}
}
break;
default:
break;
}
*/
if ( *(LPDWORD)((LPBYTE)lParam 8)==TCN_SELCHANGE ) //子窗口选择
{
int i = TabCtrl_GetCurSel(hwndTab);//返回TAB CTR选择页编号,显示对应窗口数据
switch (i)
{
case 0:
{
ShowWindow(Child1hWnd,SW_SHOWDEFAULT);
ShowWindow(Child2hWnd,SW_HIDE);
ShowWindow(Child3hWnd,SW_HIDE);
}
break;
case 1:
{
ShowWindow(Child2hWnd,SW_SHOWDEFAULT);
ShowWindow(Child1hWnd,SW_HIDE);
ShowWindow(Child3hWnd,SW_HIDE);
}
break;
case 2:
{
ShowWindow(Child3hWnd,SW_SHOWDEFAULT);
ShowWindow(Child1hWnd,SW_HIDE);
ShowWindow(Child2hWnd,SW_HIDE);
}
break;
default:
break;
}
return TRUE;
}
else
{
return FALSE;
}
}
break;
default:
break;
}
return FALSE;
}
BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
{
SkinH_AttachEx(("skins/china.she"), NULL); //载入皮肤
initDialog(hwnd); //初始化TAB控件
hFontURLNotVisit=CreateFont(15,6,0,0,0,FALSE,FALSE,FALSE,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,FF_DONTCARE,"黑体");//设置TAB控件字体大小
//SendDlgItemMessage(hwnd,IDC_TAB1,WM_SETFONT,(WPARAM)hFontURLNotVisit,0); //设置TAB字体
return TRUE;
}
void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
switch(id)
{
case IDC_TOTRAY:
{
ToTray(hwnd); //最小化到系统托盘
}
break;
case ID_HELP:
{
ShellExecute(NULL,"open","ReadMe.txt",NULL,NULL,SW_SHOWNORMAL); //打开ReadMe文本。
}
break;
default:
break;
}
}
void Main_OnClose(HWND hwnd)
{
SkinH_Detach(); //释放窗口皮肤
EndDialog(hwnd, 0);
}
void Main_OnPaint(HWND hwnd) //设置起始点及图片大小
{
GetClientRect(hwnd,&RectForm);
MoveWindow(GetDlgItem(hwnd,IDC_STATIC_AD),RectForm.left 20,RectForm.top 20,523,80,TRUE); //X,Y分别为30和20的顶点坐标,长为430,宽为90,自我理解
}
void Main_OnLButtonDown(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT keyFlags)
{
GetClientRect(hwnd,&RectForm);
if(x>=RectForm.left 20 && x<=RectForm.left 543 && y>=RectForm.top 20 && y<=RectForm.top 100)//左距30开始,长度为430,加上左边距30,到460结束,高度为90,加上顶点高度20为110结束,鼠标左击事件
{
TCHAR szWebSite[100]="http://returnc.com/archives/300.html";
// GetDlgItemText(hwnd,IDC_STATIC_AD,szWebSite,sizeof(szWebSite)); //文字链接
ShellExecute(hwnd,TEXT("open"),szWebSite,TEXT(""),NULL,SW_SHOWMAXIMIZED);
}
}
////////////////////////////////////////////////////////////////////////////////
void Main_OnMouseMove(HWND hwnd, int x, int y, UINT keyFlags) //鼠标移动范围图标设置
{
GetClientRect(hwnd,&RectForm);
if(x>=RectForm.left 20 && x<=RectForm.left 543 && y>=RectForm.top 20 && y<=RectForm.top 100)//左距30开始,长度为430,加上左边距30,到460结束,高度为90,加上顶点高度20为110结束,设置鼠标图标
{
SetCursor(LoadCursor(NULL, IDC_HAND)); //鼠标图标设置成小手形状
}
}
int ToTray(HWND hwnd) //最小化到托盘
{
ZeroMemory(&nid, sizeof(NOTIFYICONDATA));
nid.cbSize = (DWORD)sizeof(NOTIFYICONDATA);
nid.hWnd = hwnd;
//nid.uID = IDI_ICONAPP;
nid.uID = IDI_ICON1;
nid.uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP;
nid.uCallbackMessage = WM_CLICKBIT; //自定义的消息名称
nid.hIcon = LoadIcon((HINSTANCE) GetWindowLong(hwnd, GWL_HINSTANCE), MAKEINTRESOURCE(IDI_ICON1));//读取图标
lstrcpy(nid.szTip, TEXT("QQ邮件群发助手")); //信息提示条
Shell_NotifyIcon(NIM_ADD, &nid); //在托盘区添加图标
ShowWindow(hwnd, SW_HIDE); //隐藏窗口
return 0;
}
void Main_OnSysCommand(HWND hwnd, UINT cmd, int x, int y)
{
if(SC_MINIMIZE == cmd)
{
ToTray(hwnd);
return;
}
else
{
return;
}
}
好例子网口号:伸出你的我的手 — 分享!
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明


网友评论
我要评论