リストビューコントロールにて、アイテムに変化がある度に送られる、LVN_ITEMCHANGED
通知の処理についての実験です。 MFCでは、CXXX::OnLvnItemChanged() 関数にあたります。 通知で送られるデータの各メンバの値によって、アイテムの状態がどのように変化したのかが分かります。 いろいろな操作をしたときに、どのように変化するかを調べましたので、以下に表で表します。 動作 iItem uChanged uNewState uOldState 備考 追加時 新 4 0 0 アイテムを追加した時 選択時 新 830 最初にアイテムを選択したとき 選択変更時 旧802 アイテムの選択中に、他のアイテムを追加で選択したとき 旧801 新830 選択解除時 旧802 アイテム以外の場所をクリックして、選択を解除したとき 再選択時 旧801 選択解除を行った後に、他のアイテムを選択したとき 新831 削除(非選択)---- 選択していないアイテムを削除したとき 削除(選択) 選択中802 選択中のアイテムを削除したとき 削除後、次のアイテムに点線の枠が移動する 選択中801 次 810 ↑苦労して作った表(TABLEタグ)がものの見事に消された。。。最初はうまくいっていたのに、更新したら消えた~ (ToT) そのうち作り直します。。。 この表の中で、2行や3行がまとまっている部分は、1つの動作で、複数回の LVN_ITEMCHANGED 通知が発生したものです。 これで、だいたいの傾向は分かります。 アイテムを選択したときには、nNewState が 3 になります。 アイテムの選択を解除したときには、uOldState が 2 になります。 とりあえず、これだけ分かれば、アイテムが選択されたときに、何かを表示して、選択が解除されたときには、それを隠す。 と言うようなことが出来るようになります。 これらの uXXXState の値は、以下のリスビューコントロールのアイテム状態と密接に関わっているようです。 #define LVIS_FOCUSED 0x0001 #define LVIS_SELECTED 0x0002 #define LVIS_CUT 0x0004 #define LVIS_DROPHILITED 0x0008 #define LVIS_GLOW 0x0010 #define LVIS_ACTIVATING 0x0020 #define LVIS_OVERLAYMASK 0x0F00 #define LVIS_STATEIMAGEMASK 0xF000 状態の値が 3 の場合は、uNewState = (LVIS_FOCUSED | LVIS_SELECTED) からなります。 選択時には、フォーカス(点線の枠)と選択(反転)が同時に行われるためです。 選択解除の場合は、その場にフォーカスが残りますので、uOldState = LVIS_SELECTED だけとなります。 次のアイテムを選択するときに、1回目の通知で、現在のフォーカスが消え(uOldState = LVIS_FOCUSED)、 2回目の通知で新しいアイテムが選択状態(uNewState = (LVIS_FOCUSED | LVIS_SELECTED) )になります。 ここでは、追加選択などの場合は扱っていませんが、以下のようなコードをCXXX::OnLvnItemChanged() 関数に追加して、アイテムを操作してみることで、簡単に確認することが出来ます。 TRACE("OnLvnItemchangedList iItem: %d, lParam: %d, uChanged: %d, uNewState: %d, uOldState: %d\n"
, pNMLV->iItem, pNMLV->lParam, pNMLV->uChanged, pNMLV->uNewState, pNMLV->uOldState);
by isoq
| 2004-09-08 11:37
| C/C++/Win32
|
PR
検索
最新の記事
カテゴリ
全体 開発日記 コンピュータ C/C++/Win32 Ubuntu / Linux Web データベース 3Dグラフィックス スクリプティング 書籍 - 技術系 フリーウェア モバイル 日記 子供のこと 旅行日記 観察日記 グルメ 写真館 天体観測 ショッピング アートワーク ヘルスケア 携帯からの投稿 誤変換検索 趣味 Windows 未分類 タグ
海外
Windows 7
旅行
C++
ドイツ
Windows
Aspire 1410
ボストン
MFC
OpenGL
出張
REGZA
天体望遠鏡
お買い得
CUDA
42Z9000
GPGPU
グルメ
XPモード
NaiNai
最新のトラックバック
以前の記事
2022年 03月 2020年 05月 2020年 04月 2020年 03月 2018年 05月 2016年 02月 2015年 04月 2015年 03月 2013年 10月 2012年 01月 2011年 12月 2011年 11月 2011年 10月 2011年 09月 2011年 08月 2011年 07月 2011年 06月 2011年 05月 2011年 03月 2011年 02月 2011年 01月 2010年 11月 2010年 10月 2010年 09月 2010年 08月 2010年 07月 2010年 06月 2010年 05月 2010年 04月 2010年 03月 2010年 02月 2010年 01月 2009年 12月 2009年 11月 2009年 10月 2009年 09月 2009年 08月 2009年 07月 2009年 06月 2009年 05月 2009年 04月 2009年 03月 2009年 02月 2009年 01月 2008年 12月 2008年 11月 2008年 10月 2008年 09月 2008年 08月 2008年 07月 2008年 06月 2008年 05月 2008年 04月 2008年 03月 2008年 02月 2008年 01月 2007年 12月 2007年 11月 2007年 10月 2007年 09月 2007年 08月 2007年 07月 2007年 06月 2007年 05月 2007年 04月 2007年 03月 2007年 02月 2007年 01月 2006年 12月 2006年 11月 2006年 10月 2006年 09月 2006年 08月 2006年 07月 2006年 06月 2006年 05月 2006年 04月 2006年 03月 2006年 02月 2006年 01月 2005年 12月 2005年 11月 2005年 10月 2005年 09月 2005年 08月 2005年 07月 2005年 06月 2005年 05月 2005年 04月 2005年 03月 2005年 02月 2005年 01月 2004年 12月 2004年 11月 2004年 10月 2004年 09月 2004年 08月 2004年 07月 2004年 06月 2004年 05月 2004年 04月 2004年 03月 2004年 02月 2001年 01月 その他のジャンル
記事ランキング
ブログジャンル
画像一覧
フォロー中のブログ
外部リンク
|
ファン申請 |
||