嗯,前面的标号只是作为标识,不作排序定位,在同一个{}区间中,只要不重复就可以通过编译并且正常执行.
可以给简单的例子程序加字体了.
经过两次观察,C#的程序,在不同的系统上,VS的FormDesigner中窗体的Form.Font显示的值是DEFAULT_GUI_FONT的字体的,如果你没有修改这个字体,他的状态是未更改的,那么程序中将不会存储这个字体,也就是说默认值不存储原则, 跟删除DFM中间默认的属性程序照常运行不会遭天谴一样.当然改变一下默认属性,就是说重新选择一下,属性显示为已更改,在窗体设计器的属性栏会加黑表示,那么就会在程序中产生代码,加以设置.
没有字体的控件,由运行时候framework生成,也就是一些E文C#软件哭着喊着显示宋体了,例如上面说的pspvideo9.
经过观察了多达一个的试验程序,发现给窗体设置字体的语句出现在给窗体setname之前;
如果懒得在设置窗体名称的语句前
比较胡来的做法,就是加到最前面,也就是紧接着.locals int等;
如果爆错可能.max stacksize要加一些,例如+3
结果在line#9426粘贴了如下诡异代码:
CODE
//tahoma start
IL_fv01: ldarg.0
IL_fv02: ldstr "Tahoma"
IL_fv03: ldc.r4 8.25
IL_fv04: ldc.i4.0
IL_fv05: ldc.i4.3
IL_fv06: ldc.i4.0
IL_fv07: newobj instance void [System.Drawing]System.Drawing.Font::.ctor(string,
float32,
valuetype [System.Drawing]System.Drawing.FontStyle,
valuetype [System.Drawing]System.Drawing.GraphicsUnit,
unsigned int8)
IL_fv08: callvirt instance void [System.Windows.Forms]System.Windows.Forms.Control::set_Font(class [System.Drawing]System.Drawing.Font)
//tahoma end
运行如下诡异语句编译:
F:\Program Files\VideoTools\pspvideo9\dump>ilasm pspvideo9.il /resource:pspvideo9.res /output:../pspvideo9_n.exe
得到的pspvideo9_n.exe成功变成tahoma shimashita,哦也
这个程序作者的电脑上,GUI_FONT貌似是MS Sans Serif,修改后,字宽正确了,字高有些高(看那个工具栏处),琢磨不需逐个setsize的办法ing
这个是加上了字体的:
PS:那作者,偶给他反映Toolbar错位,还专门给他解释默认值不存储原则,根本不理,哎
不像doom9一样,MeGUI现在都是Tahoma了,嘿嘿