Win32的程序,没有用MFC。用AppendMenu在Menu中加了一项
::AppendMenu(hMenu, MF_OWNERDRAW, IDM_NOTIFYICON_SEARCH, NULL);下面是消息处理函数:
void OnMeasureItem(LPMEASUREITEMSTRUCT lpMis)
{
lpMis->itemHeight = 20;
lpMis->itemWidth = 240;
}void OnDrawItem(LPDRAWITEMSTRUCT lpDis)
{
HWND hSearchBox = ::CreateWindow(_T("COMBOBOX"), NULL,
WS_BORDER | WS_CHILD | WS_VISIBLE,
lpDis->rcItem.left,
lpDis->rcItem.top,
lpDis->rcItem.right - lpDis->rcItem.left,
lpDis->rcItem.bottom - lpDis->rcItem.top,
lpDis->hwndItem,
NULL, NULL, NULL);
}在OnDrawItem中ComboBox创建失败,GetLastError 1400。“Invalid window handle.”
好像直接在Menu上创控件是不行的。大家有什么办法吗?
::AppendMenu(hMenu, MF_OWNERDRAW, IDM_NOTIFYICON_SEARCH, NULL);下面是消息处理函数:
void OnMeasureItem(LPMEASUREITEMSTRUCT lpMis)
{
lpMis->itemHeight = 20;
lpMis->itemWidth = 240;
}void OnDrawItem(LPDRAWITEMSTRUCT lpDis)
{
HWND hSearchBox = ::CreateWindow(_T("COMBOBOX"), NULL,
WS_BORDER | WS_CHILD | WS_VISIBLE,
lpDis->rcItem.left,
lpDis->rcItem.top,
lpDis->rcItem.right - lpDis->rcItem.left,
lpDis->rcItem.bottom - lpDis->rcItem.top,
lpDis->hwndItem,
NULL, NULL, NULL);
}在OnDrawItem中ComboBox创建失败,GetLastError 1400。“Invalid window handle.”
好像直接在Menu上创控件是不行的。大家有什么办法吗?
解决方案 »
- use sendto(),but the maximum speed is different,why?
- 安装VS2008 SP1后, 终于丢弃VC6了, 问IDE的3个使用问题!
- 如何使在工作区动态创建的ToolBar区域变成非工作区
- 如何让窗口内部全透明边缘是泛光的半透明效果啊
- 请教如何将属性页控件和listctrl控件结合起来
- 如何判断野指针,欢迎大家讨论!!
- 关于菜单的问题~
- 在vc设计控件时,怎样向VB那样有一个界面,可以在上面加入其它控件,所见即所得
- VC中BMP的存贮问题
- 关于<<深入浅出MFC>>的问题
- 什么是libc.lib 哪里能找到呢
- 求助!请教如何用DirectShow驱动工用摄像头
我感觉这样不好,你可以在其他地方创建,然后隐藏起来,在OnDrawItem里面再把他们显示出来。
另外,检查一下CreateWindow里面的父窗口那个参数是否有效。
再次,你试试把窗口样式设置为Popup的看看。
这个Menu是我用CreatePopupMenu创建的。
DRAWITEMSTRUCT的结构我仔细看过了,hwndItem在这里就是我创建的Menu,值也是一样的。我现在把CreatWindow放在我创建Menu的代码之后,hParent用我所创建Menu的HANDLE,还是不行。GetLastError还是1400好像Menu不是一个Window?大家有办法吗?