通知码
子视窗代号
如果您正在移植16位元Windows程式,那么要注意改变这些讯息参数以容纳32位元的代号。
子视窗ID是在建立子视窗时传递给CreateWindow的值。在BTNLOOK中,这些ID被显示在显示区域中,并使用0到9分别标识10个按钮。子视窗代号是Windows从CreateWindow传回的值。
通知码更详细表示了讯息的含义。按钮通知码的可能值在Windows表头档案中定义如下:
实际上,您不会看到这些按钮值中的大多数。从1到4的通知码是用於一种叫做BS_USERBUTTON的已不再使用的按钮的(它已经由BS_OWNERDRAW和另一种不同的通知方式所替换)。通知码6到7只有当按钮样式包括标识BS_NOTIFY才发送。通知码5只对BS_RADIOBUTTON、BS_AUTORADIOBUTTON和BS_OWNERDRAW按钮发送,或者当按钮样式中包括BS_NOTIFY时,也为其他按钮发送。
您会注意到,在用滑鼠单击按钮时,该按钮文字的周围会有虚线。这表示该按钮拥有了输入焦点,所有键盘输入都将传送给子视窗按钮控制项,而不是传送给主视窗。但是,当该按钮控制项拥有输入焦点时,它将忽略所有的键盘输入,除了Spacebar键例外,此时Spacebar键与滑鼠具有相同的效果。
父视窗向子视窗发送讯息
虽然BTNLOOK中没有显示这一事实,但是父视窗讯息处理程式也能向子视窗控制项发送讯息。这些讯息包括以字首WM开头的许多讯息。另外,在WINUSER.H中还定义了8个按钮说明讯息;字首BM表示「按钮讯息」。这些按钮讯息如下表所示: