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

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

?? 04165-3.txt

?? Visual C++編程的若干技巧
?? TXT
?? 第 1 頁 / 共 2 頁
字號:
}
6. 使應用程序顯示為任務條通知區中的圖標
在Windows 95任務條的右邊有一個區域被稱為通知區域,在其中可以顯示一些應用程序的圖標,用鼠標單擊其中的圖標一般能彈出應用程序的菜單,雙擊則能顯示應用程序的完整窗口界面。時鐘和音量控制是任務條通知區最常見的圖標。
任務條通知區編程可以通過Windows 95外殼編程接口函數Shell_NotifyIcon來實現,該函數在shellapi.h頭文件中聲明,其原型如下:
WINSHELLAPI BOOL WINAPI Shell_NotifyIcon( DWORD dwMessage, 
PNOTIFYICONDATA pnid);
dwMessage是對通知區圖標進行操作的消息,主要有三中,如下表所示。
Shell_NotifyIcon使用的消息
消息
說明
NIM_ADD
在任務條通知區插入一個圖標
NIM_ DELETE
在任務條通知區刪除一個圖標
NIM_ MODIFY
對任務條通知區的圖標進行修改

pnid傳入一個NOTIFYICONDATA結構的指針。NOTIFYICONDATA結構聲明及各域的意義表示如下:
typedef struct _NOTIFYICONDATA { // nid 
    DWORD cbSize; 	// NOTIFYICONDATA結構的字節數
    HWND hWnd; 		// 處理通知區圖標消息的窗口句柄
    UINT uID; 			// 通知區圖標的ID
    UINT uFlags; 		// 表示下述三項是否有意義的標志
    UINT uCallbackMessage; // 鼠標點擊圖標所發出消息的ID
    HICON hIcon; 		// 圖標句柄
    char szTip[64]; 		// 當鼠標移到圖標上時顯示的提示信息
} NOTIFYICONDATA, *PNOTIFYICONDATA;
當用Shell_NotifyIcon在任務條通知區中放置一個圖標時,同時也定義了一條回調消息,當用戶用鼠標單擊或雙擊圖標時,NOTIFYICONDATA結構中指定的窗口句柄將接受到該消息。該消息的lParam參數將說明鼠標操作的方式。當應用程序退出時,應刪除任務條中的圖標。
下面的示例將說明如何使前述的橢圓窗口程序作為圖標顯示在任務條通知區中,當鼠標單擊圖標時,將彈出一個菜單,當雙擊時,橢圓窗口將完整顯示。
1. 用資源編輯器在EllipseWnd項目的IDR_MENU_CONTEXT菜單中增加一個菜單項“在任務條中插入圖標”(ID為IDM_INSERTICON)。
2. 用資源編輯器在EllipseWnd項目中增加一個菜單資源IDR_MENU_ICON	,在其中設定三個菜單項:
“激活橢圓窗口”(ID為IDM_ACTIVEWINDOW)
“關于...”(ID為IDM_ABOUTBOX)
“退出	Alt+F4”(ID為IDM_EXIT)
3. 在CEllipseWndDlg.h源文件中定義一個消息UM_ICONNOTIFY用以響應圖標操作,并在CEllipseWndDlg類定義中增加響應該消息的處理函數OnIconNotify。用ClassWizard增加響應菜單命令IDM_INSERTICON和IDM_ACTIVEWINDOW的函數定義和模板。CEllipseWndDlg.h中的修改如下:

// 定義響應圖標操作的消息
#define UM_ICONNOTIFY	WM_USER+100

class CEllipseWndDlg : public CDialog
{
// Construction
public:
	CEllipseWndDlg(CWnd* pParent = NULL);	// standard constructor

// Dialog Data
	//{{AFX_DATA(CEllipseWndDlg)
	enum { IDD = IDD_ELLIPSEWND_DIALOG };
		// NOTE: the ClassWizard will add data members here
	//}}AFX_DATA

	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CEllipseWndDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
		HICON m_hIcon;
	CRgn  m_rgnWnd;

			// 處理圖標的功能函數說明
		BOOL  AddIcon();
	BOOL  DeleteIcon();

	// Generated message map functions
	//{{AFX_MSG(CEllipseWndDlg)
		virtual BOOL OnInitDialog();
	afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
		afx_msg void OnPaint();
	afx_msg HCURSOR OnQueryDragIcon();
		afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
	afx_msg void OnContextMenu(CWnd* pWnd, CPoint point);
		afx_msg void OnAboutbox();
	afx_msg void OnExit();
	afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
	afx_msg void OnDestroy();
		afx_msg void OnInserticon();
	afx_msg void OnActivewindow();
	//}}AFX_MSG
		// 圖標消息的處理函數說明
		afx_msg void OnIconNotify(WPARAM wParam, LPARAM lParam);
	DECLARE_MESSAGE_MAP()
};
4. 在CEllipseWndDlg.cpp中增加消息影射條目如下:
BEGIN_MESSAGE_MAP(CEllipseWndDlg, CDialog)
	//{{AFX_MSG_MAP(CEllipseWndDlg)
	ON_WM_SYSCOMMAND()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_WM_LBUTTONDOWN()
	ON_WM_CONTEXTMENU()
	ON_COMMAND(IDM_ABOUTBOX, OnAboutbox)
	ON_COMMAND(IDM_EXIT, OnExit)
	ON_WM_CREATE()
	ON_WM_DESTROY()
	ON_COMMAND(IDM_INSERTICON, OnInserticon)
	ON_COMMAND(IDM_ACTIVEWINDOW, OnActivewindow)
	//}}AFX_MSG_MAP
	ON_MESSAGE(UM_ICONNOTIFY, OnIconNotify)
END_MESSAGE_MAP()
5. 在CEllipseWndDlg.cpp中增加如下的函數或代碼:
void CEllipseWndDlg::OnDestroy() 
{
	CDialog::OnDestroy();
	
	// remove main window tag
	::RemoveProp(m_hWnd, AfxGetApp()->m_pszExeName);	

	// 應用程序退出時,刪除任務條中圖標
	DeleteIcon();
}

BOOL CEllipseWndDlg::AddIcon()
{
	// 在任務條中增加圖標
	NOTIFYICONDATA nid;
	nid.cbSize = sizeof(nid);
	nid.hWnd = m_hWnd;        
	nid.uID = IDR_MAINFRAME;   
	nid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
	nid.uCallbackMessage = UM_ICONNOTIFY;
	nid.hIcon = m_hIcon;
	CString str = "橢圓窗口";
	lstrcpyn(nid.szTip, (LPCSTR)str, 
   sizeof(nid.szTip) / sizeof(nid.szTip[0]));
	
	return Shell_NotifyIcon(NIM_ADD, &nid);
}

BOOL CEllipseWndDlg::DeleteIcon()
{
	// 刪除任務條中的圖標
	NOTIFYICONDATA nid;
	nid.cbSize = sizeof(nid);
	nid.hWnd = m_hWnd;
	nid.uID = IDR_MAINFRAME;
	
	return Shell_NotifyIcon(NIM_DELETE, &nid);
}

    // 響應圖標消息處理函數
void CEllipseWndDlg::OnIconNotify(WPARAM wParam, 
  LPARAM lParam)
{
	switch ((UINT)lParam)
	{
		// 鼠標單擊操作
		case WM_LBUTTONDOWN:
		case WM_RBUTTONDOWN:
			{
				// 裝入圖標操作菜單
				CMenu menu;
				menu.LoadMenu(IDR_MENU_ICON);

					// 鼠標單擊位置
				CPoint point;
				GetCursorPos(&point);

				// 將背景窗口激活
				SetForegroundWindow();

					// 顯示圖標菜單
				menu.GetSubMenu(0)->TrackPopupMenu(
TPM_LEFTBUTTON|TPM_RIGHTBUTTON, 
						point.x, point.y, this, NULL);	

					// 增加一個額外消息,使菜單操作正確
				PostMessage(WM_USER, 0, 0);
				break;
			}
		// 鼠標雙擊操作
		case WM_LBUTTONDBLCLK:
			// 激活應用程序
			OnActivewindow();
			break;
	}
}

	  // 插入圖標到任務條通知區
void CEllipseWndDlg::OnInserticon() 
{
  // 先隱藏主窗
	ShowWindow(SW_HIDE);
	// 插入圖標
	AddIcon();
}

	  //  激活主窗
void CEllipseWndDlg::OnActivewindow() 
{
  // 先刪除圖標
	DeleteIcon();
	// 顯示主窗
	ShowWindow(SW_SHOW);
	UpdateWindow();
}
7. 顯示旋轉文本
在有的應用中,為了達到特殊的效果,經常需要顯示旋轉的文本。文本的顯示方式,包括旋轉,都是由字體來設置的。
字體的屬性主要由創建字體時使用的LOGFONT結構規定,該結構中的lfEscapement域指定了文本行與X軸(水平軸)的角度,其角度單位是十分之一度。為了是所有的字體向相同的方向旋轉,還應同時將LOGFONT結構的lfClipPrecision域設為 CLIP_LH_ANGLES。
下面的代碼將在對話框中顯示在同一起點每隔15度顯示一行文本:
void CRotateTextDlg::OnPaint() 
{
	CPaintDC dc(this); // device context for painting

	if (IsIconic())
	{
		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

		// Center icon in client rectangle
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// Draw the icon
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CRect rc;
		GetClientRect(rc);

		CString str(_T("............旋轉文本!"));

		dc.SetBkMode(TRANSPARENT);
		dc.SetTextColor(RGB(0,0,255));

		CFont font;
		LOGFONT lf;
		memset(&lf,0,sizeof(LOGFONT));

		lf.lfHeight = -14;
		lf.lfWeight = FW_NORMAL;
		lf.lfClipPrecision = CLIP_LH_ANGLES;
		strcpy(lf.lfFaceName, "宋體");

		for (int i=0;i<3600;i+=150)
		{
			lf.lfEscapement = i;

			font.CreateFontIndirect(&lf);
			CFont *pOldFont = dc.SelectObject(&font);

			dc.TextOut(rc.right/2, rc.bottom/2,str);

			dc.SelectObject(pOldFont);
			font.DeleteObject();
		}

		CDialog::OnPaint();
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美亚洲免费在线一区| 欧美私模裸体表演在线观看| 视频一区视频二区中文| 亚洲黄网站在线观看| 亚洲女同一区二区| 一区二区欧美国产| 三级不卡在线观看| 免费高清不卡av| 国产自产2019最新不卡| 国产精品99久久久久久有的能看| 久久久久久久久久久久电影| 欧美日韩一区成人| 欧美日韩二区三区| 日韩一区二区三区四区| 精品99999| 亚洲婷婷综合色高清在线| 亚洲欧美欧美一区二区三区| 亚洲电影在线播放| 狠狠色综合日日| av高清不卡在线| 欧美美女bb生活片| 精品久久久久久久人人人人传媒 | 亚洲婷婷在线视频| 亚洲一级二级三级在线免费观看| 亚洲电影视频在线| 国产一区欧美一区| 欧洲一区二区三区免费视频| 欧美成人r级一区二区三区| 国产欧美日韩激情| 午夜激情一区二区| 粉嫩一区二区三区在线看| 一本大道久久a久久精二百| 欧美性视频一区二区三区| 欧美成人一区二区三区在线观看| 国产精品少妇自拍| 日本vs亚洲vs韩国一区三区二区| 国产不卡在线视频| 在线不卡免费欧美| 国产精品美女久久久久久久网站| 五月天一区二区| 粉嫩欧美一区二区三区高清影视| 欧美群妇大交群中文字幕| 久久精品一区二区三区不卡牛牛| 亚洲一区在线视频| av亚洲精华国产精华精华| 制服丝袜亚洲色图| 一区二区三区四区中文字幕| 国产高清精品久久久久| 欧美日韩国产高清一区二区三区| 欧美国产综合一区二区| 青青青爽久久午夜综合久久午夜| 99精品视频在线观看免费| 日韩午夜精品电影| 亚洲一区二区视频在线| 成人黄色综合网站| 26uuu另类欧美| 日韩电影在线观看网站| 欧美视频在线播放| 一级中文字幕一区二区| 9久草视频在线视频精品| 精品久久久久久久久久久久久久久 | 精品一区二区三区的国产在线播放| www.亚洲精品| 国产精品视频在线看| 久久99精品久久久久久久久久久久 | 欧美一区二区三区日韩| 亚洲国产综合人成综合网站| 日本丶国产丶欧美色综合| 国产精品免费av| 风间由美一区二区av101| www日韩大片| 国产在线视频一区二区三区| 日韩一区二区三区四区五区六区| 日本怡春院一区二区| 日韩一区二区视频在线观看| 亚洲成av人片在线| 欧美日韩亚洲不卡| 欧美aaaaaa午夜精品| 日韩三级伦理片妻子的秘密按摩| 视频一区在线视频| 日韩欧美视频一区| 国产精品中文字幕日韩精品| 国产色综合一区| 成人高清伦理免费影院在线观看| 成人免费一区二区三区在线观看| aaa亚洲精品| 亚洲成人一区在线| 欧美tk—视频vk| 成人黄色小视频| 亚洲精品免费电影| 欧美一级视频精品观看| 国产一区二区女| 日韩理论电影院| 在线不卡一区二区| 国产精品一区二区在线观看网站| 综合中文字幕亚洲| 久久久久88色偷偷免费| 成人一区二区在线观看| 亚洲欧美aⅴ...| 欧美成人性福生活免费看| 国产一区不卡视频| 亚洲欧美日韩一区| 欧美大度的电影原声| 国产99久久久国产精品潘金网站| 亚洲精品日日夜夜| 日韩欧美综合一区| 本田岬高潮一区二区三区| 亚洲国产日韩a在线播放性色| 日韩亚洲欧美在线观看| eeuss鲁片一区二区三区在线观看| 亚洲精品久久嫩草网站秘色| 91麻豆精品国产无毒不卡在线观看| 国产又粗又猛又爽又黄91精品| 亚洲少妇30p| 久久精品一区二区| 精品视频在线看| 国产69精品一区二区亚洲孕妇| 亚洲国产aⅴ天堂久久| 国产日韩欧美精品电影三级在线| 欧美日韩精品一二三区| gogogo免费视频观看亚洲一| 青青草97国产精品免费观看| ...av二区三区久久精品| www久久精品| 7777精品伊人久久久大香线蕉超级流畅| 国产麻豆视频一区二区| 日韩激情视频在线观看| 国产精品不卡一区二区三区| 337p日本欧洲亚洲大胆精品| 91麻豆免费看| 成人妖精视频yjsp地址| 极品美女销魂一区二区三区 | 欧美在线一区二区| 成人app网站| 国产九九视频一区二区三区| 日韩激情视频在线观看| 午夜视频在线观看一区二区三区| 久久久国产精华| 91精品国产综合久久福利软件| 日本韩国欧美国产| 99精品欧美一区二区三区小说 | 国产精品美女久久久久av爽李琼| 精品国产一区久久| 欧美精品第1页| 欧美影片第一页| 97精品国产97久久久久久久久久久久| 国产精选一区二区三区 | 在线91免费看| 91精品国产综合久久久久久久| 欧美在线一区二区| 91网上在线视频| 99视频在线精品| 成人免费视频视频在线观看免费| 精品一区在线看| 久久99精品久久久久婷婷| 免费视频最近日韩| 蜜臀va亚洲va欧美va天堂| 日本欧美肥老太交大片| 日韩综合一区二区| 亚洲1区2区3区4区| 日韩福利视频导航| 麻豆传媒一区二区三区| 日韩精品成人一区二区在线| 青青国产91久久久久久| 久久99国产精品久久99果冻传媒| 国产在线播放一区二区三区| 国内精品伊人久久久久av影院 | 国产精品久久久久久妇女6080| 亚洲欧洲精品一区二区三区| 亚洲人xxxx| 香蕉久久夜色精品国产使用方法 | 一本色道久久综合亚洲aⅴ蜜桃| 99久久精品国产毛片| 欧美无人高清视频在线观看| 欧美一级生活片| 中文成人av在线| 亚洲一区二区偷拍精品| 天天做天天摸天天爽国产一区| 精品亚洲aⅴ乱码一区二区三区| 国产成人在线网站| 色综合婷婷久久| 日韩精品一区二区三区视频 | 亚洲黄色在线视频| 蜜桃av一区二区在线观看| 国产成人精品免费看| 日本韩国欧美三级| 精品电影一区二区三区| **性色生活片久久毛片| 免费日本视频一区| 色哟哟亚洲精品| 精品成人私密视频| 亚洲精品中文在线影院| 精品无人区卡一卡二卡三乱码免费卡| 99精品视频免费在线观看| 日韩欧美国产一区在线观看| 自拍偷拍国产亚洲| 国产一区二区中文字幕| 欧美精品1区2区| 国产精品成人免费| 国产剧情一区在线|