如何让滑动块slider控件支持WM_LBUTTONUP并能使用对话框中的变量啊!

shally5 2005-05-08 05:47:39
我按照webber84(***闭关修炼中***)所说
想让对话框中的slider控件支持WM_LBUTTONUP消息:
方法如下:
"NM_RELEASEDCAPTURE是slider控件发送给父窗口的通知消息,它表示slider中发生了一些事件父窗口可能关心的事情,提示父窗口进行相应的处理。而像WM_MOUSEMOVE这种消息一般你都不会处理的,所以就没有必要发送到父窗口去了。
  如果你想自己处理这些消息,可以派生一自己的slider来处理:在insert中选new class,在base class中选CSliderCtrl,创建一个派生类,比如叫CMySliderCtrl。在对话框上放一个slider控件,在classwizard中选member variables页,点add variable给slider添加一个control类型的成员变量(variable type选CMySlider)。这样对话框中的sliber就用你派生的类来创建了,你可以在CMySlider处理各种消息。"

但是在这个CMySlider类中加入了WM_LBUTTONUP消息支持后
如何向对话框中的EDIT控件赋值呢?
我用如下方法编译通过,但是赋值时出错
void CMySlider::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CTestDLG *aaa = new CTestDLG();
//CTestDLG *aaa;
aaa->m_AlphaVal=20; //m_AlphaVal是EDIT控件变量
aaa->UpdateData();
CSlider::OnLButtonUp(nFlags, point);
}

...全文
117 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
boreboluomi 2005-05-27
  • 打赏
  • 举报
回复
再有一点,就是
将拖到对话框中的slider控件设为CMySlider类型。因为这样才能响应CMySlider::OnLButtonUp。
可以这样进行:打开对话框,然后按住Ctrl键,用鼠标双击Slider控件,会谈出一个对话框。
在Member variable name中为控件取一个名字。
在Category中选择Control。
在Variable Type中选择CMySlider
boreboluomi 2005-05-27
  • 打赏
  • 举报
回复
还有,
要在CTestDlg类定义前加上 #include "MySlider.h"即:在TestDlg.h文件上方。
在CMySlider定义前加上 #include "TestDlg.h"
boreboluomi 2005-05-27
  • 打赏
  • 举报
回复
void CMySlider::OnLButtonUp(UINT nFlags, CPoint point)
{
CTestDLG* aaa = (CTestDlg*)GetParent();
aaa->m_iAlpha = 20; //m_AlphaVal是EDIT控件变量
aaa->UpdateData(FALSE);
CSliderCtrl::OnLButtonUp(nFlags, point);
}
注意:
1. CTestDLG* aaa = new CTestDLG();并不是得到了SliderCtrl的父窗口(即运行时显示的对话框),得到的只是一个与父窗口同类型的窗口指针,它并没有真正属于某个窗口。
(CTestDLG*)GetParent()返回的是父窗口(即运行时显示的对话框)的指针。
2. UpdateData()、UpdataData(TRUE)、UpdateData(FALSE)的区别:
UpdateData()与UpdateData(TRUE)完全一样,是将显示在控件上的值付给相关联的变量。
UpdateData(FALSE)是将变量值由相关联的控件显示出来。
m12345 2005-05-23
  • 打赏
  • 举报
回复
看看
shally5 2005-05-13
  • 打赏
  • 举报
回复
还没解决呢?哎!
shally5 2005-05-09
  • 打赏
  • 举报
回复
UP
shally5 2005-05-09
  • 打赏
  • 举报
回复
oyljerry(【勇敢的心】→ ㊣Despair,Game Over㊣) :
能详细说一下吗?
多谢啦!

oyljerry 2005-05-08
  • 打赏
  • 举报
回复
获得对话框对象,然后更新
oyljerry 2005-05-08
  • 打赏
  • 举报
回复
控件的变量是否关联
shally5 2005-05-08
  • 打赏
  • 举报
回复
如何作啊!我是新手!MFC我晕啊!
jerry 2005-05-08
  • 打赏
  • 举报
回复
void CMySlider::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CTestDLG *aaa = new CTestDLG();
//CTestDLG *aaa;
aaa->m_AlphaVal=20; //m_AlphaVal是EDIT控件变量
aaa->UpdateData();
CSlider::OnLButtonUp(nFlags, point);
}

这样写不行, 更新其它控件应该由父窗口来完成
可以发消息通知父窗口

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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