🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: fj.windows.x
Article #3

Re: question

#3
From: Toshio Ueshiba
Date: Thu, 29 Oct 1992 03:40
54 lines
2439 bytes
はじめまして、植芝@電総研と申します。

On 10/28/92(15:29) tukamoto@human.human-system.co.jp (Hideo Tukamoto) wrote
in <TUKAMOTO.92Oct28152950@human.human-system.co.jp> (fj.windows.x:2983/etlss2):
 | 実はXviewプログラミングでCANVASに絵を描きたいのですが
 | その絵を実際に書く関数を指定するとき、例えばその関数を
 |	Draw()
 | などとすると
 |	(Canvas)xv_create( ..............
 |                           CANVAS_REPAINT_PROC,Draw,
 |	                   ..............
 |	                   NULL);
 |  の様に指定してやれば良いとの事なのですが、これだと関数に
 | 引数をもたせる事は出来ません。すなわち全て引数はvoid扱い
 | となってしまうように思います。

引数を持たせることはできないように思いますが、xv_create した object に
対して、引数に相当する変数を属性リストによって張り付けることができます。

たとえば、こんな感じです。

{
    ArgType	arg;
    (Canvas)xv_create( ..............
                      CANVAS_REPAINT_PROC, Draw,
		      WIN_CLIENT_DATA, arg, /* canvas に arg を張り付ける */
	              ..............
	              NULL);
}

void
Draw(canvas, window, repaint_area)

    Canvas	canvas;
    Xv_Window	window;
    Rectlist	*repaint_area;
{
    ArgType	arg;

    arg = (ArgType)xv_get(canvas, WIN_CLIENT_DATA);	/* arg を取り出す */
    ........
}


window でなく panel item に変数を張り付けたい時は、PANEL_CLIENT_DATA を
使います。また、複数の変数を張り付けたい時は、XV_KEY_DATA 属性が使えます。
ちょっと面倒ですが、これによってほとんどの大域変数を避けることができると
思います。

詳しくは、"XView Programming Manual" の 7.16 を御覧下さい。


電子技術総合研究所 知能システム部 視覚情報研究室    植芝俊夫
E-Mail: ueshiba@etl.go.jp
Technical Details
Message-ID: <gxrRQ.ueshiba@etl.go.jp>
Path: arc1-ca.pugleaf.net!sparky!uunet!europa.asd.contel.com!darwin.sura.net!sgiblab!nec-gw!nec-tyo!wnoc-tyo-news!etl.go.jp!ueshiba
References: <TUKAMOTO.92Oct28152950@human.human-system.co.jp>

Show Full Headers
Complete Article Headers
Newsgroups: fj.windows.x
Path: arc1-ca.pugleaf.net!sparky!uunet!europa.asd.contel.com!darwin.sura.net!sgiblab!nec-gw!nec-tyo!wnoc-tyo-news!etl.go.jp!ueshiba
From: ueshiba@etl.go.jp (Toshio Ueshiba)
Subject: Re: question
Content-Type: text/plain; charset=ISO-2022-JP
Message-ID: <gxrRQ.ueshiba@etl.go.jp>
Reply-To: ueshiba@etl.go.jp (Toshio Ueshiba)
Organization: Electrotechnical Laboratory, Tsukuba Science City
References: <TUKAMOTO.92Oct28152950@human.human-system.co.jp>
Mime-Version: 1.0
Distribution: fj
Date: Thu, 29 Oct 1992 03:40:59 GMT
Lines: 54