windows消息得问题。

chinarendotcom 2004-12-09 11:56:05
窗口上面得标题栏,最大化,最小化,关闭按钮是什么信令画在那里的。
比如wm_ncpaint.
...全文
196 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
dandycheung 2004-12-10
  • 打赏
  • 举报
回复
你的问题很难解决的。比如说,当你的鼠标在最小化的按钮上点下去的时候,系统立刻就在那个地方画按钮按下的样子,你连任何消息都得不到,因为画那个按钮是系统处理 WM_NCLBUTTONDOWN 消息的一部分,而没有说再发一个其他消息来通知你去画。你要想画,就需要自己处理 WM_NCLBUTTONDOWN 消息,把你自己的按钮画出来,还需要实现系统默认处理的其他功能,否则窗口会处于一种奇怪的状态。而且,还不止这一个消息,还有其他许多消息会有类似的事情发生,还有许多 API 调用。
老夏Max 2004-12-10
  • 打赏
  • 举报
回复
WM_CREATE
chinarendotcom 2004-12-10
  • 打赏
  • 举报
回复
是没有了,但是我的问题还是没有解决呀。 我的问题是什么信令画了那些按钮。 在wm_apaint
z中直接返回也能画出那个按钮。
dandycheung 2004-12-10
  • 打赏
  • 举报
回复
你把一个其他窗口放到你的窗口上,尤其是你说的那几个按钮上,再移开,看按钮还能不能看的见?你之所以已开始能看见是因为 WM_NCPAINT 里并不是唯一的画那几个按钮的地方,画那几个按钮的地方太多了。
chinarendotcom 2004-12-10
  • 打赏
  • 举报
回复
不是吧,我昨天做了一个试验就是在通过向导建立一个helloworld win32程序。其中我在消息处理函数中处理WM_NCPAINT,就是直接return ,看到的结果是外面的边框看不见,就是最外面的4个象素(就是能显示立体效果的边框), 我觉得WM_NCPAINT,并没有画出最大化等等。
dandycheung 2004-12-10
  • 打赏
  • 举报
回复
不是在 beginpaint 里画出来的。你的回调函数里肯定在某些情况下调用了 DefWindowProc() 函数了吧?WM_NCPAINT 消息你没有处理,而是传递到了上述函数里,所以系统就把你说的那一堆东西给画出来了。
chinarendotcom 2004-12-10
  • 打赏
  • 举报
回复
偶原来是这样。
用向导生成一个win32
的helloworld。
其中
wm_paint 的处理是这样的

hdc = BeginPaint(hWnd, &ps);
// TODO: Add any drawing code here...
RECT rt;
GetClientRect(hWnd, &rt);
DrawText(hdc, szHello, strlen(szHello), &rt, DT_CENTER);
EndPaint(hWnd, &ps);

我看不出来什么时候画了最大化和标题兰等等。。
那位说说是用什么函数完成了这个操作。 难道是beginpaint。???
angelcool 2004-12-10
  • 打赏
  • 举报
回复
你可以在PreCreateWindow中修改他们
cs.style &= ~(FWS_ADDTOTITLE|WS_MAXIMIZEBOX|WS_THICKFRAME);
cs.lpszName = "我的程序";
张佩 2004-12-10
  • 打赏
  • 举报
回复
是“主框架”的WM_PAINT消息响应,画出来的。
gzcheng78 2004-12-10
  • 打赏
  • 举报
回复
是在WM_NCPAINT消息中绘画的
老夏Max 2004-12-10
  • 打赏
  • 举报
回复
呵呵,MFC的框架定义了一些默认的按钮等等,这些都是可以修改的,怎么画出来的,当然都是在OnPaint中一个一个画出来的!
张佩 2004-12-10
  • 打赏
  • 举报
回复
WM_PAINT
chinarendotcom 2004-12-10
  • 打赏
  • 举报
回复
看来 我的问题还是挺难的呀。 是csdn太弱,还是windows太强了。呵呵

16,548

社区成员

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

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

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