1. 使用SystemParametersInfo可以设置桌面背景位图。
2. Window Style可以经由SetWindowLong设置。
3. AdjustWindowsRect/Ex可用于在CreateWindow之前根据客户区的大小计算窗口的大小,并将之作为CreateWindow的参数。
4. 如果一个窗口具有WS_CLIPSIBLINGS 和WS_CLIPCHILDREN,那么该窗口收到WS_PAINT消息时,将从其客户区中裁减掉兄弟/子的窗口重叠区域。默认的window都具有这两个属性。
5. 三类窗口desktop,top-level window,child window,系统根据此形成一棵树并管理所有窗口。Overlapped,Popup,Child。前两者都是TopLevel的,而后者作为子窗口使用。Popup Window是一种特殊的Overlapped窗口。dlg是必须是Popup的,Control必须是Child,而其他窗口可以自定义。
6.额外话题:Windows Common Controls中:edit controls, combo boxes, list boxes, buttons, scroll bars, and static controls 不会向父窗口发送WM_NOTIFY消息,但是会发送WM_COMMAND通知消息。在MFC中对应的父窗口接收到Command消息,并可能通过消息反射转发给Common Control.
6. 模式对话框弹出时,在其消息泵里仍然会处理一些其父窗口的消息,例如OnDraw消息。所以如果在这些消息处理函数中调用AfxMessageBox便会弹出多个模式对话框。
7. input messages会发送给子窗口,但是子窗口Disable时则发送给父窗口。
8. Control可以有唯一ID,但是两个控件ID相同并不会有问题。控件给父窗口发送WM_COMMAND Notify消息时,回传自己的ID。对于非Common Control,可以通过CreateWindowEx的hMenu参数设置ID。
本文介绍了Windows编程中的多种实用技巧,包括使用SystemParametersInfo设置桌面背景、利用SetWindowLong调整窗口样式、通过AdjustWindowsRect计算窗口尺寸等。还讨论了不同类型的窗口及其管理方式,以及控件如何与父窗口交互。
1127

被折叠的 条评论
为什么被折叠?



