我在WM_INITDIALOG设置ComboBox默认选择第一个也就是0,
然后程序运行起来以后,比如我更改了ComboBox的选中内容。我要弹出一个对话框。
在VC里面是用哪个API来响应的?
然后程序运行起来以后,比如我更改了ComboBox的选中内容。我要弹出一个对话框。
在VC里面是用哪个API来响应的?
解决方案 »
- opengl多线程创建显示列表
- 如何让工具栏自动滚动
- 求一使用BitBlt显示BMP图片的例程
- 如何提取发送给打印机的文本,请高手指点
- 怎样使图形在视图内移动
- 钩子可不可以写成com?如果可以,该怎么做呢?
- 谁有Platform SDK的help/psdk.col文件,给小弟发一份,急!
- 为什么我的CHeaderCtrl对象,一直为0x00000000???
- 文件如何传输的(在winsock中)原理????????
- 我急呀!!谁知道在VC中调用Com组件时,如果Com组件中要弹出无模式窗口怎么处理?
- 如何让tabctrl在选择某一页后所选页的标签能更明显?
- 照例子做一点按钮出来 hello,world!的MFC程序 出错
void CcdcDlg::OnCbnSelchangeCombo1()
{
MessageBox(_T(""));
}
=======
如果是SDK的话,就复杂一点,对于控件对父窗口的通知,都是发送WM_COMMAND消息的,所以你在父窗口中处理WM_COMMAND消息,对于CBN_SELCHANGE 通知来说,wParam参数的高位是通知码:CBN_SELCHANGE。
下面是MSDN:
The CBN_SELCHANGE notification message is sent when the user changes the current selection in the list box of a combo box. The user can change the selection by clicking in the list box or by using the arrow keys. The parent window of the combo box receives this notification in the form of a WM_COMMAND message with CBN_SELCHANGE in the high-order word of the wParam parameter.
{
switch(HIWORD(wParam))
{
case CBN_SELCHANGE:
{
// ...
}
break;
default:
break;
}
}
break;
case CBN_SELCHANGE:
{
// ...
}
里面的事件不会激活
是不是缺少了什么?
case WM_COMMAND:
{
switch(HIWORD(wParam))
{
case CBN_SELENDOK:
这样行不行?
我代码贴出来吧。好找到原因自己消化一下。 case WM_INITDIALOG:
{
SetDlgIcon(hInst,hDlg,IDI_SQL);//自己写的一个设置图标的
HWND hList = GetDlgItem(hDlg,IDC_Drives);
int len = GetLogicalDriveStrings(0,NULL);
TCHAR* ds = new TCHAR[len];
GetLogicalDriveStrings(len,ds);
while(*ds!=NULL)
{
ComboBox_AddString(hList,ds);
ds+=_tcslen(ds)+1;
}
ComboBox_SetCurSel(hList,0);
TCHAR str[256];
ComboBox_GetText(hList,str,sizeof(str));
SetDlgItemText(hDlg,IDC_CurrentDrive,str);
break;
}
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDCANCEL:
{
EndDialog(hDlg, LOWORD(wParam));
break;
}
case CBN_EDITCHANGE:
{
MessageBox(hDlg,TEXT("A"),TEXT("A"),MB_OK);
break;
}
break;
}
=========
wParam低位是ID,利用ID可以区分不同的控件
====================================
HIWORD(wParam)是取wParam这个32位数的高16位,对于WM_COMMAND的消息来说,wParam参数的高位表示通知码,LOWORD(wParam)是取32位中低16位,对于WM_COMMAND来说,低16位表示发送消息的控件ID。