问题描述
我是个在校生,去年听说别的专业开的有c#我就去听了听,感觉很不错啊,就学了起来啊,但是一直都想做一个资源管理器的界面,现在看了网上别人做的这个程序啊,这个程序的原代码在http://www.blog.edu.cn/user1/16293/archives/2006/1183625.shtml有两个地方不能看懂啊,现在想请高手指点一下迷经.获得文件的icon是调用了一个函数,这个函数就是protectedvirtualvoidSetIcon(ImageListimageList,stringFileName,booltf){SHFILEINFOfi=newSHFILEINFO();if(tf==true){intiTotal=(int)SHGetFileInfo(FileName,0,reffi,100,16640);//SHGFI_ICON¦SHGFI_SMALLICONtry{if(iTotal>0){Iconic=Icon.FromHandle(fi.hIcon);imageList.Images.Add(ic);//returnic;}}catch(Exceptionex){MessageBox.Show(ex.Message,"错误提示",0,MessageBoxIcon.Error);}}else{intiTotal=(int)SHGetFileInfo(FileName,0,reffi,100,257);try{if(iTotal>0){Iconic=Icon.FromHandle(fi.hIcon);imageList.Images.Add(ic);//returnic;}}catch(Exceptionex){MessageBox.Show(ex.Message,"错误提示",0,MessageBoxIcon.Error);}}//returnnull;}在这个函数中我有一点不是很明白啊,就是为什么要判断调用函数是传入的参数tf,是否为真,如果tf==true是调用intiTotal=(int)SHGetFileInfo(FileName,0,reffi,100,16640);elseintiTotal=(int)SHGetFileInfo(FileName,0,reffi,100,257);我想知道分别调用的这两个方法得到的iTotal有什么区别,为什么它们最后的一个参数一个是16640,一个是257,得到的整形iTotal代表是什么,为什么下面还要判断她是否大于零啊
解决方案
解决方案二:
if(tf==true)建议改为:if(tf)