分享
 
 
 

我dotNET 所以我 Skin (WinForm 控件再选)

王朝system·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

我dotNET 所以我 Skin (WinForm 控件再选)

小气的神 2002-02-15

Article Type: In-Depth

难度等级:6/9

版本:1.10

各位,不要笑我想好了,如果过些天我象今天一样又发现什么有趣的控件或源码,我就起这样的标题《我dotNET,所以我什么什么 (WinForm 控件还选) 》,如果再有就叫《又选》。总之如果有,我就会收集它,实验它,可以的话,也写出来和所有感兴趣的人一起分享。

在网络上可以体验和感受现实中不太多的创新思想和速度,过去这种创新是反映在软件本身,而现在软件或代码成了一种介质,往往透过它我们可以看到一个又一个创新的思想和个体,软件业在靠这种创新不断成长,作为其中的每一个个体也受到鼓舞,愿意成为其中的一员。商业和网络催化和加快了这个过程,快到让你惊讶和迎接不暇,所以说我们正从事着“这个世界上最好和最辛苦的职业”。

话题要从上一篇文章的cwTab说起,几天之后我在CodeProject上找到了它,然后试图把它在RTM下调试通过,可这将是一件痛苦的过程,尽管带来的回报是可以熟悉如何创造一个控件的过程和Bug不断减少的喜悦,但从Beta1到RTM某种程度上还是一个忍耐和挣扎的过程。不过许多事情都会有额外的回报,不然下一次就是一个失败的重复和下赌。比如这一次我发现dotNET下指针的所谓无奈,也许它并不象我们曾经听说和以为的那样,dotNET互操作有一个看不见的界限,跨越之外也将象指针一样会把你带动一个不可预知的境地。如果熟悉C或C++的用户很容易知道下面这段代码在干什么,想出对应的C源码。不过在RTM下要调试通过这段代码是需要某种挑战的。原来和dotNET下的编程是两种环境,它们有各自不同的疆界,能够自如出入两者的开发人员是幸福的。能明确知道这个界限的人,对于大多数来说也将是次幸福的。不过最后我还是告别指针用数组重新写过了,观念之外需要一种行之有效的方式来诠释它。

private unsafe bool FillColorTable(int hDC, int hPal, ref APIMethods.BITMAPINFO_FLAT tBitInfo)

{

bool bRet = false;

byte[] aj = new byte[sizeof(APIMethods.PALETTEENTRY) * 256];

int nColors;

fixed( APIMethods.RGBQUAD* prgb = (APIMethods.RGBQUAD*)&tBitInfo.bmiColors[0])

{

fixed( APIMethods.PALETTEENTRY* lppe = (APIMethods.PALETTEENTRY*)&aj[0] )

{

nColors = 1 << tBitInfo.bmiHeader_biBitCount;

if( nColors <= 256 )

{

int hPalRet;

if( hPal==APIMethods.Nullint )

hPalRet = APIMethods.GetSystemPaletteEntries(hDC, 0, nColors, aj);

else

hPalRet = APIMethods.GetPaletteEntries(hPal, 0, nColors, aj);

if( hPalRet!=0 )

{

for( int nLoop=0; nLoop<nColors; nLoop++ )

{

prgb[nLoop].rgbRed = lppe[nLoop].peRed;

prgb[nLoop].rgbGreen = lppe[nLoop].peGreen;

prgb[nLoop].rgbBlue = lppe[nLoop].peBlue;

prgb[nLoop].rgbReserved = 0;

}

bRet = true;

}

}

}

}

return bRet;

}

}

更有趣的在后面,当某一个临界值之后,我决定用数组重新实现来减少目前的错误数和推进编译的速度,又经过一个量化的值F5之后,终于可以看到这个不错的Tab控件了。我保证自己在看到下面这条信息之后,有混沌昏厥的顿感:“早知如此,又何必。。。”, 我们可爱的Phil Wright,就是上一篇文章提到的那个“很Cool”的Docking控件作者在dotnetmagic网站宣告“诸位,新的1.1版本出现,并且又多加一个Menu和Tab控件”,看到网站上的截图,我在心里安慰自己说cwTab还是有另外一些特色的,比如除VS.NET风格之外还有Excel, InterDev风格并且还可以自定义。然后是机械的Download新的版本。 到目前为止,我们已经可以看到cwTab、Magic Library以及SharpDevelop的 Alexandria Library对Tab控件作出三种见解,迷人之处是三者各不相同,这个世界是多么的奇妙。

无论是菜鸟还是大虾在网络生活中都会犯这样错误:依赖书签。某日我看到一个很有意思网页,是关于WinForm的Skins话题,也是回答那些“如何使WinForm窗体象Winamp一样?”的问题(如果CSDN上有人提这样的问题,我一定去回复haha),很快的Save这副靓丽的图片和Zip。接着我想是个习惯,我返回到它的首页(试图想找到更多有趣的东东),然后收藏了它。几天之后,当我再次想找到这个页面时,我发现这个使用iso-8859-1字符集的网站上没有Search功能,而且这种字符我根本不认识也无法和几天前的记忆联系起来,拉丁文还是德文?(图片出自:http://guille.costasol.net):

不过工作还要继续做,之后可能又是上面类似的过程,从Beta2到RTM的各种调整变动,比较糟糕的是这次又遇到资源文件(不同国籍和语系),我试图用最新的regenresx.exe 转换这些资源文件到RTM版本,对于解决这样的错误信息:“The (Predeterminado) culture cannot be converted to a CultureInfo object on this computer. ”又将是需要技巧的考验。不过我还是要感谢Alberto Ortiz Enrique (aoe@euskalnet.net) 这是个精妙的实现。在dotNET下我们有这样一个新的机遇:各种语言的开发人员可以在一个通用的平台上交流。这种交流是绝对有益的:一个C程序员有机会看到一个Prel程序员的实现,同样一个VB程序员也可以看到Python程序员的设计。至于这个平台是建立在Windows还是Unix上,这也许是商业和信仰决定的。感谢之后还是看看最后的成果吧:

当然里面还有更多的一些Demo。最后提一句,AOECalendar.vb源码中 Sub New() 最后我注释了下面的一句,这个错误是明显和需要调整的。AddHandler AOECommand.Load, AddressOf AOECalendar_Load ,所以Sample中的Form5的范例会有些问题,不过这些问题的讨论超出这篇文章的假设。并且它也不影响对整个设计和实现的理解。

好了,我想是要结束这个有关创新和速度话题的时间了,上面的两个例子你可以在下面的链接中获得。我在W2K CN ADV+SP2+SRP1 , VS.NET EN RTM, dotNET SDK v1.0 上调试通过。

下载相关的文件: [cwTabForRTM] [AOEPackNET For RTM] [AOEPackNETBetaOld]

特别:

以上软件和程序都已标明出处和所有者,请尊重版权和各自相关的条款。

感谢CSDN提供下载文件和图片的空间。

本文CSDN署名首发,转载或改编请注明作者和出处。如果有问题,请发电子邮件给new2001@msn.com

以上文字和图片涉及其他人的隐私和个人权利,所有文字和图片只用于内部交流,不作任何新闻发表和商业用途。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有