for csdnflysnow:第一个问题 决不是 bug,MSDN 中写的清楚;第二个详细一点 OK?
程序的系统菜单响应函数 nID & 0xFFF0) == IDM_ABOUTBOX是判断是否选择了"about"菜单!
I don't understand Qestion NO.1 why MFC using a way like that?Wait for exporters to analyze!
nID & 0xFFF0 将nID末四位置零。可能nID末四位包含的是其他信息。 第二个问题:CSpeakerDlg::OnSysCommand只处理IDM_ABOUTBOX消息,不处理其他,所以交给默认的处理函数处理,CDialog::OnSysCommand就是默认的处理函数。这就是C++重用代码的方法之一:继承。
TsuLeon() : Do you know digital logic?panda_w(好想睡啊!) : nID & 0xFFF0) == IDM_ABOUTBOX是判断是否选择了"about"菜单 // 这一句 能否详细一些?panda_w(好想睡啊!) : thank you! 是不是每个程序都这样?
(nID & 0xFFF0) == IDM_ABOUTBOX is a bug, at least not a good programming practice. it should write like this (nID & IDM_ABOUTBOX ) == IDM_ABOUTBOX
nID 的值msdn上不是有规定吗,such as:SC_MOVE,SC_MAXIMISE,SC_CLOSE etc,怎么会是IDM_ABOUTBOX呢??
oh,I see now but I must discover something wrong made by LongWay(不要分的菜鸟): (nID & IDM_ABOUTBOX ) == IDM_ABOUTBOX will get wrong result; for example: nID now is 1110,IDM_ABOUTBOX is 1000,then nID&IDM_ABOUTBOX will get 1000, equal to IDM_ABOUTBOX,but nID&0xF will get 1110,different from IDM_ABOUTBOX.S0 nID & 0xFFF0) == IDM_ABOUTBOX is not a bug,but a right fragment。
这里的 WM_SYSCOMMAND 发送了 我在 对话框左上角 单击产生的 “关于” 消息,对么?那么,单击对话框 右上角 的 X 标记,发送的又是什么消息?谢谢!
nID & 0xFFF0) == IDM_ABOUTBOX是判断是否选择了"about"菜单!
why MFC using a way like that?Wait for exporters to analyze!
第二个问题:CSpeakerDlg::OnSysCommand只处理IDM_ABOUTBOX消息,不处理其他,所以交给默认的处理函数处理,CDialog::OnSysCommand就是默认的处理函数。这就是C++重用代码的方法之一:继承。
Do you know digital logic?panda_w(好想睡啊!) :
nID & 0xFFF0) == IDM_ABOUTBOX是判断是否选择了"about"菜单 // 这一句 能否详细一些?panda_w(好想睡啊!) : thank you! 是不是每个程序都这样?
is a bug, at least not a good programming practice.
it should write like this
(nID & IDM_ABOUTBOX ) == IDM_ABOUTBOX
but I must discover something wrong made by LongWay(不要分的菜鸟):
(nID & IDM_ABOUTBOX ) == IDM_ABOUTBOX will get wrong result;
for example: nID now is 1110,IDM_ABOUTBOX is 1000,then nID&IDM_ABOUTBOX will get 1000, equal to IDM_ABOUTBOX,but nID&0xF will get 1110,different from IDM_ABOUTBOX.S0 nID & 0xFFF0) == IDM_ABOUTBOX is not a bug,but a right fragment。