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

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

?? scrollcanvas.cpp

?? Windows 圖形編程 書籍
?? CPP
字號:
//-----------------------------------------------------------------------------------//
//              Windows Graphics Programming: Win32 GDI and DirectDraw               //
//                             ISBN  0-13-086985-6                                   //
//                                                                                   //
//  Written            by  Yuan, Feng                             www.fengyuan.com   //
//  Copyright (c) 2000 by  Hewlett-Packard Company                www.hp.com         //
//  Published          by  Prentice Hall PTR, Prentice-Hall, Inc. www.phptr.com      //
//                                                                                   //
//  FileName   : scrollcanvas.cpp					                                 //
//  Description: Scrolling window                                                    //
//  Version    : 1.00.000, May 31, 2000                                              //
//-----------------------------------------------------------------------------------//

#define STRICT
#define WIN32_LEAN_AND_MEAN

#include <windows.h>
#include <assert.h>
#include <tchar.h>

#include "win.h"
#include "Canvas.h"
#include "ScrollCanvas.h"


// nBar should be eiter SB_HORZ or SB_VERT
void KScrollCanvas::OnScroll(int nBar, int nScrollCode, int nPos)
{
	SCROLLINFO si;
	
    si.cbSize = sizeof(SCROLLINFO);
    si.fMask  = SIF_PAGE;
 
	GetScrollInfo(m_hWnd, nBar, &si);
	
	int nPageSize = si.nPage;
	int nDis;

	switch (nScrollCode)
    {
		case SB_LINEDOWN:             // One line right/down.
			nDis = (nBar==SB_VERT) ? m_linedy : m_linedx;
			break;

		case SB_LINEUP:               // One line left/up.
			nDis = (nBar==SB_VERT) ? -m_linedy : - m_linedx;
			break;

		case SB_PAGEDOWN:             // One page right/down.
			nDis = nPageSize;
			break;

		case SB_PAGEUP:               // One page left/up.
			nDis = - nPageSize;
			break;

		case SB_THUMBPOSITION:        // Absolute position.
			nDis = nPos - GetScrollPos(m_hWnd, nBar);
			break;

		default:                      // No change.
			nDis = 0;
			break;
    }

	if (nDis)
	{
		int nMin, nMax;

		GetScrollRange(m_hWnd, nBar, &nMin, &nMax);

		nPos = GetScrollPos(m_hWnd, nBar) + nDis;
		nPos = max(nMin, nPos);
		nPos = min(nMax-nPageSize, nPos);

		nDis = nPos - GetScrollPos(m_hWnd, nBar);

		if ( nDis )
        {
			SetScrollPos(m_hWnd, nBar, nPos, TRUE);

			if (nBar == SB_HORZ)
				ScrollWindow(m_hWnd, - nDis, 0, NULL, NULL);
			else
				ScrollWindow(m_hWnd, 0, - nDis, NULL, NULL);

		//	::UpdateWindow(m_hWnd);
        }
	}
}


void KScrollCanvas::SetScrollBar(int side, int maxsize, int pagesize)
{
	if ( pagesize < maxsize )
	{
		SCROLLINFO si;

		si.cbSize = sizeof(SCROLLINFO);
		si.fMask  = SIF_RANGE | SIF_PAGE;
		si.nMin   = 0;
		si.nMax   = maxsize - 1;
		si.nPage  = pagesize;
		si.nPos   = 0;

		::EnableScrollBar(m_hWnd, side, ESB_ENABLE_BOTH);
		::SetScrollInfo(m_hWnd, side, &si, TRUE);
	}
	else
	{
		SetScrollPos(m_hWnd, side, 0, FALSE);
		::EnableScrollBar(m_hWnd, side, ESB_DISABLE_BOTH);
	}
}


int GCD(int x, int y)
{
	while ( x!=y )
		if ( x>y ) x-=y; else y-=x;

	return x;
}


void KScrollCanvas::OnZoom(int x, int y, int mul, int div)
{
	m_zoommul *= mul;
	m_zoomdiv *= div;

	int factor = GCD(m_zoommul, m_zoomdiv);

	m_zoommul /= factor;
	m_zoomdiv /= factor;

	// add scrollbar offset
	x = ( x + GetScrollPos(m_hWnd, SB_HORZ) ) * mul / div;
	y = ( y + GetScrollPos(m_hWnd, SB_VERT) ) * mul / div;

	// update canvas
	m_width  = m_width  * mul / div;
	m_height = m_height * mul / div;

	RECT rect;

	GetClientRect(m_hWnd, & rect);

	// reset scrollbars
	SetScrollBar(SB_HORZ, m_width,  rect.right);
	SetScrollBar(SB_VERT, m_height, rect.bottom);

	// x in center the center of window if needed
	x -= rect.right/2;
	if ( x<0 ) 
		x = 0;
	if ( x > m_width - rect.right ) 
		x = m_width - rect.right;

	SetScrollPos(m_hWnd, SB_HORZ, x, FALSE);
	
	y -= rect.bottom/2;
	if ( y<0) y = 0;
	if ( y > m_height - rect.bottom ) 
		y = m_height - rect.bottom;

	SetScrollPos(m_hWnd, SB_VERT, y, FALSE);

	// repaint			
	InvalidateRect(m_hWnd, NULL, TRUE);
	::UpdateWindow(m_hWnd);
}


void KScrollCanvas::SetSize(int width, int height, int linedx, int linedy, bool resize)
{
	m_width  = width;
	m_height = height;
	m_linedx = linedx;
	m_linedy = linedy;

	if ( resize )
	{
		RECT rect;

		GetClientRect(m_hWnd, & rect);

		SetScrollBar(SB_HORZ, m_width,  rect.right);
		SetScrollBar(SB_VERT, m_height, rect.bottom);
	}
}


LRESULT KScrollCanvas::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	switch( uMsg )
	{
		case WM_CREATE:
			m_hWnd = hWnd;
			OnCreate();
			return 0;

		case WM_SIZE:
			SetScrollBar(SB_HORZ, m_width,  LOWORD(lParam));
			SetScrollBar(SB_VERT, m_height, HIWORD(lParam));
			return 0;

		case WM_PAINT:
			{
				PAINTSTRUCT ps; 

				HDC hDC = BeginPaint(m_hWnd, &ps);

				SetWindowOrgEx(hDC, 0, 0, NULL);
				SetViewportOrgEx(hDC, - GetScrollPos(hWnd, SB_HORZ), 
					                  - GetScrollPos(hWnd, SB_VERT), NULL);

				OnDraw(hDC, & ps.rcPaint);

				EndPaint(m_hWnd, &ps);
			}
			return 0;

		case WM_RBUTTONDOWN:
			OnZoom( LOWORD(lParam), HIWORD(lParam), 1, 2);
			return 0;

		case WM_LBUTTONDOWN:
			OnZoom( LOWORD(lParam), HIWORD(lParam), 2, 1);
			return 0;

		case WM_HSCROLL:
			OnScroll(SB_HORZ, LOWORD(wParam), HIWORD(wParam));
			return 0;

		case WM_VSCROLL:
			OnScroll(SB_VERT, LOWORD(wParam), HIWORD(wParam));
			return 0;

		case WM_TIMER:
			OnTimer(wParam, lParam);
			return 0;

		case WM_MOUSEMOVE:
			OnMouseMove(wParam, lParam);
			return 0;
		
		case WM_DESTROY:
			OnDestroy();
			return 0;

		default:
			return KCanvas::WndProc(hWnd, uMsg, wParam, lParam);
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品剧情在线观看| 成人久久视频在线观看| 欧美三级电影在线看| 一区二区三区在线观看国产| 国产成a人亚洲精| 欧美国产日本视频| 99久久精品国产麻豆演员表| 国产精品灌醉下药二区| 91蝌蚪porny| 亚洲一区二区在线免费看| 欧美午夜免费电影| 日本va欧美va欧美va精品| 欧美一区二区三区视频在线观看| 麻豆成人在线观看| 国产亚洲一区字幕| 色婷婷亚洲一区二区三区| 亚洲综合激情另类小说区| 8v天堂国产在线一区二区| 久久精品国产亚洲高清剧情介绍 | 久久久综合精品| 国产99一区视频免费| 成人欧美一区二区三区视频网页 | 成人av动漫在线| 亚洲三级电影网站| 欧美精品777| 国产高清不卡一区二区| 亚洲欧美日韩在线| 日韩一区二区三区免费观看| 懂色av一区二区夜夜嗨| 激情五月激情综合网| 国产精品无圣光一区二区| 91成人免费电影| 免费欧美日韩国产三级电影| 国产日产精品一区| 欧美日韩在线一区二区| 九色porny丨国产精品| 国产精品福利av| 欧美一卡二卡三卡四卡| 成人激情小说乱人伦| 首页国产欧美日韩丝袜| 国产欧美日韩三级| 欧美视频精品在线观看| 国产精品18久久久久久久网站| 最新久久zyz资源站| 日韩视频在线一区二区| 91片在线免费观看| 国产一区二区三区av电影| 一区二区高清在线| 久久九九全国免费| 日韩一区二区三区在线| 一道本成人在线| 国产成人小视频| 日本欧美肥老太交大片| 一级精品视频在线观看宜春院| 久久人人97超碰com| 欧美肥胖老妇做爰| 91久久免费观看| 国产超碰在线一区| 久久国产精品免费| 视频精品一区二区| 亚洲激情图片小说视频| 欧美国产成人精品| 久久中文娱乐网| 欧美一级理论性理论a| 欧美伊人久久大香线蕉综合69 | 久久亚区不卡日本| 制服视频三区第一页精品| 色嗨嗨av一区二区三区| 国产成人av电影在线播放| 麻豆成人免费电影| 视频在线观看91| 亚洲一区在线观看视频| 中文字幕中文字幕中文字幕亚洲无线| 精品国产乱码久久| 日韩午夜在线观看| 欧美一区二区三区喷汁尤物| 91麻豆成人久久精品二区三区| 99亚偷拍自图区亚洲| 日韩欧美国产1| 欧美三级午夜理伦三级中视频| 91色porny在线视频| 色综合久久久久综合体桃花网| 国内精品在线播放| 乱中年女人伦av一区二区| 精品一区二区三区在线观看国产 | 日韩精品一区第一页| 亚洲三级理论片| 欧美国产激情一区二区三区蜜月| 久久久久久久久蜜桃| 久久综合丝袜日本网| 2023国产一二三区日本精品2022| 日韩精品一区二区三区在线 | 亚洲成av人片在线| 亚洲国产日韩综合久久精品| 午夜亚洲国产au精品一区二区| 亚洲午夜电影在线| 手机精品视频在线观看| 美国三级日本三级久久99| 久久不见久久见免费视频7| 国产一区亚洲一区| 国产成a人无v码亚洲福利| av亚洲精华国产精华精| 色94色欧美sute亚洲线路二 | 欧美日韩视频专区在线播放| 91福利视频网站| 91麻豆精品国产91久久久资源速度| 666欧美在线视频| 亚洲精品一区二区在线观看| 国产欧美日产一区| 悠悠色在线精品| 奇米亚洲午夜久久精品| 国产福利一区二区三区视频 | 日韩av不卡一区二区| 精品综合久久久久久8888| 国产成人啪午夜精品网站男同| 成人av资源网站| 欧美日韩三级一区| 精品动漫一区二区三区在线观看| 国产精品美女久久久久aⅴ | 亚洲人吸女人奶水| 亚洲丝袜制服诱惑| 亚洲中国最大av网站| 美脚の诱脚舐め脚责91| 成人一级视频在线观看| 91国产免费看| 精品粉嫩aⅴ一区二区三区四区| 亚洲国产精品av| 亚洲成精国产精品女| 国内精品伊人久久久久av影院| 91麻豆免费观看| 日韩亚洲欧美在线| 一区2区3区在线看| 精品一区二区国语对白| 在线视频欧美精品| 国产亚洲一本大道中文在线| 亚洲精品视频在线| 国产老肥熟一区二区三区| 欧美性猛交xxxxxxxx| 国产情人综合久久777777| 天堂一区二区在线免费观看| 成人理论电影网| 日韩欧美成人一区二区| 一卡二卡欧美日韩| 成人妖精视频yjsp地址| 欧美一区二区私人影院日本| 自拍偷拍国产精品| 国产精品一区不卡| 欧美一区二区久久久| 亚洲黄色在线视频| 欧美一区二区三区四区高清| 中文字幕一区二区三区蜜月| 麻豆精品视频在线观看视频| 在线视频观看一区| 国产精品国产三级国产普通话三级 | 欧美亚洲国产一区在线观看网站| 国产亚洲午夜高清国产拍精品 | 午夜精彩视频在线观看不卡| 成人av电影在线| 久久精品亚洲乱码伦伦中文| 蜜桃视频在线观看一区二区| 欧美日韩精品欧美日韩精品一 | 91小视频免费观看| 久久久91精品国产一区二区精品| 老司机精品视频导航| 91精品国产综合久久精品| 午夜欧美大尺度福利影院在线看| 色婷婷综合久久| 国产精品二三区| 本田岬高潮一区二区三区| 欧美国产精品中文字幕| 成人午夜私人影院| 国产欧美精品一区| 丁香婷婷综合激情五月色| 国产午夜一区二区三区| 国产精品77777| 国产三区在线成人av| 国产大片一区二区| 中文字幕精品一区| 不卡一区二区中文字幕| 国产精品久久久久久亚洲伦 | 国产精品成人网| 91亚洲永久精品| 一区二区在线电影| 精品视频全国免费看| 日本成人中文字幕| 久久综合色之久久综合| 国产一区二区免费在线| 国产日韩欧美高清在线| 成人丝袜视频网| 亚洲伦理在线精品| 欧美色老头old∨ideo| 午夜一区二区三区在线观看| 欧美高清视频在线高清观看mv色露露十八| 性做久久久久久| 欧美一区二区三区人| 日韩一区二区电影网| 国内不卡的二区三区中文字幕| 国产视频一区在线观看| 91小视频免费观看| 日本欧美肥老太交大片|