龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VC开发 >

VC中自动改变控件位置和大小的对话框类(4)

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
// Load图标 m_bmpSizeIcon.LoadOEMBitmap(OBM_SIZE); m_bmpSizeIcon.GetBitmap(m_bitmap); // 创建显示图标的静态控件并放在对话框右下角 m_wndSizeIcon.Create(NULL, WS_CHILD | WS_VISIBLE

 // 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();

精彩图集

赞助商链接