win32 组合框操作 - 窗口消息

#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#include "ctype.h"

#define ID_COMBO_SIMPLE       1001  // 简单组合框  
#define ID_COMBO_DROPDOWN     1002  // 下拉式组合框
#define ID_COMBO_DROPDOWNLIST 1003  // 下拉列表式组合框

#define ID_EDIT_ADD_SIMPLE_NUM          1004  // 添加组数 简单组合框
#define ID_EDIT_ADD_DROPDOWN_NUM        1005  // 添加组数 下拉式组合框
#define ID_EDIT_ADD_DROPDOWNLIST_NUM    1006  // 添加组数 下拉列表式组合框

#define ID_EDIT_ADD_SIMPLE_STRING       1007  // 添加的内容 简单组合框
#define ID_EDIT_ADD_DROPDOWN_STRING     1008  // 添加的内容 下拉式组合框
#define ID_EDIT_ADD_DROPDOWNLIST_STRING 1009  // 添加的内容 下拉列表式组合框 

// 静态框ID
#define ID_STATIC_SIMPLE           2001    
#define ID_STATIC_DROPDOWN         2002   
#define ID_STATIC_DROPDOWNLIST     2003    
#define ID_STATIC_SIMPLE_NUM       2004
#define ID_STATIC_DROPDOWN_NUM     2005
#define ID_STATIC_DROPDOWNLIST_NUM 2006
#define ID_STATIC_TIP_SIMPLE       2007
#define ID_STATIC_TIP_DROPDOWN     2008
#define ID_STATIC_TIP_DROPDOWNLIST 2009

#define ID_BUTTON_ADD_SIMPLE       2101  // 按钮控件 - 简单组合框
#define ID_BUTTON_ADD_DROPDOWN     2102  // 按钮控件 - 下拉式组合框
#define ID_BUTTON_ADD_DROPDOWNLIST 2103  // 按钮控件 - 下拉列表式组合框

#define ID_EDIT_TIP_SIMPLE         2104       // 编辑框 - 简单组合框
#define ID_EDIT_TIP_DROPDOWN       2105       // 编辑框 - 下拉式组合框
#define ID_EDIT_TIP_DROPDOWNLIST   2106       // 编辑框 - 下拉列表式组合框

#define ID_EDIT_SIMPLE_INPUT       2107  // 输入编辑框 - 简单组合框
#define ID_EDIT_DROPDOWN_INPUT     2108  // 输入编辑框 - 下拉式组合框
#define ID_EDIT_DROPDOWNLIST_INPUT 2109  // 输入编辑框 - 下拉列表式组合框

// 组框
#define ID_GROUP_SIMPLE              2201      // 简单组框ID
#define ID_GROUP_DROPDOWN            2202      // 下拉式组框ID
#define ID_GROUP_DROPDOWNLIST        2203      // 下拉列表式组框ID
#define ID_GROUP_INPUT_SIMPLE        2204      // 输入组框 - 简单组合框
#define ID_GROUP_INPUT_DROPDOWN      2205      // 输入组框 - 下拉式组合框
#define ID_GROUP_INPUT_DROPDOWNLIST  2206      // 输入组框 - 下拉列表式组合框
#define ID_GROUP_OPERATE             2207      // 操作组框

#define ID_MENU_ADD                  2301  // 菜单 - 添加
#define ID_MENU_DELETE               2302  // 菜单 - 删除
#define ID_MENU_RESET                2303  // 菜单 - 清除

#define ID_BUTTON_FIND            2304  // 非精确查找
#define ID_BUTTON_FIND_EXACT      2305  // 精确查找
#define ID_BUTTON_FIND_SET        2306  // 非精确查找并设置成当前选择项
#define ID_BUTTON_GET_SELECT      2307  // 获取选择项文本
#define ID_BUTTON_GET_SELECT_LEN  2308  // 获取选择项长度
#define ID_BUTTON_GET_INPUT_TEXT  2309  // 获取输入文本
#define ID_BUTTON_ADD_EXTRA_DATA  2310  // 添加附加数据
#define ID_BUTTON_ADD_EXTRA       2311  // 添加数据
#define ID_BUTTON_GET_EXTRA       2312  // 按钮 - 获取附加信息

HINSTANCE g_hInstance = NULL;
char g_lpszBuff[256] = {0};
char g_lpszTemp[256] = {0};

LRESULT CALLBACK WinProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
void OnCreateComBo(HWND);
void OnCreateEdit(HWND);
void OnCreateTips(HWND);
void OnCreateInput(HWND);
BOOL IsSpaceString(CHAR*);
void Pitch(HWND,int,int,int);           // 非精确匹配
void PitchExact(HWND,int,int,int);      // 精确匹配
void PitchAndSet(HWND,int,int,int);     // 非精确匹配查找并设置成当前选项
void AddMenu(HWND);
void AddItem(HWND);                     // 添加选项
void DeleteItem(HWND);                  // 删除选项
void ClearItem(HWND);                   // 清除选项
void AddOperate(HWND);                  // 添加操作框
void GetSelTextLen(HWND,int,int,int);   // 获取选择项文本长度
void GetInputText(HWND,int,int);        // 获取输入文本内容
void AddExtraDataReady(HWND);           // 添加附加数据
void AddExtraData(HWND,int,int,int,int);        // 添加附加数据
void GetExtraData(HWND,int,int,int);    // 获取附加信息
// 主函数
int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
	WNDCLASS wndcls;
	CHAR *szAppName = "Win32";

	wndcls.style = CS_HREDRAW|CS_VREDRAW;
	wndcls.cbClsExtra = 0;
	wndcls.cbWndExtra = 0;
	wndcls.lpfnWndProc = WinProc;
	wndcls.hInstance = hInstance;
	wndcls.hIcon = LoadIcon(NULL,IDI_APPLICATION);
	wndcls.hCursor = LoadCursor(NULL,IDC_ARROW);
	wndcls.hbrBackground = (HBRUSH)(COLOR_BACKGROUND + 2);
	wndcls.lpszMenuName = NULL;
	wndcls.lpszClassName = szAppName;

	if(!RegisterClass(&wndcls)){
		MessageBox(NULL,"注册窗口类失败","Tips",MB_ICONMASK);
		return 0;
	}

	HWND hwnd = CreateWindow(szAppName,"主窗口",WS_OVERLAPPEDWINDOW,
		CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
		NULL,NULL,hInstance,NULL);

	ShowWindow(hwnd,SW_SHOW);
	UpdateWindow(hwnd);

	g_hInstance = hInstance;

	MSG msg = { 0 };
	while(GetMessage(&msg,NULL,0,0)){
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}
	return 0;
}

// 主窗口回调函数
LRESULT CALLBACK WinProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
	int n;
	switch(message){
	case WM_CREATE:	
		OnCreateComBo(hwnd);
		OnCreateEdit(hwnd);
		OnCreateTips(hwnd);
		OnCreateInput(hwnd);
		AddMenu(hwnd);
		AddOperate(hwnd);
		break;
	case WM_COMMAND:{
		switch(LOWORD(wParam)){
		case ID_MENU_ADD:AddItem(hwnd);break;
		case ID_MENU_DELETE:DeleteItem(hwnd);break;
		case ID_MENU_RESET:ClearItem(hwnd);break;
		case ID_BUTTON_FIND:
			Pitch(hwnd,ID_COMBO_SIMPLE,ID_EDIT_SIMPLE_INPUT,ID_EDIT_TIP_SIMPLE);
			Pitch(hwnd,ID_COMBO_DROPDOWN,ID_EDIT_DROPDOWN_INPUT,ID_EDIT_TIP_DROPDOWN);
			Pitch(hwnd,ID_COMBO_DROPDOWNLIST,ID_EDIT_DROPDOWNLIST_INPUT,ID_EDIT_TIP_DROPDOWNLIST);
			break;
		case ID_BUTTON_FIND_EXACT:
			PitchExact(hwnd,ID_COMBO_SIMPLE,ID_EDIT_SIMPLE_INPUT,ID_EDIT_TIP_SIMPLE);
			PitchExact(hwnd,ID_COMBO_DROPDOWN,ID_EDIT_DROPDOWN_INPUT,ID_EDIT_TIP_DROPDOWN);
			PitchExact(hwnd,ID_COMBO_DROPDOWNLIST,ID_EDIT_DROPDOWNLIST_INPUT,ID_EDIT_TIP_DROPDOWNLIST);
			break;
		case ID_BUTTON_FIND_SET:
			PitchAndSet(hwnd,ID_COMBO_SIMPLE,ID_EDIT_SIMPLE_INPUT,ID_EDIT_TIP_SIMPLE);
			PitchAndSet(hwnd,ID_COMBO_DROPDOWN,ID_EDIT_DROPDOWN_INPUT,ID_EDIT_TIP_DROPDOWN);
			PitchAndSet(hwnd,ID_COMBO_DROPDOWNLIST,ID_EDIT_DROPDOWNLIST_INPUT,ID_EDIT_TIP_DROPDOWNLIST);
			break;
		case ID_BUTTON_GET_SELECT_LEN:
			GetSelTextLen(hwnd,ID_COMBO_SIMPLE,ID_EDIT_SIMPLE_INPUT,ID_EDIT_TIP_SIMPLE);
			GetSelTextLen(hwnd,ID_COMBO_DROPDOWN,ID_EDIT_DROPDOWN_INPUT,ID_EDIT_TIP_DROPDOWN);
			GetSelTextLen(hwnd,ID_COMBO_DROPDOWNLIST,ID_EDIT_DROPDOWNLIST_INPUT,ID_EDIT_TIP_DROPDOWNLIST);
			break;
		case ID_BUTTON_GET_INPUT_TEXT:
			GetInputText(hwnd,ID_COMBO_SIMPLE,ID_EDIT_TIP_SIMPLE);
			GetInputText(hwnd,ID_COMBO_DROPDOWN,ID_EDIT_TIP_DROPDOWN);
			GetInputText(hwnd,ID_COMBO_DROPDOWNLIST,ID_EDIT_TIP_DROPDOWNLIST);
			break;
		case ID_BUTTON_ADD_EXTRA_DATA:
			AddExtraDataReady(hwnd);
			break;
		case ID_BUTTON_ADD_EXTRA:
			AddExtraData(hwnd,ID_COMBO_SIMPLE,ID_EDIT_ADD_SIMPLE_STRING,ID_EDIT_ADD_SIMPLE_NUM,ID_EDIT_TIP_SIMPLE);
			AddExtraData(hwnd,ID_COMBO_DROPDOWN,ID_EDIT_ADD_DROPDOWN_STRING,ID_EDIT_ADD_DROPDOWN_NUM,ID_EDIT_TIP_DROPDOWN);
			AddExtraData(hwnd,ID_COMBO_DROPDOWNLIST,ID_EDIT_ADD_DROPDOWNLIST_STRING,ID_EDIT_ADD_DROPDOWNLIST_NUM,ID_EDIT_TIP_DROPDOWNLIST);
			break;
		case ID_BUTTON_GET_EXTRA:
			GetExtraData(hwnd,ID_EDIT_SIMPLE_INPUT,ID_COMBO_SIMPLE,ID_EDIT_TIP_SIMPLE);
			GetExtraData(hwnd,ID_EDIT_DROPDOWN_INPUT,ID_COMBO_DROPDOWN,ID_EDIT_TIP_DROPDOWN);
			GetExtraData(hwnd,ID_EDIT_DROPDOWNLIST_INPUT,ID_COMBO_DROPDOWNLIST,ID_EDIT_TIP_DROPDOWNLIST);
			break;
		case ID_BUTTON_ADD_SIMPLE:{         // 添加简单组合框的选项
			n = -1;
			sprintf(g_lpszBuff,"");
			SendMessage(GetDlgItem(hwnd,ID_EDIT_ADD_SIMPLE_NUM),WM_GETTEXT,(WPARAM)256,(LPARAM)g_lpszBuff);
			sscanf(g_lpszBuff,"%d",&n);
			if(n <= 0){
				sprintf(g_lpszBuff,"添加的数量必须大于0");
				SendMessage(GetDlgItem(hwnd,ID_EDIT_TIP_SIMPLE),WM_SETTEXT,0,(LPARAM)g_lpszBuff);
			}
			else{
				SendMessage(GetDlgItem(hwnd,ID_EDIT_ADD_SIMPLE_STRING),WM_GETTEXT,(WPARAM)256,(LPARAM)g_lpszBuff);				
				if(strlen(g_lpszBuff)>0 && !IsSpaceString(g_lpszBuff)){
					for(int i=0;i<n;i++)
						SendMessage(GetDlgItem(hwnd,ID_COMBO_SIMPLE),CB_ADDSTRING,(WPARAM)0,(LPARAM)g_lpszBuff);
					sprintf(g_lpszBuff,"添加成功");
					SendMessage(GetDlgItem(hwnd,ID_EDIT_TIP_SIMPLE),WM_SETTEXT,(WPARAM)0,(LPARAM)g_lpszBuff);
				}
				else{
					sprintf(g_lpszBuff,"添加的字符串不能为空");
					SendMessage(GetDlgItem(hwnd,ID_EDIT_TIP_SIMPLE),WM_SETTEXT,(WPARAM)0,(LPARAM)g_lpszBuff);
				}
			}
								  }break;
		case ID_BUTTON_ADD_DROPDOWN:{ // 添加下拉式组合框选项
			n = -1;
			sprintf(g_lpszBuff,"");
			n = SendMessage(GetDlgItem(hwnd,ID_EDIT_ADD_DROPDOWN_NUM),WM_GETTEXT,(WPARAM)255,(LPARAM)g_lpszBuff);
			sscanf(g_lpszBuff,"%d",&n);
			if(n > 0){
				SendMessage(GetDlgItem(hwnd,ID_EDIT_ADD_DROPDOWN_STRING),WM_GETTEXT,(WPARAM)255,(LPARAM)g_lpszBuff);
				if(strlen(g_lpszBuff)>0 && !IsSpaceString(g_lpszBuff)){
					for(int i=0;i<n;i++){
						SendMessage(GetDlgItem(hwnd,ID_COMBO_DROPDOWN),CB_ADDSTRING,(WPARAM)0,(LPARAM)g_lpszBuff);
					}
					sprintf(g_lpszBuff,"添加成功!");
					SendMessage(GetDlgItem(hwnd,ID_EDIT_TIP_DROPDOWN),WM_SETTEXT,(WPARAM)255,(LPARAM)g_lpszBuff);
				}
				else {
					sprintf(g_lpszBuff,"添加的内容不能为空");
					SendMessage(GetDlgItem(hwnd,ID_EDIT_TIP_DROPDOWN),WM_SETTEXT,(WPARAM)0,(LPARAM)g_lpszBuff);
				}
			}
			else{
				sprintf(g_lpszBuff,"添加的数量必须大于0");
				SendMessage(GetDlgItem(hwnd,ID_EDIT_TIP_DROPDOWN),WM_SETTEXT,(WPARAM)0,(LPARAM)g_lpszBuff);
			}
									}break;
		case ID_BUTTON_ADD_DROPDOWNLIST:{ // 添加下拉列表式组合框选项
			n = -1;
			sprintf(g_lpszBuff,"");
			n = SendMessage(GetDlgItem(hwnd,ID_EDIT_ADD_DROPDOWNLIST_NUM),WM_GETTEXT,(WPARAM)255,(LPARAM)g_lpszBuff);
			sscanf(g_lpszBuff,"%d",&n);
			if(n > 0){
				SendMessage(GetDlgItem(hwnd,ID_EDIT_ADD_DROPDOWNLIST_STRING),WM_GETTEXT,(WPARAM)255,(LPARAM)g_lpszBuff);
				if(strlen(g_lpszBuff)>0 && !IsSpaceString(g_lpszBuff)){
					for(int i=0;i<n;i++)
						SendMessage(GetDlgItem(hwnd,ID_COMBO_DROPDOWNLIST),CB_ADDSTRING,(WPARAM)0,(LPARAM)g_lpszBuff);
					sprintf(g_lpszBuff,"添加成功!");
					SendMessage(GetDlgItem(hwnd,ID_EDIT_TIP_DROPDOWNLIST),WM_SETTEXT,(WPARAM)0,(LPARAM)g_lpszBuff);
				}
				else{
					sprintf(g_lpszBuff,"添加的内容不能为空");
					SendMessage(GetDlgItem(hwnd,ID_EDIT_TIP_DROPDOWNLIST),WM_SETTEXT,(WPARAM)0,(LPARAM)g_lpszBuff);
				}
			}
			else{
				sprintf(g_lpszBuff,"输入的数量不能为0");
				SendMessage(GetDlgItem(hwnd,ID_EDIT_TIP_DROPDOWNLIST),WM_SETTEXT,(WPARAM)0,(LPARAM)g_lpszBuff);
			}
										}break;
		}
					}break;
	case WM_DESTROY:
		PostQuitMessage(0);
		break;
	}
	return DefWindowProc(hwnd,message,wParam,lParam);
}

// 创建添加部分
void OnCreateEdit(HWND hwnd){
	CreateWindow("BUTTON","添加选项",WS_CHILD|WS_VISIBLE|BS_GROUPBOX,
		5,5,205,80,hwnd,(HMENU)ID_GROUP_SIMPLE,
		g_hInstance,NULL);
	CreateWindow("STATIC","内容",WS_CHILD|WS_VISIBLE,
		15,30,35,20,hwnd,(HMENU)ID_STATIC_SIMPLE,
		g_hInstance,NULL);
	CreateWindow("STATIC","数量",WS_VISIBLE|WS_CHILD,
		15,55,35,20,hwnd,(HMENU)ID_STATIC_SIMPLE_NUM,
		g_hInstance,NULL);
	CreateWindow("EDIT","",WS_CHILD|WS_VISIBLE|ES_AUTOHSCROLL,
		60,30,120,20,hwnd,(HMENU)ID_EDIT_ADD_SIMPLE_STRING,
		g_hInstance,NULL);
	CreateWindow("EDIT","",WS_CHILD|WS_VISIBLE|ES_AUTOHSCROLL,
		60,55,50,20,hwnd,(HMENU)ID_EDIT_ADD_SIMPLE_NUM,
		g_hInstance,NULL);
	CreateWindow("BUTTON","添加选项",WS_CHILD|WS_VISIBLE,
		125,55,80,20,hwnd,(HMENU)ID_BUTTON_ADD_SIMPLE,
		g_hInstance,NULL);

	CreateWindow("BUTTON","添加选项",WS_CHILD|WS_VISIBLE|BS_GROUPBOX,
		245,5,205,80,hwnd,(HMENU)ID_GROUP_DROPDOWN,
		g_hInstance,NULL);
	CreateWindow("STATIC","内容",WS_CHILD|WS_VISIBLE,
		255,30,35,20,hwnd,(HMENU)ID_STATIC_DROPDOWN,
		g_hInstance,NULL);
	CreateWindow("STATIC","数量",WS_CHILD|WS_VISIBLE,
		255,55,35,20,hwnd,(HMENU)ID_STATIC_DROPDOWN_NUM,
		g_hInstance,NULL);
	CreateWindow("EDIT","",WS_CHILD|WS_VISIBLE|ES_AUTOHSCROLL,
		300,55,50,20,hwnd,(HMENU)ID_EDIT_ADD_DROPDOWN_NUM,
		g_hInstance,NULL);
	CreateWindow("EDIT","",WS_CHILD|WS_VISIBLE|ES_AUTOHSCROLL,
		300,30,120,20,hwnd,(HMENU)ID_EDIT_ADD_DROPDOWN_STRING,
		g_hInstance,NULL);
	CreateWindow("BUTTON","添加选项",WS_CHILD|WS_VISIBLE,
		365,55,80,20,hwnd,(HMENU)ID_BUTTON_ADD_DROPDOWN,
		g_hInstance,NULL);

	CreateWindow("BUTTON","添加选项",WS_CHILD|WS_VISIBLE|BS_GROUPBOX,
		485,5,205,80,hwnd,(HMENU)ID_GROUP_DROPDOWNLIST,
		g_hInstance,NULL);
	CreateWindow("STATIC","内容",WS_CHILD|WS_VISIBLE,
		495,30,35,20,hwnd,(HMENU)ID_STATIC_DROPDOWNLIST,
		g_hInstance,NULL);
	CreateWindow("STATIC","数量",WS_CHILD|WS_VISIBLE,
		495,55,35,20,hwnd,(HMENU)ID_STATIC_DROPDOWNLIST_NUM,
		g_hInstance,NULL);
	CreateWindow("EDIT","",WS_CHILD|WS_VISIBLE|ES_AUTOHSCROLL,
		535,30,120,20,hwnd,(HMENU)ID_EDIT_ADD_DROPDOWNLIST_STRING,
		g_hInstance,NULL);
	CreateWindow("EDIT","",WS_CHILD|WS_VISIBLE|ES_AUTOHSCROLL,
		535,55,50,20,hwnd,(HMENU)ID_EDIT_ADD_DROPDOWNLIST_NUM,
		g_hInstance,NULL);
	CreateWindow("BUTTON","添加选项",WS_CHILD|WS_VISIBLE,
		600,55,80,20,hwnd,(HMENU)ID_BUTTON_ADD_DROPDOWNLIST,
		g_hInstance,NULL);
}

// 创建输入框
void OnCreateInput(HWND hwnd){
	CreateWindow("BUTTON","输入框",WS_CHILD|WS_VISIBLE|BS_GROUPBOX,
		5,90,205,55,hwnd,(HMENU)ID_GROUP_INPUT_SIMPLE,
		g_hInstance,NULL);
	CreateWindow("EDIT","",WS_CHILD|WS_VISIBLE|ES_AUTOHSCROLL,
		10,120,190,18,hwnd,(HMENU)ID_EDIT_SIMPLE_INPUT,
		g_hInstance,NULL);
	CreateWindow("BUTTON","输入框",WS_CHILD|WS_VISIBLE|BS_GROUPBOX,
		245,90,205,55,hwnd,(HMENU)ID_GROUP_INPUT_DROPDOWN,
		g_hInstance,NULL);
	CreateWindow("EDIT","",WS_CHILD|WS_VISIBLE|ES_AUTOHSCROLL,
		250,120,190,18,hwnd,(HMENU)ID_EDIT_DROPDOWN_INPUT,
		g_hInstance,NULL);
	CreateWindow("BUTTON","输入框",WS_CHILD|WS_VISIBLE|BS_GROUPBOX,
		485,90,205,55,hwnd,(HMENU)ID_GROUP_INPUT_DROPDOWNLIST,
		g_hInstance,NULL);
	CreateWindow("EDIT","",WS_CHILD|WS_VISIBLE|ES_AUTOHSCROLL,
		490,120,190,18,hwnd,(HMENU)ID_EDIT_DROPDOWNLIST_INPUT,
		g_hInstance,NULL);

}

// 创建组合框
void OnCreateComBo(HWND hwnd){
	CreateWindow("COMBOBOX","",WS_CHILD|WS_VISIBLE|CBS_SIMPLE|WS_VSCROLL,
		10,150,200,200,hwnd,
		(HMENU)ID_COMBO_SIMPLE,
		g_hInstance,NULL);
	CreateWindow("COMBOBOX","",WS_CHILD|WS_VISIBLE|CBS_DROPDOWN|WS_VSCROLL,
		250,150,200,200,hwnd,
		(HMENU)ID_COMBO_DROPDOWN,
		g_hInstance,NULL);
	CreateWindow("COMBOBOX","",WS_CHILD|WS_VISIBLE|CBS_DROPDOWNLIST|WS_VSCROLL,
		490,150,200,200,hwnd,
		(HMENU)ID_COMBO_DROPDOWNLIST,
		g_hInstance,NULL);
}

// 创建提示框
void OnCreateTips(HWND hwnd){
	CreateWindow("STATIC","简单组合框提示:",WS_CHILD|WS_VISIBLE,
		10,350,130,18,hwnd,(HMENU)ID_STATIC_SIMPLE,
		g_hInstance,NULL);
	CreateWindow("EDIT","",WS_CHILD|WS_VISIBLE|ES_AUTOHSCROLL,
		10,370,200,18,hwnd,(HMENU)ID_EDIT_TIP_SIMPLE,
		g_hInstance,NULL);

	CreateWindow("STATIC","下拉式组合框提示:",WS_CHILD|WS_VISIBLE,
		250,350,140,18,hwnd,(HMENU)ID_STATIC_TIP_DROPDOWN,
		g_hInstance,NULL);
	CreateWindow("EDIT","",WS_CHILD|WS_VISIBLE|ES_AUTOHSCROLL,
		250,370,200,18,hwnd,(HMENU)ID_EDIT_TIP_DROPDOWN,
		g_hInstance,NULL);
	
	CreateWindow("STATIC","下拉列表式组合框提示:",WS_CHILD|WS_VISIBLE,
		490,350,180,18,hwnd,(HMENU)ID_STATIC_TIP_DROPDOWNLIST,
		g_hInstance,NULL);
	CreateWindow("EDIT","",WS_CHILD|WS_VISIBLE|ES_AUTOHSCROLL,
		490,370,200,18,hwnd,(HMENU)ID_EDIT_TIP_DROPDOWNLIST,
		g_hInstance,NULL);
}

// 判断字符串是否式空字符串
BOOL IsSpaceString(CHAR* str){
	for(int i=0;str[i];i++){
		if(!isspace(str[i]))
			return 0;
	}
	return 1;
}

// 非精确匹配
void Pitch(HWND hwnd,int COMBO,int INPUT_EDIT,int OUTPUT_EDIT){
	sprintf(g_lpszBuff,"");
	SendMessage(GetDlgItem(hwnd,INPUT_EDIT),WM_GETTEXT,(WPARAM)255,(LPARAM)g_lpszBuff);
	int n = SendMessage(GetDlgItem(hwnd,COMBO),CB_FINDSTRING,(WPARAM)-1,(LPARAM)g_lpszBuff);
	if(CB_ERR != n){
		sprintf(g_lpszBuff,"匹配项:%d",n);
		SendMessage(GetDlgItem(hwnd,OUTPUT_EDIT),WM_SETTEXT,(WPARAM)0,(LPARAM)g_lpszBuff);
	}
	else{
		sprintf(g_lpszBuff,"未匹配!");
		SendMessage(GetDlgItem(hwnd,OUTPUT_EDIT),WM_SETTEXT,(WPARAM)0,(LPARAM)g_lpszBuff);
	}
}

// 精确匹配
void PitchExact(HWND hwnd,int ID_COMBOBOX,int ID_INPUT,int ID_OUTPUT){
	sprintf(g_lpszBuff,"");
	SendMessage(GetDlgItem(hwnd,ID_INPUT),WM_GETTEXT,(WPARAM)255,(LPARAM)g_lpszBuff);
	int n = SendMessage(GetDlgItem(hwnd,ID_COMBOBOX),CB_FINDSTRINGEXACT,(WPARAM)-1,(LPARAM)g_lpszBuff);
	if(CB_ERR != n){
		sprintf(g_lpszBuff,"匹配项:%d",n);
	}
	else{
		sprintf(g_lpszBuff,"未匹配!");
	}
	SendMessage(GetDlgItem(hwnd,ID_OUTPUT),WM_SETTEXT,(WPARAM)0,(LPARAM)g_lpszBuff);
}

// 非精确匹配查找并设置成当前选择项
void PitchAndSet(HWND hwnd,int ID_COMBO,int ID_INPUT,int ID_OUTPUT){
	sprintf(g_lpszBuff,"");
	SendMessage(GetDlgItem(hwnd,ID_INPUT),WM_GETTEXT,(WPARAM)255,(LPARAM)g_lpszBuff);
	int n = SendMessage(GetDlgItem(hwnd,ID_COMBO),CB_FINDSTRING,(WPARAM)-1,(LPARAM)g_lpszBuff);
	if(n != CB_ERR){
		SendMessage(GetDlgItem(hwnd,ID_COMBO),CB_SELECTSTRING,(WPARAM)-1,(LPARAM)g_lpszBuff);
		sprintf(g_lpszBuff,"设置成功!");
	}
	else{
		sprintf(g_lpszBuff,"未匹配!");
	}
	SendMessage(GetDlgItem(hwnd,ID_OUTPUT),WM_SETTEXT,(WPARAM)0,(LPARAM)g_lpszBuff);
}

// 添加菜单
void AddMenu(HWND hwnd){
	HMENU hMain = CreateMenu();
	HMENU hOperate = CreatePopupMenu();
	AppendMenu(hMain,MF_POPUP,(UINT)hOperate,"操作");
	AppendMenu(hOperate,MF_STRING,ID_MENU_ADD,"添加");
	AppendMenu(hOperate,MF_STRING,ID_MENU_DELETE,"删除第一项");
	AppendMenu(hOperate,MF_STRING,ID_MENU_RESET,"清除");
	SetMenu(hwnd,hMain);
}

// 添加选项
void AddItem(HWND hwnd){
	int i;
	for(i=0;i<100;i++){
		sprintf(g_lpszBuff,"选项%d",i);
		SendMessage(GetDlgItem(hwnd,ID_COMBO_SIMPLE),CB_ADDSTRING,(WPARAM)0,(LPARAM)g_lpszBuff);
		SendMessage(GetDlgItem(hwnd,ID_COMBO_DROPDOWN),CB_ADDSTRING,(WPARAM)0,(LPARAM)g_lpszBuff);
		SendMessage(GetDlgItem(hwnd,ID_COMBO_DROPDOWNLIST),CB_ADDSTRING,(WPARAM)0,(LPARAM)g_lpszBuff);
	}
}

// 删除选项
void DeleteItem(HWND hwnd){
	SendMessage(GetDlgItem(hwnd,ID_COMBO_SIMPLE),CB_DELETESTRING,(WPARAM)0,(LPARAM)0);
	SendMessage(GetDlgItem(hwnd,ID_COMBO_DROPDOWN),CB_DELETESTRING,(WPARAM)0,(LPARAM)0);
	SendMessage(GetDlgItem(hwnd,ID_COMBO_DROPDOWNLIST),CB_DELETESTRING,(WPARAM)0,(LPARAM)0);
}

// 清除选项
void ClearItem(HWND hwnd){
	SendMessage(GetDlgItem(hwnd,ID_COMBO_SIMPLE),CB_RESETCONTENT,(WPARAM)0,(LPARAM)0);
	SendMessage(GetDlgItem(hwnd,ID_COMBO_DROPDOWN),CB_RESETCONTENT,(WPARAM)0,(LPARAM)0);
	SendMessage(GetDlgItem(hwnd,ID_COMBO_DROPDOWNLIST),CB_RESETCONTENT,(WPARAM)0,(LPARAM)0);
}

// 添加操作框
void AddOperate(HWND hwnd){
	CreateWindow("BUTTON","操作按钮框",WS_CHILD|WS_VISIBLE|BS_GROUPBOX,
		700,5,300,450,hwnd,(HMENU)ID_GROUP_OPERATE,
		g_hInstance,NULL);
	CreateWindow("BUTTON","非精确查找",WS_CHILD|WS_VISIBLE,
		710,30,100,25,hwnd,(HMENU)ID_BUTTON_FIND,
		g_hInstance,NULL);
	CreateWindow("BUTTON","精确查找",WS_CHILD|WS_VISIBLE,
		710,60,100,25,hwnd,(HMENU)ID_BUTTON_FIND_EXACT,
		g_hInstance,NULL);
	CreateWindow("BUTTON","非精确查找并设置成当前项",WS_CHILD|WS_VISIBLE,
		710,90,200,25,hwnd,(HMENU)ID_BUTTON_FIND_SET,
		g_hInstance,NULL);
	CreateWindow("BUTTON","获取选择项文本",WS_CHILD|WS_VISIBLE,
		710,120,200,25,hwnd,(HMENU)ID_BUTTON_GET_SELECT,
		g_hInstance,NULL);
	CreateWindow("BUTTON","获取选择项文本长度",WS_CHILD|WS_VISIBLE,
		710,150,200,25,hwnd,(HMENU)ID_BUTTON_GET_SELECT_LEN,
		g_hInstance,NULL);
	CreateWindow("BUTTON","获取输入文本内容",WS_CHILD|WS_VISIBLE,
		710,180,200,25,hwnd,(HMENU)ID_BUTTON_GET_INPUT_TEXT,
		g_hInstance,NULL);
	CreateWindow("BUTTON","添加附加数据",WS_CHILD|WS_VISIBLE|BS_AUTOCHECKBOX|BS_PUSHLIKE|BS_PUSHBUTTON,
		710,210,200,25,hwnd,(HMENU)ID_BUTTON_ADD_EXTRA_DATA,
		g_hInstance,NULL);
	CreateWindow("BUTTON","添加",WS_CHILD|WS_VISIBLE,
		920,210,70,25,hwnd,(HMENU)ID_BUTTON_ADD_EXTRA,
		g_hInstance,NULL);
	EnableWindow(GetDlgItem(hwnd,ID_BUTTON_ADD_EXTRA),FALSE);
	CreateWindow("BUTTON","获取附加数据",WS_CHILD|WS_VISIBLE,
		710,240,200,25,hwnd,(HMENU)ID_BUTTON_GET_EXTRA,
		g_hInstance,NULL);
}

// 获取选择项文本长度
void GetSelTextLen(HWND hwnd,int ID_COMBO,int ID_INPUT,int ID_OUTPUT){
	int n = -1,len = 0;
	sprintf(g_lpszBuff,"");
	SendMessage(GetDlgItem(hwnd,ID_INPUT),WM_GETTEXT,(WPARAM)255,(LPARAM)g_lpszBuff);
	if(!IsSpaceString(g_lpszBuff) && strlen(g_lpszBuff) > 0){
		sscanf(g_lpszBuff,"%d",&n);
		if(n > 0){
			len = SendMessage(GetDlgItem(hwnd,ID_COMBO),CB_GETLBTEXTLEN,(WPARAM)n,(LPARAM)0);
			sprintf(g_lpszBuff,"长度:%d",len);
			SendMessage(GetDlgItem(hwnd,ID_OUTPUT),WM_SETTEXT,(WPARAM)255,(LPARAM)g_lpszBuff);
		}
		else{
			sprintf(g_lpszBuff,"输入的选项必须大于0");
			SendMessage(GetDlgItem(hwnd,ID_OUTPUT),WM_SETTEXT,(WPARAM)0,(LPARAM)g_lpszBuff);
		}
	}
	else{
		sprintf(g_lpszBuff,"请输入要获取的选项索引");
		SendMessage(GetDlgItem(hwnd,ID_OUTPUT),WM_SETTEXT,(WPARAM)0,(LPARAM)g_lpszBuff);
	}
}

// 获取输入文本内容
void GetInputText(HWND hwnd,int ID_COMBO,int ID_OUTPUT){
	sprintf(g_lpszBuff,"");
	SendMessage(GetDlgItem(hwnd,ID_COMBO),WM_GETTEXT,(WPARAM)255,(LPARAM)g_lpszBuff);
	if(!IsSpaceString(g_lpszBuff) && strlen(g_lpszBuff) > 0){
		SendMessage(GetDlgItem(hwnd,ID_OUTPUT),WM_SETTEXT,(WPARAM)0,(LPARAM)g_lpszBuff);
	}
	else {
		sprintf(g_lpszBuff,"输入文本为空!");
		SendMessage(GetDlgItem(hwnd,ID_OUTPUT),WM_SETTEXT,(WPARAM)0,(LPARAM)g_lpszBuff);
	}
}

// 准备添加附加数据
void AddExtraDataReady(HWND hwnd){
	if(BST_CHECKED == SendMessage(GetDlgItem(hwnd,ID_BUTTON_ADD_EXTRA_DATA),BM_GETCHECK,0,0)){
		EnableWindow(GetDlgItem(hwnd,ID_BUTTON_FIND),FALSE);
		EnableWindow(GetDlgItem(hwnd,ID_BUTTON_FIND_EXACT),FALSE);
		EnableWindow(GetDlgItem(hwnd,ID_BUTTON_FIND_SET),FALSE);
		EnableWindow(GetDlgItem(hwnd,ID_BUTTON_GET_INPUT_TEXT),FALSE);
		EnableWindow(GetDlgItem(hwnd,ID_BUTTON_GET_SELECT),FALSE);
		EnableWindow(GetDlgItem(hwnd,ID_BUTTON_GET_SELECT_LEN),FALSE);
		EnableWindow(GetDlgItem(hwnd,ID_EDIT_SIMPLE_INPUT),FALSE);
		EnableWindow(GetDlgItem(hwnd,ID_EDIT_DROPDOWN_INPUT),FALSE);
		EnableWindow(GetDlgItem(hwnd,ID_EDIT_DROPDOWNLIST_INPUT),FALSE);
		EnableWindow(GetDlgItem(hwnd,ID_BUTTON_ADD_SIMPLE),FALSE);
		EnableWindow(GetDlgItem(hwnd,ID_BUTTON_ADD_DROPDOWN),FALSE);
		EnableWindow(GetDlgItem(hwnd,ID_BUTTON_ADD_DROPDOWNLIST),FALSE);
		EnableWindow(GetDlgItem(hwnd,ID_BUTTON_GET_EXTRA),FALSE);
		EnableWindow(GetDlgItem(hwnd,ID_BUTTON_ADD_EXTRA),TRUE);
		SetWindowText(GetDlgItem(hwnd,ID_STATIC_SIMPLE_NUM),"索引");
		SetWindowText(GetDlgItem(hwnd,ID_STATIC_DROPDOWN_NUM),"索引");
		SetWindowText(GetDlgItem(hwnd,ID_STATIC_DROPDOWNLIST_NUM),"索引");
		sprintf(g_lpszBuff,"在添加选项框输入内容和索引");
		SendMessage(GetDlgItem(hwnd,ID_EDIT_TIP_SIMPLE),WM_SETTEXT,(WPARAM)0,(LPARAM)g_lpszBuff);
		SendMessage(GetDlgItem(hwnd,ID_EDIT_TIP_DROPDOWN),WM_SETTEXT,(WPARAM)0,(LPARAM)g_lpszBuff);
		SendMessage(GetDlgItem(hwnd,ID_EDIT_TIP_DROPDOWNLIST),WM_SETTEXT,(WPARAM)0,(LPARAM)g_lpszBuff);
	}
	else{
		EnableWindow(GetDlgItem(hwnd,ID_BUTTON_FIND),TRUE);
		EnableWindow(GetDlgItem(hwnd,ID_BUTTON_FIND_EXACT),TRUE);
		EnableWindow(GetDlgItem(hwnd,ID_BUTTON_FIND_SET),TRUE);
		EnableWindow(GetDlgItem(hwnd,ID_BUTTON_GET_INPUT_TEXT),TRUE);
		EnableWindow(GetDlgItem(hwnd,ID_BUTTON_GET_SELECT),TRUE);
		EnableWindow(GetDlgItem(hwnd,ID_BUTTON_GET_SELECT_LEN),TRUE);
		EnableWindow(GetDlgItem(hwnd,ID_EDIT_SIMPLE_INPUT),TRUE);
		EnableWindow(GetDlgItem(hwnd,ID_EDIT_DROPDOWN_INPUT),TRUE);
		EnableWindow(GetDlgItem(hwnd,ID_EDIT_DROPDOWNLIST_INPUT),TRUE);
		EnableWindow(GetDlgItem(hwnd,ID_BUTTON_ADD_SIMPLE),TRUE);
		EnableWindow(GetDlgItem(hwnd,ID_BUTTON_ADD_DROPDOWN),TRUE);
		EnableWindow(GetDlgItem(hwnd,ID_BUTTON_ADD_DROPDOWNLIST),TRUE);
		EnableWindow(GetDlgItem(hwnd,ID_BUTTON_GET_EXTRA),TRUE);
		EnableWindow(GetDlgItem(hwnd,ID_BUTTON_ADD_EXTRA),FALSE);
		SetWindowText(GetDlgItem(hwnd,ID_STATIC_SIMPLE_NUM),"数量");
		SetWindowText(GetDlgItem(hwnd,ID_STATIC_DROPDOWN_NUM),"数量");
		SetWindowText(GetDlgItem(hwnd,ID_STATIC_DROPDOWNLIST_NUM),"数量");
		sprintf(g_lpszBuff,"");
		SendMessage(GetDlgItem(hwnd,ID_EDIT_TIP_SIMPLE),WM_SETTEXT,(WPARAM)0,(LPARAM)g_lpszBuff);
		SendMessage(GetDlgItem(hwnd,ID_EDIT_TIP_DROPDOWN),WM_SETTEXT,(WPARAM)0,(LPARAM)g_lpszBuff);
		SendMessage(GetDlgItem(hwnd,ID_EDIT_TIP_DROPDOWNLIST),WM_SETTEXT,(WPARAM)0,(LPARAM)g_lpszBuff);
	}
}

// 添加附加数据
void AddExtraData(HWND hwnd,int ID_COMBO,int ID_CONTENT,int ID_NUM,int ID_OUTPUT){
	int sel = -1;
	sprintf(g_lpszBuff,"");
	// 获取选择项
	SendMessage(GetDlgItem(hwnd,ID_NUM),WM_GETTEXT,(WPARAM)255,(LPARAM)g_lpszBuff);
	sscanf(g_lpszBuff,"%d",&sel);
	if(sel >= 0){
		SendMessage(GetDlgItem(hwnd,ID_CONTENT),WM_GETTEXT,(WPARAM)255,(LPARAM)g_lpszBuff);
		int nExtra;
		sscanf(g_lpszBuff,"%d",&nExtra);
		if(!IsSpaceString(g_lpszBuff) && strlen(g_lpszBuff) > 0){
			if(CB_ERR != SendMessage(GetDlgItem(hwnd,ID_COMBO),CB_SETITEMDATA,(WPARAM)sel,(LPARAM)nExtra)){
				sprintf(g_lpszBuff,"添加成功!");
				SendMessage(GetDlgItem(hwnd,ID_OUTPUT),WM_SETTEXT,(WPARAM)0,(LPARAM)g_lpszBuff);
			}
			else{
				sprintf(g_lpszBuff,"添加失败!");
				SendMessage(GetDlgItem(hwnd,ID_OUTPUT),WM_SETTEXT,(WPARAM)0,(LPARAM)g_lpszBuff);
			}
		}
		else{
			sprintf(g_lpszBuff,"输入的字符串不能为空!");
			SendMessage(GetDlgItem(hwnd,ID_OUTPUT),WM_SETTEXT,(WPARAM)0,(LPARAM)g_lpszBuff);
		}
	}
	else{
		sprintf(g_lpszBuff,"输入的选项必须大于等于0");
		SendMessage(GetDlgItem(hwnd,ID_OUTPUT),WM_SETTEXT,(WPARAM)0,(LPARAM)g_lpszBuff);
	}	
}

// 获取附加信息
void GetExtraData(HWND hwnd,int ID_INPUT,int ID_COMBO,int ID_OUTPUT){
	int n = -1;
	int m = -1;
	sprintf(g_lpszBuff,"");
	SendMessage(GetDlgItem(hwnd,ID_INPUT),WM_GETTEXT,(WPARAM)255,(LPARAM)g_lpszBuff);  // 获取编辑框内容
	sscanf(g_lpszBuff,"%d",&m);                                                        // 将获取的字符串转化为数字
	if(m >= 0){
		n = SendMessage(GetDlgItem(hwnd,ID_COMBO),CB_GETITEMDATA,(WPARAM)m,(LPARAM)0);

		if(n != CB_ERR){
			sprintf(g_lpszBuff,"附加数据:%d",n);
			SendMessage(GetDlgItem(hwnd,ID_OUTPUT),WM_SETTEXT,(WPARAM)0,(LPARAM)g_lpszBuff);
		}
		else{
			sprintf(g_lpszBuff,"获取失败!");
			SendMessage(GetDlgItem(hwnd,ID_OUTPUT),WM_SETTEXT,(WPARAM)0,(LPARAM)g_lpszBuff);
		}
	}
	else{
		sprintf(g_lpszBuff,"输入的选项必须大于等于0");
		SendMessage(GetDlgItem(hwnd,ID_OUTPUT),WM_SETTEXT,(WPARAM)0,(LPARAM)g_lpszBuff);
	}

}




  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值