Article View: fj.lang.tcl
Article #145Re: [Q] Tcl/Tk + C
From: kabe
Date: Sun, 01 Jun 1997 00:00
Date: Sun, 01 Jun 1997 00:00
139 lines
4173 bytes
4173 bytes
$B$+$Y!wElKLBg3X$G$9!#(B
Tk$B$b>/$7JY6/$7$F$_$^$7$?!#(B
$B%5%s%W%k$r:G8e$K$D$1$^$9!#(B
$B%3!<%k%P%C%/4X?t$,#CB&$K$"$kNc$G$9!#(B
$B0UCO$G(BTcl_Eval$B$r;H$o$:$K=q$$$F$"$j$^$9!#(B
Tk$B$F!"(BTcl$B$HFHN)$+$H;W$C$F$?$iA4A3$=$s$J$3$H$J$$$s$G$9$M!D(B
$B!t550f$5$s$N%5%s%W%k$O(BTk_CreateMainWindow$B$r;HMQ$7$F$$$k$?$a(B
$B!t(BTk4.1$B0J9_$G$O$?$V$s%3%s%Q%$%k$G$-$^$;$s(B
$B!t:#$O(B Tk_Init $B$r;H$&$h$&$G$9(B
------------------------------------------------------------------------------
$B$+$Y(B@dais.is.tohoku.ac.jp $B#V#E#G#A(B $B#S#y#s#t#e#m#s(B MCMXCI
$B!V<+J,$O%l!<%5!<$@$C$F$$$&$N$+$$!)(B $B$?$$$7$?$3$H$J$$$8$c$J$$$+!#!W(B
------------------------------------------------------------------------------
::::::::::::::
slider.c
::::::::::::::
/*
* proc scaleCommand {x} {puts "slider value = $x"}
* scale .s -command scaleCommand
* pack .s
*/
#include <stdio.h>
#include <stdarg.h>
#include <tk.h>
static char *scaleCmdName = "scaleCommand";
static int ScaleCommandCallback( ClientData cd, Tcl_Interp *interp, int argc, char *argv[]);
static int Tcl_VarCmd( Tcl_Interp *interp, Tcl_CmdProc *proc, ClientData cd, ... );
int
main(int argc, char *argv[])
{
Tcl_Interp *interp;
Tk_Window toplevel;
/* extracts from Tk_Main below */
/* Initialize Tcl interpreter */
Tcl_FindExecutable(argv[0]);
interp = Tcl_CreateInterp();
/* parse options here if needed */
#if TCL_MAJOR_VERSION < 8
Tcl_Init(interp);
#endif
/* Initialize Tk */
/* application name/class determined from "argv0" (not set here)*/
Tk_Init(interp);
toplevel = Tk_MainWindow(interp);
/* Create commands & widgets */
Tcl_CreateCommand(interp, scaleCmdName, ScaleCommandCallback, (ClientData)NULL, (Tcl_CmdDeleteProc*)NULL );
Tcl_VarCmd(interp, Tk_ScaleCmd, toplevel,
".s",
"-command", scaleCmdName,
(char*)NULL );
Tcl_VarCmd(interp, Tk_PackCmd, toplevel,
".s",
(char*)NULL);
/* Main Loop */
Tk_MainLoop();
Tcl_DeleteInterp(interp);
Tcl_Exit(0);
/*NOTREACHED*/
return 0;
}
static int
ScaleCommandCallback( ClientData cd, Tcl_Interp *interp, int argc, char *argv[])
{
long val;
printf("slider value = %s\n", argv[1]);
return TCL_OK;
}
static int
Tcl_VarCmd( Tcl_Interp *interp, Tcl_CmdProc *proc, ClientData cd, ... )
{
va_list pvar;
int argc = 0;
char *argv[20];
va_start(pvar, cd);
argv[argc++] = "[Var]";
for( ; argc<20 && (argv[argc] = va_arg(pvar, char*)); argc++) ;
return (*proc)(cd, interp, argc, argv);
}
::::::::::::::
Imakefile
::::::::::::::
XCOMM
XCOMM
XCOMM
/* Set this according to --enable-shared during Tcl/Tk installation */
#ifndef SharedTclTk
#define SharedTclTk YES
#endif
/* Set these to the --prefix during Tcl/Tk installation */
TCLDIR = /usr/local/tcl8.0
TKDIR = /usr/local/tk8.0
#if SharedTclTk
TCLLIB = -L$(TCL_LIBDIR) -ltcl8.0
TKLIB = -L$(TK_LIBDIR) -ltk8.0
#else
/* SunOS demands *.so for -ltcl7.5 */
TCLLIB = $(TCL_LIBDIR)/libtcl7.5.a
TKLIB = $(TK_LIBDIR)/libtk4.1.a
#endif
LOCAL_LIBRARIES = $(TKLIB) $(TCLLIB) $(XLIB) MathLibrary
INCLUDES = $(TCL_INCLUDES) $(TK_INCLUDES)
TCL_INCLUDES = -I$(TCLDIR)/include
TK_INCLUDES = -I$(TKDIR)/include
TCL_LIBDIR = $(TCLDIR)/lib
TK_LIBDIR = $(TKDIR)/lib
CDEBUGFLAGS=-g
XCOMM This only works for SVR4
CCENVSETUP = LD_RUN_PATH=$(USRLIBDIR):$(TCL_LIBDIR):$(TK_LIBDIR)
SimpleProgramTarget(slider)
Technical Details
Message-ID:
<5mq7dh$6sd@masamune.dais.is.tohoku.ac.jp>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailReferences:
<f1273232-3105970217270001@d044192.aif.or.jp> <nhv67vzbz1z.fsf@mickey08.mickey.ai.kyutech.ac.jp>Show Full Headers
Complete Article Headers
X-Google-Language: Japanese,JIS X-Google-Thread: 15a83d,4e6e55e90f0f3f74 X-Google-Attributes: gid15a83d,public From: kabe@dais.is.tohoku.ac.jp Subject: Re: [Q] Tcl/Tk + C Date: 1997/06/01 Message-ID: <5mq7dh$6sd@masamune.dais.is.tohoku.ac.jp> X-Deja-AN: 245295522 Sender: kabe@masamune.dais.is.tohoku.ac.jp References: <f1273232-3105970217270001@d044192.aif.or.jp> <nhv67vzbz1z.fsf@mickey08.mickey.ai.kyutech.ac.jp> Organization: Design and Analysis of Information Systems, Biosystem Information Sciences, Department of System Information Sciences, Graduate School of Information Sciences,Tohoku University, Sendai 980, Japan Newsgroups: fj.lang.tcl