🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: fj.comp.lang.tcl
Article #5

Re: C と Tk の使い方について

#5
From: Hiroshi Narimatsu
Date: Thu, 04 Jun 1998 00:00
59 lines
3538 bytes
成松です。

In article <35754C99.C3F5382A@kais.kyoto-u.ac.jp>
sobue <sobue@kais.kyoto-u.ac.jp> writes:

>   > >   C言語でTkを使いたいのですが、どうやったら良いのか情報を教えて下さい。本
>   > >   を読んでも具体例がないのでTk_Window などの使い方がわかりません。アプリケ
>   > >   ーションのcの簡単なソースがあったら良いのですが。(窓を表示するだけと
>   > >   か)
>   >
>   > Ousterhoutの『Tcl and the Tk Toolkit』の Part IV: Tk's C Interfacesに
>   > まさにそのC言語でのTkの使い方を具体例を使って説明してあります。
>   > 御覧になったら如何でしょうか?
>   > --
>   > 成松 宏      nari@mxb.meshnet.or.jp  http://www2b.meshnet.or.jp/~nari
>
>     ご紹介の本の邦訳はすでに持っていますが、確かに各関数の機能については詳しく記述
>   してあるのですが、実際にアプリケーションを作る時にどうやって使ったら良いのかわか

sobueさんのおっしゃる『C言語でTkを使う』という意味を誤解していたよう
です。すみません。『C言語でTkを使う』やりかたとしては次の2つを思い付
きます。

  1. C言語でTkの新たなwidgetを作り、既存のtcl/tkと一緒に使う
  2. C言語で書いたプログラムにtcl/tkのインタプリタを組み込み、tcl/tk
     のプログラムを使用できるようにする。

わたしは、1ばかりやっていたもので、sobueさんもそうであろうと思って
答えてしまいました。 2の方法であれば、次のようなプログラムでできます。

======================= sample.c ============================
#include <tk.h>

main()
{
  Tcl_Interp *interp;
  interp = Tcl_CreateInterp();
  if (Tcl_Init(interp) == TCL_ERROR) exit(1);
  if (Tk_Init(interp) == TCL_ERROR) exit(1);
  Tcl_StaticPackage(interp, "Tk", Tk_Init, (Tcl_PackageInitProc *) NULL);
  Tcl_Eval(interp,"button .exit -text exit -command exit;pack .exit");
  Tk_MainLoop();
  Tcl_DeleteInterp(interp);
  Tcl_Exit(0);
}
======================= sample.c  (ここまで) ================

コンパイル&リンクの方法は、私の環境では、次のようになります。

% cc sample.c -I/usr/X11R6/include -I/usr/local/include -L/usr/X11R6/lib\
	-L/usr/local/lib -ltk42 -ltcl76 -lX11 -lm

tcl/tkのバージョンが変わると、多少修正が必要になるかもしれません。
tkに添付の tkAppInit.cとtkMain.cを参考にすると、いいと思います。

sobueさんの『C言語でTkを使う』方法が、これでもなければ教えて下さい。
--
成松 宏      nari@mxb.meshnet.or.jp  http://www2b.meshnet.or.jp/~nari
Technical Details
Message-ID: <6l57qq$jn1$1@hslpc1.humble.co.jp>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail
References: <35721239.D890E0A1@kais.kyoto-u.ac.jp> <6kvj1s$k98$2@hslpc1.humble.co.jp> <35754C99.C3F5382A@kais.kyoto-u.ac.jp>

Show Full Headers
Complete Article Headers
X-Google-Language: Japanese,JIS
X-Google-Thread: 149cc1,347df835c7d5c566
X-Google-Attributes: gid149cc1,public
X-Google-Thread: 111bd3,347df835c7d5c566
X-Google-Attributes: gid111bd3,public
X-Google-Thread: 114a87,347df835c7d5c566
X-Google-Attributes: gid114a87,public
From: nari@mxb.meshnet.or.jp (Hiroshi Narimatsu)
Subject: Re: C と Tk の使い方について
Date: 1998/06/04
Message-ID: <6l57qq$jn1$1@hslpc1.humble.co.jp>
X-Deja-AN: 359375872
References: <35721239.D890E0A1@kais.kyoto-u.ac.jp> <6kvj1s$k98$2@hslpc1.humble.co.jp> <35754C99.C3F5382A@kais.kyoto-u.ac.jp>
Mime-Version: 1.0 (generated by tm-edit 7.106)
Content-Type: text/plain; charset=ISO-2022-JP
X-Complaints-To: news@newssvd06.biglobe.ne.jp
X-Trace: meshsv230.tk.mesh.ad.jp 896934605 10859 (None) 210.147.10.37
Organization: Humble Soft Ltd. Japan
Newsgroups: fj.comp.lang.tcl,fj.comp.lang.c,fj.conp.lang.c++