我正在编辑这些问题b'coz我不允许添加新问题。
我发现这个程序做了很棒的打印,但无法理解它是如何工作的。请帮助我理解它背后的逻辑。
#include <stdio.h>
int main()
{
int a,b,c;
int count = 1;
for (b=c=10; a="- FIGURE?, UMKC,XYZHello Folks,\
TFy!QJu ROo TNn(ROo)SLq SLq ULo+\
UHs UJq TNn*RPn/QPbEWS_JSWQAIJO^\
NBELPeHBFHT}TnALVlBLOFAkHFOuFETp\
HCStHAUFAgcEAelclcn^r^r\\tZvYxXy\
T|S~Pn SPm SOn TNn ULo0ULo#ULo-W\
Hq!WFs XDt!" [b++ +21]; )
for(; a-- > 64 ; )
putchar (( ++c == 'Z') ? c = c /9 : 33^b&1);
return 0;
}
输出ScreenShot是
答案 0 :(得分:1)
tab键通常会被对话管理器吞下,因为它用于将焦点从一个控件移动到另一个控件(即IsDialogMessage
调用DialogBox
函数作为其内部消息的一部分调用循环将过滤掉Tab键按下而不是让它通过你的对话程序。)
有几种方法我可以想到你可以绕过这个,但我建议你应该选择另一个键来打开/关闭对话框,因为tab已经有一个众所周知且明确定义的含义在Windows中。
答案 1 :(得分:0)
请阅读msdn的“EndDialog”说明:
EndDialog不会立即销毁对话框。相反,它设置一个标志并允许对话框过程将控制权返回给系统。在尝试从应用程序队列中检索下一条消息之前,系统会检查该标志。如果设置了该标志,系统将结束消息循环,销毁该对话框,并使用nResult中的值作为创建该对话框的函数的返回值。
http://msdn.microsoft.com/en-us/library/windows/desktop/ms645472%28v=vs.85%29.aspx