就是需要对ListItem进行自定义绘制,
由图标+多行不同格式文字组成一个Item。类似于控制面板里的添加删除程序的那个list.我手头有一份正确的MFC代码,但是转过到WIN32代码的时候,有个消息总是得不到。void CScreenMachineList::OnNMCustomdrawList(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMCUSTOMDRAW pNMCD = reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR);
// TODO: Add your control notification handler code here
*pResult = CDRF_NOTIFYITEMDRAW; switch (pNMCD->dwDrawStage)
{
//一直都只能到这里了
case CDDS_PREPAINT:
*pResult = CDRF_NOTIFYITEMDRAW;
break; //以下的这些都执行不到
case CDDS_ITEMPREPAINT:
*pResult = CDRF_NOTIFYSUBITEMDRAW | CDRF_NOTIFYPOSTPAINT;
break; case CDDS_ITEMPREPAINT | CDDS_SUBITEM:
*pResult = CDRF_SKIPDEFAULT;
break; case CDDS_ITEMPOSTPAINT:
*pResult = CDRF_SKIPDEFAULT;
//DrawUserItem(pNMCD->dwItemSpec, pNMCD->hdc); break;
}
}
由图标+多行不同格式文字组成一个Item。类似于控制面板里的添加删除程序的那个list.我手头有一份正确的MFC代码,但是转过到WIN32代码的时候,有个消息总是得不到。void CScreenMachineList::OnNMCustomdrawList(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMCUSTOMDRAW pNMCD = reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR);
// TODO: Add your control notification handler code here
*pResult = CDRF_NOTIFYITEMDRAW; switch (pNMCD->dwDrawStage)
{
//一直都只能到这里了
case CDDS_PREPAINT:
*pResult = CDRF_NOTIFYITEMDRAW;
break; //以下的这些都执行不到
case CDDS_ITEMPREPAINT:
*pResult = CDRF_NOTIFYSUBITEMDRAW | CDRF_NOTIFYPOSTPAINT;
break; case CDDS_ITEMPREPAINT | CDDS_SUBITEM:
*pResult = CDRF_SKIPDEFAULT;
break; case CDDS_ITEMPOSTPAINT:
*pResult = CDRF_SKIPDEFAULT;
//DrawUserItem(pNMCD->dwItemSpec, pNMCD->hdc); break;
}
}
解决方案 »
- 谁知道多文档视图中停靠的的工具栏在切换悬浮和停靠状态时会有消息通知父框架吗?
- 救命啊!救命啊!我被MFC弄疯了!!!
- 请问大家怎么在vc++6.0下操作webbrowser控件中的ppt
- 如何生成一个能在 没装VC的电脑上 运行的应用程序?
- 使用ADO连接数据库问题!!
- 切分窗口的超难题...救命
- 关于 FLASH 文件关联
- 反编译软件IDAPro415的用法
- 关于输出日期出错:function call missing argument list???
- 高手一定帮忙,想学hook但没找到系统教材,请推荐啊,最好是download的!!
- 请教关于定义全局变量出现LNK2001错误的问题
- 关于逻辑坐标和设备坐标的困惑,急
SetWindowLong(hwndDlg, DWL_MSGRESULT, lResult) 设定返回值