??对话框的”归属“问题,(VC技术内幕)??

canshu 2001-07-23 07:45:28
各位看官:
在看到技术内幕里的一段话:(P139)现在,我们假定已经接受对话框的默认弹出样式,这意味着,对话框并不限制在视图的客户区。就Windows来说,对话框的“所有者”是应用程序的主框架窗口,而不是视图。
可不可以有这种理解:模态对话框的“所有者”是视图而非模态对话框的“所有者”是主框架窗口。另外这“所有者”是依附关系吧?
...全文
71 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
canshu 2001-07-24
  • 打赏
  • 举报
回复
谢谢各位,我开始有点开窍了
azuo_lee 2001-07-23
  • 打赏
  • 举报
回复
111222的话是对的。
Identifies the owner window of the message box to be created.
这句话应这样来理解:
Identifies the window to which the message box is supposed to be owned.
soarhigh 2001-07-23
  • 打赏
  • 举报
回复
以下见msdn.
The MessageBox function creates, displays, and operates a message box. The message box contains an application-defined message and title, plus any combination of predefined icons and push buttons.

int MessageBox(
HWND hWnd, // handle of owner window
LPCTSTR lpText, // address of text in message box
LPCTSTR lpCaption, // address of title of message box
UINT uType // style of message box
);


Parameters
hWnd
Identifies the owner window of the message box to be created. If this parameter is NULL, the message box has no owner window
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`~~
所以111222的话,值得商讨。
jucee 2001-07-23
  • 打赏
  • 举报
回复
azuo_lee()说的很正确,我就不重复了 
azuo_lee 2001-07-23
  • 打赏
  • 举报
回复
窗口间有两种从属关系:属主窗口(owner)与隶属窗口(owned),父窗口(parent)与子窗口(child)。如果是前者,属主窗口要对隶属窗口负以下责任:自己失去焦点时,隶属窗口也要失去焦点;自己隐藏时(或最小化),隶属窗口也要隐藏;自己destroy时,所有的隶属窗口也要destroy。而对于后者,父窗口对子窗口要额外地负更多的责任:例如对子窗口重绘的判断(发送WM_PAINT)、子窗口的边界限制(子窗口不能超出父窗口的范围)、子窗口通知消息的处理等等。
对话框的情况属于前者。在你构造一个对话框时,必须为其指定属主窗口。例如,你用CDialog或其派生类创建对话框时,构造函数需要一个CWnd对象作为属主窗口。如果你用缺省构造函数,则属主窗口被指定为是主框架窗口。至于模态对话框与非模态对话框,只是是否拥有自己消息循环的问题,与属主窗口毫不相干。摸态对话框由于使用属主窗口的消息循环,所以模态对话框工作时,属主窗口将失去响应。非模态对话框拥有自己的消息循环,不会影响属主窗口的工作。
当然,你也可以为一个对话框指定属主为NULL,这种情况下,对话框不属于任何窗口,而是一个顶层窗口。
111222 2001-07-23
  • 打赏
  • 举报
回复
int MessageBox(
HWND hWnd, // 这个就是你说的所有者,指定是谁就是谁,视图也行,主框架窗口也行,NULL的话所有者就是桌面,所有者随便的
LPCTSTR lpText, LPCTSTR lpCaption, UINT uType);
Springer 2001-07-23
  • 打赏
  • 举报
回复
应该不是,你可以通过拖动对话框到视图的客户区之外来证明模态对话框的所有者是main frame而非 view。

16,472

社区成员

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

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

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