如何实现对话框的可调节大小? 请问如何实现对话框大小的动态调节啊?是在ONSIZE函数中加入一些代码么? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 程序里面调节可以用SetWindowPos(...)用程序的人可以调节设置对话框属性 首先要使对话框可以更改大小,要改对话框的属性.在对话框资源上右键-->properties->style 属性页里的border选为resizing.这时当对话框运行时,把鼠标放在边缘上就会出现调节大小的鼠标样式.这时当拉伸对话框时,大小就会变.因为没有写相应的处理函数.若对话框里有控件,控件并不会随对话框大小的改变而做相应的调整.当对话框变为可调时,每当对话框大小改变时,都会触发OnSIze函数,如果没有这个函数,可以通过Winzard添加wm_size事件即可.如果要更改对话框变化时控件的位置,就要在OnSize函数里做相应的处理.可以通过GetClientRect获得当前对话框的客户区大小.最左上方是(0,0)点.如果要更改某个控件的大小,如果控件有相应的Control对象,直接调用Control对象的MoveWindwo函数即可,参数就是你想让控件去的位置.如果没有控件Control对象可以通过GetDlgItem(id),获得控件句柄,然后调用MoveWindow函数.比较麻烦的是计算相应的位置.有时后对话框上有自己定义的一些从CWnd派生来的对象,这时首先要写这个对象的OnSize函数.当调用这个对象MoveWindow方法就会触发定义好的OnSize函数.举一个CPopertySheet的例子几个对象 CPropertySheet m_sheet; CLogPropertyPage m_LogSystem; //System Log; CLogPropertyPage m_LogClientOne; // Log about ClientOne; CLogPropertyPage m_LogClientTwo; //Log about ClientTwo; CLogPropertyPage m_LogTimer;//Log about timer ;m_sheet.AddPage(&m_LogSystem); m_sheet.AddPage(&m_LogTimer); m_sheet.AddPage(&m_LogClientOne); m_sheet.AddPage(&m_LogClientTwo); m_sheet.Create(this, WS_CHILD | WS_VISIBLE, WS_EX_CONTROLPARENT); RECT rect; this->GetWindowRect(&rect); int width =rect.right-rect.left; int height = rect.bottom - rect.top; m_sheet.MoveWindow(0,125,width,height);OnSize函数里m_sheet.MoveWindow( margin,ctrlheight+margin*2, rt.Width()-margin*2, rt.Height()-ctrlheight-margin*2 ); CTabCtrl* ptab =m_sheet.GetTabControl(); ptab->MoveWindow( 0,0, rt.Width()-margin*2, rt.Height()-ctrlheight-margin*2); 第二句话就会调用m_LogSystem的OnSize函数. 输出文本都有什么函数,怎么控制输出质量 怎么实现sleep函数一样的功能同时程序不睡眠? 类中添加静态成员函数的错误 这个u错误是什么意思? [求教]组合的算法(C/C++) 关于VC CDialog 的问题 我这个API函数没用对?strlong = GetDlgItemText(Form2.hwnd, nID, server_address, 256) 如果VC里有ASM文件,编译需要什么补丁吧,我下载的源程序编译提示一大堆错误。 大家来找茬“………………” 如何获得cpu信息? 这样的内存泄漏该怎样解决? 求VC++网络高级编程 随书代码
用程序的人可以调节设置对话框属性
CPropertySheet m_sheet; CLogPropertyPage m_LogSystem; //System Log;
CLogPropertyPage m_LogClientOne; // Log about ClientOne;
CLogPropertyPage m_LogClientTwo; //Log about ClientTwo; CLogPropertyPage m_LogTimer;//Log about timer ;m_sheet.AddPage(&m_LogSystem);
m_sheet.AddPage(&m_LogTimer);
m_sheet.AddPage(&m_LogClientOne);
m_sheet.AddPage(&m_LogClientTwo);
m_sheet.Create(this, WS_CHILD | WS_VISIBLE, WS_EX_CONTROLPARENT); RECT rect;
this->GetWindowRect(&rect);
int width =rect.right-rect.left;
int height = rect.bottom - rect.top;
m_sheet.MoveWindow(0,125,width,height);OnSize函数里m_sheet.MoveWindow( margin,ctrlheight+margin*2, rt.Width()-margin*2, rt.Height()-ctrlheight-margin*2 );
CTabCtrl* ptab =m_sheet.GetTabControl();
ptab->MoveWindow( 0,0, rt.Width()-margin*2, rt.Height()-ctrlheight-margin*2);
第二句话就会调用m_LogSystem的OnSize函数.