如何做一个像 ComboBox 和菜单下拉部分那样的控件,让控件可以在窗口的外面,而且在控件获得焦点的时候控件所属窗口仍旧是被激活的状态,标题栏是活动状态的。
解决方案 »
- 程序退出
- 我已经知道控件ID了,现在是想单击它一下,怎么操作,比如说它ID为0x20,它的父窗口的句柄为h_Rec;
- 如何直接获取灰度图像的调色板信息
- 棘手的问题
- 我用InstallShield制作的安装程序,在某些98的机器上安装出现致命错误!!急!!
- === 请高人救急!!!===两个问题 200 分(Richedit 字体及Win98使用Win2K函数)
- 关于邮槽:如何向对方的WinPopup发消息?
- 关于Boost的Regex库的BUG
- vc6 的工程用到了 水晶报表的控件 打包的时候应该怎么打包呢?
- 求救--如何在NT下直接读取硬盘扇区啊?
- 怎么在任务栏不显示窗口呢?
- 如何从BYTE中提取某一位
2: 该窗口必须被设成TOPMOST,不然会被遮住.
3: 该窗口必须有建立者窗口的句柄,以便于访问.
4: 该窗口必须在MOUSEAVTIVE中,禁止该窗口获得焦点
BOOL CMainFrame::CreatePropertyBar()
{
const int nDropHeight = 100 ;
if(!m_wndPropBar.Create(this, WS_CHILD|WS_VISIBLE|
CBRS_LEFT|CBRS_SIZE_DYNAMIC|CBRS_TOOLTIPS|
CBRS_FLYBY,IDR_PROPERTYBAR)||
!m_wndPropBar.LoadBitmap(IDR_PROPERTYBAR)||
!m_wndPropBar.SetButtons(PropertyButtons,
sizeof(PropertyButtons)/sizeof(UINT)))
{
TRACE0("Failed to create propertybar\n") ;
return FALSE ;
}
// 设置 SEPARATOR 的宽度
m_wndPropBar.SetButtonInfo(1, ID_SEPARATOR,
TBBS_SEPARATOR, 10) ;
// 设置线型组合框的宽度
m_wndPropBar.SetButtonInfo(2, IDW_LINESTYLE,
TBBS_SEPARATOR,150) ;
// 设置 SEPARATOR 的宽度
m_wndPropBar.SetButtonInfo(3, ID_SEPARATOR,
TBBS_SEPARATOR,10) ; // 设置线宽度组合框的宽度
m_wndPropBar.SetButtonInfo(4, IDW_LINEWIDTH,
TBBS_SEPARATOR,150);
// 定义各组合框的边界矩形
CRect rc ;
// 绘制线型组合框
m_wndPropBar.GetItemRect(2,&rc) ;
rc.bottom = rc.top + nDropHeight ;
// 创建线型组合框
if(!m_wndPropBar.m_wndLineStyleCmb.Create(
CBS_DROPDOWNLIST | WS_VISIBLE|WS_TABSTOP|
WS_VSCROLL|CBS_OWNERDRAWVARIABLE,
rc, &m_wndPropBar, IDW_LINESTYLE))
{
TRACE0("Failed to create linestyle combo--box!") ;
return FALSE ;
} // 向线型组合框添加选项
m_wndPropBar.m_wndLineStyleCmb.AddItem(
PS_SOLID,"实线") ;
m_wndPropBar.m_wndLineStyleCmb.AddItem(
PS_DASH,"虚线") ;
m_wndPropBar.m_wndLineStyleCmb.AddItem(
PS_DOT, "点线") ;
m_wndPropBar.m_wndLineStyleCmb.AddItem(
PS_DASHDOT, "点划线") ;
m_wndPropBar.m_wndLineStyleCmb.AddItem(
PS_DASHDOTDOT, "双点划线") ;
m_wndPropBar.m_wndLineStyleCmb.AddItem(
PS_NULL, "空线") ;
m_wndPropBar.m_wndLineStyleCmb.AddItem(
PS_INSIDEFRAME, "内框线") ;
// 设置缺省项
m_wndPropBar.m_wndLineStyleCmb.SetCurSel(0) ; // 绘制线宽组合框
m_wndPropBar.GetItemRect(4,&rc) ;
rc.bottom = rc.top + nDropHeight ;
// 创建线宽组合框
if(!m_wndPropBar.m_wndLineWidthCmb.Create(
CBS_DROPDOWNLIST| WS_VISIBLE|WS_TABSTOP|
WS_VSCROLL|CBS_OWNERDRAWVARIABLE,
rc, &m_wndPropBar, IDW_LINEWIDTH))
{
TRACE0("Failed to create WIDTH combo--box!\n") ;
return FALSE ;
}
//在线宽组合框添加选项
m_wndPropBar.m_wndLineWidthCmb.AddItem(1, "宽度1") ;
m_wndPropBar.m_wndLineWidthCmb.AddItem(2, "宽度2") ;
m_wndPropBar.m_wndLineWidthCmb.AddItem(3, "宽度3") ;
m_wndPropBar.m_wndLineWidthCmb.AddItem(4, "宽度4") ;
//设置当前缺省的选项
m_wndPropBar.m_wndLineWidthCmb.SetCurSel(0) ; return TRUE ;}