亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? trayicon.cpp

?? 基于VC++6的GSM模塊收發短消息的程序
?? CPP
字號:
////////////////////////////////////////////////////////////////
// If this code works, it was written by Paul DiLascia.
// If not, I don't know who wrote it.
// Compiles with Visual C++ 6.0 on Windows 9x/NT/XP
//
#include "stdafx.h"
#include "trayicon.h"
#include <afxpriv.h>		// for AfxLoadString

#define countof(x)	(sizeof(x)/sizeof(x[0]))

//////////////////
// Windows sends this message when the taskbar is created. This can happen
// if it crashes and Windows has to restart it. CTrayIcon responds by
// re-installing its icon.
//
const UINT WM_TASKBARCREATED = ::RegisterWindowMessage(_T("TaskbarCreated"));

IMPLEMENT_DYNAMIC(CTrayIcon, CCmdTarget)

CTrayIcon::CTrayIcon(UINT uID)
{
	// Initialize NOTIFYICONDATA
	memset(&m_nid, 0 , sizeof(m_nid));
	m_nid.cbSize = sizeof(m_nid);
	m_nid.uID = uID;	// never changes after construction

	m_notifyHook.m_pTrayIcon = this; // notification window hook
	m_parentHook.m_pTrayIcon = this;	// parent window hook

	// Use resource string as tip if there is one
	AfxLoadString(uID, m_nid.szTip, sizeof(m_nid.szTip));
}

CTrayIcon::~CTrayIcon()
{
	SetIcon(0); // remove icon from system tray
}

//////////////////
// Set notification window. It must created already.
//
void CTrayIcon::SetNotificationWnd(CWnd* pNotifyWnd, UINT uCbMsg)
{
	// If the following assert fails, you're probably
	// calling me before you created your window. Oops.
	ASSERT(pNotifyWnd==NULL || ::IsWindow(pNotifyWnd->GetSafeHwnd()));
	m_nid.hWnd = pNotifyWnd->GetSafeHwnd();

	ASSERT(uCbMsg==0 || uCbMsg>=WM_USER);
	m_nid.uCallbackMessage = uCbMsg;

	CWnd* pParentWnd = pNotifyWnd ? pNotifyWnd->GetTopLevelParent() : NULL;

	// Install window hooks. Must be different because
	// taskbar creation message only goes to top-level parent.
	m_notifyHook.HookWindow(pNotifyWnd);
	if (pParentWnd!=pNotifyWnd)
		m_parentHook.HookWindow(pParentWnd);
}

//////////////////
// This is the main variant for setting the icon.
// Sets both the icon and tooltip from resource ID
// To remove the icon, call SetIcon(0)
//
BOOL CTrayIcon::SetIcon(UINT uID)
{ 
	HICON hicon=NULL;
	if (uID) {
		AfxLoadString(uID, m_nid.szTip, sizeof(m_nid.szTip));
		hicon = AfxGetApp()->LoadIcon(uID);
	}
	return SetIcon(hicon, NULL);
}

//////////////////
// Common SetIcon for all overloads. 
//
BOOL CTrayIcon::SetIcon(HICON hicon, LPCTSTR lpTip) 
{
	UINT msg;
	m_nid.uFlags = 0;

	// Set the icon
	if (hicon) {
		// Add or replace icon in system tray
		msg = m_nid.hIcon ? NIM_MODIFY : NIM_ADD;
		m_nid.hIcon = hicon;
		m_nid.uFlags |= NIF_ICON;
	} else { // remove icon from tray
		if (m_nid.hIcon==NULL)
			return TRUE;		// already deleted
		msg = NIM_DELETE;
	}

	// Use the tip, if any
	if (lpTip)
		_tcsncpy(m_nid.szTip, lpTip, countof(m_nid.szTip));
	if (m_nid.szTip[0])
		m_nid.uFlags |= NIF_TIP;

	// Use callback if any
	if (m_nid.uCallbackMessage && m_nid.hWnd)
		m_nid.uFlags |= NIF_MESSAGE;

	// Do it
	BOOL bRet = Shell_NotifyIcon(msg, &m_nid);
	if (msg==NIM_DELETE || !bRet)
		m_nid.hIcon = NULL;	// failed
	return bRet;
}

//////////////////
// Same hook class used for both notifcation window and toplevel
// parent; hook function determines which.
//
LRESULT CTrayIcon::CTrayHook::WindowProc(UINT msg, WPARAM wp, LPARAM lp)
{
	if (msg==m_pTrayIcon->m_nid.uCallbackMessage &&
		 m_hWnd==m_pTrayIcon->m_nid.hWnd) {

		m_pTrayIcon->OnTrayNotify(wp, lp);

	} else if (msg==WM_TASKBARCREATED) {
		m_pTrayIcon->OnTaskBarCreate(wp, lp);
	}
	return CSubclassWnd::WindowProc(msg, wp, lp);
}

/////////////////
// Default event handler handles right-menu and doubleclick.
// Override to do something different.
//
LRESULT CTrayIcon::OnTrayNotify(WPARAM wID, LPARAM lEvent)
{
	if (wID!=m_nid.uID ||
		(lEvent!=WM_RBUTTONUP && lEvent!=WM_LBUTTONDBLCLK))
		return 0;

	// If there's a resource menu with the same ID as the icon, use it as 
	// the right-button popup menu. CTrayIcon will interprets the first
	// item in the menu as the default command for WM_LBUTTONDBLCLK
	// 
	CMenu menu;
	if (!menu.LoadMenu(m_nid.uID))
		return 0;
	CMenu* pSubMenu = menu.GetSubMenu(0);
	if (!pSubMenu) 
		return 0;

	if (lEvent==WM_RBUTTONUP) {

		// Make first menu item the default (bold font)
		::SetMenuDefaultItem(pSubMenu->m_hMenu, 0, TRUE);

		// Display the menu at the current mouse location. There's a "bug"
		// (Microsoft calls it a feature) in Windows 95 that requires calling
		// SetForegroundWindow. To find out more, search for Q135788 in MSDN.
		//
		CPoint mouse;
		GetCursorPos(&mouse);
		::SetForegroundWindow(m_nid.hWnd);	
		::TrackPopupMenu(pSubMenu->m_hMenu, 0, mouse.x, mouse.y, 0,
			m_nid.hWnd, NULL);

	} else  // double click: execute first menu item
		::SendMessage(m_nid.hWnd, WM_COMMAND, pSubMenu->GetMenuItemID(0), 0);

	return 1; // handled
}

//////////////////
// Explorer had to restart the taskbar: add icons again
//
LRESULT CTrayIcon::OnTaskBarCreate(WPARAM wp, LPARAM lp)
{
	// Reinstall taskbar icon
	HICON hIcon = m_nid.hIcon;
	m_nid.hIcon = NULL;
	if (hIcon)
		SetIcon(hIcon, NULL); // will reuse current tip
	return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本亚洲欧美天堂免费| 青青青伊人色综合久久| 国产亚洲成aⅴ人片在线观看| 欧美精品第1页| 欧美日韩国产高清一区二区 | 99re这里只有精品6| 国产成人精品网址| 国产成a人亚洲| www.一区二区| 91色九色蝌蚪| 色欧美乱欧美15图片| 色婷婷香蕉在线一区二区| 91色|porny| 欧美少妇一区二区| 制服视频三区第一页精品| 日韩一区二区视频在线观看| 欧美一级黄色录像| 亚洲精品一区二区三区四区高清| 久久久久88色偷偷免费| 国产精品女主播在线观看| 亚洲免费三区一区二区| 亚洲国产日韩a在线播放性色| 天天综合日日夜夜精品| 久久国产精品区| 国产91在线|亚洲| 色八戒一区二区三区| 欧美日本一区二区三区| 精品国产污污免费网站入口 | 国产成人av电影在线播放| 亚洲国产精品一区二区久久恐怖片 | 精品国产乱码久久久久久闺蜜| 欧洲国内综合视频| 在线电影院国产精品| 717成人午夜免费福利电影| 欧美天堂亚洲电影院在线播放 | 日韩电影在线一区二区| 欧美色网一区二区| 91精品国产综合久久婷婷香蕉| 欧美tickling网站挠脚心| 国产偷国产偷精品高清尤物| 国产精品第四页| 五月天欧美精品| 国产麻豆91精品| 欧美性一二三区| 精品精品欲导航| 亚洲猫色日本管| 老司机免费视频一区二区三区| 豆国产96在线|亚洲| 欧美日精品一区视频| 久久蜜桃av一区二区天堂| 一区二区三区四区高清精品免费观看| 蜜芽一区二区三区| 91丨porny丨户外露出| 日韩欧美一区二区在线视频| 中文字幕欧美国产| 美日韩一区二区三区| av不卡在线播放| 精品成人一区二区三区四区| 亚洲免费观看视频| 国产精品亚洲视频| 欧美一区二区在线看| 国产精品丝袜一区| 久久99精品视频| 欧美三级三级三级爽爽爽| 国产精品天干天干在观线| 奇米色一区二区| 欧美亚洲综合色| 中文字幕不卡在线| 精品系列免费在线观看| 欧美日韩精品一二三区| 中文字幕视频一区二区三区久| 美女视频网站黄色亚洲| 欧美系列日韩一区| 自拍偷拍欧美激情| 国产aⅴ综合色| 欧美精品一区二区三区久久久| 亚洲chinese男男1069| 91在线观看免费视频| 国产亚洲精品7777| 精品一区二区三区影院在线午夜 | 欧美二区在线观看| 亚洲精品国产无天堂网2021| 成人综合婷婷国产精品久久免费| 日韩一级高清毛片| 舔着乳尖日韩一区| 欧美日韩专区在线| 精品国产网站在线观看| 美日韩一级片在线观看| 久久精品一区二区三区四区| 色婷婷综合久色| 一区二区三区不卡在线观看 | 久久97超碰色| 欧美精品高清视频| 久久国内精品视频| 国产精品久久久久久亚洲伦 | 97精品视频在线观看自产线路二| 欧美一区二区三区免费观看视频 | 麻豆中文一区二区| 在线成人午夜影院| 日韩中文字幕不卡| 91精品国产综合久久小美女| 青青草91视频| 日韩一区二区在线观看视频| 美女免费视频一区| 精品国产电影一区二区| 韩国精品主播一区二区在线观看| 亚洲精品一区二区精华| 国产一区二区导航在线播放| 久久久久久久久一| 成人一区二区三区视频在线观看 | 亚洲一区在线观看免费观看电影高清| 97精品电影院| 一区二区三区欧美激情| 欧美视频在线播放| 午夜日韩在线电影| 日韩网站在线看片你懂的| 日本视频在线一区| 亚洲精品一区二区三区在线观看| 国产美女一区二区| 国产精品网站一区| 在线国产亚洲欧美| 日韩二区三区在线观看| 久久婷婷色综合| 成人白浆超碰人人人人| 亚洲精品国产第一综合99久久| 欧美午夜理伦三级在线观看| 三级在线观看一区二区| 亚洲精品一区二区三区影院 | 欧美va亚洲va国产综合| 国产在线麻豆精品观看| 中文字幕在线一区免费| 欧美熟乱第一页| 国产自产视频一区二区三区| 中文字幕在线不卡一区| 欧美色图一区二区三区| 国产在线视频一区二区三区| 亚洲欧洲精品一区二区三区| 欧美日韩一级片在线观看| 精品影院一区二区久久久| 国产精品欧美经典| 91精品欧美综合在线观看最新| 久久国产精品第一页| 自拍偷拍国产亚洲| 欧美一区二区精品久久911| 丁香天五香天堂综合| 亚洲午夜久久久| 午夜精品爽啪视频| 一区二区三区精品视频在线| 亚洲一区二区三区视频在线| 亚洲专区一二三| 亚洲高清三级视频| 麻豆精品视频在线观看视频| 免费高清在线一区| 久久不见久久见中文字幕免费| 麻豆国产欧美日韩综合精品二区| 日本在线不卡一区| 日本欧美韩国一区三区| 国产真实乱偷精品视频免| 在线看国产日韩| |精品福利一区二区三区| 欧美高清激情brazzers| 成人免费视频播放| 日韩av中文字幕一区二区| 国产精品国产三级国产普通话三级 | 欧美伊人久久久久久午夜久久久久| 日本欧美大码aⅴ在线播放| 亚洲同性gay激情无套| 日韩欧美国产1| 欧美日韩一级二级| 99久久久免费精品国产一区二区| 麻豆一区二区在线| 性欧美疯狂xxxxbbbb| 中文字幕字幕中文在线中不卡视频| 日韩精品一区二区三区四区视频| 色香色香欲天天天影视综合网| 国产精品77777竹菊影视小说| 午夜亚洲福利老司机| 1024成人网| 国产蜜臀97一区二区三区 | 日韩有码一区二区三区| 日韩理论片网站| 国产丝袜在线精品| 精品国产一区二区精华| 这里只有精品99re| 欧美日韩亚洲国产综合| 91浏览器打开| k8久久久一区二区三区| 国产成人小视频| 久久国产夜色精品鲁鲁99| 日韩成人av影视| 亚洲成av人影院在线观看网| 亚洲精品免费电影| 一色屋精品亚洲香蕉网站| 日本一区二区三区高清不卡| 久久精品网站免费观看| www国产精品av| 久久综合999| 欧美精品一区二区三区高清aⅴ | 亚洲动漫第一页| 一区二区三区四区国产精品|