帮帮忙!如何在状态栏里显示鼠标在窗口中单击之后的位置以及其他信息!很着急,拜托!

bolin832 2002-11-19 04:25:26
SDI文档窗口已经被水平拆分成两个,上面的窗口是一个绘图区,现要实现在状态栏里显示出鼠标在绘图区单击(左键)后的位置及其他信息,怎样实现?谢谢!
...全文
52 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
zswzwy 2002-12-05
  • 打赏
  • 举报
回复
还不行呀!
zhouzcy 2002-12-05
  • 打赏
  • 举报
回复
先在字符串资源中加入ID_INDICATOR_XY X=9999,Y=9999
修改static UINT indicators[] =
{
ID_SEPARATOR, // status line indicator
ID_INDICATOR_XY,
ID_INDICATOR_CAPS,
ID_INDICATOR_NUM,
ID_INDICATOR_SCRL,
};
OnMouseMove中加入
char XY[8];
CStatusBar *statusbar =(CStatusBar*)::AfxGetMainWnd()->GetDescendantWindow(AFX_IDW_STATUS_BAR);
sprintf(XY,"X=%d,Y=%d",point.x,point.y);
statusbar->SetPaneText(1,XY);

添加消息映射在视图中
ON_UPDATE_COMMAND_UI(ID_INDICATOR_XY,OnUpdateXY)
afx_msg void OnUpdateXY(CCmdUI *pCmdUI);
void CTestView::OnUpdateXY(CCmdUI *pCmdUI)
{
pCmdUI->Enable(TRUE);
}


bolin832 2002-12-03
  • 打赏
  • 举报
回复
谢了,你只要详细的告诉我哪些代码加在哪里就可以了,我可以自己调试的!
zswzwy 2002-12-03
  • 打赏
  • 举报
回复
那完了我给你写一个吧。
bolin832 2002-12-03
  • 打赏
  • 举报
回复
谢谢,我试试
zswzwy 2002-12-03
  • 打赏
  • 举报
回复
主窗体中
static UINT indicators[] =
{
ID_SEPARATOR, // status line indicator
ID_INDICATOR_CAPS,
ID_INDICATOR_NUM,
ID_INDICATOR_SCRL,
ID_XY, //并注册它
};

在资源中的字符表中加入这个ID号,设置样式为0000X0000
在主窗体中加入一个字符串变量m_xy,并加入它的更新消息映射
pCmdUI->SetText(m_xy);
增加函数void SetPoint(long x,long y)
m_xy.format("%4dx%4d",x,y);

在View中
加入LButtonDown
((CMainFrame *)(AfxGetApp()->m_pMainWnd))->setpoint(point.x,point.y)

完成
zswzwy 2002-12-02
  • 打赏
  • 举报
回复
我的方法不行吗?你说说哪不行,什么也不说,怎么帮你呀!
bolin832 2002-12-02
  • 打赏
  • 举报
回复
不好意思,我这些都不太懂,因为我第一次接触程序
zswzwy 2002-12-02
  • 打赏
  • 举报
回复
还有,更新函数做对了吗?
zswzwy 2002-12-02
  • 打赏
  • 举报
回复
你按我的方法一步一步做,应该没错的。
你可以拦一下void SetPoint(long x,long y)函数
传进来的x,y 值,有不有值。
bolin832 2002-12-02
  • 打赏
  • 举报
回复
加进去之后根本没什么反应,就是说也没有实现捕捉鼠标的信息
zswking 2002-11-26
  • 打赏
  • 举报
回复
static UINT indicators[] =
{
ID_SEPARATOR, // status line indicator
ID_INDICATOR_CAPS,
ID_INDICATOR_NUM,
ID_INDICATOR_SCRL,
ID_XY, //并注册它
};

在资源中的字符表中加入这个ID号,设置样式为0000X0000
在主窗体中加入一个字符串变量m_xy,并加入它的更新消息映射
pCmdUI->SetText(m_xy);
增加函数void SetPoint(long x,long y)
m_xy.format("%4dx%4d",x,y);

在View中
加入LButtonDown
((CMainFrame *)(AfxGetApp()->m_pMainWnd))->setpoint(point.x,point.y)

完成
hua1111 2002-11-23
  • 打赏
  • 举报
回复
static UINT indicators[] =
{
ID_SEPARATOR, // status line indicator
IDS_POS, //add a ID,在string table中新建一个字符串资源
ID_INDICATOR_CAPS,
ID_INDICATOR_NUM,
ID_INDICATOR_SCRL,
};

—————————————————————————————————
┏━★━━◆━━★━┓
♂欢|◢CSDN◣|使♂        ▲自由保存帖子,浏览,关注检测
┃迎|◥论坛助手◤|用┃        ▲完善的CSDN客户端工具
┗━☆━━◇━━━☆┛       ▲自动添加签名......

让你更快,更爽,更方便地上CSDN...
http://www.csdn.net/expert/topic/573/573604.xml
http://www.chinaok.net/csdn/csdn.zip
zhaolaoxin 2002-11-20
  • 打赏
  • 举报
回复
m_wndStatusBar.SetPaneText(nIndex,strTemp);
kingcom_xu 2002-11-20
  • 打赏
  • 举报
回复
先把mainframe的m_wndStatusBar改为public....然后在view中包含mainframe的头文件

在你需要设置状态栏文字的时候..如下

((CMainFrame*)AfxGetMainWnd())->m_wndStatusBar.SetPaneText(0,"aa");

15,976

社区成员

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

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