Win32APIでこのプログラムを作るには?

解決


吉田博美  2004-07-15 10:06:57  No: 53988

線の描画の際で、
pt[] = {{10,10},{100,100},{10,100},・・・};
DWORD dwPolyPoints[] = {4,5,6}; 
というように15個位の点のうちで次のような関数を用意すると、
PolyPolyline(hdc, pt, dwPolyPoints,2);
ここで示す2は4,5,6と区切った4と5が選ばれると思います。
次に同じ関数を用意し、
PolyPolyline(hdc, pt, dwPolyPoints,2);
選択される部分が5,6になるようにするためには2回目の記述の前に何か関数を持ってこなければいけないと思うのですがどうすればいいのでしょうか。教えてください。


シャノン  2004-07-15 16:48:56  No: 53989

要するに、{ 4, 5, 6 } から 4 を除外したいわけで?

DWORD dwPolyPoints[] = { 4, 5, 6 };
PDWORD *pdwPolyPoints = &dwPolyPoints[ 0 ];
PolyPolyline( hdc, pt, pdwPolyPoints, 2 );

pdwPolyPoints = &dwPolyPoints[ 1 ];
PolyPolyline( hdc, pt, pdwPolyPoints, 2 );

とか?


REE  2004-07-15 19:34:22  No: 53990

PolyPolylineの用途から考えると・・・
PolyPolyline(hdc, pt + dwPolyPoints[0], dwPolyPoints + 1,2);
かな?


シャノン  2004-07-15 23:01:47  No: 53991

むぅ、エレガントだ。
そーいう考えができない自分が嫌になるねぇ。
もちっと脳味噌を柔らかくしなければ…


シャノン  2004-07-15 23:07:34  No: 53992

てか俺のはエレガントじゃない以前に仕様満たしてないのか。
4、5、6と区切ったうちの5、6を使いたいなら、REE さんのだね。
俺のじゃ、pt の集合から最初の5つ、次の6つを使っちまう。


ひろ  2004-07-16 00:01:56  No: 53993

REEさんシャノンさんありがとう。
でも・・・
すいません。それ以前の所のプログラムにdwPolyPoint[0]の指定はどのようにするのですか?
最近はじめたばかりで(T_T)
言っていることが意味不明だったらすいません。


REE  2004-07-16 00:25:14  No: 53994

意味不明です(^^;
dwPolyPoint[0]の指定ってどういう意味でしょう?
dwPolyPointsは吉田博美さんの書き込みで提示されていますが・・
うまく説明できないのであれば、具体的にソースを提示してみてください。

# 吉田博美さん=ひろさん?


吉田博美=ひろ です★  2004-07-16 00:41:16  No: 53995

お恥ずかしい限りです・・・。

PolyPolyline(hdc, pt + dwPolyPoints[0], dwPolyPoints + 1,2);

このプログラムで言うdwPolyPoints[0]って一番目に選んだところを指しているんですか?ここの記述の意味を教えてください。


吉田博美  2004-07-16 00:58:36  No: 53996

たった今解決しました。
プログラムを書き直してましたが、REEさんのプログラムをそのまま
引用したらばっちり成功しました!!
ありがとうございました。
また疑問ができたらよろしくお願いします。


吉田博美  2004-07-16 00:59:51  No: 53997

おっと!!
解決ボタンON  V(^_^)V


REE  2004-07-16 01:15:23  No: 53998

dwPolyPoints[0]は一つ目のグループの点の数を表しています。

DWORD dwPolyPoints[] = {4,5,6}; 
である場合は4です。(これは分かりますよね?)

POINT pt[] = {{10,10},{100,100},{10,100},・・・};

この場合にptという表現は、(例外を除いて)配列の先頭の要素を指すポインタと解釈されます。PolyPolylineの第二引数もポインタですよね?

それに対し pt+4 とすることで、配列の5番目の要素を指すポインタになります。(&pt[4]と同じことです)

同様にdwPolyPoints+1 は配列dwPolyPointsの2番目の要素を指すポインタになります。(同様に&dwPolyPoints[1]と同じことです)

これらによって1つ目のグループを飛ばすことが出来ます。

一度、配列とポインタの関係について勉強されることをお勧めします。


吉田博美  2004-07-17 10:02:05  No: 53999

回答ありがとうございます。
ポインタを調べて勉強してみます。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加