头文件:
class CFloatBar : public CControlBar
{
DECLARE_DYNAMIC(CFloatBar)public:
BOOL Create(CWnd* pParentWnd,
DWORD dwStyle,
CRect rcBorders,
UINT nID);
CFloatBar();
virtual ~CFloatBar();
virtual void OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler);protected:
DECLARE_MESSAGE_MAP()
};实现文件:
// CFloatBarIMPLEMENT_DYNAMIC(CFloatBar, CControlBar)CFloatBar::CFloatBar()
{
}CFloatBar::~CFloatBar()
{
}
BEGIN_MESSAGE_MAP(CFloatBar, CControlBar)
END_MESSAGE_MAP()// CFloatBar message handlersvoid CFloatBar::OnUpdateCmdUI(CFrameWnd* /*pTarget*/, BOOL /*bDisableIfNoHndler*/)
{
}
BOOL CFloatBar::Create(CWnd* pParentWnd, DWORD dwStyle, CRect rcBorders, UINT nID)
{
SetBorders(rcBorders);
dwStyle = CBRS_ALL | dwStyle;
CRect rect;
rect.SetRectEmpty(); return CWnd::Create("FloatBar", "FloatBar", WS_CHILD | WS_VISIBLE | WS_BORDER, rect, pParentWnd, nID);
}=====================================
CWnd::Create总是失败,为什么?
class CFloatBar : public CControlBar
{
DECLARE_DYNAMIC(CFloatBar)public:
BOOL Create(CWnd* pParentWnd,
DWORD dwStyle,
CRect rcBorders,
UINT nID);
CFloatBar();
virtual ~CFloatBar();
virtual void OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler);protected:
DECLARE_MESSAGE_MAP()
};实现文件:
// CFloatBarIMPLEMENT_DYNAMIC(CFloatBar, CControlBar)CFloatBar::CFloatBar()
{
}CFloatBar::~CFloatBar()
{
}
BEGIN_MESSAGE_MAP(CFloatBar, CControlBar)
END_MESSAGE_MAP()// CFloatBar message handlersvoid CFloatBar::OnUpdateCmdUI(CFrameWnd* /*pTarget*/, BOOL /*bDisableIfNoHndler*/)
{
}
BOOL CFloatBar::Create(CWnd* pParentWnd, DWORD dwStyle, CRect rcBorders, UINT nID)
{
SetBorders(rcBorders);
dwStyle = CBRS_ALL | dwStyle;
CRect rect;
rect.SetRectEmpty(); return CWnd::Create("FloatBar", "FloatBar", WS_CHILD | WS_VISIBLE | WS_BORDER, rect, pParentWnd, nID);
}=====================================
CWnd::Create总是失败,为什么?
解决方案 »
- 已知弧上两点和圆心,求椭圆的长短轴?
- 怎样改变菜单栏的位置
- VS2008 MFC 托盘图标的气泡提示怎么实现?
- 这几天 闲 下来了, 散分,祈祷 自己 北京转车 买票顺利
- 我在VC编译时出现 warning C4305: 'initializing' : truncation from 'const int' to 'char'这样的错误,很弱智,还请高手指点,怎么解决
- 大家来谈谈游戏的文件版本管理一般怎么来做?
- 初学者问题:动态生成的控件需要释放吗?
- 关于汉字内码和字模运算的问题 敬请帮助
- 有关网络超时的问题
- 客户端ActiveX怎么和服务器端的asp文件通信
- 求助
- 如何使alt键按下后程序响应一定的动作?
::LoadCursor(NULL, IDC_ARROW),
::GetSysColorBrush(COLOR_BTNFACE), 0); return CWnd::Create(wndclass, lpszWindowName, dwStyle,
rect,pParentWnd, nID);
你怎么显示的,大概下面这样
m_wndDockBar.Create(this,CSize(230,260),TRUE,ID_DOCKBAR1)
m_wndDockBar.SetBarStyle(m_wndDockBar.GetBarStyle() |
CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC); m_wndDockBar.EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndDockBar,AFX_IDW_DOCKBAR_LEFT);
{
ASSERT_VALID(pParentWnd); SetBarStyle(dwStyle & CBRS_ALL);//先SET,创建的时候,再去掉,一样会有 CString wndclass = ::AfxRegisterWndClass(CS_DBLCLKS,
::LoadCursor(NULL, IDC_ARROW),
::GetSysColorBrush(COLOR_BTNFACE), 0); dwStyle &= ~CBRS_ALL;
dwStyle &= WS_VISIBLE | WS_CHILD;
return CWnd::Create(wndclass, lpszWindowName, dwStyle,
CRect(0,0,0,0), pParentWnd, nID);
}
CBRS_LEFT | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC); m_wndFloat.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY); DockControlBar(&m_wndFloat);
{
//比如,浮动的时候多大,停靠的时候多大
}
BOOL CAutoHideBar::Create(CWnd *pParentWnd, DWORD dwStyle, UINT nID)
{
ASSERT(pParentWnd != NULL);
ASSERT_KINDOF(CFrameWnd, pParentWnd); m_dwStyle = (dwStyle & CBRS_ALL);
// register and create the window
CString wndclass = ::AfxRegisterWndClass(CS_VREDRAW | CS_HREDRAW,
::LoadCursor(NULL, IDC_ARROW),
::GetSysColorBrush(COLOR_BTNFACE), 0); dwStyle &= ~CBRS_ALL; // keep only the generic window styles
dwStyle |= WS_CLIPCHILDREN; // prevents flashing if(m_dwStyle & CBRS_ORIENT_HORZ)
{
m_Font.CreateFont(13 ,0, 0,0, FW_NORMAL, 0,0,0, DEFAULT_CHARSET,
OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
FF_ROMAN , "Tahoma");
}
else if(m_dwStyle & CBRS_ORIENT_VERT)
{
m_Font.CreateFont(13,0, -900,-900, FW_NORMAL, 0,0,0, DEFAULT_CHARSET,
OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
FF_ROMAN , "Tahoma");
} // Note: Parent must resize itself for control bar to be resized
return CWnd::Create(wndclass, NULL, dwStyle, CRect(0, 0, 0, 0), pParentWnd, nID);
}
多做一些ASSERT判断,就可以知道问题在什么地方了,如果还不是不行的话
如果可以的话,可以将程序源代码发到:[email protected]
我帮你看看!注明帖子的URL!
class CFloatBar : public CControlBar
{
DECLARE_DYNAMIC(CFloatBar)public:
CFloatBar();
virtual ~CFloatBar();
virtual void OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler); BOOL Create(CWnd* pParentWnd,
UINT nID,
CRect rcBorders,
DWORD dwBarStyle = CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC,
DWORD dwWndStyle = WS_CHILD | WS_VISIBLE | WS_BORDER);protected:
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnWindowPosChanged(WINDOWPOS* lpwndpos);
};-----------------------------------------------------------------
// CFloatBarIMPLEMENT_DYNAMIC(CFloatBar, CControlBar)CFloatBar::CFloatBar()
{
}CFloatBar::~CFloatBar()
{
}
BEGIN_MESSAGE_MAP(CFloatBar, CControlBar)
ON_WM_WINDOWPOSCHANGED()
END_MESSAGE_MAP()// CFloatBar message handlersvoid CFloatBar::OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler)
{
// CControlBar::OnUpdateCmdUI(pTarget, bDisableIfNoHndler);
UpdateDialogControls(pTarget, bDisableIfNoHndler);
}
BOOL CFloatBar::Create(CWnd* pParentWnd,
UINT nID,
CRect rcBorders,
DWORD dwBarStyle,
DWORD dwWndStyle)
{
SetBorders(rcBorders); SetBarStyle((WS_VISIBLE | WS_CHILD | dwBarStyle) & CBRS_ALL); CString wndclass = ::AfxRegisterWndClass(CS_DBLCLKS,
::LoadCursor(NULL, IDC_ARROW),
::GetSysColorBrush(COLOR_BTNFACE), 0);
return CWnd::Create(wndclass, _T("FloatBar"), dwWndStyle,
rcBorders, pParentWnd, nID);}void CFloatBar::OnWindowPosChanged(WINDOWPOS* lpwndpos)
{
CControlBar::OnWindowPosChanged(lpwndpos);
}
.h
virtual BOOL Create....
在改过的Create里面调用的还是其基类的CWnd:Create()啊而且在CFloatBar创建的时候也是调用的这个改过的Create()啊
[email protected]