一个按钮,一个编辑框
1.点一下按钮,编辑框中的数字不断增加显示,再点一下,停止;
2.鼠标在按钮范围内则数字不断增加显示,范围外就停止;这些问题好象很简单,但我做了两天也没出来,是个菜鸟,在这里求教一下;
1.这些应该有个循环,但我跳不出死循环,是不是应该用线程来写,在线程里用什么来作为判断条件结束呢?
2.在按钮范围内判断是不是用WM_MOUNSEMOVE?以下是我写的关于鼠标移动处理的列子,可就是不能响应,问题在哪里啊?
void CTestDlg::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CRect rc;
GetDlgItem(IDC_BUTTON1)->GetWindowRect(&rc);
ScreenToClient(&rc);
if(rc.PtInRect(point))
{GetDlgItem(IDC_EDIT1)->SetWindowText(chn1);}
CDialog::OnMouseMove(nFlags, point);
}问题貌似很多......谢谢大家了
1.点一下按钮,编辑框中的数字不断增加显示,再点一下,停止;
2.鼠标在按钮范围内则数字不断增加显示,范围外就停止;这些问题好象很简单,但我做了两天也没出来,是个菜鸟,在这里求教一下;
1.这些应该有个循环,但我跳不出死循环,是不是应该用线程来写,在线程里用什么来作为判断条件结束呢?
2.在按钮范围内判断是不是用WM_MOUNSEMOVE?以下是我写的关于鼠标移动处理的列子,可就是不能响应,问题在哪里啊?
void CTestDlg::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CRect rc;
GetDlgItem(IDC_BUTTON1)->GetWindowRect(&rc);
ScreenToClient(&rc);
if(rc.PtInRect(point))
{GetDlgItem(IDC_EDIT1)->SetWindowText(chn1);}
CDialog::OnMouseMove(nFlags, point);
}问题貌似很多......谢谢大家了
解决方案 »
- 我有很多问题关于vc的问题请教大家
- 如何得到任务栏的高度?谢谢
- 请问,现有一二次开发控件,想在视图中显示它并保持和视图大小同时变化,怎么弄?
- 关于数据库连接方面的!
- 请问哪里有CEB格式的开发资料?
- ado调不过去了,帮忙看一下。
- 请教高手:DDK程序编译成为。SYS文件后,如何装载进系统,急
- 硬盘的C区读不出来,下载了easyRecovery来恢复却不好用,还有啥好方法或好软件,请帮忙提供一下下载网址或软件名供搜索用
- 受不了了,用过WTL的进来帮个忙
- 怎样知道我的电脑上没上网?要编程实现。
- 关于OnTimer(UINT nIDEvent)问题!
- 请能给出答案的朋友给一下答案,将有20分作为回报
1.如果用户第一次点击按钮,就SetTimer设置定时器,第二次点击时,用KillTimer消毁定时器。
在处理OnTimer消息时,增加文本框字符串的内容
第二个问题:
2.开一个线程,将按钮的句柄作为参数传给线程函数。线程函数中增加一个BOOL判断鼠标是否在按钮上,每隔一秒钟监视鼠标的位置,当鼠标位于按钮中时,开始增加文本框字符串长度,鼠标离开按钮时,将BOOL值设置为FALSE,停止对按钮文本赋值
BOOL m_bFlag;在OnMouseMove
CRect rc;
GetDlgItem(IDC_BUTTON1)->GetWindowRect(&rc);if(point.x<rc.left||point.x>rc.right||point.y<rc.top||point.y>rc.bottom) //此处判断按钮是否在BUTTON内
m_bFlag = FALSE;
else
m_bFlag = TRUE;在ONBUTTON里
if(TRUE == m_bFlag)
SetTimer(1,100,NULL);在OnTimer里实现 数的++显示就OK
{
// TODO: Add your message handler code here and/or call default
CRect rc;
GetDlgItem(IDC_BUTTON1)->GetWindowRect(&rc); ////
ScreenToClient(&rc); ////
if(rc.PtInRect(point))
{GetDlgItem(IDC_EDIT1)->SetWindowText(chn1);}
CDialog::OnMouseMove(nFlags, point);
}
你可以打断点跟踪下 看rc里面的值是不是你想要的
如果不是你把ScreenToClient那行删除在试试