手机网站登录模板,合肥 定制网站开发,昆山兼职做网站,业务网站风格模板在mfc开发过程中#xff0c;遇到了下拉框的两个问题#xff0c;现在记录一下
1、把下拉框点开显示不全我放进去的多条文本 解决办法#xff1a;把鼠标放到下拉框的倒三角去点一下#xff0c;鼠标就会变成双向箭头#xff0c;或者先选中一下下拉框再把鼠标移动到倒三角上去…在mfc开发过程中遇到了下拉框的两个问题现在记录一下
1、把下拉框点开显示不全我放进去的多条文本 解决办法把鼠标放到下拉框的倒三角去点一下鼠标就会变成双向箭头或者先选中一下下拉框再把鼠标移动到倒三角上去再点一下都可以之后会出现可以调整大小的八个点其中只有下面那条的中间的点是全黑色表示可以往下拖你就可以按照你需要的高度进行调整了
2、下拉框的宽度不够导致文本内容显示不完整 解决办法为了排版美观我的解决办法是改变了下拉框的宽度但是并不修改下拉框这个控件的宽度以最长的那条文本的宽度为准
// 创建设备上下文
CDC* pDC partsComboBox.GetDC();// 获取文本宽度
CSize textSize pDC-GetTextExtent(maxTxt);// 计算下拉框的宽度
int dropdownWidth textSize.cx;// 设置下拉框的宽度
partsComboBox.SetDroppedWidth(dropdownWidth - 70);// 释放设备上下文
partsComboBox.ReleaseDC(pDC);
3、控件自适应窗口 解决办法看以下代码以下方法有点BUG拖动窗口玩一下拖拽的频率太高了会导致崩掉而且像表格的单元格大小是不支持改变的只会改变表格的大小
在.h文件中声明void ResizeUI();
vectorCRect m_vec_rect_;在.cppBOOL dlg::OnInitDialog()
{CBCGPDialog::OnInitDialog();//获取区域CRect rect;GetWindowRect(rect);m_vec_rect_.push_back(rect);CWnd* pWnd GetWindow(GW_CHILD);//窗体 while(pWnd){pWnd-GetWindowRect(rect);m_vec_rect_.push_back(rect);pWnd pWnd-GetNextWindow();} }//添加修改大小的消息处理函数ON_WM_SIZE()
void dlg::OnSize(UINT nType, int cx, int cy)
{CBCGPDialog::OnSize(nType, cx, cy);if(nType ! SIZE_MINIMIZED){ResizeUI();}
}void dlg::ResizeUI()
{if (m_vec_rect_.size() 0){CRect rect;GetWindowRect(rect);ScreenToClient(rect);//第一个保存的是对话框的Rect CRect saveRect m_vec_rect_[0];//根据当前和之前保存的对话框的宽高求比例 float x rect.Width() * 1.0f / saveRect.Width();float y rect.Height() *1.0f/ saveRect.Height();int iSize m_vec_rect_.size();int idx 1;ClientToScreen(rect);CRect saveChild; CWnd* pWnd GetWindow(GW_CHILD); while(pWnd idx iSize) {saveChild m_vec_rect_[idx];//根据比例调整控件上下左右距离对话框的距离 saveChild.left rect.left (saveChild.left - saveRect.left)*x;saveChild.right rect.right (saveChild.right - saveRect.right)*x;saveChild.top rect.top (saveChild.top - saveRect.top)*y;saveChild.bottom rect.bottom (saveChild.bottom - saveRect.bottom)*y;ScreenToClient(saveChild);pWnd-MoveWindow(saveChild);pWnd pWnd-GetNextWindow();idx;}}
}