アク禁になった人の為にレス代行するスレその36@規制議論
■ このスレッドは過去ログ倉庫に格納されています
★ 依頼テンプレ ★ ( *は必ず記入)
【依頼に関してのコメントなど】
---------------------------------------------------------------------------
【板名*】
【スレ名*】
【スレのURL*】
【名前欄】
【メール欄】
【本文*】↓
---------------------------------------------------------------------------
◆ 削除ガイドライン/ローカルルールに違反する依頼は受け付け致しません。
◆バーボン規制中の方の依頼は受け付けません。
◆ 依頼者、代行者は >>2-3 と 定期/臨時で貼っている ☆案内☆ を必ず読んでください。
★ 代行者は重複防止のため【必ず宣言】してから書き込んで下さい ★
☆ 代行者の方は必ず【本文】以降をコピーして貼り付けて下さい ☆
★ 代行者は依頼者のage、sageの要望を無視しないでください ★
★【VIP臭い】規制の方は、少々(10分程度)待って書き込みして下さい★
前スレ
アク禁になった人の為にレス代行するスレその35@規制議論
http://qb5.2ch.net/test/read.cgi/sec2chd/1136108200/ 【依頼に関してのコメントなど】次のやつと続けてお願い致します・・・
【板名*】PC等->プログラム
【スレ名*】Win32API質問箱 Build39
【スレのURL*】http://pc8.2ch.net/test/read.cgi/tech/1136673250/l1n
【名前欄】
【メール欄】
【本文*】↓
リストビューコントロール(SysListView32)を単独でCreateWindowして使っています。何かの子ウィンドウにはしていません。
A) 現在選択されているアイテムのインデックス番号を取得するにはどうしたらよいのでしょうか? (LVS_SINGLESELでたった一つしか選択できないようにしています。)
リストボックスの場合はLB_GETCURSELメッセージで取得できました。
でもリストビューにはそれに相当するものが見当たりません。
思いつくのはLVM_GETITEMメッセージで全アイテムを一つ一つstate & LVIS_SELECTEDチェックする、というものですが、ちょっとバカみたいな気がするのですが・・・
B) あと、カラムヘッダの部分を右クリックすると暴走してしまうんですが、これはCOMCTL32のバグなんでしょうか? リストビューを他のウィンドウの子ウィンドウにしていると暴走しないみたいなんですが・・・Win98+IE5.5でもWin2000+IE6.0でもそうなります。
以下、選択アイテム検出部がリストボックスのものになっています。
#include <windows.h>
#include <stdio.h>
#include <commctrl.h>
void main(){
HINSTANCE hInst = GetModuleHandleA(NULL);
InitCommonControls();
HWND hwnd = CreateWindowA("SysListView32", "LIST", WS_VISIBLE | LVS_REPORT | LVS_SINGLESEL, 20, 20, 200, 180, NULL, NULL, hInst, NULL);
if (hwnd == NULL){
printf("CreateWindow() error\n");
exit(-1);
} 【依頼に関してのコメントなど】前のやつと続けてお願い致します・・・
【本文*】↓
SendMessageA(hwnd, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);
LVCOLUMNA column;
column.mask = LVCF_TEXT | LVCF_WIDTH;
column.cx = 48;
column.pszText = "No.";
SendMessageA(hwnd, LVM_INSERTCOLUMNA, 0, (LPARAM)&column);
column.pszText = "Name";
SendMessageA(hwnd, LVM_INSERTCOLUMNA, 1, (LPARAM)&column);
LVITEMA item;
item.iItem = 0;
item.iSubItem = 0;
item.mask = LVIF_TEXT;
item.pszText = "0";
SendMessageA(hwnd, LVM_INSERTITEMA, 0, (LPARAM)&item);
item.iItem = 1;
item.pszText = "1";
SendMessageA(hwnd, LVM_INSERTITEMA, 0, (LPARAM)&item);
item.iItem = 2;
item.pszText = "2";
SendMessageA(hwnd, LVM_INSERTITEMA, 0, (LPARAM)&item);
item.iSubItem = 1;
item.pszText = "a";
SendMessageA(hwnd, LVM_SETITEMTEXT, 0, (LPARAM)&item);
item.pszText = "b";
SendMessageA(hwnd, LVM_SETITEMTEXT, 1, (LPARAM)&item);
item.pszText = "c";
SendMessageA(hwnd, LVM_SETITEMTEXT, 2, (LPARAM)&item);
MSG msg;
for(;;){
GetMessage(&msg, NULL, 0, 0);
TranslateMessage(&msg);
DispatchMessage(&msg);
if ((msg.message == WM_KEYDOWN) && (msg.wParam == VK_RETURN)){
LRESULT index = SendMessageA(hwnd, LB_GETCURSEL, 0, 0);
}
if (msg.message == WM_SYSCOMMAND){
if (msg.wParam == SC_CLOSE){
exit(0);
}
}
}
} ■ このスレッドは過去ログ倉庫に格納されています