GUI 剖析之列表框控制項(ListView)

2021-06-11 07:10:23 字數 4662 閱讀 4225

#pragma comment(lib,"comctl32.lib")//導入庫comctl32.lib

#define max_loadstring 100

#define idc_listview   1

// 全域性變數:

hinstance hinst;        // 當前例項

tchar sztitle[max_loadstring];     // 標題欄文字

tchar szwindowclass[max_loadstring];   // 主視窗類名

// 此**模組中包含的函式的前向宣告:

atom    myregisterclass(hinstance hinstance);

bool    initinstance(hinstance, int);

lresult callback wndproc(hwnd, uint, wparam, lparam);

int_ptr callback about(hwnd, uint, wparam, lparam);

void additemoflistview(int row,hwnd hlistview);

int apientry _twinmain(hinstance hinstance,

hinstance hprevinstance,

lptstr    lpcmdline,

int       ncmdshow)

hacceltable = loadaccelerators(hinstance, makeintresource(idc_listviewtest));

// 主訊息迴圈:

while (getmessage(&msg, null, 0, 0))}

return (int) msg.wparam;}

////  函式: myregisterclass()

////  目的: 註冊視窗類。

////  注釋:

////    僅當希望

//    此**與新增到 windows 95 中的「registerclas***」

//    函式之前的 win32 系統相容時,才需要此函式及其用法。呼叫此函式十分重要,

//    這樣應用程式就可以獲得關聯的

//    「格式正確的」小圖示。

//atom myregisterclass(hinstance hinstance) //

//   函式: initinstance(hinstance, int)

////   目的: 儲存例項控制代碼並建立主視窗

////   注釋:

////        在此函式中,我們在全域性變數中儲存例項控制代碼並

//        建立和顯示主程式視窗。

//bool initinstance(hinstance hinstance, int ncmdshow)

showwindow(hwnd, ncmdshow);

updatewindow(hwnd);

return true;}

////  函式: wndproc(hwnd, uint, wparam, lparam)

////  目的: 處理主視窗的訊息。

////  wm_command - 處理應用程式選單

//  wm_paint - 繪製主視窗

//  wm_destroy - 傳送退出訊息並返回

////

tchar buffer[20];

tchar listindex[100][256]=,,,,,,};

tchar listname[100][256]=,,,,,};

tchar listage[100][256]=,,,,,};

tchar list***[100][256]=,,,,,};

tchar listedu[100][256]=,,,,,};

lresult callback wndproc(hwnd hwnd, uint message, wparam wparam, lparam lparam)

break;

}case wm_notify:

break; 

case cdds_itemprepaint: 

break; 

case (cdds_itemprepaint|cdds_subitem): 

return cdrf_dodefault; 

}  break; 

}  } 

}switch(loword(wparam))

} //if(((lpnmhdr)lparam)->code==nm_click)

//;// wsprintf(szbuffer,text("你所選中的是第%d行"),iselect+1);

// if(iselect!=-1)

// //}

if(((lpnmhdr)lparam)->code==nm_dblclk)

;wsprintf(szbuffer,text("你所選中的是第%d行"),iselect+1);

if(iselect!=-1)

} break;}

}break;

}case wm_size:

case wm_command:

wmid    = loword(wparam);

wmevent = hiword(wparam);

// 分析選單選擇:

switch (wmid)

break;

}case id_inserlie:

case id_getcount:

case id_getinfo:

;wsprintf(szbuffer,text("你所選中的是第%d行"),iselect+1);

if(iselect!=-1)

break;

}default:

return defwindowproc(hwnd, message, wparam, lparam);

}break;

case wm_paint:

hdc = beginpaint(hwnd, &ps);

// todo: 在此新增任意繪圖**...

endpaint(hwnd, &ps);

break;

case wm_destroy:

postquitmessage(0);

break;

default:

return defwindowproc(hwnd, message, wparam, lparam);

}return 0;}

// 「關於」框的訊息處理程式。

int_ptr callback about(hwnd hdlg, uint message, wparam wparam, lparam lparam)

break;

}return (int_ptr)false;

}void additemoflistview(int row,hwnd hlistview)

tchar buffer[20];

lv_item lvi;

lvi.mask = lvif_text;

lvi.iitem = row;

lvi.isubitem = 0;

wsprintf(buffer,listindex[row]);

lvi.psztext =buffer;

sendmessage(hlistview,lvm_insertitem,0,(lparam)&lvi);

/lvi.isubitem++;

zeromemory(buffer,sizeof(buffer)/sizeof(tchar));

wsprintf(buffer,listname[row]);

lvi.psztext =buffer;

sendmessage(hlistview,lvm_setitem,0,(lparam)&lvi);

/zeromemory(buffer,sizeof(buffer)/sizeof(tchar));

wsprintf(buffer,listage[row]);

lvi.psztext =buffer;

sendmessage(hlistview,lvm_setitem,0,(lparam)&lvi);

/zeromemory(buffer,sizeof(buffer)/sizeof(tchar));

wsprintf(buffer,list***[row]);

lvi.psztext =buffer;

sendmessage(hlistview,lvm_setitem,0,(lparam)&lvi);

zeromemory(buffer,sizeof(buffer)/sizeof(tchar));

wsprintf(buffer,listedu[row]);

lvi.psztext =buffer;

sendmessage(hlistview,lvm_setitem,0,(lparam)&lvi); }

C ListBox 列表框控制項

列表框 listbox 將所提供的內容以列表的形式顯示出來,並可以選擇其中的一項或多項內容,從形式上比使用核取方塊更好一些。例如,在 word 中設定字型時介面如下圖所示。在列表框控制項中有一些屬性與前面介紹的控制項不同,如下表所示。列表框還提供了一些方法來操作列表框中的選項,由於列表框中的選項是乙...

MFC控制項(一)(列表框)

列表框控制項新增變數 clistbox m list1 clistbox m list2 按鈕變數 cbutton m in cbutton m out 文字框控制項變數 cstring m item 1 初始化時,將按鈕in out狀態設為不可用 m in.enablewindow false m...

可輸入的Web下拉列表框控制項

vs2005提供的web下拉列表框 不支援輸入,只能選擇,我們可以繼承該控制項來支援輸入功能,實現的原理很簡單,就是增加乙個textbox控制項疊加在下拉列表框上,客戶端通過指令碼來同步這兩個控制項的值,先看看服務端 using system using system.collections.gen...