VC⼀MFC 如何掩藏和显示对话框下的状态栏和工具栏?

我已经解决了 虽然你们的回答不相关 但是还是要谢谢你们!
2025-02-26 05:29:35
推荐回答(2个)
回答1:

把初始化函数删了

回答2:

sBar,然后响应WM_ERASEBKAND消息。。然后自绘背景。
-----------------MyStatusBar.h------
#pragma once
#include "afxext.h"

class CMyStatusBar :
public CStatusBar
{
public:
CMyStatusBar(void);
~CMyStatusBar(void);
DECLARE_MESSAGE_MAP()
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
};
--------------------MyStatusBar.cpp--------
#include "StdAfx.h"
#include "MyStatusBar.h"

CMyStatusBar::CMyStatusBar(void)
{
}

CMyStatusBar::~CMyStatusBar(void)
{
}
BEGIN_MESSAGE_MAP(CMyStatusBar, CStatusBar)
ON_WM_ERASEBKGND()
END_MESSAGE_MAP()

BOOL CMyStatusBar::OnEraseBkgnd(CDC* pDC)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
CBrush backBrush(RGB(255,0,0));
CBrush* pOldBrush = pDC->SelectObject(&backBrush);
CRect rect;
pDC->GetClipBox(&rect);
pDC->PatBlt(rect.left, rect.top, rect.Width(), rect.Height(), PATCOPY);
pDC->SelectObject(pOldBrush);
return TRUE;
//return CStatusBar::OnEraseBkgnd(pDC);
}
---------------------------你使用的那个类=
.
.
public:
CMyStatusBar m_wndStatusBar;
.
.
之后使用也一样的。这个跟UNICODE无关吧,UNICODE是每个字符使用2个字节存储的。程序里的字符串前面要加上 L