有关VC++对话框,想把对话框做得大一些,其中的按扭也随之进行美观排列;

baiyizhujian 2009-03-14 04:51:56
我新建了一个对话框,有一个静态文本和九个按扭。
我想将对话框做大一些,而这些控件也可以随之排列的更加美观一些。
希望大家给我提供相应的算法或者类;
...全文
550 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
computerprogramme 2010-10-29
  • 打赏
  • 举报
回复
不错,用了
思危 2009-03-14
  • 打赏
  • 举报
回复
就是响应WM_SIZE消息,然后按照你希望的布局重新用MoveWindow把对话框上面的控件重新调整下位置和大小
Fireway2008 2009-03-14
  • 打赏
  • 举报
回复
以上代码 当对话框最大化的时候,尺寸改变,那么响应控件也会自动调整位置和大小。
不知道是不是你希望达到的目的?
Fireway2008 2009-03-14
  • 打赏
  • 举报
回复
根据按钮控件ID不同进行调整,响应WM_SIZE
1. 先声明一个成员
CRect m_rect;//用于保存对话框大小变化前的大小

2. 初始化的时候获取对话框区域
BOOL CTestDlg::OnInitDialog()
{
CDialog::OnInitDialog();

// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
//获取对话框创建时的大小:
GetClientRect(&m_rect);
……

}

3.自定义一个函数,根据控件ID进行处理
void CTestDlg::ChangeSize(UINT nID, int x, int y)
{
CWnd *pWnd;
pWnd = GetDlgItem(nID); //获取控件句柄
if(pWnd)//判断是否为空,因为对话框创建时会调用此函数,而当时控件还未创建
{
CRect rect; //获取控件变化前大小
pWnd->GetWindowRect(&rect);
ScreenToClient(&rect);//将控件大小转换为在对话框中的区域坐标
// cx/m_rect.Width()为对话框在横向的变化比例
rect.left = rect.left * x/ m_rect.Width();/**//////调整控件大小
rect.right = rect.right* x/ m_rect.Width();
rect.top = rect.top * y/ m_rect.Height();
rect.bottom= rect.bottom* y/ m_rect.Height();
pWnd->MoveWindow(rect);//设置控件大小
}

}

void CTestDlg::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
//进行条件判断,不然窗口最小化后再恢复就产生BUG(整数除以0)
if(nType != SIZE_MINIMIZED )

{
ChangeSize(IDC_BUTTON1, cx, cy);
ChangeSize(IDC_BUTTON2, cx, cy);
ChangeSize(IDC_BUTTON3, cx, cy);
ChangeSize(IDC_BUTTON4, cx, cy);
GetClientRect(&m_rect);//将变化后的对话框大小设为旧大小,否则无法还原控件原始位置
}

}
mandysss 2009-03-14
  • 打赏
  • 举报
回复
处理对话框的WM_SIZE,然后用MoveWindow调整它上面的控件
cnzdgs 2009-03-14
  • 打赏
  • 举报
回复
简单情况可以在对话框资源上处理,把对话框字体设置改一下,再调整空间大小和位置。也可以用程序对每个控件单独SetFont和MoveWindow。
lwx300 2009-03-14
  • 打赏
  • 举报
回复
vc size 控件
http://download.csdn.net/source/1059066

对话框控件随窗口自动调整大小、位置的类
http://download.csdn.net/source/1070512
cppzhentan 2009-03-14
  • 打赏
  • 举报
回复
MoveWindow, 获取窗口的大小,如果BUTTON靠左边, 那么获取改变后的窗口大小, 移动到Rect.left - 3; // 3是代表BUTTON与窗口左边的距离

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧