社区
界面
帖子详情
有滚动条的ListView控件movewindow出现的问题。
whiteeyes
2002-12-13 12:04:45
有滚动条的ListView控件,初始在客户端的某一部分,我用movewindow想让他到客户端的另一部分,结果是铺满了整个客户端,why??
我怀疑是滚动条的缘故,请问怎么解决?
...全文
184
11
打赏
收藏
有滚动条的ListView控件movewindow出现的问题。
有滚动条的ListView控件,初始在客户端的某一部分,我用movewindow想让他到客户端的另一部分,结果是铺满了整个客户端,why?? 我怀疑是滚动条的缘故,请问怎么解决?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
whiteeyes
2002-12-14
打赏
举报
回复
兄弟,真是太感谢你了!
whiteeyes
2002-12-14
打赏
举报
回复
谢谢!呵呵!
hnyyy
2002-12-13
打赏
举报
回复
rect.InflateRect(-20,-20);
改成
rect.DeflateRect(20,20);
rect.NormalizeRect();
试试。
whiteeyes
2002-12-13
打赏
举报
回复
哦,我的是一个以listctrl为父类的子类sortListctrl.
程序初始化时即调用Onsize事件:
void CHisPacketView::OnSize(UINT nType, int cx, int cy)
{
CFormView::OnSize(nType, cx, cy);
// TODO: Add your message handler code here
//CFormView::ShowScrollBar(SB_VERT,FALSE);
//CFormView::ShowScrollBar(SB_HORZ,FALSE);
if (GetSafeHwnd())
{
if (m_HisSortListCtrl.GetSafeHwnd())
{
CRect rect;
GetClientRect(&rect);
rect.InflateRect(-20,-20);
m_HisSortListCtrl.MoveWindow(&rect);
}
}
}
运行好好的。
执行一些操作,主要是对listCtrl进行AddItem操作后,再Onsize,就变成上面说的了。
这个是该子类的函数
int CSortListCtrl::AddItem( LPCTSTR pszText, ... )
{
const int iIndex = InsertItem( GetItemCount(), pszText );
LPTSTR* arrpsz = new LPTSTR[ m_iNumColumns ];
arrpsz[ 0 ] = new TCHAR[ lstrlen( pszText ) + 1 ];
(void)lstrcpy( arrpsz[ 0 ], pszText );
va_list list;
va_start( list, pszText );
for( int iColumn = 1; iColumn < m_iNumColumns; iColumn++ )
{
pszText = va_arg( list, LPCTSTR );
ASSERT_VALID_STRING( pszText );
VERIFY( CListCtrl::SetItem( iIndex, iColumn, LVIF_TEXT, pszText, 0, 0, 0, 0 ) );
arrpsz[ iColumn ] = new TCHAR[ lstrlen( pszText ) + 1 ];
(void)lstrcpy( arrpsz[ iColumn ], pszText );
}
va_end( list );
VERIFY( SetTextArray( iIndex, arrpsz ) );
return iIndex;
}
hnyyy
2002-12-13
打赏
举报
回复
不够详细,是说ListCtrl吗?
应该是m_ListCtrl.MoveWindow( rect );中的rect不对。
我的ListCtrl有滚动条时,使用MoveWindow不见有问题。
hnyyy
2002-12-13
打赏
举报
回复
朋友,我想我还是够义气吧?
帮你找出来了,不过还存在的其它问题你别问我了,自己找吧!
BOOL CRightPaneFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
// TODO: Add your specialized code here and/or call the base class
m_pCapSplitterView = new CCapSplitterView;
((CView*) m_pCapSplitterView)->Create(NULL, NULL, 0L, CFrameWnd::rectDefault, this, VIEW_CapPacketView, pContext);
SetActiveView(m_pCapSplitterView);
m_nCurrentViewID = VIEW_CapPacketView;
m_pCapSplitterView->ShowWindow(SW_SHOW);
m_pCapSplitterView->SetDlgCtrlID(AFX_IDW_PANE_FIRST);
m_nCurrentViewID = VIEW_CapPacketView;
m_pSplitterView = new CSplitterView;
((CView*)m_pSplitterView)->Create(NULL, NULL, 0L, CFrameWnd::rectDefault, this, VIEW_SPLITTER, pContext);
m_pSplitterView->ShowWindow(SW_HIDE);
m_pSplitterView->SetDlgCtrlID(VIEW_SPLITTER);
RecalcLayout();
return TRUE;
}
void CRightPaneFrame::SwitchToView(UINT nView)
{
CView* pOldActiveView = NULL;
if(m_nCurrentViewID == VIEW_CapPacketView)
pOldActiveView = (CView*) m_pCapSplitterView;
else
pOldActiveView = (CView*) m_pSplitterView;
CView* pNewActiveView = NULL;
switch (nView)
{
case VIEW_CapPacketView:
pNewActiveView = (CView*) m_pCapSplitterView;
break;
case VIEW_SPLITTER:
pNewActiveView = (CView*) m_pSplitterView;
break;
}
if (pNewActiveView)
{
// don't switch when views are the same
if (pOldActiveView == pNewActiveView) return;
SetActiveView(pNewActiveView);
pNewActiveView->ShowWindow(SW_SHOW);
pNewActiveView->SetDlgCtrlID(AFX_IDW_PANE_FIRST);
pOldActiveView->ShowWindow(SW_HIDE);
pOldActiveView->SetDlgCtrlID(m_nCurrentViewID);
m_nCurrentViewID = nView;
RecalcLayout();
}
}
whiteeyes
2002-12-13
打赏
举报
回复
我看看,不会是这个原因吧?
你多运行几次,呵呵.
我这边也改一下.
hnyyy
2002-12-13
打赏
举报
回复
还是不行,总之不是那个ListCtrl的原因是肯定的。
hnyyy
2002-12-13
打赏
举报
回复
上面只是将你的代码简单改了一下,试了没问题。你自己再把代码仔细改改了。
hnyyy
2002-12-13
打赏
举报
回复
经查,你的代码应该这样:
void CCapSplitterView::OnSize(UINT nType, int cx, int cy)
{
CView::OnSize(nType, cx, cy);
// TODO: Add your message handler code here
CRect r;
GetClientRect(r);
cx = r.Width();
cy = r.Height();
m_wndSplitter.MoveWindow(-2,-2,cx+4,cy+4);
m_wndSplitter.SetRowInfo(0, cy-(cy/4), 0);
m_wndSplitter.SetRowInfo(1, cy/4, 20);
m_wndSplitter.RecalcLayout();
/*
m_wndSplitter.MoveWindow(-2,-2,cx+4,cy+4);
m_wndSplitter.SetRowInfo(0, cy-(cy/4), 0);
m_wndSplitter.SetRowInfo(1, cy/4, 20);
m_wndSplitter.RecalcLayout();
*/
}
whiteeyes
2002-12-13
打赏
举报
回复
还是不行!楼上,你可以把邮箱地址短消息给我吗?这个问题困饶我好久了,我把程序给你发去你帮我看看,
Window
s编程入门-窗口
控件
-资源操作
本文详细介绍了
Window
s编程中的
控件
概念,如窗口
控件
、标准
控件
和通用
控件
,涉及消息传递机制,如WM_COMMAND和WM_NOTIFY,以及窗口操作函数如Move
Window
和Get
Window
Text。通过示例展示了如何创建、添加
控件
和处理
控件
事件。,
emWin
控件
深度解析:
滚动条
、滑块、微调框与文本
控件
的实战应用
本文深入解析emWin中
滚动条
(SCROLLBAR)、滑块(SLIDER)、微调框(SPINBOX)和文本(TEXT)四大高频
控件
的设计机制与工程应用。重点涵盖事件驱动模型、状态管理、API参数映射(如范围/刻度协同、数值同步)、皮肤定制、多模式交互(步进/编辑模式)、容器联动及协同调试技巧。内容聚焦嵌入式GUI开发中的真实
问题
,如数值不同步、滚动失配、内存泄漏与触摸体验优化,适用于资源受限的MCU平台。
组合数C++描述-下载即用.zip
源码直接下载地址: https://pan.quark.cn/s/3604547e4022 在N个元素中选择M个元素的所有组合数C++实现思路:首位元素可从N个元素中任意选取,第二位元素只能从第一位的后续元素中选择,即第M位元素只能从第M-1位的后续元素中选择,每个位置都进行递归处理一次
INA226测试程序参考
代码转载自:https://pan.quark.cn/s/2af55a97eb0f **INA226测试程序参考** 在电子工程和嵌入式系统开发领域,INA226被认为是一款高精度且低功耗的电流与电源监控器,其应用范围广泛,涵盖电池管理系统、电源路径管理以及智能能源监测等多个方面。该芯片由德州仪器(Texas Instruments)负责生产,能够提供精确的电流和电压测量结果,并具备灵活的配置选择。 **INA226芯片功能详解** INA226的核心特性包括: 1. **双向电流测量**:能够测量流经设备的正向电流和反向电流。 2. **高压和低压测量**:支持高达60V的电压测量,同时可以测量从微安到安培范围内的电流。 3. **内置模拟电路**:集成了一个精密运算放大器、一个电流检测放大器以及一个高精度电压基准。 4. **I2C接口**:通过标准的I2C接口与微控制器进行通信,便于读取测量数据。 5. **多种配置模式**:允许选择不同的电流和电压范围,以适应不同应用场景的需求。 6. **低功耗**:在待机状态下,功耗非常低,适合用于电池供电的设备。 **平台IO与ESP8266开发环境** `PlatformIO`是一个开源的跨平台集成开发环境,专注于物联网(IoT)项目的开发。它整合了构建系统、库管理和设备支持,显著简化了嵌入式开发流程。`ESP8266`是由乐鑫科技推出的一款低成本且高性能的Wi-Fi微控制器,常用于智能家居和物联网领域。 在`PlatformIO`中配置和编写针对`ESP8266`的INA226测试程序,需要遵循以下步骤: 1. **安装PlatformIO**:在IDE(例如Visual Studio Code、Atom等...
界面
15,976
社区成员
115,866
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章