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

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

?? paintcap.cpp

?? GB2BIG5是一個簡體和繁體中文雙向轉換程序。
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
////////////////////////////////////////////////////////////////
// 1997 Microsoft Systems Journal. 
// If this program works, it was written by Paul DiLascia.
// If not, I don't know who wrote it.
//
#include "StdAfx.h"
#include "PaintCap.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

////////////////
// Class used to get the caption rectangle of a window in window coords.
// This is the area of the title bar inside the window frame, including
// the icon and min/max/close buttons.
// 
class CCaptionRect : public CRect {
public:
	CCaptionRect(const CWnd& wnd); // use reference to deny NULL ptr
};

IMPLEMENT_DYNAMIC(CCaptionPainter, CSubclassWnd);

CCaptionPainter::CCaptionPainter()
{
	Invalidate();
}

CCaptionPainter::~CCaptionPainter()
{
}

//////////////////
// Install caption handler. nPaintMsg is message I will send too frame
// when its caption needs painting.
//
BOOL CCaptionPainter::Install(CFrameWnd* pFrameWnd,UINT nPaintMsg,BOOL bMod)
{
	ASSERT_KINDOF(CFrameWnd, pFrameWnd);
	m_nPaintMsg = nPaintMsg;
  m_bModified=bMod;
	return HookWindow(pFrameWnd);
}

//////////////////
// Message handler handles caption-related messages
//
LRESULT CCaptionPainter::WindowProc(UINT msg, WPARAM wp, LPARAM lp)
{
	switch (msg) {
	case WM_NCPAINT:
		OnNcPaint(HRGN(wp));
		return 0;
	case WM_NCACTIVATE:
		return OnNcActivate(wp);
	case WM_SETTEXT:
		OnSetText((LPCTSTR)lp);
		return 0;
	case WM_SYSCOLORCHANGE:
	case WM_SETTINGCHANGE:
		Invalidate();
		m_pWndHooked->SendMessage(m_nPaintMsg, 0, 0L);
//		return 0;
	}
	// I don't handle it: pass along
	return CSubclassWnd::WindowProc(msg, wp, lp);
}

/////////////////
// Handle WM_NCPAINT for main window
//
void CCaptionPainter::OnNcPaint(HRGN hRgn)
{
	ASSERT_VALID(m_pWndHooked);
	CWnd& wnd = *m_pWndHooked;

	CCaptionRect rc(wnd);		// caption rectangle in window coords
	CRect rcWin;					// window rect
	wnd.GetWindowRect(&rcWin);	// .. get window rect
	rc += rcWin.TopLeft();		// convert caption rect to screen coords

	// Don't bother painting if the caption doesn't lie within the region.
	//
	if ((WORD)hRgn > 1 && !::RectInRegion(hRgn, &rc)) {
		Default();					// just do default thing
		return;						// and quit
	}

	// Exclude caption from update region
	//
	HRGN hRgnCaption = ::CreateRectRgnIndirect(&rc);
	HRGN hRgnNew     = ::CreateRectRgnIndirect(&rc);
	if ((WORD)hRgn > 1) {
		// wParam is a valid region: subtract caption from it
		::CombineRgn(hRgnNew, hRgn, hRgnCaption, RGN_DIFF);
	} else {
		// wParam is not a valid region: create one that's the whole
		// window minus the caption bar
		HRGN hRgnAll = ::CreateRectRgnIndirect(&rcWin);
		CombineRgn(hRgnNew, hRgnAll, hRgnCaption, RGN_DIFF);
		DeleteObject(hRgnAll);
	}

	// Call Windows to do WM_NCPAINT with altered update region
	//
	MSG& msg = AfxGetThreadState()->m_lastSentMsg;
	WPARAM savewp = msg.wParam;	// save original wParam
	msg.wParam = (WPARAM)hRgnNew;	// set new region for DefWindowProc
	Default();
	DeleteObject(hRgnCaption);		// clean up
	DeleteObject(hRgnNew);			// ...
	msg.wParam = savewp;				// restore original wParam

	PaintCaption();					// Now paint my special caption
}

//////////////////
// Handle WM_NCACTIVATE for main window
//
BOOL CCaptionPainter::OnNcActivate(BOOL bActive)
{
	ASSERT_VALID(m_pWndHooked);
	CFrameWnd& frame = *((CFrameWnd*)m_pWndHooked);
	ASSERT_KINDOF(CFrameWnd, &frame);

	// Mimic MFC kludge to stay active if WF_STAYACTIVE bit is on
	if (frame.m_nFlags & WF_STAYACTIVE)
		bActive = TRUE;
	if (!frame.IsWindowEnabled())			// but not if disabled
		bActive = FALSE;
	if (bActive==m_bActive)
		return TRUE;					// nothing to do

	// In case this is a MDI app, manually activate/paint active MDI child
	// window, because Windows won't do it if parent frame is invisible.
	// Must do this BEFORE calling Default, or it will not work.
	//
	CFrameWnd* pActiveFrame = frame.GetActiveFrame();
	if (pActiveFrame!=&frame) {
		pActiveFrame->SendMessage(WM_NCACTIVATE,bActive);
		pActiveFrame->SendMessage(WM_NCPAINT);
	}

	// Turn WS_VISIBLE off before calling DefWindowProc,
	// so DefWindowProc won't paint and thereby cause flicker.
	//
	DWORD dwStyle = frame.GetStyle();
	if (dwStyle & WS_VISIBLE)
		::SetWindowLong(frame, GWL_STYLE, (dwStyle & ~ WS_VISIBLE));

	MSG& msg = AfxGetThreadState()->m_lastSentMsg;
	msg.wParam = bActive;
	Default();
	if (dwStyle & WS_VISIBLE)
		::SetWindowLong(frame, GWL_STYLE, dwStyle);

	// At this point, nothing has happened (since WS_VISIBLE was off).
	// Now it's time to paint.
	//
	m_bActive = bActive;					// update state
	frame.SendMessage(WM_NCPAINT);	// paint non-client area (frame too)
	return TRUE;							// done OK
}

//////////////////
// Handle WM_SETTEXT for main window
//
void CCaptionPainter::OnSetText(LPCTSTR lpText)
{
	ASSERT_VALID(m_pWndHooked);
	CWnd& wnd = *m_pWndHooked;

	// Turn WS_VISIBLE style off before calling Windows to
	// set the text, then turn it back on again after.
	//
	DWORD dwStyle = wnd.GetStyle();
	if (dwStyle & WS_VISIBLE)
		SetWindowLong(wnd.m_hWnd, GWL_STYLE, dwStyle & ~ WS_VISIBLE);
	Default();
	if (dwStyle & WS_VISIBLE)
		SetWindowLong(wnd.m_hWnd, GWL_STYLE, dwStyle);

	wnd.SendMessage(WM_NCPAINT);		// paint non-client (frame)
	Invalidate();							// force new bitmap
	PaintCaption();
}

//////////////////
// Paint custom caption. Flag tells whether active or not. Just blast the
// bitmap to the title bar, but not if minimized (iconic).
//
void CCaptionPainter::PaintCaption()
{
	ASSERT(m_pWndHooked);
	CWnd& wnd = *m_pWndHooked;

	if (wnd.IsIconic())
		return;

	// Get caption DC and rectangle
	CWindowDC dcWin(&wnd);					// window DC
	CDC dc;										// memory DC
	dc.CreateCompatibleDC(&dcWin);		// ...create it
	CCaptionRect rc(wnd);					// get caption rectangle
	if (rc.Size() != m_szCaption) {		// if size changed:
		m_bmCaption[0].DeleteObject();	// invalidate bitmaps
		m_bmCaption[1].DeleteObject();	// ...
		m_szCaption = rc.Size();			// update new size
	}

	// Get active/inactive bitmap & determine if needs to be regenerated
	CBitmap& bm = m_bmCaption[m_bActive!=0];	// get bitmap
	BOOL bPaintIt = FALSE;							// paint anew?
	if (!(HBITMAP)bm) {											// no bitmap:
		bm.CreateCompatibleBitmap(&dcWin, rc.Width(), rc.Height()); // create one
		bPaintIt = TRUE;								// and paint it
	}
	CBitmap* pOldBitmap = dc.SelectObject(&bm);	// select bitmap into memory DC

	// If bitmap needs painting, call client to do it.
	if (bPaintIt) {
		PAINTCAP pc;
		pc.m_pDC = &dc;
		pc.m_szCaption = rc.Size();
    pc.m_bActive=m_bActive;
    if(m_nPaintMsg)
		  wnd.SendMessage(m_nPaintMsg, m_bActive, (LPARAM)&pc);
    else 
      DrawNormalCaption(pc);
	}

	// blast bits to screen
	dcWin.BitBlt(rc.left,rc.top,rc.Width(),rc.Height(),&dc,0,0,SRCCOPY);
	dc.SelectObject(pOldBitmap); // restore DC
}

void CCaptionPainter::DrawNormalCaption(const PAINTCAP& pc)
{
	ASSERT(m_pWndHooked);
	CWnd& wnd = *m_pWndHooked;
  UINT uFlags = DC_TEXT|DC_ICON;
  if(pc.m_bActive)uFlags|=DC_ACTIVE;
  CRect rc(CPoint(0,0),pc.m_szCaption);
  ::DrawCaption(wnd,*pc.m_pDC,&rc,uFlags);
  DrawButtons(pc);
}
////////////////
// Draw caption icon. Returns width of icon.
//
int CCaptionPainter::DrawIcon(const PAINTCAP& pc)
{
	ASSERT(m_pWndHooked);
	CWnd& wnd = *m_pWndHooked;

	// Within the basic button rectangle, Windows 95 uses a 1 or 2 pixel border
	// Icon has 2 pixel border on left, 1 pixel on top/bottom, 0 right
	//
	int cxIcon = GetSystemMetrics(SM_CXSIZE);
	CRect rc(0, 0, cxIcon, GetSystemMetrics(SM_CYSIZE));
	rc.DeflateRect(0,1);
	rc.left += 2;
	DrawIconEx(pc.m_pDC->m_hDC, rc.left, rc.top,
		(HICON)GetClassLong(wnd.m_hWnd, GCL_HICONSM),

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲男人天堂av网| 99国产精品99久久久久久| 在线一区二区三区| 亚洲人成网站色在线观看| jlzzjlzz亚洲日本少妇| 亚洲欧美另类小说| 欧美日韩卡一卡二| 日本一道高清亚洲日美韩| 日韩女优av电影| 国产一区二区0| 国产精品国产自产拍高清av王其| av网站一区二区三区| 一区二区三区在线视频免费| 欧美日韩视频在线观看一区二区三区| 日韩av网站免费在线| 久久久www成人免费无遮挡大片| 成人午夜碰碰视频| 亚洲线精品一区二区三区| 欧美一级xxx| 国产成人综合网站| 亚洲精品亚洲人成人网在线播放| 884aa四虎影成人精品一区| 国产精品一区专区| 亚洲一区二区三区小说| 日韩三级精品电影久久久| 丰满放荡岳乱妇91ww| 亚洲大尺度视频在线观看| 精品国产亚洲在线| 欧美中文字幕一区二区三区亚洲| 久久se精品一区精品二区| 亚洲女同一区二区| 欧美不卡一二三| 色婷婷久久久综合中文字幕| 久久精品国产第一区二区三区| 最新成人av在线| 久久综合狠狠综合久久综合88| 91热门视频在线观看| 国产一区二区三区不卡在线观看| 亚洲福利一二三区| 欧美国产激情二区三区| 欧美一区二区三区不卡| 色噜噜狠狠色综合中国| 国产99一区视频免费| 日韩和的一区二区| 亚洲视频一二区| 久久久91精品国产一区二区精品| 欧美日韩一区小说| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 国产精品成人一区二区三区夜夜夜| 欧美亚洲日本国产| 成人午夜短视频| 久久er精品视频| 午夜国产精品一区| 亚洲精品日产精品乱码不卡| 久久久不卡网国产精品一区| 日韩一区二区三区视频在线观看| 欧美在线综合视频| 成人毛片在线观看| 国产精品白丝av| 麻豆精品视频在线观看免费| 亚洲电影在线播放| 亚洲精品免费视频| 亚洲人被黑人高潮完整版| 日本一区二区三区视频视频| 欧美一区二区视频免费观看| 欧美中文字幕亚洲一区二区va在线| www.亚洲精品| 波多野结衣在线aⅴ中文字幕不卡| 韩国女主播一区| 狠狠色丁香久久婷婷综| 久久草av在线| 国产在线精品不卡| www.亚洲激情.com| 国产mv日韩mv欧美| 国产a级毛片一区| 国产成人精品亚洲777人妖| 国产一区二区三区国产| 国模无码大尺度一区二区三区| 麻豆久久久久久| 久久精品国产**网站演员| 美女一区二区三区在线观看| 日本一不卡视频| 日韩av在线发布| 精品一区二区在线视频| 激情综合一区二区三区| 黑人巨大精品欧美黑白配亚洲| 久久国产精品一区二区| 国内精品伊人久久久久av一坑 | 成人三级在线视频| 国产电影一区在线| www.性欧美| 欧美三级视频在线观看| 欧美二区三区91| 精品美女在线播放| 国产日韩欧美一区二区三区乱码 | 久久久久国产免费免费| 国产精品久久久久婷婷| 亚洲同性同志一二三专区| 一二三区精品福利视频| 亚洲不卡av一区二区三区| 日韩不卡免费视频| 国产精品99久久久久久久女警| 粉嫩在线一区二区三区视频| 色婷婷av一区二区三区之一色屋| 欧美伦理影视网| 精品久久久三级丝袜| 欧美激情中文字幕| 亚洲一二三区视频在线观看| 日本不卡一二三| 成人小视频免费观看| 在线看国产一区| 精品久久人人做人人爰| 国产精品久久777777| 亚洲成人福利片| 国产精品性做久久久久久| 91激情五月电影| 精品99一区二区| 亚洲综合一区二区| 精品一区二区三区蜜桃| 日本精品一区二区三区高清| 26uuu成人网一区二区三区| 中文字幕一区二区三区四区 | 视频在线观看91| 成人高清视频在线| 3d动漫精品啪啪1区2区免费| 国产精品高清亚洲| 日韩福利电影在线| 色综合中文字幕国产 | 国产精品免费人成网站| 午夜精品福利在线| 99久久99久久精品免费观看| 91精品国产综合久久精品| 17c精品麻豆一区二区免费| 亚洲6080在线| 99精品国产视频| 久久久久国色av免费看影院| 婷婷开心激情综合| 色婷婷国产精品| 欧美经典一区二区| 蜜桃精品视频在线| 欧美日韩国产高清一区二区三区 | 日韩欧美亚洲另类制服综合在线| 亚洲色欲色欲www| 国产一二精品视频| 日韩免费视频线观看| 亚洲一卡二卡三卡四卡无卡久久| 国产传媒一区在线| 久久青草国产手机看片福利盒子| 天堂影院一区二区| 在线免费观看不卡av| 亚洲视频免费观看| 菠萝蜜视频在线观看一区| 久久久夜色精品亚洲| 蜜臀a∨国产成人精品| 欧美精品日韩一区| 亚洲午夜免费视频| 91精彩视频在线| 亚洲精品中文在线观看| 91玉足脚交白嫩脚丫在线播放| 国产欧美日本一区二区三区| 精品一区二区三区在线观看| 日韩欧美一二三四区| 日本成人中文字幕| 欧美肥大bbwbbw高潮| 丝袜美腿高跟呻吟高潮一区| 欧美日韩久久久一区| 亚洲亚洲人成综合网络| 欧美色电影在线| 亚洲成av人**亚洲成av**| 欧美三片在线视频观看| 亚洲午夜久久久久久久久电影网 | 5月丁香婷婷综合| 日韩va欧美va亚洲va久久| 91精品婷婷国产综合久久性色 | 国产精品自产自拍| 久久久久国产精品麻豆ai换脸 | 99re成人精品视频| 亚洲欧美另类图片小说| 欧美在线色视频| 午夜精品aaa| 一区二区三区日韩欧美| 欧美极品另类videosde| 成人美女视频在线观看| 亚洲精品在线免费播放| 国产精品自拍在线| 国产精品视频第一区| www.爱久久.com| 一级做a爱片久久| 欧美精品久久天天躁| 麻豆专区一区二区三区四区五区| 精品嫩草影院久久| jlzzjlzz欧美大全| 亚洲午夜在线观看视频在线| 欧美一区二区三区在线电影| 黄色资源网久久资源365| 成人免费在线播放视频| 欧美日韩三级视频| 国产一区二区福利| 亚洲视频中文字幕| 欧美理论片在线|