三四天的问题,今天我能得到满意的答案么

keansun 2003-09-29 01:41:15
在同一窗体中,绘制两个矩形,如何使鼠标移动到各自矩形上时显示不同的Tip。
1。注意,这两个矩形不存在ID资源号。
2。请不要告诉我在WM_MOUSEMOVE中处理即可,如果你实验了,你会发现,从一个矩形上移动到另一个时,Tip不会及时更改;
3。也不要简单告诉我更改DelayTime就行了,因为改短了会使Tip频繁闪动。
4。而且这个Tip也不会像工具栏上的一样,显示一会就消失,那么Destroy它么,你试过这样做么?
感谢你看这张帖子,我经常会积极回答其它人的问题,虽然我只是菜鸟一只,我也希望能从你那里得到解决的方案。
虽然我像多给点分,但是我做的虽然不少,得到的却不多,所以穷,但是我不会使热心的人像我一样失望的。
...全文
70 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
keansun 2003-09-29
  • 打赏
  • 举报
回复
我试试看
wuxfBrave 2003-09-29
  • 打赏
  • 举报
回复
/////////////////////////////////////////////////////////////////////////////
// CMy22View message handlers
BOOL CMy22View::OnToolTipText(UINT id, NMHDR * pNMHDR, LRESULT * pResult)
{
CPoint ptCursorPos;
VERIFY(::GetCursorPos(&ptCursorPos));
ScreenToClient(&ptCursorPos);

CRect rcClient;
GetClientRect(&rcClient);

TOOLTIPTEXT* pTTT = (TOOLTIPTEXT*)pNMHDR;
pTTT->szText[0] = '\0';

if (!rcClient.PtInRect(ptCursorPos))
return FALSE;

TOOLTIPTEXTA* pTTTA = (TOOLTIPTEXTA*)pNMHDR;
TOOLTIPTEXTW* pTTTW = (TOOLTIPTEXTW*)pNMHDR;

// m_strInfoText.Empty();
// m_pLastHitItem->GetInfoText(m_strInfoText);
//
if (m_nLastHit == 0)
m_strInfoText = "rect 1";
else if (m_nLastHit == 1)
m_strInfoText = "rect 2";

if (m_strInfoText.IsEmpty())
return FALSE;

int nStrLen = 80;
LPCTSTR lpszInfoText = m_strInfoText.GetBuffer(nStrLen);

#ifndef _UNICODE
if (pNMHDR->code == TTN_NEEDTEXTA)
lstrcpyn(pTTTA->szText, lpszInfoText, nStrLen);
else
_mbstowcsz(pTTTW->szText, lpszInfoText, nStrLen);
#else
if (pNMHDR->code == TTN_NEEDTEXTA)
_wcstombsz(pTTTA->szText, lpszInfoText, nStrLen);
else
lstrcpyn(pTTTW->szText, lpszInfoText, nStrLen);
#endif
*pResult = 0;

m_strInfoText.ReleaseBuffer();

return TRUE;
}

BOOL CMy22View::PreTranslateMessage(MSG* pMsg)
{
if (::IsWindow(m_toolTip.m_hWnd) && pMsg->hwnd == m_hWnd)
{
switch(pMsg->message)
{
case WM_LBUTTONDOWN:
case WM_MOUSEMOVE:
case WM_LBUTTONUP:
case WM_RBUTTONDOWN:
case WM_MBUTTONDOWN:
case WM_RBUTTONUP:
case WM_MBUTTONUP:
m_toolTip.RelayEvent(pMsg);
break;
}
}

return CView::PreTranslateMessage(pMsg);
}

int CMy22View::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;

EnableToolTips(TRUE);

CRect rcTool(0, 0, 1000, 1000);

if (m_toolTip.Create(this, TTS_ALWAYSTIP)
&& m_toolTip.AddTool(this, LPSTR_TEXTCALLBACK, &rcTool, TOOLTIP_ID) )
{
m_toolTip.SendMessage(TTM_SETMAXTIPWIDTH, 0, SHRT_MAX);
m_toolTip.SendMessage(TTM_SETDELAYTIME, TTDT_AUTOPOP, SHRT_MAX);
m_toolTip.SendMessage(TTM_SETDELAYTIME, TTDT_INITIAL, 200);
m_toolTip.SendMessage(TTM_SETDELAYTIME, TTDT_RESHOW, 200);
}

return 0;
}

void CMy22View::OnMouseMove(UINT nFlags, CPoint point)
{
static CRect rc(1, 1, 20, 20), rc2(50, 50, 70, 70);

int nHit = -1;
if (rc.PtInRect(point))
nHit = 0;
if (rc2.PtInRect(point))
nHit = 1;

if (nHit == -1 || m_nLastHit != nHit)
m_toolTip.Activate(FALSE);
else
{
CRect rcTool(-10, -10, 10, 10);
rcTool.OffsetRect(point);

m_toolTip.SetToolRect(this, TOOLTIP_ID, &rcTool);
m_toolTip.Activate(TRUE);
}

m_nLastHit = nHit;

CView::OnMouseMove(nFlags, point);
}
wuxfBrave 2003-09-29
  • 打赏
  • 举报
回复
void CMy22View::OnDraw(CDC* pDC)
{
CMy22Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);

pDC->Rectangle(1, 1, 20, 20);

pDC->Rectangle(50, 50, 70, 70);

// TODO: add draw code for native data here
}
wuxfBrave 2003-09-29
  • 打赏
  • 举报
回复
添加消息映射
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
ON_NOTIFY_EX(TTN_NEEDTEXTW, 0, OnToolTipText)
ON_NOTIFY_EX(TTN_NEEDTEXTA, 0, OnToolTipText)
添加成员变量
CString m_strInfoText;
CToolTipCtrl m_toolTip;
int m_nLastHit;
重写 BOOL PreTranslateMessage(MSG* pMsg);
qwedcxza 2003-09-29
  • 打赏
  • 举报
回复
另外我想告诉你的是,像这样属于软件设计思路而非具体方法的问题,很少有人会去试,你必须根据这些参考,修改出你自己的方法
qwedcxza 2003-09-29
  • 打赏
  • 举报
回复
设置一个时间相应函数
OnTimer1 ,在这个函数里,判断光标位置,显示相应的 tip

在 OnMouseMove 里:
判断当前的 tip, 隐藏它
开启 OnTimer1, 用你希望延迟显示 tip 的时间

没有试过,但维护一个 tip 显示不需要太多的工作
afantict 2003-09-29
  • 打赏
  • 举报
回复
我做的虽然不少,得到的却不多,所以穷,但是我不会使热心的人像我一样失望的。



very good
帮你up
Paris_Luo 2003-09-29
  • 打赏
  • 举报
回复
gz
面试20问 1、请你自我介绍一下你自己   回答提示:一般人回答这个问题过于平常,只说姓名、年龄、爱好、工作经验,这些在简历上都有,其实,企业最希望知道的是求职者能否胜任工作,包括:最强的技能、最深入研究的知识领域、个性中最积极的部分、做过的最成功的事,主要的成就等,这些都可以和学习无关,也可以和学习有关,但要突出积极的个性和做事的能力,说得合情合理企业才会相信。企业很重视一个人的礼貌,求职者要尊重考官,在回答每个问题之后都说一句“谢谢”。企业喜欢有礼貌的求职者。 2、你觉得你个性上最大的优点是什么?   回答提示:沉着冷静、条理清楚、立场坚定、顽强向上。   乐于助人和关心他人、适应能力和幽默感、乐观和友爱。我在学校经过几年的学习及项目实战,加上实习工作,使我适合这份工作。我相信我能成功。 3、说说你最大的缺点?   回答提示:这个问题企业问的概率很大,通常不希望听到直接回答的缺点是什么等,如果求职者说自己小心眼、爱忌妒人、非常懒、脾气大、工作效率低,企业肯定不会录用你。绝对不要自作聪明地回答“我最大的缺点是过于追求完美”,有的人以为这样回答会显得自己比较出色,但事实上,他已经岌芨可危了。企业喜欢求职者从自己的优点说起,中间加一些小缺点,最后再把问题转回到优点上,突出优点的部分。企业喜欢聪明的求职者。 4、你对加班的看法?   回答提示:实际上好多公司问这个问题,并不证明一定要加班。 只是想测试你是否愿意为公司奉献。   回答样本:如果是工作需要我会义不容辞加班。我现在单身,没有任何家庭负担,可以全身心的投入工作。但同时,我也会提高工作效率,减少不必要的加班 5、你对薪资的要求?   回答提示:如果你对薪酬的要求太低,那显然贬低自己的能力;如果你对薪酬的要求太高,那又会显得你分量过重,公司受用不起。一些雇主通常都事先对求聘的职位定下开支预算,因而他们第一次提出的价钱往往是他们所能给予的最高价钱。他们问你只不过想证实一下这笔钱是否足以引起你对该工作的兴趣。   回答样本一:“我对工资没有硬性要求。我相信贵公司在处理我的问题上会友善合理。我注重的是找对工作机会,所以只要条件公平,我则不会计较太多   回答样本二:我受过系统的软件编程的学习,不需要进行大量的培训。而且我本人也对编程特别感兴趣。因此,我希望公司能根据我的情况和市场标准的水平,给我合理的薪水。   回答样本三:如果你必须自己说出具体数目,请不要说一个宽泛的范围,那样你将只能得到最低限度的数字。最好给出一个具体的数字,这样表明你已经对当今的人才市场作了调查,知道像自己这样学历的雇员有什么样的价值。 6、在五年的时间内,你的职业规划?   回答提示:这是每一个应聘者都不希望被问到的问题,但是几乎每个人都会被问到。比较多的答案是“管理者”。但是近几年来,许多公司都已经建立了专门的技术途径。这些工作地位往往被称作“顾问”、“参议技师”或“高级软件工程师”等等。当然,说出其他一些你感兴趣的职位也是可以的,比如产品销售部经理,生产部经理等一些与你的专业有相关背景的工作。要知道,考官总是喜欢有进取心的应聘者,此时如果说“不知道”,或许就会使你丧失一个好机会。最普通的回答应该是“我准备在技术领域有所作为”或“我希望能按照公司的管理思路发展”。 7、你朋友对你的评价?   回答提示: 想从侧面了解一下你的性格及与人相处的问题。   回答样本:“我的朋友都说我是一个可以信赖的人。因为,我一旦答应别人的事情,就一定会做到。如果我做不到,我就不会轻易许诺。   回答样本:”我觉的我是一个比较随和的人,与不同的人都可以友好相处。在我与人相处时,我总是能站在别人的角度考虑问题“ 8、你还有什么问题要问吗?   回答提示:企业的这个问题看上去可有可无,其实很关键,企业不喜欢说“没有问题”的人,因为其很注重员工的个性和创新能力。企业不喜欢求职者问个人福利之类的问题,如果有人这样问:贵公司对新入公司的员工有没有什么培训项目,我可以参加吗?或者说贵公司的晋升机制是什么样的?企业将很欢迎,因为体现出你对学习的热情和对公司的忠诚度以及你的上进心。 9、如果通过这次面试我们单位录用了你,但工作一段时间却发现你根本不适合这个职位,你怎么办?   回答提示:一段时间发现工作不适合我,有两种情况:   1、如果你确实热爱这个职业,那你就要不断学习,虚心向领导和同事学习业务知识和处事经验,了解这个职业的精神内涵和职业要求,力争减少差距;   2、你觉得这个职业可有可无,那还是趁早换个职业,去发现适合你的,你热爱的职业,那样你的发展前途也会大点,对单位和个人都有好处。 10、在完成某项工作时,你认为领导要求的方式不是最好的,自己还有更好的方法,你应该怎么做?   回答提示:①.原则上我会尊重和服从领导的工作安排;同时私底下找机会以请教的口吻,婉转地表达自己的想法,看看领导是否能改变想法;   ②如果领导没有采纳我的建议,我也同样会按领导的要求认真地去完成这项工作;    ③.还有一种情况,假如领导要求的方式违背原则,我会坚决提出反对意见;如领导仍固执己见,我会毫不犹豫地再向上级领导反映。 11、如果你的工作出现失误,给本公司造成经济损失,你认为该怎么办?     回答提示:   ①我本意是为公司努力工作,如果造成经济损失,我认为首要的问题是想方设法去弥补或挽回经济损失。如果我无能力负责,希望单位帮助解决;   ②是责任问题。分清责任,各负其责,如果是我的责任,我甘愿受罚;如果是一个我负责的团队中别人的失误,也不能幸灾乐祸,作为一个团队,需要互相提携共同完成工作,安慰同事并且帮助同事查找原因总结经验。   ③总结经验教训,一个人的一生不可能不犯错误,重要的是能从自己的或者是别人的错误中吸取经验教训,并在今后的工作中避免发生同类的错误。检讨自己的工作方法、分析问题的深度和力度是否不够,以致出现了本可以避免的错误。 12、如果你在这次考试中没有被录用,你怎么打算?   回答提示:现在的社会是一个竞争的社会,从这次面试中也可看出这一点,有竞争就必然有优劣,有成功必定就会有失败.往往成功的背后有许多的困难和挫折,如果这次失败了也仅仅是一次而已,只有经过经验经历的积累才能塑造出一个完全的成功者。我会从以下几个方面来正确看待这次失败.   第一、要敢于面对,面对这次失败不气馁,接受已经失去了这次机会就不会回头这个现实,从心理意志和精神上体现出对这次失败的抵抗力。要有自信,相信自己经历了这次之后经过努力一定能行.能够超越自我.   第二、善于反思,对于这次面试经验要认真总结,思考剖析,能够从自身的角度找差距。正确对待自己,实事求是地评价自己,辩证的看待自己的长短得失,做一个明白人.   第三、走出阴影,要克服这一次失败带给自己的心理压力,时刻牢记自己弱点,防患于未然,加强学习,提高自身素质.   第四、认真工作,回到原单位岗位上后,要实实在在、踏踏实实地工作,三十六行,行行出状元,争取在本岗位上做出一定的成绩.   第五、再接再厉,成为软件工程师或网络工程师一直是我的梦想,以后如果有机会我仍然后再次参加竞争. 13、如果你做的一项工作受到上级领导的表扬,但你主管领导却说是他做的,你该怎样?   回答提示:我首先不会找那位上级领导说明这件事,我会主动找我的主管领导来沟通,因为沟通是解决人际关系的最好办法,但结果会有两种:1.我的主管领导认识到自己的错误,我想我会视具体情况决定是否原谅他;2.他更加变本加厉的来威胁我,那我会毫不犹豫地找我的上级领导反映此事,因为他这样做会造成负面影响,对今后的工作不利。 14、谈谈你对跳槽的看法?   回答提示:(1)正常的"跳槽"能促进人才合理流动,应该支持;   (2)频繁的跳槽对单位和个人双方都不利,应该反对。 15、工作中你难以和同事、上司相处,你该怎么办?   回答提示:   ①我会服从领导的指挥,配合同事的工作。   ② 我会从自身找原因,仔细分析是不是自己工作做得不好让领导不满意,同事看不惯。还要看看是不是为人处世方面做得不好。如果是这样的话 我会努力改正。   ③ 如果我找不到原因,我会找机会跟他们沟通,请他们指出我的不足。有问题就及时改正。   ④作为优秀的员工,应该时刻以大局为重,即使在一段时间内,领导和同事对我不理解,我也会做好本职工作,虚心向他们学习,我相信,他们会看见我在努力,总有一天会对我微笑的! 16、假设你在某单位工作,成绩比较突出,得到领导的肯定。但同时你发现同事们越来越孤立你,你怎么看这个问题?你准备怎么办?   回答提示:   ①成绩比较突出,得到领导的肯定是件好事情,以后更加努力   ②检讨一下自己是不是对工作的热心度超过同事间交往的热心了,加强同事间的交往及共同的兴趣爱好。   ③ 工作中,切勿伤害别人的自尊心   ④不再领导前拨弄是非   ⑤乐于助人对面 18、你对于我们公司了解多少?   回答提示:在去公司面试前上网查一下该公司主营业务。如回答:贵公司有意改变策略,加强与国外大厂的OEM合作,自有品牌的部分则透过海外经销商。 19、请说出你选择这份工作的动机?   回答提示:这是想知道面试者对这份工作的热忱及理解度,并筛选因一时兴起而来应试的人,如果是无经验者,可以强调“就算职种不同,也希望有机会发挥之前的经验”。 20、你最擅长的技术方向是什么?   回答提示:说和你要应聘的职位相关的课程,表现一下自己的热诚没有什么坏处。

16,471

社区成员

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

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

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