CListCtrlの使い方・・・ – 固定ページ 2 – プログラミング – Home

通知
すべてクリア

[解決済] CListCtrlの使い方・・・

固定ページ 2 / 4

KENBO
 KENBO
(@KENBO)
ゲスト
結合: 19年前
投稿: 55
Topic starter  

>リストビューのプロパティをいじったのであればその情報がほしいです。
これをうけてプロパティーを見たのですが、
『オーナー描画固定』にチェックが入ってました。
このチェックをはずしたらしななくなりました。(^o^)/

>で、将来的にカスタムドローかオーナドローをするようなんですが、そこら辺の情報も
>ください。
この辺の話はよく意味がわからないのですが・・・
リストコントロールに表示したいだけです。


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

> この辺の話はよく意味がわからないのですが・・・

> // 行の背景色を設定する
ってことは、リストビューの背景色を変えたいということですよね?
item.lParamに色の情報を設定するだけでは、デフォルトのCListCtrlは何もしてくれま
せん。自前で、lParamの値をみて色をつける必要があります。

以前似たような質問を解答したことがあるので参考に載せておきます。
http://www2.moug.net/bbs/program/20060302000002.htm


返信引用
KENBO
 KENBO
(@KENBO)
ゲスト
結合: 19年前
投稿: 55
Topic starter  

上記WEBの説明では、
NM_CUSTOMDRAWを追加しろとのことですが、ないのですが・・・
他のやり方はないのでしょうか?
InsertItemをする前に
設定するのでしょうか?


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

> NM_CUSTOMDRAWを追加しろとのことですが、ないのですが・・・
VC6だとないですね。面倒ですが手動で入れるしかないです。

手動でいれる方法は、こちらを参考にどうぞ
http://www24.cds.ne.jp/~neg/pro/piyo1/clc/custom.html


返信引用
KENBO
 KENBO
(@KENBO)
ゲスト
結合: 19年前
投稿: 55
Topic starter  

>手動でいれる方法は、こちらを参考にどうぞ
> http://www24.cds.ne.jp/~neg/pro/piyo1/clc/custom.html
他にもっと簡単にできる方法はないですかね?


返信引用
Ban
 Ban
(@ban)
Prominent Member
結合: 5年前
投稿: 776
 

大差ないのでは?
新しいVCを買えば設定は多少は楽になるかもしれませんが、VC自体の習熟はもっと大変かも。
後は出来合を探して導入するとか、発注するとか。結局、別の手間(と予算)がかかるでしょう。


返信引用
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

CString に関しては、

item.pszText = const_cast< CString::PXSTR >( static_cast< CString::PCXSTR >(
str ) );

でよかとですよ。


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

VC++に関しては融通が利くし、色々細かい制御ができる代わりに
手間はそれなりにかかる物になっていると思います。
なので、使う方がそれなりに習熟する必要があるわけです。
この辺の話はトレードオフなので細かい制御を諦めて標準の動作で我慢するのか
勉強してでも細かい制御ができるようにマスターするのかの何れかでしょう。

なんにしても良くわからないで使うのが一番問題があるので
そこのところはなんとしてもきちんと納得いくまで調べるなり、
デバッグするなりしましょう。
良くわからないけれど動いているからいいやが一番怖いです。


返信引用
KENBO
 KENBO
(@KENBO)
ゲスト
結合: 19年前
投稿: 55
Topic starter  

>手動でいれる方法は、こちらを参考にどうぞ
> http://www24.cds.ne.jp/~neg/pro/piyo1/clc/custom.html

この通りに実行したら、
背景色を変更することができました。
ただし、
これだと4列(作成した列は4列)までで
5列目以降は変化しませんでした。


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

> ただし、
> これだと4列(作成した列は4列)までで
> 5列目以降は変化しませんでした。
どのようなコードを書いているのかワカリマセンが、
プログラムは記述したとおりにしか動きません。そういう記述をしているのでしょう。
(エスパーじゃないからこれだけではワカランでしょ。)


返信引用
KENBO
 KENBO
(@KENBO)
ゲスト
結合: 19年前
投稿: 55
Topic starter  

>item.pszText = const_cast< CString::PXSTR >( static_cast< CString::PCXSTR >(
>str ) );

PXSTR と PCXSTR
には何が入るのでしょうか?


返信引用
KENBO
 KENBO
(@KENBO)
ゲスト
結合: 19年前
投稿: 55
Topic starter  

>どのようなコードを書いているのかワカリマセンが、
>プログラムは記述したとおりにしか動きません。そういう記述をしているのでしょう。
こんな記述です。

void CLogControlDlg::OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult)
{
LPNMLVCUSTOMDRAW lcd=(LPNMLVCUSTOMDRAW)pNMHDR;

switch( lcd->nmcd.dwDrawStage ){
case CDDS_PREPAINT :
*pResult = CDRF_NOTIFYITEMDRAW;
break;

case CDDS_ITEMPREPAINT:
lcd->clrTextBk = lcd->nmcd.lItemlParam;
*pResult = CDRF_NEWFONT;
break;

default:
*pResult = CDRF_DODEFAULT;
break;
}
}


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

類似スレ
■ リストビューのカスタムドローで、一行全体を塗りつぶすには?
http://homepage1.nifty.com/MADIA/vc/vc_bbs/200409_04090038.html
で、「カスタムドローでは不可能」という結論に至っているようです。

オーナードローするしかないですかねぇ。。。(カスタムドローに比べてカナリ面倒)


返信引用
KENBO
 KENBO
(@KENBO)
ゲスト
結合: 19年前
投稿: 55
Topic starter  

>オーナードローするしかないですかねぇ。。。(カスタムドローに比べてカナリ面倒)
う~ん・・・仕様でそうせざるをえないか、あるいは時間に余裕があれば、
オーナードローでやってみます。。。

少し前の話になりますが気になったもので。
>item.pszText = str.GetBufferSetLength( str.GetLength() );
>m_LstCtl_Ctrl.SetItem(&item);
>str.ReleaseBuffer();
>のほうがよさそうだけど。
MSNDには
【GetBuffer 関数から返されたポインタを使って文字列の内容を変更するときは、次に
任意の CString メンバ関数を使う前に、ReleaseBuffer 関数を呼び出す必要がありま
す。】
と記述されてますが、
文字列の内容を変更しない時は、
ReleaseBufferはする必要がないということなのでしょうか?


返信引用
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

> PXSTR と PCXSTR
> には何が入るのでしょうか?

そのまんま。PXSTR と PCXSTR です。コピペで通りませんか?
…VC++ 6 だと通らないかなぁ。だったらゴメン。
そのままコピペでエラーが出るようであれば、

item.pszText = const_cast< LPTSTR >( static_cast< LPCTSTR >( str ) );

で。

> MSNDには
> 【GetBuffer 関数から返されたポインタを使って文字列の内容を変更するときは、
> 次に任意の CString メンバ関数を使う前に、ReleaseBuffer 関数を呼び出す
> 必要があります。】
> と記述されてますが、
> 文字列の内容を変更しない時は、
> ReleaseBufferはする必要がないということなのでしょうか?

そもそも、GetBuffer は文字列の内容を変更するために使うものでしょう。


返信引用
固定ページ 2 / 4

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました