WIN32汇编这一段没法理解
WIN32汇编这一段无法理解,-----------------显示和隐藏图片控件的设置-----------------.elseif axID
WIN32汇编这一段无法理解,
;-----------------
;显示和隐藏图片控件的设置
;-----------------
.elseif ax==IDC_SHOWBMP
invoke GetDlgItem,hWnd,IDC_BMP
mov ebx,eax
invoke IsWindowVisible,ebx
.ifeax
invoke ShowWindow,ebx,SW_HIDE
.else
invoke ShowWindow,ebx,SW_SHOW
.endif
这一段涉及显示图片,勾上就图片显示,取消就不显示图片,但是看代码我难以理解!请大家指点一下!
1.由GETDLGITEM得到了IDC_BMP这个控件ID的句柄,那么将这个句柄用在ISWINDOWVISIBLE函数中,那么返回值是非零的,因为整个父窗口也就是对话框设置了ws_visible风格,也就是说ISWINDOWVISIBLE返回TRUE值咯!
2.在IF分支里面,如果为TRUE,那么 INVOKE SHOWWINDOW,EBX,SW_HIDE,也就是隐藏,可是我认为既然是TRUE,那么应该是显示才对啊,为什么是隐藏呢?而且当为FALSE的时候,反而设置为显示!
3.我的问题就是,这段代码如何表现出这种功能,点勾就显示,不点勾就不显示,在这里面的BOOL值和这个IDC_BMP空间是否被选中有何关系呢?
[解决办法]这个代码确实可能有问题,但通常还是会正常的。
这个代码应该是按钮的点击通知消息里的吧,即点击下选择,就会触发一次,即意味着图片的显示状态要变更一次(但没有去查询选择按钮的当前状态来核实),所以,触发这个事件时,原来是显示的话,就隐藏了它,原来是隐藏的则将它显示出来。