ÊÖ»úÕ¾
ÍøÍ¨·ÖÕ¾
µçÐÅÖ÷Õ¾
ÃÜ¡¡Âë:
Óû§Ãû£º
µ±Ç°Î»Öà : Ö÷Ò³>³ÌÐòÉè¼Æ>C/C++>Áбí

VCÖÐ×Ô¶¯¸Ä±ä¿Ø¼þλÖúʹóСµÄ¶Ô»°¿òÀà

À´Ô´£º»¥ÁªÍø ×÷ÕߣºÎ÷²¿ÊýÂë ʱ¼ä£º2008-04-09
Î÷²¿ÊýÂë-È«¹úÐéÄâÖ÷»ú10Ç¿£¡40ÓàÏîÐéÄâÖ÷»ú¹ÜÀí¹¦ÄÜ,È«¹úÁìÏÈ!Ë«Ïß¶àÏßÐéÄâÖ÷»úÄϱ±·ÃÎʳ©Í¨ÎÞ×è!Ãâ·ÑÔùËÍÆóÒµÓʾÖ,.CNÓòÃû,×ÔÖú½¨Õ¾480ÔªÆð,Ãâ·ÑÊÔÓÃ7Ìì,ÂúÒâÔÙ¸¶¿î! P4Ö÷»ú×âÓÃ799Ôª/ÔÂ.Ô¸¶Ãâѹ½ð!

// ×÷ÕߣºStarLee(coolstarlee@sohu.com)
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "lxDialog.h"

// ±íʾ¿É¸Ä±ä´óСµÄͼ±êID
#ifndef OBM_SIZE
#define OBM_SIZE 32766
#endif

ClxDialog::ClxDialog(UINT nID, CWnd* pParent /*=NULL*/)
: CDialog(nID, pParent)
, m_iClientWidth(0)
, m_iClientHeight(0)
, m_iMinWidth(0)
, m_iMinHeight(0)
, m_pControlArray(NULL)
, m_iControlNumber(0)
, m_bShowSizeIcon(TRUE)
{}

BEGIN_MESSAGE_MAP(ClxDialog, CDialog)
¡¡ON_WM_SIZE()
¡¡ON_WM_SIZING()
END_MESSAGE_MAP()

BOOL ClxDialog::OnInitDialog()
{
¡¡CDialog::OnInitDialog();

¡¡// ÉèÖöԻ°¿òΪ¿É±ä´óСµÄ
¡¡ModifyStyle(0, WS_SIZEBOX);

¡¡// ÒÔ¶Ô»°¿òµÄ³õʼ´óС×÷Ϊ¶Ô»°¿òµÄ¿í¶ÈºÍ¸ß¶ÈµÄ×îСֵ
¡¡CRect rectDlg;
¡¡GetWindowRect(rectDlg);
¡¡m_iMinWidth = rectDlg.Width();
¡¡m_iMinHeight = rectDlg.Height();

¡¡// µÃµ½¶Ô»°¿òclientÇøÓòµÄ´óС
¡¡CRect rectClient;
¡¡GetClientRect(rectClient);
¡¡m_iClientWidth = rectClient.Width();
¡¡m_iClientHeight = rectClient.Height();

¡¡// Loadͼ±ê
¡¡m_bmpSizeIcon.LoadOEMBitmap(OBM_SIZE);
¡¡m_bmpSizeIcon.GetBitmap(&m_bitmap);

¡¡// ´´½¨ÏÔʾͼ±êµÄ¾²Ì¬¿Ø¼þ²¢·ÅÔÚ¶Ô»°¿òÓÒϽÇ
¡¡m_wndSizeIcon.Create(NULL, WS_CHILD | WS_VISIBLE | SS_BITMAP, CRect(0, 0, m_bitmap.bmWidth, m_bitmap.bmHeight), this, 0);
¡¡m_wndSizeIcon.SetBitmap(m_bmpSizeIcon);
¡¡m_wndSizeIcon.MoveWindow(m_iClientWidth - m_bitmap.bmWidth, m_iClientHeight - m_bitmap.bmHeight, m_bitmap.bmWidth, m_bitmap.bmHeight);

¡¡// ÏÔʾͼ±ê
¡¡m_wndSizeIcon.ShowWindow(m_bShowSizeIcon);

¡¡return TRUE;
}

void ClxDialog::OnSize(UINT nType, int cx, int cy)
{
¡¡CDialog::OnSize(nType, cx, cy);

¡¡// ¶Ô»°¿ò¿í¶ÈºÍ¸ß¶ÈµÄÔöÁ¿
¡¡int iIncrementX = cx - m_iClientWidth;
¡¡int iIncrementY = cy - m_iClientHeight;

¡¡// ×îС»¯Ê±ÔöÁ¿Îª0
¡¡if (nType == SIZE_MINIMIZED)
¡¡{
¡¡¡¡iIncrementX = iIncrementY = 0;
¡¡}

¡¡for (int i = 0; i < m_iControlNumber; i )
¡¡{
¡¡¡¡CWnd *pWndCtrl = NULL;

¡¡¡¡int iId = m_pControlArray[i].iId;
¡¡¡¡int iFlag = m_pControlArray[i].iFlag;
¡¡¡¡int iPercent = m_pControlArray[i].iPercent;

¡¡¡¡// ÎÞЧֵ
¡¡¡¡if ((iPercent < 0) || (iPercent > 100))
¡¡¡¡¡¡continue;

¡¡¡¡// µÃµ½¿Ø¼þÖ¸Õë
¡¡¡¡pWndCtrl = GetDlgItem(iId);
¡¡¡¡if ((NULL != pWndCtrl) && IsWindow(pWndCtrl->GetSafeHwnd()))
¡¡¡¡{
¡¡¡¡¡¡CRect rectCtrl;
¡¡¡¡¡¡pWndCtrl->GetWindowRect(rectCtrl);

¡¡¡¡¡¡ScreenToClient(rectCtrl);

¡¡¡¡¡¡int iLeft = rectCtrl.left;
¡¡¡¡¡¡int iTop = rectCtrl.top;
¡¡¡¡¡¡int iWidth = rectCtrl.Width();
¡¡¡¡¡¡int iHeight = rectCtrl.Height();

¡¡¡¡¡¡switch (iFlag)
¡¡¡¡¡¡{
¡¡¡¡¡¡¡¡case MOVEX: // X·½ÏòÒÆ¶¯
¡¡¡¡¡¡¡¡¡¡iLeft = (iIncrementX * iPercent / 100);
¡¡¡¡¡¡¡¡¡¡break;

¡¡¡¡¡¡¡¡case MOVEY: // Y·½ÏòÒÆ¶¯
¡¡¡¡¡¡¡¡¡¡iTop = (iIncrementY * iPercent / 100);
¡¡¡¡¡¡¡¡¡¡break;

¡¡¡¡¡¡¡¡case MOVEXY: // X·½ÏòºÍY·½ÏòÍ¬Ê±ÒÆ¶¯
¡¡¡¡¡¡¡¡¡¡iLeft = (iIncrementX * iPercent / 100);
¡¡¡¡¡¡¡¡¡¡iTop = (iIncrementY * iPercent / 100);
¡¡¡¡¡¡¡¡¡¡break;

¡¡¡¡¡¡¡¡case ELASTICX: // X·½Ïò¸Ä±ä´óС
¡¡¡¡¡¡¡¡¡¡iWidth = (iIncrementX * iPercent / 100);
¡¡¡¡¡¡¡¡¡¡break;

¡¡¡¡¡¡¡¡case ELASTICY: // Y·½Ïò¸Ä±ä´óС
¡¡¡¡¡¡¡¡¡¡iHeight = (iIncrementY * iPercent / 100);
¡¡¡¡¡¡¡¡¡¡break;

¡¡¡¡¡¡¡¡case ELASTICXY: // X·½ÏòºÍY·½Ïòͬʱ¸Ä±ä´óС
¡¡¡¡¡¡¡¡¡¡iWidth = (iIncrementX * iPercent / 100);
¡¡¡¡¡¡¡¡¡¡iHeight = (iIncrementY * iPercent / 100);
¡¡¡¡¡¡¡¡¡¡break;

¡¡¡¡¡¡¡¡default:
¡¡¡¡¡¡¡¡¡¡;
¡¡¡¡¡¡}

¡¡¡¡¡¡// °Ñ¿Ø¼þÒÆ¶¯µ½ÐÂλÖÃ
¡¡¡¡¡¡pWndCtrl->MoveWindow(iLeft, iTop, iWidth, iHeight);
¡¡¡¡}
¡¡}

¡¡// °Ñͼ±êÒÆ¶¯µ½¶Ô»°¿òÓÒϽÇ
¡¡if (IsWindow(m_wndSizeIcon.GetSafeHwnd()))
¡¡¡¡m_wndSizeIcon.MoveWindow(cx - m_bitmap.bmWidth, cy - m_bitmap.bmHeight, m_bitmap.bmWidth, m_bitmap.bmHeight);

¡¡// ¼Ç¼¶Ô»°¿òclientÇøÓòµÄ´óС
¡¡if (nType != SIZE_MINIMIZED)
¡¡{
¡¡¡¡m_iClientWidth = cx;
¡¡¡¡m_iClientHeight = cy;
¡¡}
}

void ClxDialog::OnSizing(UINT nSide, LPRECT lpRect)
{
¡¡CDialog::OnSizing(nSide, lpRect);

¡¡// ¶Ô»°¿ò²»ÄÜСÓÚ³õʼ´óС

¡¡int iWidth = lpRect->right - lpRect->left;
¡¡int iHeight = lpRect->bottom - lpRect->top;

¡¡if (iWidth <= m_iMinWidth)
¡¡¡¡lpRect->right = lpRect->left m_iMinWidth;

¡¡if(iHeight <= m_iMinHeight)
¡¡¡¡lpRect->bottom = lpRect->top m_iMinHeight;
}

BOOL ClxDialog::SetControlProperty(PDLGCTLINFO lp, int nElements)
{
¡¡// ÉèÖÿؼþÊý×éÐÅÏ¢

¡¡if (NULL == lp)
¡¡¡¡return FALSE;

¡¡if (nElements <= 0)
¡¡¡¡return FALSE;

¡¡m_pControlArray = lp;
¡¡m_iControlNumber = nElements;

¡¡return TRUE;
}

void ClxDialog::ShowSizeIcon(BOOL bShow /*=NULL*/)
{
¡¡m_bShowSizeIcon = bShow;
}

ÎÄÕÂÕûÀí£ºÎ÷²¿ÊýÂë--רҵÌṩÓòÃû×¢²á¡¢ÐéÄâÖ÷»ú·þÎñ
http://www.west263.com
ÒÔÉÏÐÅÏ¢ÓëÎÄÕÂÕýÎÄÊDz»¿É·Ö¸îµÄÒ»²¿·Ö,Èç¹ûÄúÒª×ªÔØ±¾ÎÄÕÂ,Çë±£ÁôÒÔÉÏÐÅÏ¢£¬Ð»Ð»!

ÈÈµã¹Ø×¢
IDC×ÊѶ ÐéÄâÖ÷»ú ÓòÃû×¢²á ÍйÜ×âÓà vpsÖ÷»ú ÖÇÄܽ¨Õ¾
ÍøÕ¾ÔËÓª ½¨Õ¾¾­Ñé ²ß»®Ó¯Àû ËÑË÷ÓÅ»¯ ÍøÕ¾ÍÆ¹ã Ãâ·Ñ×ÊÔ´
ÍøÕ¾ÁªÃË ÁªÃËÐÂÎÅ ÁªÃ˽éÉÜ ÁªÃ˵ãÆÀ Íø×¬¼¼ÇÉ
ÐÐÒµ×ÊѶ Òµ½ç¶¯Ì¬ ËÑË÷ÒýÇæ ÍøÂçÓÎÏ· ÃÅ»§¶¯Ì¬ µç×ÓÉÌÎñ ¹ã¸æ´«Ã½
ÍøÂç±à³Ì Asp.Net±à³Ì Asp±à³Ì Php±à³Ì Xml±à³Ì Access Mssql Mysql ÆäËü
·þÎñÆ÷¼¼Êõ Web·þÎñÆ÷ Ftp·þÎñÆ÷ Mail·þÎñÆ÷ Dns·þÎñÆ÷ °²È«·À»¤
Èí¼þ¼¼ÇÉ ÆäËüÈí¼þ Word Excel Powerpoint Ghost Vista QQ¿Õ¼ä QQ FlashGet ѸÀ× Internet Explorer
ÍøÒ³ÖÆ×÷ FrontPages Dreamweaver Javascript css photoshop fireworks Flash
³ÌÐòÉè¼Æ Java¼¼Êõ C/C++ VB delphi
ÍøÂç֪ʶ ÍøÂçЭÒé ÍøÂ簲ȫ ÍøÂç¹ÜÀí ×éÍø·½°¸ Cisco¼¼Êõ
²Ù×÷ϵͳ Win2000 WinXP Win2003 Mac OS Linux FreeBSD
·µ»ØÊ×Ò³ |¹ØÓÚÎÒÃÇ | ÁªÏµÎÒÃÇ | ¸¶¿î·½Ê½ | ´´ÒµÁªÃË | ¼Û¸ñ×ÜÀÀ | ×ÊѶÖÐÐÄ | ÓÑÇéÁ´½Ó | ÍøÕ¾µØÍ¼ | ÕÐÏÍÄÉÊ¿ | RSS