新手上路
- 积分
- 26
- 金钱
- 26
- 注册时间
- 2019-8-21
- 在线时间
- 7 小时
|
1金钱
创建了一个界面,里面的控件比较多一页放不下。想使用SCROLLBAR 控件,可以上下滑动。
参照官方的 ScrollbarMove 例程,把所有控件地址存入一个数组,当检测到SCROLLBAR 控件
值改变时,在 for 循环里使用 WM_MoveWindow 移动所有控件的位置。
和其它控件一样采用间接创建 SCROLLBAR 控件方式(垂直)。
但是,滚动条触摸后,系统就死机。
请问这可能是哪里的问题 ?
回调函数如下
case ID_SCROLLBAR_0: // Notifications sent by 'SCROLLBAR'
switch (NCode) {
case WM_NOTIFICATION_CLICKED:
break;
case WM_NOTIFICATION_RELEASED:
break;
case WM_NOTIFICATION_SCROLLBAR_ADDED:
break;
case WM_NOTIFICATION_VALUE_CHANGED:
hItem1 = WM_GetDialogItem(pMsg->hWin, ID_SCROLLBAR_0);
WM_GetScrollState(hItem1, &ScrollState);
if ( _y != ScrollState.v )
{
int y;
for (y=1; y< ITEM_MAX; y++)
{
WM_MoveWindow(hItem[y], 0, _y - ScrollState.v );
}
_y = ScrollState.v;
}
break;
}
break;
|
最佳答案
查看完整内容[请看2#楼]
用 SCROLLBAR_CreateAttached() 函数和 SCROLLBAR_CreateIndirect() 函数分别试过了,都不行。
后来使能了窗口的内存设备,还是不行。再后来尝试了只移动最后一个控件,似乎所有的控件都会跟着移动,
但是有重影。我用的时 F103 怀疑内存不够。
现在放弃了这种方式,改用翻页方式解决这个问题。
|