線の描画の際で、
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回目の記述の前に何か関数を持ってこなければいけないと思うのですがどうすればいいのでしょうか。教えてください。
要するに、{ 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 );
とか?
PolyPolylineの用途から考えると・・・
PolyPolyline(hdc, pt + dwPolyPoints[0], dwPolyPoints + 1,2);
かな?
むぅ、エレガントだ。
そーいう考えができない自分が嫌になるねぇ。
もちっと脳味噌を柔らかくしなければ…
てか俺のはエレガントじゃない以前に仕様満たしてないのか。
4、5、6と区切ったうちの5、6を使いたいなら、REE さんのだね。
俺のじゃ、pt の集合から最初の5つ、次の6つを使っちまう。
REEさんシャノンさんありがとう。
でも・・・
すいません。それ以前の所のプログラムにdwPolyPoint[0]の指定はどのようにするのですか?
最近はじめたばかりで(T_T)
言っていることが意味不明だったらすいません。
意味不明です(^^;
dwPolyPoint[0]の指定ってどういう意味でしょう?
dwPolyPointsは吉田博美さんの書き込みで提示されていますが・・
うまく説明できないのであれば、具体的にソースを提示してみてください。
# 吉田博美さん=ひろさん?
お恥ずかしい限りです・・・。
PolyPolyline(hdc, pt + dwPolyPoints[0], dwPolyPoints + 1,2);
このプログラムで言うdwPolyPoints[0]って一番目に選んだところを指しているんですか?ここの記述の意味を教えてください。
たった今解決しました。
プログラムを書き直してましたが、REEさんのプログラムをそのまま
引用したらばっちり成功しました!!
ありがとうございました。
また疑問ができたらよろしくお願いします。
おっと!!
解決ボタンON V(^_^)V
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つ目のグループを飛ばすことが出来ます。
一度、配列とポインタの関係について勉強されることをお勧めします。
回答ありがとうございます。
ポインタを調べて勉強してみます。
ツイート | ![]() |