C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: MFC、カスタムドローについての質問。


(過去ログ 53 を表示中)

[トピック内 9 記事 (1 - 9 表示)]  << 0 >>

■29607 / inTopicNo.1)  MFC、カスタムドローについての質問。
  
□投稿者/ ぶどう (1回)-(2008/12/11(Thu) 15:05:45)

分類:[C/C++] 

初めまして、ぶどうと申します。

使用環境:VC6++、MFC
言語:C++

質問:vc6++でのカスタムドローについて

以前までVisual Studio2005のMFCで開発をしておりまして、
リストコントロールに色付けするために、
管理イベントから“NM_CUSTOMDRAW”を用いて、処理をしていました。

VC6で同じ事をやろうとして、リストコントロールのイベントを見てみたのですが、
カスタムドローのイベントを見つける事が出来ませんでした。

VC6++ではカスタムドローは出来ないのでしょうか。

お手数ですが、宜しくお願いします。
引用返信 編集キー/
■29609 / inTopicNo.2)  Re[1]: MFC、カスタムドローについての質問。
□投稿者/ επιστημη (1454回)-(2008/12/11(Thu) 15:19:02)
επιστημη さんの Web サイト
> VC6++ではカスタムドローは出来ないのでしょうか。

できますよ。やったことあるし。
探し損ねただけかと。

# とはいえ"こうやりゃ見つかる"を示せないのが心苦しい。
# VC6はとっくの昔にお蔵入りですんで。すんません。

引用返信 編集キー/
■29610 / inTopicNo.3)  Re[2]: MFC、カスタムドローについての質問。
□投稿者/ みきぬ (294回)-(2008/12/11(Thu) 15:31:34)
とりあえず「VC カスタムドロー」でぐぐる

ここにたどり着く
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200208/02080061.txt

そのリンク先からここを見つける ← 今ここ
http://www.kumei.ne.jp/c_lang/sdk3/sdk_261.htm

的外れだったらすいません。
# N88-Basic から 一足飛びに VC++ へ飛ぼうとして派手に失敗してから、C++ には苦手意識が…。
引用返信 編集キー/
■29611 / inTopicNo.4)  Re[3]: MFC、カスタムドローについての質問。
□投稿者/ ぶどう (3回)-(2008/12/11(Thu) 15:34:59)
> επιστημηさん

いえ、その情報だけでもありがたいです。
覚えていたらでいいのですが、
以前やった時はソースで直接書いたのでしょうか。
それともクラスウィザードのような物を使って、アプリ上から追加したのでしょうか。

>みきぬさん
情報ありがとうございます。
これから、そのページを見てみます。


お二人とも、ご協力ありがとうございます。
引用返信 編集キー/
■29614 / inTopicNo.5)  Re[1]: MFC、カスタムドローについての質問。
□投稿者/ aetos (40回)-(2008/12/11(Thu) 15:55:50)
No29607 (ぶどう さん) に返信
> VC6で同じ事をやろうとして、リストコントロールのイベントを見てみたのですが、
> カスタムドローのイベントを見つける事が出来ませんでした。

クラスウィザードは対応していないようですが、カスタムドローが可能かどうかはVC++ のバージョンではなく OS のバージョンで決まります。
で、Win95 + IE3 以降であれば可能ですから、その点は心配いらないでしょう。

ウィザードが使えないとなると、ON_NOTIFY マクロを手書きすることになるかと思います。
# ウィザードに表示されるイベントの内容を増やすような裏技があるのかどうかは知りません。

手書きの方法は、この辺が参考になるでしょうか。
http://msdn.microsoft.com/ja-jp/library/749htf6k.aspx

最新の MSDN を見たら、ON_NOTIFY について書いてないですね。どうしちゃったのかな。
引用返信 編集キー/
■29615 / inTopicNo.6)  Re[2]: MFC、カスタムドローについての質問。
□投稿者/ ロック (144回)-(2008/12/11(Thu) 16:05:55)
昔リストビューで、↓この辺を参考によくやりました。

http://www.codeguru.com/cpp/controls/listbox/
http://www.codeguru.com/cpp/controls/listview/

http://www.codeproject.com/KB/list/

サブクラス化してDrawItem()内でごちゃごちゃ描いてました

引用返信 編集キー/
■29616 / inTopicNo.7)  Re[2]: MFC、カスタムドローについての質問。
□投稿者/ とっちゃん (359回)-(2008/12/11(Thu) 16:10:03)
とっちゃん さんの Web サイト
No29614 (aetos さん) に返信
> ■No29607 (ぶどう さん) に返信
>>VC6で同じ事をやろうとして、リストコントロールのイベントを見てみたのですが、
>>カスタムドローのイベントを見つける事が出来ませんでした。
>
> クラスウィザードは対応していないようですが、カスタムドローが可能かどうかはVC++ のバージョンではなく OS のバージョンで決まります。
> で、Win95 + IE3 以降であれば可能ですから、その点は心配いらないでしょう。
>
VC6は、下位互換の影響などの関係があって、Wizard周りは、VC4.2のころとほとんど変わりません。
なので、ClassWizard には出てこないやつが山ほどあります。
98以降で追加された奴は、特に。。。

> ウィザードが使えないとなると、ON_NOTIFY マクロを手書きすることになるかと思います。
> # ウィザードに表示されるイベントの内容を増やすような裏技があるのかどうかは知りません。
>
ウィザードに拡張機能はありませんので手書きするしかありませんね。
フィルターはいじれますけど、.clw だったかな?なんかそれっぽい拡張子の奴(テキストファイル)を直接書き換えればフィルター変更できることは覚えてますが、やり方はもう忘れました。



引用返信 編集キー/
■29638 / inTopicNo.8)  Re[3]: MFC、カスタムドローについての質問。
□投稿者/ ぶどう (4回)-(2008/12/11(Thu) 18:09:16)
解決致しました。

aetosさんが紹介して頂いた、
ON_NOTIFY マクロを手書きする方法によって、
カスタムドローを実行する事が出来ました。

回答して頂いた皆様に感謝致します。
ありがとうございました。
解決済み
引用返信 編集キー/
■29639 / inTopicNo.9)  Re[3]: MFC、カスタムドローについての質問。
□投稿者/ こうへい (3回)-(2008/12/11(Thu) 18:10:53)
以前やったことがありますが手書きだったような・・・
で古いソースを探してみたら、以下のようにやってました

宣言
class xxxx : public CListCtrl
{
  ・・・
  afx_msg void OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult);
}

実装
BEGIN_MESSAGE_MAP(xxxx, CListCtrl)
  ON_NOTIFY_REFLECT(NM_CUSTOMDRAW, OnCustomDraw)
END_MESSAGE_MAP()

void xxxx::OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult)
{
  NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>(pNMHDR);

  ・・・
}

あとはみきぬさん紹介の
http://www.kumei.ne.jp/c_lang/sdk3/sdk_261.htm
を参照すればよろしいかと

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -