#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);
}
}
win32 组合框操作 - 窗口消息
最新推荐文章于 2022-07-19 23:58:01 发布