Windows图形界面(GUI)-SDK-C/C++ - 列表框(List)
创始人
2025-01-10 23:05:31
0
  • 公开视频 -> 链接点击跳转公开课程
  • 博客首页 -> 链接点击跳转博客主页

目录

列表框(List)

控件样式

创建控件

初始控件

消息处理

示例代码


列表框(List)

控件样式
  • 列表框(ListBox)是Windows图形界面开发中常用的控件,允许用户从一个列表中选择一项或多项内容。列表框可以是单选、多选或扩展多选类型。
创建控件
  • 创建一个列表框控件,可以使用CreateWindowCreateWindowEx函数。
初始控件
  • 添加和删除列表项
    • LB_ADDSTRING:添加字符串到列表框。
    • LB_INSERTSTRING:在指定位置插入字符串。
    • LB_DELETESTRING:删除指定位置的字符串。
    • LB_RESETCONTENT:删除所有列表项。
  • 获取和设置选中项
    • LB_GETCURSEL:获取单选列表框的当前选择项索引。
    • LB_SETCURSEL:设置单选列表框的当前选择项。
    • LB_GETSELCOUNT:获取多选列表框中选中的项数。
    • LB_GETSELITEMS:获取多选列表框中选中的项索引。
    • LB_SETSEL:设置指定项为选中状态。
  • 获取和设置项文本
    • LB_GETTEXT:获取指定索引的列表项文本。
    • LB_GETTEXTLEN:获取指定索引的列表项文本长度。
消息处理
  • LBN_SELCHANGE:列表框的选择发生改变。
  • LBN_DBLCLK:列表框中的项被双击。
示例代码
// 获取单选列表框的当前选择项索引 int index = SendMessage(hListBoxSingle, LB_GETCURSEL, 0, 0);  // 设置单选列表框的当前选择项为第一个项 SendMessage(hListBoxSingle, LB_SETCURSEL, 0, 0);  // 获取多选列表框中选中的项数 int count = SendMessage(hListBoxMulti, LB_GETSELCOUNT, 0, 0);  // 获取多选列表框中选中的项索引 int* selections = (int*)malloc(count * sizeof(int)); SendMessage(hListBoxMulti, LB_GETSELITEMS, (WPARAM)count, (LPARAM)selections);  // 获取列表项文本长度 int textLength = SendMessage(hListBoxSingle, LB_GETTEXTLEN, index, 0);  // 获取列表项文本 TCHAR szItemText[256]; SendMessage(hListBoxSingle, LB_GETTEXT, index, (LPARAM)szItemText);  #include  #include "resource.h"  #define ID_BUTTON_PUSH1		11 #define ID_LB_LIST1			1 #define ID_LB_LIST2			2  HINSTANCE ghInstance = 0;  LRESULT CALLBACK MainWindowProc (HWND, UINT, WPARAM, LPARAM);  INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { 	ghInstance = hInstance;  	// 注册窗口 	WNDCLASSEX wndclass = { 0 }; 	wndclass.cbSize = sizeof(WNDCLASSEX); 	wndclass.style = NULL; 	wndclass.lpfnWndProc = MainWindowProc; 	wndclass.cbClsExtra = NULL; 	wndclass.cbWndExtra = NULL; 	wndclass.hInstance = hInstance; 	wndclass.hIcon = NULL; 	wndclass.hCursor = NULL; 	wndclass.hbrBackground = (HBRUSH)COLOR_WINDOW; 	wndclass.lpszMenuName = NULL; 	wndclass.lpszClassName = TEXT("0xCC"); 	wndclass.hIconSm = NULL;  	if (!RegisterClassEx(&wndclass)) 	{ 		MessageBox(NULL, TEXT("RegisterClassEx Failed"), TEXT("Error"), MB_OK); 		return 1; 	}  	// 创建窗口 	HWND hwnd = CreateWindowEx( 		WS_EX_CLIENTEDGE, 		TEXT("0xCC"), 		TEXT("CreateWindowEx"), 		WS_OVERLAPPEDWINDOW, 		CW_USEDEFAULT, 		CW_USEDEFAULT, 		960, 		540, 		NULL, 		NULL, 		hInstance, 		NULL 	);  	if (hwnd == NULL) 	{ 		MessageBox(NULL, TEXT("CreateWindowEx Failed"), TEXT("Error"), MB_OK); 		return 1; 	}  	// 显示窗口 	ShowWindow(hwnd, SW_SHOWDEFAULT);  	// 更新窗口 	UpdateWindow(hwnd);  	// 消息处理 	MSG msg = { 0 }; 	while (GetMessage(&msg, 0, 0, 0)) 	{ 		TranslateMessage(&msg); 		DispatchMessage(&msg); 	} 	  	return 0; }  // 窗口过程 LRESULT CALLBACK MainWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {  	switch (uMsg) 	{ 	case WM_CREATE: 	{ 		// 创建控件  		HWND hButton1 = CreateWindow( 			TEXT("BUTTON"), 			TEXT("BS_PUSHBUTTON1"), 			WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 			10, 120, 			200, 40, 			hwnd, 			(HMENU)ID_BUTTON_PUSH1, 			ghInstance, 			NULL);  		HWND hListBoxSingle = CreateWindow( 			TEXT("LISTBOX"), 			NULL, 			WS_CHILD | WS_VISIBLE | WS_BORDER | LBS_STANDARD, 			10, 10, 200, 100, 			hwnd, 			(HMENU)ID_LB_LIST1, 			ghInstance, 			NULL 		);  		HWND hListBoxMulpit = CreateWindow( 			TEXT("LISTBOX"), 			NULL, 			WS_CHILD | WS_VISIBLE | WS_BORDER | LBS_STANDARD | LBS_MULTIPLESEL, 			220, 10, 200, 100, 			hwnd, 			(HMENU)ID_LB_LIST2, 			ghInstance, 			NULL 		);  		// 初始控件  		// 添加表项 		SendMessage(hListBoxSingle, LB_ADDSTRING, 0, (LPARAM)TEXT("单选列表1")); 		SendMessage(hListBoxSingle, LB_ADDSTRING, 0, (LPARAM)TEXT("单选列表2")); 		SendMessage(hListBoxSingle, LB_ADDSTRING, 0, (LPARAM)TEXT("单选列表3"));  		SendMessage(hListBoxMulpit, LB_ADDSTRING, 0, (LPARAM)TEXT("多选列表1")); 		SendMessage(hListBoxMulpit, LB_ADDSTRING, 0, (LPARAM)TEXT("多选列表2")); 		SendMessage(hListBoxMulpit, LB_ADDSTRING, 0, (LPARAM)TEXT("多选列表3"));  		// 插入表项 		LB_INSERTSTRING;  		// 删除表项 		LB_DELETESTRING;  		// 清空表项 		LB_RESETCONTENT; 		 		break; 	}  	case WM_COMMAND: 	{ 		switch (HIWORD(wParam)) 		{ 			case LBN_SELCHANGE: 				// 选中表项 				break; 			case LBN_DBLCLK: 				// 表项双击 				break; 		}  		switch (LOWORD(wParam)) 		{ 		case ID_BUTTON_PUSH1: 			// 获取索引 			DWORD dwIndex = SendMessage(GetDlgItem(hwnd, ID_LB_LIST1), LB_GETSEL, 0, 0); 			OutputDebugString(L"1");  			// 多选处理 			LB_GETSELITEMS;  			// 获取文本 			LB_GETTEXT;  			break;	 		}                switch (HIWORD(wParam))         {         case LBN_SELCHANGE:             // 处理列表框选择改变事件             if (LOWORD(wParam) == ID_LISTBOX_SINGLE)             {                 int selIndex = SendMessage((HWND)lParam, LB_GETCURSEL, 0, 0);                 TCHAR selText[256];                 SendMessage((HWND)lParam, LB_GETTEXT, selIndex, (LPARAM)selText);                 MessageBox(hwnd, selText, TEXT("Selection Changed"), MB_OK);             }             break;          case LBN_DBLCLK:             // 处理列表框双击事件             if (LOWORD(wParam) == ID_LISTBOX_SINGLE)             {                 int selIndex = SendMessage((HWND)lParam, LB_GETCURSEL, 0, 0);                 TCHAR selText[256];                 SendMessage((HWND)lParam, LB_GETTEXT, selIndex, (LPARAM)selText);                 MessageBox(hwnd, selText, TEXT("Item Double Clicked"), MB_OK);             }             break;         }  		break; 	}  	case WM_DESTROY: 	{ 		PostQuitMessage(0); 		break; 	} 	default: 		return DefWindowProc(hwnd, uMsg, wParam, lParam); 	}  }

相关内容

热门资讯

太无语了!八仙竞技辅助,wep... 您好:这款八仙竞技辅助游戏是可以开挂的,确实是有挂的,很多玩家在这款八仙竞技辅助游戏中打牌都会发现很...
通报开挂!青鸟辅助安卓,雀友会... 通报开挂!青鸟辅助安卓,雀友会广东潮汕麻雀辅助(揭秘一下开挂辅助神器)>>您好:软件加1367043...
太嚣张了!樱花之盛辅助软件下载... 太嚣张了!樱花之盛辅助软件下载,hhpoker有没有辅助辅助(透视)开挂辅助脚本(有挂方法);无需打...
科技开挂!青鸟辅助器,微信小程... 您好:这款微信小程序游戏辅助游戏是可以开挂的,确实是有挂的,很多玩家在这款微信小程序游戏辅助游戏中打...
太嚣张了!透视辅助功能插件,红... 太嚣张了!透视辅助功能插件,红龙poker有辅助吗(透视)开挂辅助脚本(有挂方略)《详细加薇1367...
发现辅助!玄龙大厅怎么开辅助,... 发现辅助!玄龙大厅怎么开辅助,wepoker辅助器(重磅来袭开挂辅助软件) 【无需打开直接搜索加薇1...
太无语了!友友联盟辅助脚本,w... >>您好:友友联盟辅助脚本确实是有挂的,很多玩家在这款友友联盟辅助脚本游戏中打牌都会发现很多用户的牌...
详细辅助!蜜瓜大厅辅助视频,决... 详细辅助!蜜瓜大厅辅助视频,决胜麻架胡易辅助(一分钟了解开挂辅助脚本);无需打开直接搜索打开薇:13...
太坑了!微乐小程序辅助免费,w... 太坑了!微乐小程序辅助免费,werplan怎么透视(透视)开挂辅助下载(果真有挂)《详细加薇1367...
分享开挂!雀友会广东潮汕辅助有... 分享开挂!雀友会广东潮汕辅助有开挂,大发棋牌辅助(重大推荐开挂辅助安装)>>您好:软件加136704...