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

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

?? balloonhelp.h

?? 實時監控
?? H
字號:
// ******************************************************************************// BalloonHelp.cpp : header file// Copyright 2001-2002, Joshua Heyer//  You are free to use this code for whatever you want, provided you// give credit where credit is due.  (I seem to get a lot of questions// about that statement...  All i mean is, don't copy huge bits of code// and then claim you wrote it.  You don't have to put my name in an about// box or anything.  Though i'm not going to stop you if that's really what// you want :~) )//  I'm providing this code in the hope that it is useful to someone, as i have// gotten much use out of other peoples code over the years.//  If you see value in it, make some improvements, etc., i would appreciate it // if you sent me some feedback.//// ******************************************************************************// ?/??/02 - Release #3: incomplete////    Minor changes, bug fixes.// I fixed an ugly bug where deallocated memory was accessed when using the// strURL parameter to open a file or location when the balloon was clicked.// I also fixed a minor but very visible bug in the demo.// Added a couple of new options: //    unDELAY_CLOSE works in tandem with a timeout value to delay the action// caused by the other unCLOSE_* options.  This allows you to keep a balloon// active indefinately, until the user gets back from coffee break, etc., and// has time to take a look at it.  For long timeout values, i'd advise also// using unSHOW_CLOSE_BUTTON so the user can get rid of it quickly if need be.//    unDISABLE_XP_SHADOW is exactly what it sounds like: if set, that cool// dropshadow XP uses for tooltips and menus isn't shown.  Note that the user// can also disable dropshadows globally, in which case this option has no effect.// ---// 5/30/02 - Release #2: i begin versioning////    I suppose i should have kept a progress log for this.// But i didn't, so you'll just have to assume it was mostly right to begin with.// And i'll further confuse this by versioning it R2, even though it's the // fourth release (?) (i haven't been keeping track, heheh).// I will, however, thank several people who have shown me better ways to do// things, and thus improved the class greatly.//// Thanks to:// Jan van den Baard for showing me the right way to use AnimateWindow(),
//    and for demonstrating how WM_NCHITTEST can be used to provide hot tracking.
//    Check out his ClassLib library on CP!
// Maximilian H鋘el for his WTL port, and for demonstrating therein a
//    nicer way to handle message hooks.
// Mustafa Demirhan for the original idea and code for using keyboard hooks.
// All the other people who have provided suggestions, feeback, and code on the
// CP forums.  This class would not be half as useful as it is without you all.
//
// ******************************************************************************#ifndef _BALLOON_HELP_H_INCLUDED_#define _BALLOON_HELP_H_INCLUDED_// This was introduced to me by Maximilian H鋘el in his WTL port.  Cool, eh?
////////////////////////////////////////////////////////////////////////////////
// The class _ThunkImpl is a renamed version of Andrew Nosenko CAuxThunk implementation.
// Thanks Andrew, it's a fantastic class!
//
// Copyright (c) 1997-2001 by Andrew Nosenko <andien@nozillium.com>,
// (c) 1997-1998 by Computer Multimedia System, Inc.,
// (c) 1998-2001 by Mead & Co Limited
//
// http://www.nozillium.com/atlaux/
// Version: 1.10.0021
//
#ifndef _M_IX86
	#pragma message("_ThunkImpl/ is implemented for X86 only!")
#endif

#pragma pack(push, 1)

template <class T>
class _ThunkImpl
{
private:

	BYTE	m_mov;			// mov ecx, %pThis
	DWORD	m_this; 		//
	BYTE	m_jmp;			// jmp func
	DWORD	m_relproc;		// relative jmp

protected:
	
	typedef void (T::*TMFP)();
	void InitThunk(TMFP method, const T* pThis)
	{
		union { DWORD func; TMFP method; } addr;
		addr.method = (TMFP)method;
		m_mov  = 0xB9;
		m_this = (DWORD)pThis;
		m_jmp  = 0xE9;
		m_relproc = addr.func - (DWORD)(this+1);

		::FlushInstructionCache(GetCurrentProcess(), this, sizeof(*this));
	}
	FARPROC GetThunk() const 
   {
		_ASSERTE(m_mov == 0xB9);
		return (FARPROC)this; 
   }
};
#pragma pack(pop) // _ThunkImpl


#include "../StdAfx.h"

// we need these three dummy classes so we can 
// derive more than once from _ThunkImpl
template <class T>
class BHMouseHookThunk: public _ThunkImpl<T> {};

template <class T>
class BHKeybHookThunk: public _ThunkImpl<T> {};

template <class T>
class BHCallWndRetHookThunk: public _ThunkImpl<T> {};

class CBalloonHelp : public CWnd,                     public BHKeybHookThunk<CBalloonHelp>,
                     public BHMouseHookThunk<CBalloonHelp>,
                     public BHCallWndRetHookThunk<CBalloonHelp>
{public:	CBalloonHelp();	virtual ~CBalloonHelp();   // options   static const unsigned int unCLOSE_ON_LBUTTON_UP;   // closes window on WM_LBUTTON_UP   static const unsigned int unCLOSE_ON_MBUTTON_UP;   // closes window on WM_MBUTTON_UP   static const unsigned int unCLOSE_ON_RBUTTON_UP;   // closes window on WM_RBUTTON_UP   static const unsigned int unCLOSE_ON_LBUTTON_DOWN; // closes window on WM_LBUTTON_DOWN   static const unsigned int unCLOSE_ON_MBUTTON_DOWN; // closes window on WM_MBUTTON_DOWN   static const unsigned int unCLOSE_ON_RBUTTON_DOWN; // closes window on WM_RBUTTON_DOWN   static const unsigned int unCLOSE_ON_MOUSE_MOVE;   // closes window when user moves mouse past threshhold   static const unsigned int unCLOSE_ON_KEYPRESS;     // closes window on the next keypress message sent to this thread.   static const unsigned int unCLOSE_ON_ANYTHING;     // all of the above   static const unsigned int unDELAY_CLOSE;           // when a user action triggers the close, begins timer.  closes when timer expires.   static const unsigned int unDELETE_THIS_ON_CLOSE;  // deletes object when window is closed.  Used by LaunchBalloon(), use with care   static const unsigned int unSHOW_CLOSE_BUTTON;     // shows close button in upper right   static const unsigned int unSHOW_INNER_SHADOW;     // draw inner shadow in balloon   static const unsigned int unSHOW_TOPMOST;          // place balloon above all other windows   static const unsigned int unDISABLE_XP_SHADOW;     // disable Windows XP's drop-shadow effect (overrides system and user settings)   static const unsigned int unDISABLE_FADEIN;        // disable the fade-in effect (overrides system and user settings)   static const unsigned int unDISABLE_FADEOUT;       // disable the fade-out effect (overrides system and user settings)   static const unsigned int unDISABLE_FADE;          // disable the fade-in/fade-out effects (overrides system and user settings)   BOOL Create(const CString& strTitle,         // title of balloon
               const CString& strContent,       // content of balloon
               const CPoint& ptAnchor,          // anchor (tail position) of balloon
               unsigned int unOptions,          // options (see above)
               CWnd* pParentWnd = NULL,         // parent window (NULL == MFC main window)
               const CString strURL = "",       // URL to open (ShellExecute()) when clicked
               unsigned int unTimeout = 0,      // delay before closing automatically (milliseconds)
               HICON hIcon = NULL);             // icon to display

   // Show a help balloon on screen.   static CBalloonHelp* LaunchBalloon(const CString& strTitle, const CString& strContent, 
               const CPoint& ptAnchor, 
               LPCTSTR szIcon = IDI_EXCLAMATION,
               unsigned int unOptions = unSHOW_CLOSE_BUTTON,
               CWnd* pParentWnd = NULL, 
               const CString strURL = "",
               unsigned int unTimeout = 10000);

   // Sets the font used for drawing the balloon title.  Deleted by balloon, do not use CFont* after passing to this function.
   void SetTitleFont(CFont* pFont);
   // Sets the font used for drawing the balloon content.  Deleted by balloon, do not use CFont* after passing to this function.
   void SetContentFont(CFont* pFont);
   // Sets the icon displayed in the top left of the balloon (pass NULL to hide icon)
   void SetIcon(HICON hIcon);
   // Sets the icon displayed in the top left of the balloon (pass NULL to hide icon)
   void SetIconScaled(HICON hIcon, int cx, int cy);
   // Sets the icon displayed in the top left of the balloon (pass NULL hBitmap to hide icon)
   void SetIcon(HBITMAP hBitmap, COLORREF crMask);
   // Sets the icon displayed in the top left of the balloon
   void SetIcon(HBITMAP hBitmap, HBITMAP hMask);
   // Set icon displayed in the top left of the balloon to image # nIconIndex from pImageList
   void SetIcon(CImageList* pImageList, int nIconIndex);
   // Sets the URL to be opened when balloon is clicked.  Pass "" to disable.
   void SetURL(const CString& strURL);
   // Sets the number of milliseconds the balloon can remain open.  Set to 0 to disable timeout.
   void SetTimeout(unsigned int unTimeout);
   // Sets the distance the mouse must move before the balloon closes when the unCLOSE_ON_MOUSE_MOVE option is set.
   void SetMouseMoveTolerance(int nTolerance);
   // Sets the point to which the balloon is "anchored"
   void SetAnchorPoint(CPoint ptAnchor, CWnd* pWndAnchor = NULL);
   // Sets the title of the balloon
   void SetTitle(const CString& strTitle);
   // Sets the content of the balloon (plain text only)
   void SetContent(const CString& strContent);
   // Sets the forground (text and border) color of the balloon
   void SetForegroundColor(COLORREF crForeground);
   // Sets the background color of the balloon
   void SetBackgroundColor(COLORREF crBackground);

protected:   // layout constants   static const int nTIP_TAIL;   static const int nTIP_MARGIN;   // calculate anchor position (adjust for client coordinates if used)   CPoint GetAnchorPoint();   // determine bounds of screen anchor is on (Multi-Monitor compatibility)   void GetAnchorScreenBounds(CRect& rect);   // determine section of the screen balloon is on   enum BALLOON_QUADRANT { BQ_TOPRIGHT, BQ_TOPLEFT, BQ_BOTTOMRIGHT, BQ_BOTTOMLEFT };   BALLOON_QUADRANT GetBalloonQuadrant();   // Draw the non-client area
   virtual void DrawNonClientArea(CDC* pDC);
   // Draw the client area
   virtual void DrawClientArea(CDC* pDC);
   // Calculate the dimensions and draw the balloon header
   virtual CSize DrawHeader(CDC* pDC, bool bDraw = TRUE);
   // Calculate the dimensions and draw the balloon contents
   virtual CSize DrawContent(CDC* pDC, int nTop, bool bDraw = TRUE);
   // Calculate the dimensions required to draw the balloon header
   CSize CalcHeaderSize(CDC* pDC) { return DrawHeader(pDC, FALSE); }
   // Calculate the dimensions required to draw the balloon content
   CSize CalcContentSize(CDC* pDC) { return DrawContent(pDC, 0, FALSE); }
   // Calculate the total size needed by the balloon window
	CSize CalcWindowSize();   // Calculate the total size needed by the client area of the balloon window	CSize CalcClientSize();   // Size and position the balloon window on the screen.	void PositionWindow();   // Displays the balloon on the screen, performing fade-in if enabled.
   void ShowBalloon(void);
   // Removes the balloon from the screen, performing the fade-out if enabled
   void HideBalloon(void);   // Returns the class ATOM for a BalloonHelp control.  Registers the class first, if necessary.   static ATOM GetClassAtom(BOOL bShadowed);   // message handlers   afx_msg void OnShowWindow(BOOL bShow, UINT nStatus);
   afx_msg LRESULT OnPrint(WPARAM wParam, LPARAM lParam);
   afx_msg LRESULT OnPrintClient(WPARAM wParam, LPARAM lParam);
	afx_msg BOOL OnEraseBkgnd(CDC* pDC);	afx_msg void OnPaint();	afx_msg void OnNcPaint();	afx_msg void OnLButtonDown(UINT, CPoint point);	afx_msg void OnLButtonUp(UINT, CPoint point);	afx_msg void OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS FAR* lpncsp);	afx_msg void OnTimer(UINT nIDEvent);   afx_msg void OnMouseMove(UINT, CPoint point);   afx_msg UINT OnNcHitTest(CPoint point);   afx_msg void OnClose();
   afx_msg void OnDestroy();
   virtual void PostNcDestroy();
	DECLARE_MESSAGE_MAP()private:   // Keyboard hook
   void SetKeyboardHook();
   void RemoveKeyboardHook();
   // Mouse hook
   void SetMouseHook();
   void RemoveMouseHook();
   // Call Window Return hook
   void SetCallWndRetHook();
   void RemoveCallWndRetHook();

   // Keyboard hook callback   LRESULT KeyboardHookProc( int code, WPARAM wParam, LPARAM lParam);   // Mouse hook callback	LRESULT MouseHookProc(int code, WPARAM wParam, LPARAM lParam);
   // Call Window Return hook callback (automatic following)	LRESULT CallWndRetProc(int code, WPARAM wParam, LPARAM lParam);

   // animate window API, if available   typedef BOOL (WINAPI* FN_ANIMATE_WINDOW)(HWND,DWORD,DWORD);   FN_ANIMATE_WINDOW m_fnAnimateWindow;   // hook handles, if set   HHOOK          m_hKeyboardHook;   HHOOK          m_hMouseHook;   HHOOK          m_hCallWndRetHook;   unsigned int   m_unOptions;   unsigned int   m_unTimeout;      // max time to show, in milliseconds   unsigned int   m_unTimerClose;   // ID of kill timer   CString        m_strContent;     // text to show in content area   CString        m_strURL;         // url to open, if clicked.   HWND           m_hwndAnchor;     // window to anchor to (can be NULL for desktop anchor)   CPoint         m_ptAnchor;       // "anchor" (point of tail)   CImageList     m_ilIcon;         // icon   CFont*         m_pTitleFont;     // font to use for title   CFont*         m_pContentFont;   // font to use for content   
   COLORREF       m_crBackground;   // Background color for balloon   
   COLORREF       m_crForeground;   // Foreground color for balloon
      CRect          m_screenRect;     // bounds of screen anchor is on   CRgn           m_rgnComplete;    // Clipping / Drawing region   CPoint         m_ptMouseOrig;    // original mouse position; for hiding on mouse move   UINT           m_uCloseState;    // current state of the close button   int            m_nMouseMoveTolerance;  // distance mouse has to move before balloon will close.   // class atoms (shadowed/not shadowed)   static ATOM    s_ClassAtom;   static ATOM    s_ClassAtomShadowed;};
#define WM_BALLOON		WM_USER+7081
struct balloon_txt
{
	CString title;
	CString content;
	LPCTSTR icon;
	DWORD options;
	DWORD timeout;
};

extern void info_balloon(LPCTSTR content, DWORD timeout = 2000);
extern void warning_balloon(LPCTSTR content, DWORD timeout = 2000);
extern void info_balloon(UINT c, DWORD timeout = 2000);
extern void warning_balloon(UINT c, DWORD timeout = 2000);

#endif // _BALLOON_HELP_H_INCLUDED_

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区不卡在线观看| 91在线视频播放地址| 日本vs亚洲vs韩国一区三区| 亚洲一区二区视频在线| 亚洲午夜在线电影| 亚洲v中文字幕| 日韩精品一区第一页| 婷婷综合另类小说色区| 五月婷婷另类国产| 日本vs亚洲vs韩国一区三区| 久久不见久久见中文字幕免费| 日韩成人av影视| 国产一区二区精品久久| 福利电影一区二区| 一本到不卡精品视频在线观看| 在线观看国产91| 欧美日韩不卡一区二区| 日韩一区二区三区视频在线| 日韩欧美区一区二| 国产色产综合产在线视频| 国产精品狼人久久影院观看方式| 一区精品在线播放| 亚洲激情网站免费观看| 日日摸夜夜添夜夜添精品视频 | 人人爽香蕉精品| 久久超碰97中文字幕| 国产精品系列在线观看| av电影天堂一区二区在线观看| 97se亚洲国产综合自在线| 色拍拍在线精品视频8848| 欧美精选在线播放| 精品国产一区二区三区av性色| 中文字幕欧美国产| 亚洲激情欧美激情| 蜜臀av一区二区| 99视频在线观看一区三区| 欧美三级三级三级爽爽爽| 久久一区二区视频| 一区二区三区小说| 蜜桃一区二区三区在线| 国产一区二区免费视频| 色婷婷亚洲综合| 久久久久国产一区二区三区四区| 国产精品乱码人人做人人爱| 亚洲在线观看免费视频| 久久97超碰国产精品超碰| 99久久精品国产网站| 69av一区二区三区| 国产精品国产自产拍在线| 天天色天天操综合| 成人一级片网址| 91精品国产一区二区三区香蕉 | 精品中文av资源站在线观看| 91在线播放网址| 精品成人a区在线观看| 亚洲精品国产精华液| 国产中文字幕一区| 在线精品亚洲一区二区不卡| 国产午夜三级一区二区三| 午夜av一区二区三区| 91在线看国产| 久久久久久夜精品精品免费| 午夜久久久久久久久久一区二区| 国产91丝袜在线播放| 欧美一区二区三区视频免费 | 国产精品66部| 91精品国产综合久久福利软件 | 欧美bbbbb| 色老综合老女人久久久| 国产欧美中文在线| 美腿丝袜亚洲三区| 欧美日韩中文字幕精品| 国产精品国产成人国产三级| 国产在线不卡一卡二卡三卡四卡| 欧美三级一区二区| 椎名由奈av一区二区三区| 国产乱码字幕精品高清av| 欧美酷刑日本凌虐凌虐| 亚洲综合999| 成人激情免费视频| 久久综合网色—综合色88| 日韩综合小视频| 欧洲精品在线观看| 中文字幕一区二区三区在线不卡| 国产精品 欧美精品| 欧美大片国产精品| 蜜臀91精品一区二区三区| 欧美久久久久久久久久| 亚洲动漫第一页| 欧美性猛片xxxx免费看久爱| 亚洲另类在线一区| 99re在线精品| 成人欧美一区二区三区在线播放| 国产白丝网站精品污在线入口| www国产亚洲精品久久麻豆| 日本不卡的三区四区五区| 欧美日韩亚洲丝袜制服| 一区二区三区在线看| 丰满亚洲少妇av| 久久久久国产精品免费免费搜索| 狠狠色狠狠色综合| 久久午夜电影网| 国产精品亚洲人在线观看| 26uuu另类欧美亚洲曰本| 捆绑变态av一区二区三区| 日韩精品一区二区三区在线| 夜夜揉揉日日人人青青一国产精品| 99免费精品视频| 精品久久99ma| 国产露脸91国语对白| 欧美—级在线免费片| 6080午夜不卡| 无吗不卡中文字幕| 欧美一区二区性放荡片| 麻豆一区二区三区| 精品国产成人系列| 成人小视频在线观看| 国产精品久久久久久久久动漫| 99久久综合精品| 亚洲色图另类专区| 欧美性极品少妇| 欧美a一区二区| 2020国产精品自拍| 懂色av一区二区三区免费看| 欧美国产丝袜视频| 色哟哟一区二区在线观看| 亚洲成人免费电影| 欧美成人高清电影在线| 国产超碰在线一区| 一区二区三区在线看| 欧美一区二区三区男人的天堂| 国产做a爰片久久毛片| 欧美韩日一区二区三区四区| 91麻豆swag| 秋霞电影网一区二区| 久久影视一区二区| 色综合久久九月婷婷色综合| 婷婷丁香激情综合| 久久久国产一区二区三区四区小说| 成人国产精品免费网站| 亚洲国产另类av| 久久久99免费| 在线亚洲免费视频| 狠狠色丁香婷婷综合| 综合久久综合久久| 日韩欧美在线网站| av一二三不卡影片| 日韩中文字幕1| 中文字幕乱码亚洲精品一区| 欧美婷婷六月丁香综合色| 激情都市一区二区| 一区二区视频在线看| 日韩精品在线看片z| 在线欧美一区二区| 国产精品一区一区| 性做久久久久久免费观看欧美| 久久亚洲欧美国产精品乐播| 色国产精品一区在线观看| 韩国v欧美v日本v亚洲v| 亚洲自拍与偷拍| 欧美激情资源网| 6080国产精品一区二区| proumb性欧美在线观看| 免费日本视频一区| 亚洲另类春色国产| 国产色综合久久| 91精品在线观看入口| 99精品热视频| 国产九色sp调教91| 免费在线看成人av| 亚洲一卡二卡三卡四卡无卡久久| 国产欧美日韩精品一区| 91精品免费观看| 欧美性videosxxxxx| 成人黄色网址在线观看| 麻豆精品在线看| 亚洲成人动漫在线观看| 亚洲图片你懂的| 国产目拍亚洲精品99久久精品| 欧美一区二区视频免费观看| 欧美在线看片a免费观看| 成人亚洲一区二区一| 成人av免费在线观看| 激情小说亚洲一区| 青娱乐精品视频在线| 亚洲国产综合视频在线观看| 136国产福利精品导航| 国产女人18毛片水真多成人如厕| 日韩女优av电影在线观看| 在线播放中文字幕一区| 在线国产电影不卡| 色婷婷久久久综合中文字幕| 懂色av中文一区二区三区| 国产剧情在线观看一区二区| 精品一区二区三区免费毛片爱| 日韩精品亚洲专区| 日韩激情视频网站| 五月婷婷综合在线| 日韩国产高清影视| 日本不卡不码高清免费观看|