「夫を成功」へ導く妻の秘訣 座談会

お世話になります。

現在リストビューに、列幅0の隠し列を用いてデータをやりとりしています。この方法以外に個々の行にパラメータを与えることは可能でしょうか?

ウィンドウハンドルにパラメータを与えることでウィンドウプロシージャに値を渡す(やり方忘れました)ように、リストビューの個々の行に値を格納できるのではないかと思うのですが・・・

宜しくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

★アドバイス


>個々の行にパラメータを与えることは可能でしょうか?
 ↑
 可能です。
 lParamを使います。
・ListView_SetItem() マクロで設定します。
 ListView_GetItem() マクロで取得します。
・『ListView_GetItem ListView_SetItem lParam』をキーワードで
 検索するといろいろ見つかります。

参考資料:
ListView_SetItem( hWndListView, pitem );
ListView_GetItem( hWndListView, pitem );

typedef struct _LVITEM {
 UINT mask;
 int iItem;
 int iSubItem;
 UINT state;
 UINT stateMask;
 LPTSTR pszText;
 int cchTextMax;
 int iImage;
 LPARAM lParam;
} LVITEM, FAR *LPLVITEM;

参考URL:
http://bu-nyan.m.to/sdk/sdk18.htm
http://wisdom.sakura.ne.jp/system/winapi/common/ …

以上。

参考URL:http://bu-nyan.m.to/sdk/sdk18.htm
    • good
    • 0
この回答へのお礼

ありがとうございます。早速試してみます

お礼日時:2007/10/29 14:14

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qボタンの配置を変更したい

VC++でプログラミングしています。
MFC AppWizard(exe) でダイアログベースで造っています。
やりたいことは以下です。
・設定ファイルに表示位置(座標)が書いてあり、ダイアログの初期化時に
設定ファイルを読んで、指定された位置にボタンを表示する。

私の案としては以下のものがあります。
<案1>
予めボタンを貼り付けて造り、EXE起動時に移動させる。
ただし、移動させる関数があるかは不明。
調べましたが、今のところ見つかっていません。

<案2>
CButtonクラスのメンバを使用して、ボタンを表示する。
試しに以下のようなコードでやってみましたが、上手くいきませんでした。
使い方がわからず、試行錯誤しながらやってます。

CButton testButton;

void CTestGamenDlg::OnButton1()
{
RECTRect;

Rect.left = 100;
Rect.top = 100;
Rect.right = 200;
Rect.bottom = 200;

testButton.Create("test", BS_PUSHBUTTON, Rect, this, 100);
}


案1、2についての指摘、アドバイス、その他の案などありましたら
宜しくお願いします。
また、簡単なサンプルコードがあると助かります。

VC++でプログラミングしています。
MFC AppWizard(exe) でダイアログベースで造っています。
やりたいことは以下です。
・設定ファイルに表示位置(座標)が書いてあり、ダイアログの初期化時に
設定ファイルを読んで、指定された位置にボタンを表示する。

私の案としては以下のものがあります。
<案1>
予めボタンを貼り付けて造り、EXE起動時に移動させる。
ただし、移動させる関数があるかは不明。
調べましたが、今のところ見つかっていません。

<案2>
CButtonクラスのメンバを使用...続きを読む

Aベストアンサー

ボタンは、CWndが基本クラスなのでCWndの関数を使うことができます。
ということで、SetWindowPosを使って位置を移動させることができます。
使い方は、ヘルプを見てください。
それでは、がんばってください。

QListViewで、非表示列って作れますか?

VB6.0です。

一覧にListViewを使用しているのですが、
非表示にしたい列があるのですが、出来ませんか?
列幅は可変としているので、列幅を0にしておく方法は使えません。

一覧には見せないけど、更新項目なので、
いちいちもう1度読み直すのは面倒なので、非表示で持っていたいのですが…。
何か方法ありますか?

Aベストアンサー

どんな感じで ListView にアイテムを追加してるのか分かりませんが、
見せたくない項目をキーにしてしまうとか? キーが重複しそうなら連番
でも仮につけとけば良いし。

With ListView1.ListItems.Add
  .Key = strKey & Chr(0) & Cstr(lngItemCnt)
  .Text = strText
  .SubItems(1) = strSub1Text
  .SubItems(2) = strSub2Text
  .SubItems(3) = strSub3Text
End With

このようにして、

Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)

  MsgBox Left$(Item.Key, InStr(Item.Key, Chr(0)) - 1)

End Sub

こんな感じで非表示にしたい項目を拾うのは?

> ただし、SORT機能をつけた場合、ずれますよね。

その通りですが、それが問題になりそうですか?

並びが気になるならソートしたときに非表示の ListView も同時に同項目で
ソートすれば良いだけだし、そもそも配列も非表示の ListView は並び変え
は必要ないと思いますよ。

表示されている ListView の ItemClick イベントなどで Key または Text
は拾えるので、あとはそれを配列や 非表示 ListView から探すだけでは?

表示されていないものに並びは関係ないと思いますが、いかかでしょう?

ただ、こっちの方法は効率悪いですね(´・ω・`)

どんな感じで ListView にアイテムを追加してるのか分かりませんが、
見せたくない項目をキーにしてしまうとか? キーが重複しそうなら連番
でも仮につけとけば良いし。

With ListView1.ListItems.Add
  .Key = strKey & Chr(0) & Cstr(lngItemCnt)
  .Text = strText
  .SubItems(1) = strSub1Text
  .SubItems(2) = strSub2Text
  .SubItems(3) = strSub3Text
End With

このようにして、

Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)

  MsgBox Left$(...続きを読む

QCListCtrlクラスに初期化する関数はないのでしょうか?

お世話になります。

VC++6.0 MFC で開発しております。

CtreeCtrlクラスのResetContent()のように
CListCtrlクラスに初期化する関数はないのでしょうか?
※アイテムや列を削除する関数は見つけれたのですが。。。

Aベストアンサー

CListCtrl::DeleteAllItems
http://msdn.microsoft.com/ja-jp/library/x47efeht%28VS.80%29.aspx

CListCtrl のメンバ
http://msdn.microsoft.com/ja-jp/library/zdff988k%28VS.80%29.aspx

QVC++で文字列から任意の文字を削除するにはどうしたらいいですか?

VC++で文字列から任意の文字を削除するにはどうしたらいいですか?
タイトルのとおりです。
VC++にてあるソフトのプロファイルを作成したいのですが、

[Profile]
Type = Default

となっており、Defaultという部分だけとりたいのです。
ちなみにDefault以外にもGuestやAdminなどもありますので、Type = まで取り出したいのです。

どうしたらいいんでしょうか?
よろしくお願いします。

Aベストアンサー

何がしたいかいまいちわかりませんが、
とりあえず文字列をCStringに一回入れてください。
右側を消したいならTrimRight
特定文字列まで取得したい場合は、FindとLeftとかで。


#include "afx.h"
#include <iostream>
int main()
{
CString str;// ここに文字列を入れる
CString dst;
dst = str = "type = default";
std::cout << str;
// 右側を削除
dst.TrimRight("default");
std::cout << dst << std::endl;
dst = str;
// =までを取得
dst = dst.Left(dst.Find('=')+1);
std::cout << dst << std::endl;

return 0;
}

QWORD型をCString型に変換する方法

WORD型をCString型に変換する方法について質問させていただきました。
WORD型の中身は整数値が入っておりその整数の値をCStringに変換する方法がわからなかったので質問させていただきました。

VC++2010を使用しており、困っています。どうかよろしくお願いします

Aベストアンサー

CString str;
DWORD dwData;

dwData = 123;

str.Format(_T("%d"), dwData);

こーゆーことでしょうか?


人気Q&Aランキング