|
@68user様 Xtのラベルを表示させないようにするのは成功しました。 結局各ウィジェットごとにExposeイベントの処理を行うことにしました。 そこで次に各ウィジェットごとに服の色を変えようかと思い、 DrawOnWidgetの中でdrawgcの属性値を変えようとしたのですが どうもうまくいきません。1つのGCを各ウィジェットに対して 属性値を変えつつ使い回すのは無理なのでしょうか。 どうしても最初の窓用に設定した色で全て塗りつぶされてしまいます。 プログラムはこちらです↓ http://www.din.or.jp/~gongo/xtshirts.c http://www.din.or.jp/~gongo/color.dat http://www.din.or.jp/~gongo/fixedcolor.dat http://www.din.or.jp/~gongo/polygon.dat http://www.din.or.jp/~gongo/outline.dat まだ先の話ですが、いずれは1つの窓をクリックすることで 全ての服の色に影響を与え、再描画するようにしたいと考えております。 どうか宜しくお願い致します。 |
|
たぶん、DrawOnWidget の fscanf で、バッファオーバーランを 起こしています。そのため windownum が上書きされ、値が常に 0になってます。例えば POLNUM の数を増やすと動作しました。 開発初期段階のうちから if ( j >= sizeof(polpoints)/sizeof(polpoints[0]) ){ オーバーラン } というような自動チェックのコードを仕込んでおくこと をお勧めします。 あと、デバッグは、もうちょっと注意深くやってみましょう。 XChangeGC 周辺で windownum や pixelnum[windownum] の 値を表示させるだけで、おそらく気づいたことでしょうから。 |
|
ちゃうな。POLNUM は正しいのか。というわけで、 誤: fscanf("%d%*c%d%*c",&polpoints[j].x,&polpoints[j].y); 正: fscanf("%hd%*c%hd%*c",&polpoints[j].x,&polpoints[j].y); ですかね。XPoint のメンバ x,y は int でなく short int です。 |
|
@68user様 お手数おかけ致しまして申し訳ございませんでした。 DrawOnWidgetに入った時点でwindownumがきちんと受け渡されて 表示されていたので、てっきり大丈夫なのだと思いこんでいました。 以後もう少し気をつけてデバック致します。 |