mfc界面问题

待续_1006 2016-11-18 09:24:34
现有MFC单文档工程的视图类继承CScrollView
我目前需要在上面添加一些功能,主要是在视图中显示表格数据,我添加了一个类,继承CListCtrl,动态创建了一个表格,但是显示的表格大小怎么不是整个视图?下面还有一块空白部分
这是视图类
class CZoomView : public CScrollView
我在视图类中加的创建的listctrl的代码///中间为我所添加的内容////
void CZoomView::OnInitialUpdate()
{
CScrollView::OnInitialUpdate();

m_layout.cx = 2000;
m_layout.cy = 1000;

m_page.cx = m_layout.cx/2;
m_page.cy = m_layout.cy/2;
m_line.cx = m_layout.cx/50;
m_line.cy = m_layout.cy/50;
SetScrollSizes(MM_TEXT, m_layout, m_page, m_line);

m_bInitialSize = TRUE;

if (m_pdcMemory->GetSafeHdc() == NULL)
{
CClientDC dc(this);
OnPrepareDC(&dc);
m_pdcMemory->CreateCompatibleDC(&dc);

// makes bitmap same size as display window
CRect clientRect(0,0,0,0);
GetClientRect(clientRect);
if (m_pBitmap != NULL)
{
delete m_pBitmap;
m_pBitmap = NULL;
}
m_pBitmap = new CBitmap();
m_pBitmap->CreateCompatibleBitmap(&dc, clientRect.right,
clientRect.bottom);
}

////////////////////////////////////////////////////
CRect rect;
GetWindowRect(&rect);
rect.left = 0;
rect.top = 0;
rect.right = 1800;
rect.bottom = 700;
//虚拟列表,用于限制一次性限制多少数据,防止界面卡http://blog.csdn.net/milanleon/article/details/29195657 滚动条//WS_VSCROLL和WS_HSCROLL
g_pFlyCaptureView->m_userMamagerDada->Create(/*WS_CHILD|WS_VISIBLE|*/WS_BORDER|LVS_REPORT|LVIS_FOCUSED|WS_VSCROLL|WS_HSCROLL|LVS_SHOWSELALWAYS, rect, this, 1500);

//样式扩展
g_pFlyCaptureView->m_userMamagerDada->SetExtendedStyle(LVS_SHOWSELALWAYS|LVS_EX_CHECKBOXES|LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_GRIDLINES);
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
}
列表数据是通过一个对话框的数据查询得来
问题1 为什么会出现我截图的这种情况,这个视图类原来是显示图片的,但是没问题啊,图片是被添加在整个视图类中,而且大小缩放都可以啊!
问题 2 我是对话框查询数据,然后再对话框类中为listctrl加载数据,如果listctrl显示之前,视图中有图片,我该如何刷新啊,对话框按钮的消息处理中调用视图类的updatewindow貌似没用呢
...全文
313 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
待续_1006 2016-11-22
  • 打赏
  • 举报
回复
引用 4 楼 VisualEleven 的回复:
View类的OnSize()函数中MoveWindow/SetWindowPos调整你的CListCtrl的位置。 你创建工程的时候可以将你的View基类指定为CListView可能更好一点~
现在技能的继承的是csrollview,直接手动更改CListView可以,怕对别的业务有影响!因为本身这个VIEW是显示图片来用的
Eleven 2016-11-21
  • 打赏
  • 举报
回复
View类的OnSize()函数中MoveWindow/SetWindowPos调整你的CListCtrl的位置。 你创建工程的时候可以将你的View基类指定为CListView可能更好一点~
洗洗睡去 2016-11-19
  • 打赏
  • 举报
回复
在视图类的OnSize里 把list movewidow一下
三岁、就很帅 2016-11-18
  • 打赏
  • 举报
回复
你需要设置你的list控件的位置 setwindowpos()
void CpreviewDlg::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
// TODO: 在此处添加消息处理程序代码
CRect rc;
GetClientRect(&rc);
const int width = 96;
int y = rc.Height()/2 + 0;
CWnd *pWnd = GetDlgItem(IDC_STATIC_SCREEN);//你的listcontrl的位置
if (pWnd && IsWindow(pWnd->m_hWnd))
{
pWnd->SetWindowPos(NULL, cx - 120,cy/2 - 50, 90, 90, NULL);//位置你自己调整
}
}
oyljerry 2016-11-18
  • 打赏
  • 举报
回复
设置ListCtrl的父为view等。或者自己调整位置大小。MoveWindow

15,979

社区成员

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

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