���ؼ�����ť���༭���б���
��������ctl_one
������ע����Ѿ���ǰ����������ù���ť�ˣ��������Ƕ�������ٵ�Ӧ����Щ�˽��ˣ��������뵽��Ҫ�ڴ�������ʹ�����ǣ��һ����ڱ�����д����������������
�ؼ�
���ڿؼ�Ҫ��ס��һ���¾������Ǿ��Ǵ���.��ͬ�κ������Ĵ��ڣ������д��ڹ��̣������࣬�ȵȣ�������ϵͳע�ԣ��κ�����Զ�һ���������������㶼���Զ�һ���ؼ�����
��Ϣ
��������һ��������ǰ������Ϣѭ������������Ϣͨ�ţ��㷢����������һ���ؼ�����ʲô�����ؼ�����һ���¼���ʱ����Ҳ���㷢��һ��֪ͨ��Ϣ������
���ؼ����֪ͨ��һ��WM_COMMAND��Ϣ�����������ڰ�ť�Ͳ˵����Ѿ���������һ��.�����ں���Ҫ���ij����ؼ�����������WM_NOTIFY��
�������ڲ�ͬ�Ŀؼ��㷢���൱��ͬ����Ϣ��ÿ���ؼ������Լ�����Ϣ���ϣ���ʱһ����Ϣ�����ڶ���ؼ�����һ������ֻ����һ������ר������Ŀؼ��Ϲ����������б���(listbox)
����Ͽ�(combobox)����Ϣ(LB_*��CB_*)��һ�������������Խ���Ǽ��������ͬ�Ĺ��ܣ����Džs���ܻ��Q�����Լ�Ҳ��������죬��������Ҳ�����˼�����ˣ�)
��������һ���棬��WM_SETTEXT��ͨ����Ϣ��Ϊ������ؼ���֧�֣��Ͼ�һ���ؼ�����һ�����ڶ��ѣ�
�����������SendMessage()���API��������Ϣ����getDlgItem()����ȡ�ؼ��ľ���������������SendDlgItemMessage()��һ�����������������������ַ�ʽ�Ľ���ǵ�Ч�ģ�
�༭��
�����༭����Windowsϵͳ����õ�һ���ؼ����������Ñ������ı��������룬�ģ����ƣ��ȵȲ���.
Windows�еļ��±��Ͳ����һ��ƽ���Ĵ�����������Ƕ��һ�����ı༭��
��������Ǵ����������ͱ༭��ӿڵĴ��룺
SetDlgItemText(hwnd, IDC_TEXT, "This is a string");
�����������������ؼ��е����������ȫ�����루�����ڼ�����������ص��ı�ֵ�Ŀؼ����o̬�ؼ�����ť�ȵȣ���
�����ӿؼ���ȡ�ı�Ҳ��һ���ļ���Ȼ����һ��������Ҫ��...
int len = GetWindowTextLength(GetDlgItem(hwnd, IDC_TEXT));
if(len > 0)
{
int i;
char* buf;
buf = (char*)GlobalAlloc(GPTR, len + 1);
GetDlgItemText(hwnd, IDC_TEXT, buf, len + 1);
//... do stuff with text ...
GlobalFree((HANDLE)buf);
}
������������ҪΪҪ��������ַ�������һ��ȴ棬������ͷ���һ��ָ��ȴ������е��ַ�����ָ�룮Ϊ������һ�㣬��������ҪŪ���ΪҪ���ö��كȴ森�]��GetDlgItemTextLength()���API��������һ��GetWindowTextLength()����������Ҫ�Լ�ʹ��GetDlgItem()��ȡ�ؼ��ľ����
�����������ǻ�ȡ�˳��ȣ��Ϳ������Ãȴ���.
������������һ��СС�ļ�������Ƿ����ı�Ҫ��������Ϊ��ܿ��ܲ����봦��һ���յ��ַ�����������ʱ����Ҫ����������Ҳ�����Լ�����.��������Щ����Ҫ���������ǵ���GlobalAlloc()������һЩ�ȴ�.
���������õ�GlobalAlloc()�ȼ���calloc()��������DOS/UNIX�µı�̵Ļ�����Ϥ�Ļ���������һ��ȴ棬�����ʼ��Ϊ����������ȴ��ָ�룮���ڵ�һ������������Դ���ͬ��ֵ����Ϊ��ͬ��Ŀ��������ͬ�IJ��������ڴ˽̳�����ֻ������һ�ַ�ʽ��
������ע����������λ�öԳ��ȼ��ˣ������Ǹ�ʲô����ΪGetWindowTextLength()���ؿؼ����ַ������в�����ĩβ�Ǹ���ֹ���������ζ��������Dz��ӣ������Ãȴ����洢����ַ����Ļ����ַ������Է��£�������ֹ���ͻ�����ȴ�飬���ܻ��ƻ��e�����ݣ����·��ʳ�ͻ�����DŽe��ʲô���Ľ�����ڴ���windowsϵͳ�е��ַ�������ʱ����Ҫ����С�ģ�һЩAPI�ͺ���Ҫ���ַ������Ȱ�����ֹ��������һЩҪ��Ҫ����ʱ�ʱ����ĵ���
���������������]�н�����ֹ���Ļ�����ο�һ��C���ԵĿα����ǻ����̲ģ����ǻὲ�����
�������������GetDlgItemText()�����ؼ��ă��ݻ�ȡ�����Ǹո����úõĻ����������������Ҫ�����ij��Ȱ�����ֹ�������ķ���ֵ�Ǹ��Ƶ��ַ��������������ォ������ˣ�����������ֲ�������ֹ����������Ц�ɣ�����
��������ȫ�����������ı������Ͼ�Ҫ���ˣ�������Ҫ���Ǹո����õăȴ��ͷŵ���������й©�ˣ����䵽CPU�Ͼͻ�Ѽ�������·�����ǵ���GlobalFree()���������ǵ�ָ��Ϳ��������������ˣ�
��������ܻ������������������һ��API������LocalAlloc()��LocalFree()���ȵȣ����������ǣ���λwindowsϵͳ����ʷAPI.��Win32ƽ̨�У�Local*��Global*���փȴ���غ�����ȫ��һ���ģ�
�༭��������
�������������ı��ˣ�����������Ñ����������֣�����һ���ܳ����������Һ���һ��API�������������Ϊ�������еăȴ����ã������ַ���תΪ��������
BOOL bSuccess;
int nTimes = GetDlgItemInt(hwnd, IDC_NUMBER, &bSuccess, FALSE);
����GetDlgItemInt()��GetDlgItemText()�����ƣ����˺����ǰ�һ���ַ���������һ����������ȥ����ǰ���ǰ�һ���ַ����ڃȲ�תΪ����������ֵ���ظ��㣮�����������ǿ�ѡ�ģ���һ��ָ��£ϣϣ��͵�ָ�룮��Ϊ���������ʧ�ܵ�ʱ�أ������ԛ]�а취�����־����ǵ���ʧ���˻����Ñ�������һ����������㲻�����ã���ʾһ������ʧ�ܣ��Ǿ��ܺ�����������ɣ�
��������һ�����õIJ����DZ༭��ؼ���ES_NUMBER����������������ֻ�����Ñ����룰���������֣�����ֻ��Ҫ���������ʱ������������䷽�㣬��������r�²���ô������Ϊ�������������κ��������ַ��������������ţ�����С���㣩�����ָ�������
���
��������һ�������õĿؼ����б���������������ʱ��������һ�����ؼ�����Ϊʵ��˵�����Dz����Ǻ���Ȥ������㻹�]�ие�����Ļ������Ѿ��е��ˣ���
��һ���б���
���������һ���б������ĵ�һ���¾��Ǹ�����һ���
int index = SendDlgItemMessage(hwnd, IDC_LIST, LB_ADDSTRING, 0, (LPARAM)"Hi there!");
��������Կ���������һ���ܼ���������б���ָ����LBS_SORT����������ĸ˳��ӽ�ȥ�������������ӵ��б���β����
����������Ϣ���Ƿ��������ӵ��б������ţ����ǿ����������������б�����Єe��һЩ���������������һЩ���ݣ�һ�����һ��ָ��һ���京������Ϣ�Ľṹ���ָ�룬��һ����������ʶ����б���ı�ʶ�����㶨�ˣ�
SendDlgItemMessage(hwnd, IDC_LIST, LB_SETITEMDATA, (WPARAM)index, (LPARAM)nTimes);
֪ͨ
�����б�������������������Ñ���һ���б�ѡ�������������Dz��Ǻܹ������Ǿ���ʲôʱ������ѡ����������ǵ�ɾ����ť�����Dz���Ҫ֪��ʲôʱ��ѡ���ˣ�����ֻ��Ҫ���Ñ����������ť��ʱ��������ˣ�
����Ȼ������Щʱ������������Ӧ�����������ѡ��ͬ���б���������ͬ����ʾ�����ijЩ��Ϣ.
Ϊ������Ҫ��Ӧ�б�������Ƿ���֪ͨ��Ϣ. ����������Ҫע��LBN_SELCHANGE�����֪ͨ��Ϣ���������Ñ���������ѡ���б���Ŀ.LBN_SELCHANGE��WM_COMMAND������������ť��˵���WM_COMMAND��Ϣ����(һ�������Ӧ���)����ͬ���ǣ��б���WM_COMMAND��Ϣ��ԭ��ܶ࣬��������Ҫ����һ���ļ���ҳ��������Ϣ.
֪ͨ������wParam�� HIWORD���ִ��ݣ�wParam������һ����������ǿؼ���ID��
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDC_LIST:
// It's our listbox, check the notification code
switch(HIWORD(wParam))
{
case LBN_SELCHANGE:
// Selection changed, do stuff here.
break;
}
break;
// ... other controls
}
break;
���б����л�ȡ����
����һ������֪��ѡ�������ˣ�����Ӧ�Ñ�Ҫ�����Ǿ���Ҫ���б����л�ȡѡ��Ľ�����������õĴ�����
��������������ʹ����һ����ѡ���б������Ի�ȡ��ѡ������嵥��Ҫ��С���ɣ������һ����ѡ������ͼط���һ��LB_GETCURSE��Ϣ�Ϳ��Ի����ѡ�����ţ�
������������Ҫ�����ѡ�����Ŀ���ݴ����Dz���Ϊ����Ҫ�������������Ãȴ森
HWND hList = GetDlgItem(hwnd, IDC_LIST);
int count = SendMessage(hList, LB_GETSELCOUNT, 0, 0);
Ȼ�������ѡ���б�����Ŀ�����Ãȴ棬������LB_GETSELITEMSȥ������飮
int *buf = GlobalAlloc(GPTR, sizeof(int) * count);
SendMessage(hList, LB_GETSELITEMS, (WPARAM)count, (LPARAM)buf);
// ... Do stuff with indexes
GlobalFree(buf);
���������У�buf[0]�ǵ�һ����ţ�һֱ��buf[count-1]��ź���ģ�
��������ܻ������Щ��ѡ�е��б����У���ȡ������������ݣ�����һЩ����.���������������һ������������һ����Ϣ�����ˣ�
int data = SendMessage(hList, LB_GETITEMDATA, (WPARAM)index, 0);
�����������Ϊij�����͵���ֵ(�κ�32λ��)��Ϳ��Լ؏��ƽ���תΪ��Ӧ�����ͣ������������HBITMAP������int��ŷ���ֵ������
HBITMAP hData = (HBITMAP)SendMessage(hList, LB_GETITEMDATA, (WPARAM)index, 0);
�o̬�ؼ�
��������ťһ�����o̬�ؼ�Ҳ�ܼ���Ϊ������������һ��ǰ�����д��������o̬�ؼ�һ����Ǻܰ��o����˼������һ�㲻�������ʲô�e���£���Ҫ�����������Ñ���ʾ�ı����������������ָ��һ�����صı�ʶʹ��������Щ��VC++������ָ��Ĭ�ϵı�ʶIDC_STATIC����ʵ����-1����ʾ���]�б�ʶ�����������Ϳ��������е�ʱ���������������Ñ���̬����ʾ���ݣ�
�����ڷ��������У�����һ���o̬�ؼ�����ʾѡ����б�������ݣ��ٶ���һ��ֻѡһ���б��
SetDlgItemInt(hwnd, IDC_SHOWCOUNT, data, FALSE);
|