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

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

?? resizingdialog.cpp

?? 編譯原理LL(1)文法分析器 錄入合法的LL(1)文法
?? CPP
字號:
////////////////////////////////////////////////////////////////////////
// ResizingDialog.cpp : implementation file
//	
// Author: Eli Vingot (elivingt@internet-zahav.net)
//
// Ideas for improving the class are always appreciated
//
//
// The base class for the dialog box you want to allow resizing
// Use SetConrolInfo() to determine how each control behaves when
// the user resize the dialog box.
// (The "Windows default" is ANCHORE_TOP | ANCHORE_LEFT)
//
// e.g. For a right aligned OK button you'll probably call:
// SetControlInfo(IDOK, ANCHORE_RIGHT)
// For a text control that needs to resize with the dialog you may do:
// SetControlInfo(IDD_MYEDITOR, RESIZE_BOTH)
//
// Note: The dialog box "remebers" its size on destroy and the next time
// you launch it, it'll set the dialog size back to the previous size.
// If you don't like this behavior, call SetRememberSize(FALSE)
//
// LIMITATIONS:
// 1) This class does not handle overlapping controls, 
//    e.g., you cannot place two controls one (RESIZE_VER) and the other
//    with (RESIZE_VER | ANCHORE_BOTTOM) one below the other, they may ovelapp.
//
// 2) This class does not remember the mode of the dialog (Maximized/Minimized)
//	  it would be easy to add this feature, though.
//
//
#include "stdafx.h"
#include "ResizingDialog.h"

#ifdef _DEBUG
#undef THIS_FILE
static char BASED_CODE THIS_FILE[] = __FILE__;
#endif


/////////////////////////////////////////////////////////////////////////////
// CResizingDialog dialog

CResizingDialog::CResizingDialog(UINT nIDTemplate, CWnd* pParentWnd) : 
				CDialog(nIDTemplate,pParentWnd)
{
	m_minWidth = m_minHeight = 0;	// flag that GetMinMax wasn't called yet
	m_old_cx = m_old_cy = 0;
	m_bSizeChanged = FALSE;
	m_nIDTemplate = nIDTemplate;

	m_bRememberSize = FALSE;
	m_bDrawGripper = TRUE;
}

void CResizingDialog::SetControlInfo(WORD CtrlId,WORD Anchore)			
{
	if(Anchore == ANCHORE_LEFT)
		return; // Do nothing

	// Add resizing behaviour for the control
	DWORD c_info = CtrlId | (Anchore << 16);
	m_control_info.Add(c_info);
}

BEGIN_MESSAGE_MAP(CResizingDialog, CDialog)
	//{{AFX_MSG_MAP(CResizingDialog)
	ON_WM_SIZE()
	ON_WM_PAINT()
	ON_WM_NCHITTEST()
	ON_WM_GETMINMAXINFO()
	ON_WM_DESTROY()
	ON_WM_CREATE()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()


//////////////////////////////////////////////////////////////////////////
// CResizingDialog message handlers



//////////////////////////////////////////////////////////////////////////
// OnInitDialog()
//
BOOL CResizingDialog::OnInitDialog()
{
	CDialog::OnInitDialog();
	if(m_bRememberSize)
	{
		// Load the previous size of the dialog box from the INI/Registry
		CString dialog_name;
		GetDialogProfileEntry(dialog_name);

		int cx = AfxGetApp()->GetProfileInt(dialog_name,"CX",0);
		int cy = AfxGetApp()->GetProfileInt(dialog_name,"CY",0);
		
		if(cx && cy)
		{
			SetWindowPos( NULL, 0, 0, cx, cy, SWP_NOMOVE );
		}
	}
	
	return FALSE;  // return TRUE  unless you set the focus to a control
}


//
// OnSize()
// Set the dialog controls new position and size
//
void CResizingDialog::OnSize(UINT nType, int cx, int cy) 
{
	CDialog::OnSize(nType, cx, cy);
	//Invalidate();
	if(nType == SIZE_MINIMIZED)
		return;

	int dx = cx - m_old_cx;
	int dy = cy - m_old_cy;

	if(m_old_cx)
	{
		// Move and Size the controls using the information
		// we got in SetControlInfo()
		//
		m_bSizeChanged = TRUE;
		CRect WndRect;
		CWnd *pWnd;
		DWORD c_info;
		short Anchore;
		for(int i = 0; i < m_control_info.GetSize(); i++)
		{
			c_info = m_control_info[i];
			pWnd = GetDlgItem(LOWORD(c_info));
			if(!pWnd)
			{
				TRACE("Control ID - %d NOT FOUND!!\n",LOWORD(c_info));
				continue;
			}

			if(!HIWORD(c_info))
			{
				//pWnd->Invalidate();
				continue; // do nothing if anchored to top and or left
			}

			Anchore = HIWORD(c_info);
			pWnd->GetWindowRect(&WndRect);  
			ScreenToClient(&WndRect);
			
			if(Anchore & RESIZE_HOR)
				WndRect.right += dx;
			else if(Anchore & ANCHORE_RIGHT)
				WndRect.OffsetRect(dx,0);

			if(Anchore & RESIZE_VER)
				WndRect.bottom += dy;
			else if(Anchore & ANCHORE_BOTTOM)
				WndRect.OffsetRect(0,dy);

			pWnd->MoveWindow(&WndRect);
			pWnd->Invalidate();
		}

	}
	m_old_cx = cx;
	m_old_cy = cy;

	// When enlarging a dialog box we need to erase the old gripper 
	if(m_bDrawGripper)
		InvalidateRect(m_GripperRect);
//	Invalidate();
}


void CResizingDialog::OnGetMinMaxInfo(MINMAXINFO* lpMMI)
{
    if (!m_minWidth) // first time
		{
		CDialog::OnGetMinMaxInfo(lpMMI);
		return;
		}
    lpMMI->ptMinTrackSize.x = m_minWidth;
    lpMMI->ptMinTrackSize.y = m_minHeight;
}

void CResizingDialog::OnDestroy() 
{
	// Save the size of the dialog box, so next time
	// we'll start with this size
	if(m_bRememberSize && m_bSizeChanged && m_old_cx && m_old_cy)
		{
		CRect rc;
		GetWindowRect(&rc);
		CString dialog_name;
		GetDialogProfileEntry(dialog_name);

		AfxGetApp()->WriteProfileInt(dialog_name,"CX",rc.Width());
		AfxGetApp()->WriteProfileInt(dialog_name,"CY",rc.Height());
		}

	// Important: Reset the internal values in case of reuse of the dialog
	// with out deleting.
	m_minWidth = m_minHeight = m_old_cx = m_old_cy = 0;
	m_bSizeChanged = FALSE;

	CDialog::OnDestroy();
}


//
// OnCreate()
//
int CResizingDialog::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CDialog::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	// Remember the original size so later we can calculate
	// how to place the controls on dialog Resize
	m_minWidth  = lpCreateStruct->cx;
	m_minHeight = lpCreateStruct->cy;
	return 0;
}

//
// OnPaint()
// Override WM_PAINT to draw a gripper
//
// Credit goes to: Tommy Svensson
//
void CResizingDialog::OnPaint()
{
	CDialog::OnPaint();

	// Draw a resizing gripper at the lower left corner
	//
	// Note: Make sure you leave enough space in your dialog template
	// for the gripper to be drawn.
	// Don't put any controls on the lower left corner.
	if(m_bDrawGripper)
	{
		CRect rc;
		GetClientRect(rc);

		rc.left = rc.right-GetSystemMetrics(SM_CXHSCROLL);
		rc.top = rc.bottom-GetSystemMetrics(SM_CYVSCROLL);
		m_GripperRect = rc;
		CClientDC dc(this);
		dc.DrawFrameControl(rc,DFC_SCROLL,DFCS_SCROLLSIZEGRIP);
	}
}


//
// OnNcHitTest
// Handle mouse over the gripper
//
// Credit: Tommy Svensson
//
UINT CResizingDialog::OnNcHitTest(CPoint point)
{
	UINT ht = CDialog::OnNcHitTest(point);

	if(ht==HTCLIENT && m_bDrawGripper)
	{
		CRect rc;
		GetWindowRect( rc );
		rc.left = rc.right-GetSystemMetrics(SM_CXHSCROLL);
		rc.top = rc.bottom-GetSystemMetrics(SM_CYVSCROLL);
		if(rc.PtInRect(point))
		{
			ht = HTBOTTOMRIGHT;
		}
	}
	return ht;
}


//
// GetDialogProfileEntry()
// Override this (virtual) function in your derived class
// if you want to store the dialog info under a different entry name.
//
// Credit: Ari Greenberg
void CResizingDialog::GetDialogProfileEntry(CString &sEntry)
{
	// By default store the size under the Dialog ID value (Hex)
	sEntry.Format("%x",m_nIDTemplate);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
www.av精品| 国产日韩影视精品| 久久亚洲私人国产精品va媚药| 国产欧美一区二区精品性| 亚洲一二三专区| 懂色中文一区二区在线播放| 337p亚洲精品色噜噜狠狠| 亚洲手机成人高清视频| 国产一区不卡精品| 91麻豆精品国产| 亚洲午夜精品在线| 91啪亚洲精品| 国产精品传媒入口麻豆| 久久99精品久久久| 8v天堂国产在线一区二区| 亚洲欧美另类久久久精品| 大美女一区二区三区| 久久日韩精品一区二区五区| 天堂成人免费av电影一区| 欧美综合在线视频| 一区二区三区**美女毛片| caoporm超碰国产精品| 中文字幕不卡的av| 国产成人av电影在线| 久久久亚洲午夜电影| 激情小说亚洲一区| 久久这里都是精品| 国内精品国产三级国产a久久| 日韩精品中文字幕一区二区三区 | 日韩成人精品在线观看| 色天天综合久久久久综合片| 亚洲视频电影在线| 91美女精品福利| 一区二区三区国产精品| 欧美综合一区二区三区| 亚洲精品成a人| 欧美四级电影在线观看| 午夜精品久久久久影视| 欧美一卡在线观看| 国产美女一区二区| 国产精品不卡在线观看| 91首页免费视频| 亚洲成av人片在线观看无码| 欧美一区二区视频免费观看| 精品一区二区三区蜜桃| 久久久久9999亚洲精品| 国产91丝袜在线播放| 亚洲视频综合在线| 欧美三区免费完整视频在线观看| 日韩精品1区2区3区| 日韩精品中文字幕在线不卡尤物| 国产高清在线观看免费不卡| 国产精品狼人久久影院观看方式| 一本一道波多野结衣一区二区| 亚洲一区在线免费观看| 日韩女优视频免费观看| 成人ar影院免费观看视频| 亚洲成人在线网站| xnxx国产精品| 91亚洲精品久久久蜜桃| 日韩精品高清不卡| 国产午夜精品美女毛片视频| 色综合久久久久网| 视频一区在线播放| 欧美韩国一区二区| 欧美日韩在线精品一区二区三区激情 | 午夜视频一区在线观看| 欧美变态tickle挠乳网站| www.亚洲色图| 麻豆精品一区二区三区| 中文字幕亚洲电影| 日韩欧美综合在线| 一本一道综合狠狠老| 国产一区二区不卡在线| 亚洲午夜私人影院| 欧美国产欧美亚州国产日韩mv天天看完整 | 日韩亚洲欧美综合| 色综合色综合色综合色综合色综合 | 亚洲在线视频一区| 久久这里都是精品| 4438x亚洲最大成人网| 91亚洲精品一区二区乱码| 国产精品中文字幕一区二区三区| 亚洲四区在线观看| 日本一区二区成人| 2020国产精品久久精品美国| 在线视频综合导航| 91亚洲精华国产精华精华液| 国产在线视视频有精品| 日韩精品久久理论片| 亚洲伊人色欲综合网| 亚洲男人天堂av| 国产午夜精品久久久久久免费视| 777久久久精品| 欧洲av一区二区嗯嗯嗯啊| 99久久婷婷国产综合精品电影 | 美女爽到高潮91| 亚洲一区在线看| 一区二区高清免费观看影视大全 | 亚洲二区在线观看| ㊣最新国产の精品bt伙计久久| 亚洲精品一区在线观看| 日韩视频免费直播| 欧美精品日韩综合在线| 欧美三级在线看| 欧美四级电影网| 欧美日韩二区三区| 欧美剧在线免费观看网站 | 日本欧美久久久久免费播放网| 夜夜爽夜夜爽精品视频| 亚洲乱码日产精品bd| 亚洲天堂av老司机| 亚洲欧美精品午睡沙发| 亚洲综合无码一区二区| 亚洲精品日日夜夜| 一区二区三区国产精华| 午夜婷婷国产麻豆精品| 日本免费新一区视频| 美女国产一区二区| 国内久久精品视频| 国产91丝袜在线播放九色| 成人短视频下载| 一本大道综合伊人精品热热| 在线视频你懂得一区| 欧美性大战xxxxx久久久| 欧美日韩黄色影视| 日韩写真欧美这视频| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 日韩欧美123| 国产婷婷色一区二区三区| 亚洲欧洲日本在线| 亚洲一区免费观看| 久久69国产一区二区蜜臀| 国产麻豆9l精品三级站| aaa亚洲精品| 欧美日韩免费电影| 精品国产123| 亚洲柠檬福利资源导航| 天天色 色综合| 国产美女一区二区三区| 91免费国产视频网站| 欧美男女性生活在线直播观看 | 91精品国产综合久久小美女| 久久综合久久综合九色| 国产精品久久久久久一区二区三区| 亚洲女厕所小便bbb| 久久国产麻豆精品| 97精品国产露脸对白| 91麻豆精品国产91久久久更新时间 | 日韩精品一区二区三区四区| 国产三级精品视频| 香蕉成人伊视频在线观看| 国产专区欧美精品| 在线免费一区三区| 久久久久88色偷偷免费| 亚洲午夜免费视频| 国产美女精品在线| 精品视频123区在线观看| 欧美国产日韩精品免费观看| 舔着乳尖日韩一区| 成人动漫在线一区| 精品国产精品一区二区夜夜嗨| 亚洲激情五月婷婷| 国产成人在线色| 欧美一区二区网站| 亚洲精品精品亚洲| 粉嫩aⅴ一区二区三区四区| 欧美一级高清大全免费观看| 亚洲欧洲日产国码二区| 国产美女久久久久| 欧美videos中文字幕| 亚洲国产日韩一级| 91免费版在线| 欧美国产日本视频| 国产自产视频一区二区三区| 免费不卡在线观看| 国产精品资源在线看| 91在线视频免费91| 日韩久久久久久| 国产成人午夜片在线观看高清观看| 91黄色免费看| 国产精品久久久久婷婷二区次| 黄页视频在线91| 日韩一区二区电影在线| 亚洲一区中文日韩| 91精彩视频在线观看| 国产精品家庭影院| 粗大黑人巨茎大战欧美成人| 欧美电影免费观看高清完整版在线| 亚洲综合视频在线| 在线免费不卡视频| 国产精品国产自产拍高清av王其| 国产一区二区三区在线观看精品| 日韩一卡二卡三卡国产欧美| 奇米精品一区二区三区四区| 欧美久久一二区| 日韩av一二三| 欧美不卡123| 国产毛片精品视频| 国产亚洲污的网站|