散分喽!个人主页做好了,大家支持一下!
tcl/tk语言中文网
http://tcltk.126.com
问题点数:100、回复次数:94Top
1 楼wangjinwang(王者之疯)回复于 2003-09-03 18:58:12 得分 5
看一看Top
2 楼iampolaris(北极星)回复于 2003-09-03 19:05:20 得分 6
不错 !!Top
3 楼snakered(天下无敌)回复于 2003-09-03 19:05:26 得分 1
我照书上的源码写入后怎么什么也没有啊?在编译中有几个错误也改正了,提示没有错误.就是不显示窗口什么也没有,后来我又把书里带的源码编译了就可以.但我把他的源码复制到一个新的项目里就什么都没有了,也是不显窗口,这倒底是怎么回事儿啊???
我放上代码...
#include <d3d9.h>
LPDIRECT3D9 g_pD3D=NULL;
LPDIRECT3DDEVICE9 g_pd3dDevice=NULL;
HRESULT InitD3D( HWND hWnd );
VOID Cleanup();
VOID Render();
LRESULT WINAPI MsgProc( HWND hwnd, UINT msg, WPARAM wParam,
LPARAM lParam );
INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE hPreinst, LPSTR c_s,
INT c_show )
{
WNDCLASS wndclass={ 0, MsgProc, 0, 0, hInst, NULL,
NULL, NULL, NULL, "Direct" };
RegisterClass( &wndclass );
HWND hWnd=CreateWindow( "Direct", "direct001",
WS_OVERLAPPEDWINDOW, 100, 100, 300,
300, NULL, NULL,wndclass.hInstance,
NULL );
if( SUCCEEDED( InitD3D( hWnd ) ) )
{
ShowWindow( hWnd, SW_SHOW );
UpdateWindow( hWnd );
MSG msg;
while( GetMessage( &msg, NULL, 0, 0 ) )
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}
}
Cleanup();
UnregisterClass( "Direct", wndclass.hInstance );
return 0;
}
HRESULT InitD3D( HWND hWnd )
{
if( NULL==( g_pD3D=Direct3DCreate9( D3D_SDK_VERSION ) ) )
return E_FAIL;
D3DDISPLAYMODE d3ddm;
if( FAILED( g_pD3D->GetAdapterDisplayMode( D3DADAPTER_DEFAULT,
&d3ddm ) ) )
return E_FAIL;
D3DPRESENT_PARAMETERS d3dpp;
ZeroMemory( &d3dpp, sizeof( d3dpp ) );
d3dpp.Windowed=TRUE;
d3dpp.SwapEffect=D3DSWAPEFFECT_DISCARD;
d3dpp.BackBufferFormat=d3ddm.Format;
if( FAILED( g_pD3D->CreateDevice( D3DADAPTER_DEFAULT,
D3DDEVTYPE_HAL, hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING,
&d3dpp, &g_pd3dDevice ) ) )
{
return E_FAIL;
}
return S_OK;
}
VOID Cleanup()
{
if( g_pd3dDevice!=NULL )
g_pd3dDevice->Release();
if( g_pD3D!=NULL )
g_pD3D->Release();
}
VOID Render()
{
if( NULL==g_pd3dDevice )
return;
g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET,
D3DCOLOR_XRGB( 0, 0, 255 ), 1.0f, 0 );
g_pd3dDevice->BeginScene();
//
g_pd3dDevice->EndScene();
g_pd3dDevice->Present( NULL, NULL, NULL, NULL );
}
LRESULT WINAPI MsgProc( HWND hWnd, UINT msg, WPARAM wParam,
LPARAM lParam )
{
switch( msg )
{
case WM_PAINT:
Render();
ValidateRect( hWnd, NULL );
return 0;
case WM_DESTROY:
PostQuitMessage( 0 );
return 0;
}
return DefWindowProc( hWnd, msg, wParam, lParam );
}Top
4 楼iampolaris(北极星)回复于 2003-09-03 19:06:31 得分 1
问一下 楼主 你是山东大学得吗?Top
5 楼bankhank(寻找目标)回复于 2003-09-03 19:13:50 得分 1
不错啊,upTop
6 楼mmxxt()回复于 2003-09-03 19:16:14 得分 0
to iampolaris(北极星)
我是山东大学的 :)Top
7 楼mmxxt()回复于 2003-09-03 19:17:32 得分 0
这个网站的前身是我大学毕业设计时,做的毕业设计交流站。当时做的是一个关于Tcl/Tk语言的课题,一开始自己对Tcl/Tk一无所知,只知道国内有一个生产手机的TCL:)。上网查找才发现,国内关于Tcl的资料几乎没有,各大编程论坛中,也找不到关于Tcl的讨论区,跑遍了图书馆只找到一本关于Tcl的书(电子工业出的那本组合教程)。所以,毕业设计这半年的时间,资料基本上都是一点点啃网上的英文文档,做得真的是很辛苦。后来,我做了一个毕业设计交流站,随时把自己做的程序上传与同组同学共享。当时我就想,做完了毕业设计,要做一个Tcl/Tk的中文网站,让国内更多的了解这门优秀的语言。功夫不负有心人,我的毕业论文顺利的通过了答辩,并且被收录于当年的山大优秀论文集中。这个网站也算是对我的毕业设计和大学生活做个纪念。
目前,这个网站收集的中文资料还比较少,我想,随着大家对这门语言的了解越来越多,相信会有更多的人加入到Tcl/Tk的编程者行列,同时,期待着大家的支持和帮助。欢迎大家与我联系
Top
8 楼panther8888(c\c++)回复于 2003-09-03 19:24:24 得分 1
支持一下下先
Top
9 楼akiko(弥弥)回复于 2003-09-03 19:39:41 得分 1
支持Top
10 楼hermitma(逍遥人)回复于 2003-09-03 21:40:14 得分 1
不错, 加入收藏夹Top
11 楼BAYERN(我有个愿望-要把月亮踹成直的,把太阳捏成方的)回复于 2003-09-03 21:43:42 得分 1
下去看看。。Top
12 楼zhuixe(竹子)回复于 2003-09-03 21:53:46 得分 2
精神可嘉,看看Top
13 楼yuxh312(方块--正在吹竹叶笛)回复于 2003-09-03 21:59:28 得分 2
不错啊,工西Top
14 楼qianmo(广袤)回复于 2003-09-04 08:48:36 得分 2
东西不错!!Top
15 楼neubird(带发修行的猪)回复于 2003-09-04 08:48:36 得分 2
劫分Top
16 楼hellodj(xyzqq)回复于 2003-09-04 08:57:16 得分 2
做的不错。支持楼主。Top
17 楼Soundboy(鬼猫)回复于 2003-09-04 09:00:44 得分 2
看过了,不错,学习ingTop
18 楼leyt(思维机器)回复于 2003-09-04 09:59:32 得分 2
很好Top
19 楼sharkhuang(走吧走吧!人总会慢慢长大~)回复于 2003-09-04 10:23:12 得分 2
d
Top
20 楼jiang89f(new think)回复于 2003-09-04 10:27:56 得分 2
做的不错,
恕在下无知,这是什么语言,能介绍一下吗
Top
21 楼maltose(麦芽糖)回复于 2003-09-04 14:45:37 得分 2
向楼主学习!Top
22 楼aflyinghorse()回复于 2003-09-04 16:17:42 得分 2
UP一下Top
23 楼1cs1ak1(菜得不能再菜)回复于 2003-09-04 17:32:17 得分 2
up
Top
24 楼kobexk(大学期间,不沾烟酒,不搞女友)回复于 2003-09-04 18:00:56 得分 2
看看Top
25 楼mmxxt()回复于 2003-09-04 19:24:08 得分 0
Tcl简介
Tcl是一种非常简单的编程语言,如果你以前曾经学过编程,那么你只要学习几个小时就可以编写出一些有趣的Tcl程序。本文将对Tcl的功能做一个大概的介绍。一般来说,读完本文之后,你就可以开始独立的编写一些简单的Tcl脚本了;不过,要想获得更全面的认识,我们建议你还是去参考几本目前已经出版的Tcl书籍。
基本语法
Tcl脚本由一些被换行符或是分号分开的命令所组成。命令都有相同的基本格式,如下面的例子所示:
expr 20 + 10
该命令计算20加10的和,并返回结果30。你可以把这个例子以及本文中的所有其它的例子键入到tclsh这样的Tcl应用程序中来验证它们;在一个命令结束后,tclsh将打印出它的结果。
每个Tcl命令都含有一个或多个被空格分开的单词,在这个例子中有4个单词:expr,20,+,和10。第一个单词是一个命令名,其余的单词是这个命令的参数。所有的Tcl命令都含有一些单词,但不同的命令对他们的参数有不同的处理方式。expr命令把它的所有参数看作是一个算术表达式,计算表达式的结果,并以字符串的形式返回结果。在expr命令中,单词之间的分隔不是很重要:同样的命令你可以写成这种形式:
expr 20+10
不过,对大部分的命令来说,单词的结构是很重要的。每个单词都会用于不同的目的。所有的Tcl命令都返回结果。如果一个命令产生了没有意义的结果,那么它将返回一个空字符串作为它的结果。
变量
Tcl允许你在变量中保存数值,并且可以在后续的命令中使用这些数值。set命令用于对变量进行读写操作。比如,下面的命令对变量x赋值为32。
set x 32
这个命令返回变量的新值。你可以让set只带一个参数来读出变量的数值:
set x
你不需要在Tcl中声明变量:变量在第一次set的时候被自动创建。Tcl变量没有类型:任何值可以赋给任何变量。
要想在一个命令中使用变量的值,可以采用变量替代,如下例所示:
expr $x*3
当一个字符$出现在一个命令中的时候,Tcl把跟在它后面的字母和数字看作是一个变量名并且将其替换成变量的值。在这个例子中,expr命令接收到的实际参数将是32*3(假设变量x在前面的例子中被set过)。你可以在任何命令的任何单词中使用变量替代,甚至对一个单词多次使用:
set cmd expr
set x 11
$cmd $x*$x
命令替代
你也可以在一个命令的参数中使用另一个命令的结果。这被称之为命令替代:
set a 44
set b [expr $a*4]
当中括号出现在一个命令中的时候,Tcl把中括号之间的所有语句看作是一组Tcl命令。Tcl对这组命令进行解释,并用结果替代中括号之间的文字。上面的例子中,第二个set命令的第二个参数将为176。
双引号和大括号
双引号允许你指定包含空格的单词。我们看下面的这个例子:
set x 24
set y 18
set z "$x + $y is [expr $x + $y]"
在这三个命令都被解释后,变量z的值将是24+18 is 42。双引号之间的所有语句作为一个单词传给set命令。此处需要注意几点(a)引号之间的命令和变量替代仍起作用,(b)引号自身不会被传给命令。如果没有引号的话,set命令会得到6个参数,这将引起错误。
花括号对单词提供另外一种组合信息的方式。它与双引号的不同之处在于:花括号内的替代不起作用:
set z {$x + $y is [expr $x +$y]}
这个命令把变量z赋值为 " $x + $y is [expr $x +$y]"。
控制结构
Tcl提供一整套控制结构包括条件,循环和过程。Tcl的控制结构只是一些将Tcl脚本作为参数的命令。下面的示例创建了一个叫做power的Tcl的过程,实现对一个数求它的n次方:
proc power {base p}{
set result 1
while {$p >0}{
set result [expr $result * $base]
set p [expr $p- 1]
}
return $result
}
这个脚本由一个简单的命令proc所组成,这个proc命令有3个参数:过程名,参数名列表和过程体。过程体是一个Tcl脚本。需要注意的是,第一行末尾的花括号和最后一行花括号之间的语句都被逐字逐句的作为一个参数传给proc。proc命令创建了一个新的叫做power的具有两个参数的Tcl命令。你可以这样来调用power:
power 2 6
power 1.15 5
当power被调用的时候,过程体就被解释了。当过程体执行的时候,它可以变量的形式进入它的参数中:base获得第一个参数,p获得第二个参数。
power过程体中包含3个Tcl命令:set,while和return。while命令完成了这个过程中的大部分工作。它有两个参数,一个表达式($p>0)和一个Tcl脚本写的主体。while命令使用与C语言相似的规则来解释它的表达式参数。如果结果是真(非零),那么它将把函数体作为脚本来执行。他不断的重复这个过程,直到最后表达式的值变为假(零)。在这个例子中,while命令的函数体将result的值与base相乘,然后减少p的值。当p的值减到零的时候,结果就包含了需要的base的n次方值。return命令的作用是退出过程,同时将变量result的值作为过程的结果返回。
命令是如何运作的?
正如你所见到的,Tcl中所有有趣的功能都是靠命令来描述的。声明是命令,表达式由可执行命令来解释,控制结构是命令,过程也是命令。
Tcl命令由3种方式来创建。一组命令由Tcl解释器自身来提供。这些命令称之为内建命令,他们包括到现在为止你已经看到的命令和更多其他的命令(见下面)。内建命令出现在所有的Tcl应用程序中。
第二组命令使用Tcl扩展机制来创建。Tcl提供许多API接口,允许你用C或C++编写一个命令过程来创建一个新的命令。然后你可以通过Tcl解释器来通知Tcl过程实现的命令名,来注册命令过程。以后只要那个特定的名称被当作Tcl命令来使用,Tcl就会调用你的命令过程来执行这个命令。其实内建命令也是使用同样的扩展机制来执行的,只不过它们的命令过程是Tcl库中的一部分。
当Tcl用于嵌入到一个应用程序中的时候,应用程序使用扩展机制把它的主要功能和Tcl结合起来,这样一来那些可用的Tcl命令就因程序的不同而不同。还有大量的扩展包可以和Tcl应用程序组合起来使用。Tk是最著名的扩展之一,它提供了许多强大的创建图形用户界面的工具。而其他的扩展则提供了面向对象的编程,数据库访问,更多的图形功能,及其他的一些特性。用Tcl来创建完整的应用程序的优势之一是它可以很方便的进行扩展,从而可以组合进新的功能或与其它的资源进行通信。
第三组命令是一些由proc命令创建的过程。比如上面创建的power命令。通常,扩展用于较低层的功能,用C语言实现比较方便;而过程用于较高层的功能,用Tcl实现比较方便。
其它的功能
Tcl除了前面的例子中所使用的命令外,还有许多其它的命令,这里举例给出一些内建的Tcl命令所具有的功能:
☆ 更多的控制结构,如if,for,foreach和switch
☆ 字符串操作,包括一个强大的规则表达式匹配工具。不定长字符串可以像数字一样被传递和操作
☆ I/O 输入输出包括磁盘,网络通信通道,和类似串口的设备中的文件。Tcl为在Internet上进行通信提供了非常方便的工具
☆ 文件管理:Tcl提供许多命令来操作文件名,读写文件属性,复制文件,删除文件,创建目录,等等
☆ 分支过程的实现:你可以使用exec命令来运行其他程序,并且可以在它们的运行过程中和它们进行通信
☆ Lists Tcl使创建数值的集合变得很容易,并且可以用许多方式来对它们进行操作
☆ 数组 你可以创建有成对的名称数值组成的结构化数值,同时可以使用不定长字符串来定义这些名称和数值
☆ 可以对时间和日期进行操作
☆ Events允许等待一定的事件发生后再触发Tcl脚本,比如一段时间的延迟或是网络通信中输入的数据变为有效
Top
26 楼Salam2001(Upgrading : C++ and Data Structure ...)回复于 2003-09-04 19:27:41 得分 1
Up!Top
27 楼robertnet(大师兄)回复于 2003-09-04 21:47:06 得分 2
注册了Top
28 楼stevenboy(飞龙舞剑)回复于 2003-09-04 21:54:32 得分 3
up,make me know it,thanksTop
29 楼linkeehuang(球球)回复于 2003-09-04 22:41:26 得分 3
up,我也是第一次听说,那天听到同学说tcl的意思,当初还挺纳闷呢?Top
30 楼leechildren(里奥)回复于 2003-09-05 00:40:03 得分 3
up, 楼上说得挺详细的, 谢了!Top
31 楼jeary2210(海风)回复于 2003-09-05 13:07:40 得分 3
up 谢谢Top
32 楼yvhkdragon(剑客)回复于 2003-09-05 15:40:40 得分 3
不错,UP
以后有机会常光顾的。Top
33 楼lkjx82(风化血)回复于 2003-09-05 16:26:32 得分 3
接分啊
呵呵Top
34 楼lkjx82(风化血)回复于 2003-09-05 16:34:08 得分 3
这东西有用吗?
深表怀疑Top
35 楼csdn5211(不同)回复于 2003-09-05 17:59:43 得分 3
不错啊Top
36 楼tonybaobao(Tony宝宝)回复于 2003-09-05 18:25:06 得分 10
做得好!我以前也做过网页,现在来编程玩玩。
提个建议,右上角的三个link改为白色,会舒服些。Top
37 楼huadao(风一样的刀)回复于 2003-09-05 18:32:06 得分 3
做的不错,先收。看了一下介绍感觉更awk等差不多呀Top
38 楼minghui000(沉迷网络游戏)回复于 2003-09-05 18:40:19 得分 1
支持...http://tcltk.126.com
看看先
不错啊。。TCL。。。。厉害啊。。我不懂是啥玩意Top
39 楼nirvana_ya(简单)回复于 2003-09-05 19:16:02 得分 1
支持Top
40 楼spbabyba(大背)回复于 2003-09-05 19:17:50 得分 1
upTop
41 楼whmily(不回头的土豆)回复于 2003-09-05 19:20:10 得分 1
顶一下,先!
爽!!Top
42 楼coordinate(IT业农民工)回复于 2003-09-05 19:21:53 得分 1
恭喜Top
43 楼xxh2002(天上的太阳)回复于 2003-09-05 19:38:38 得分 1
up
Top
44 楼BAYERN(我有个愿望-要把月亮踹成直的,把太阳捏成方的)回复于 2003-09-05 20:00:07 得分 1
看过了,不错。。。Top
45 楼Wnyu(西门吹水II -- 单脚站在独木桥上)回复于 2003-09-05 20:23:20 得分 1
去看看Top
46 楼RookieStar(Yukon)回复于 2003-09-05 20:31:22 得分 1
做得很好,要向楼主学习!!!Top
47 楼kurt8276(扑火蝶)回复于 2003-09-06 15:31:08 得分 1
upTop
48 楼lovecreak(探路者)回复于 2003-09-06 15:38:51 得分 1
水平很高Top
49 楼DexterCN(德克斯特)回复于 2003-09-06 15:39:33 得分 1
很好啊~~~呵呵Top
50 楼liulcsy(juexing)回复于 2003-09-06 15:41:45 得分 1
不错。
我来接分了。Top
51 楼19830711(为你守候)回复于 2003-09-06 17:43:41 得分 1
原来楼主是山东大学的Top
52 楼Aofa_lee(Bill(Lee))回复于 2003-09-06 21:20:40 得分 1
我会去的!Top
53 楼eagle2000(小鹰)回复于 2003-09-06 21:33:23 得分 1
看看什么样子的Top
54 楼jeary2210(海风)回复于 2003-09-06 21:33:47 得分 0
真的不错啊Top
55 楼eagle2000(小鹰)回复于 2003-09-06 21:34:10 得分 0
不错Top
56 楼chanet(牧师)回复于 2003-09-06 22:58:07 得分 0
支持ing...
Top
57 楼gsp396(火烧耳朵)回复于 2003-09-07 08:59:55 得分 0
goodTop
58 楼bbgbianbaogui()回复于 2003-09-07 11:15:32 得分 0
upTop
59 楼smaxll(古颜)回复于 2003-09-08 11:53:08 得分 0
UP!
Top
60 楼xiaofei7569(夏雁)回复于 2003-09-08 12:03:33 得分 0
不错。Top
61 楼yl0002(yl)回复于 2003-09-08 13:30:43 得分 0
接分!谢谢了Top
62 楼leyt(思维机器)回复于 2003-09-08 14:08:57 得分 0
好Top
63 楼ding198116(阿拉丁)回复于 2003-09-08 14:15:11 得分 0
接分!Top
64 楼ding198116(阿拉丁)回复于 2003-09-08 14:18:56 得分 0
非常好!Top
65 楼jack_wq(风尘往事具忘去,心地无私天地宽)回复于 2003-09-08 14:52:29 得分 0
支持一下!Top
66 楼elvahuang(熊熊)回复于 2003-09-08 15:29:32 得分 0
做的比我好了 呵呵
只不过我不懂TCL 呵呵 也没时间学了 都大4了Top
67 楼mmxxt()回复于 2003-09-09 12:17:55 得分 0
我是大四做毕业设计的时候才接触的tcl,呵呵。这种语言很容易上手的,有人曾经把tcl称为unix下的visual basicTop
68 楼wxyq2000(wxyq)回复于 2003-09-09 13:20:09 得分 0
O:Top
69 楼mooling()回复于 2003-09-09 13:37:25 得分 0
ddsaTop
70 楼mmxxt()回复于 2003-09-10 12:09:47 得分 0
upTop
71 楼hsyouxishe(金笛玉洁)回复于 2003-09-10 14:29:27 得分 0
我支持你楼主Top
72 楼elxf99(赖子)回复于 2003-09-10 14:30:22 得分 0
up
Top
73 楼seapig2222(朱)回复于 2003-09-10 14:31:08 得分 0
支持。Top
74 楼lunary(楚云)回复于 2003-09-10 15:00:59 得分 0
还可以...动态效果少了点..然后知识在加强点就更好了..Top
75 楼Jinhao(辣子鸡丁·GAME就这样OVER了)回复于 2003-09-10 17:28:20 得分 0
NASA.gov
强!!!!!!!!!!!!!!!!!!!!!!Top
76 楼red98(鸿)回复于 2003-09-10 18:53:26 得分 0
不错!Top
77 楼mondschein(mondschein)回复于 2003-09-10 19:19:05 得分 0
不错~~~~~~~~~~~~~~Top
78 楼may618(五月)回复于 2003-09-10 23:34:21 得分 0
我去也Top
79 楼mmxxt()回复于 2003-09-11 19:12:41 得分 0
upTop
80 楼duanma(断码)回复于 2003-09-11 20:09:33 得分 0
顶~
http://tcltk.126.com
我以前去过哦~Top
81 楼chinaYz(若缺)回复于 2003-09-11 20:23:27 得分 0
啊!!打不开了,不过地址记下了,我顶了Top
82 楼thrillers(长夜漫漫,无心睡眠)回复于 2003-09-11 20:29:32 得分 0
11Top
83 楼Oversense(步步文)回复于 2003-09-11 20:44:04 得分 0
中秋快乐Top
84 楼mmxxt()回复于 2003-09-12 13:02:04 得分 0
upTop
85 楼mondschein(mondschein)回复于 2003-09-12 13:14:23 得分 0
顶~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Top
86 楼jeary2210(海风)回复于 2003-09-12 13:48:57 得分 0
很好啊,UP
谢谢Top
87 楼rexwell(初级选手)回复于 2003-09-12 14:20:04 得分 0
dingTop
88 楼bxjgood66(累并快乐着!真想...^-^)回复于 2003-09-12 14:30:30 得分 0
佩服佩服!
佩服佩服!
向你学习!!!!!!!!!!!!!!!!!!!!!!Top
89 楼cuistar(DancingCode)回复于 2003-09-12 17:03:40 得分 0
顶一个,别忘了给分啊
Top
90 楼skywolf255(天狼ÿ)回复于 2003-09-12 19:16:09 得分 0
顶
Top
91 楼bxjgood66(累并快乐着!真想...^-^)回复于 2003-09-13 09:39:17 得分 0
非常好!
向你学习!!!!!!!!!!!!!!!!!!!!!!Top
92 楼feeboby(rockの终点)回复于 2003-09-13 09:44:55 得分 0
upTop
93 楼zjp009(高手)回复于 2003-09-13 14:05:36 得分 0
看一看Top
94 楼Tinybaby(喝蚊子的牛奶)回复于 2003-09-13 21:14:27 得分 0
支持Top



