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

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

?? resizingdialog.cpp

?? ll(1)文法,我們編譯原理的課程設計實驗報告,非常 好,得 A 的
?? 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一区二区三区免费野_久草精品视频
91成人网在线| 国产老女人精品毛片久久| 国产区在线观看成人精品| 91麻豆精品国产无毒不卡在线观看| www.欧美精品一二区| 丁香婷婷综合五月| 国模大尺度一区二区三区| 激情深爱一区二区| 韩国精品主播一区二区在线观看| 精品一区二区在线观看| 国产一区二三区| 风间由美性色一区二区三区| www..com久久爱| 日本高清不卡视频| 91精品国产一区二区三区| 日韩一区二区三区视频在线| 久久伊人蜜桃av一区二区| 国产亚洲一二三区| 亚洲欧美综合色| 亚洲地区一二三色| 日韩成人午夜电影| 国产精品18久久久久久久久久久久| 国产成人三级在线观看| 91香蕉视频污在线| 欧美一区日韩一区| 国产欧美日韩不卡免费| 一区二区三区在线视频观看| 亚洲一区二区三区爽爽爽爽爽| 日本中文在线一区| 成人午夜精品在线| 欧美日韩国产综合久久| 久久影院午夜论| 亚洲一区二区欧美激情| 国产在线观看一区二区| 99久久国产综合色|国产精品| 欧美日韩高清影院| 欧美激情在线看| 亚洲成人高清在线| 高清av一区二区| 欧美色图激情小说| 中文字幕欧美三区| 日本成人在线不卡视频| av亚洲精华国产精华| 日韩视频免费直播| 一个色综合网站| 在线亚洲精品福利网址导航| 日韩你懂的在线播放| 亚洲色图制服丝袜| 久久99九九99精品| 欧美在线观看视频一区二区三区| 日韩欧美专区在线| 一区二区三区高清| 成人精品视频.| 2024国产精品| 免费不卡在线观看| 欧美日韩国产电影| 亚洲人成小说网站色在线| 国产在线精品免费| 日韩欧美色综合网站| 性做久久久久久| 日本丶国产丶欧美色综合| 国产精品视频你懂的| 久久精品国产99国产精品| 欧美日韩高清不卡| 亚洲线精品一区二区三区八戒| 成人av在线看| 国产精品久久久久影视| 国产一区二区成人久久免费影院| 欧美一区二区久久久| 日韩精品电影一区亚洲| 制服丝袜在线91| 日韩精品一级二级 | 精品播放一区二区| 日本在线播放一区二区三区| 精品视频999| 亚洲小少妇裸体bbw| 欧美影片第一页| 亚洲成人自拍一区| 欧美日韩一区二区在线观看视频| 亚洲精品久久久蜜桃| 欧亚洲嫩模精品一区三区| 亚洲人成精品久久久久| 日本韩国欧美在线| 亚洲va韩国va欧美va精品| 欧美日韩国产另类不卡| 日韩精品电影一区亚洲| 精品久久久网站| 高清不卡在线观看| 亚洲欧美视频一区| 91麻豆精品国产91久久久| 日本特黄久久久高潮| 一区二区三区日韩欧美精品| 成人不卡免费av| 亚洲综合视频网| 在线播放91灌醉迷j高跟美女| 爽爽淫人综合网网站| 精品成人一区二区三区四区| 国产丶欧美丶日本不卡视频| 亚洲美女视频一区| 正在播放一区二区| 国产成人精品午夜视频免费| 亚洲色图制服诱惑| 欧美zozozo| 91捆绑美女网站| 人人超碰91尤物精品国产| 国产欧美日韩视频一区二区| 色屁屁一区二区| 秋霞国产午夜精品免费视频| 国产亚洲精品bt天堂精选| 在线精品视频一区二区三四| 国模无码大尺度一区二区三区| 国产精品成人免费在线| 日韩一区二区免费在线观看| 99久久精品国产毛片| 美女一区二区在线观看| 亚洲桃色在线一区| 日韩欧美在线123| 色94色欧美sute亚洲线路一久| 久久精品久久综合| 亚洲一二三区不卡| 亚洲国产高清aⅴ视频| 欧美一级黄色片| 色综合一区二区| 国产成人在线看| 麻豆久久久久久久| 亚洲福利国产精品| 国产精品人成在线观看免费| 欧美一个色资源| 日本久久电影网| 成人国产精品免费网站| 久久激情综合网| 日韩精品成人一区二区三区| 一区二区三区欧美激情| 国产欧美视频在线观看| 精品国内二区三区| 欧美福利视频导航| 欧美在线一二三| 一本久久a久久精品亚洲| 国产a精品视频| 国产精品资源网| 久久精品国产99国产| 奇米四色…亚洲| 日韩精品五月天| 图片区小说区区亚洲影院| 亚洲大片一区二区三区| 综合色中文字幕| 国产精品无圣光一区二区| 久久精品亚洲精品国产欧美kt∨ | 午夜av区久久| 亚洲成人黄色小说| 五月综合激情网| 午夜精品久久久久久| 亚洲成人福利片| 日韩成人伦理电影在线观看| 欧美bbbbb| 久草热8精品视频在线观看| 久草精品在线观看| 国产成人在线视频网址| 丁香六月综合激情| 91首页免费视频| 在线观看国产精品网站| 欧美精品九九99久久| 91精品国产91综合久久蜜臀| 欧美夫妻性生活| 欧美一级片在线看| 久久久高清一区二区三区| 国产日产精品1区| 亚洲视频一区二区在线| 亚洲第一在线综合网站| 美女国产一区二区三区| 国产麻豆精品一区二区| 99久久精品免费看国产免费软件| 91浏览器在线视频| 欧美精品在线一区二区| 精品久久国产老人久久综合| 日本一区二区三区在线观看| 亚洲另类春色国产| 日韩中文欧美在线| 国产成人午夜99999| 色一情一乱一乱一91av| 欧美一区二区三区不卡| 国产三级精品视频| 有码一区二区三区| 美女免费视频一区二区| 成人一区在线观看| 欧美日韩一本到| 久久久久久免费| 亚洲国产精品久久一线不卡| 久久国产精品色婷婷| 97久久精品人人做人人爽| 在线成人av网站| 国产精品久久777777| 喷水一区二区三区| 91在线视频免费91| 精品国产sm最大网站免费看| 国产一区二区三区免费| 白白色 亚洲乱淫| 欧美第一区第二区| 亚洲最色的网站| a级高清视频欧美日韩|