按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
// 派生自己的应用程序类
…………………………………………………………Page 520……………………………………………………………
class CMyApp : public CWinApp
{
public:
virtual BOOL InitInstance();
};
// 应用程序主窗口类
class CMyWnd : public CFrameWnd
{
protected:
void PaintTitleBar(BOOL bActive);
// 声明主窗口的消息处理函数
afx_msg void OnNcPaint();
afx_msg BOOL OnNcActivate(BOOL bActive);
DECLARE_MESSAGE_MAP();
};
// 初始化应用程序的实例
BOOL CMyApp::InitInstance()
{
// 创建应用程序主窗口
CMyWnd *pWnd=new CMyWnd;
pWnd…》Create(NULL; 〃具有五彩标题条的窗口〃);
// 显示应用程序主窗口,并更新客户区
pWnd…》ShowWindow(SW_SHOW);
pWnd…》UpdateWindow();
m_pMainWnd=pWnd;
return TRUE;
…………………………………………………………Page 521……………………………………………………………
}
// 声明应用程序对象
CMyApp MyApp;
// 应用程序主窗口的消息映射
BEGIN_MESSAGE_MAP(CMyWnd; CWnd)
ON_WM_NCPAINT()
ON_WM_NCACTIVATE()
END_MESSAGE_MAP()
// 绘制窗口的标题条,参数 bActive 代表窗口的当前激活状态
void CMyWnd::PaintTitleBar(BOOL bActive)
{
// 创建代表整个窗口的显示设备上下文对象
CWindowDC dc(this);
CRect rc;
// 获得窗口矩形及其宽度
GetWindowRect(rc);
UINT nWidth=rc。Width();
// 获得窗口边框的度量
UINT nXFrame=GetSystemMetrics(SM_CXSIZEFRAME);
UINT nYFrame=GetSystemMetrics(SM_CYSIZEFRAME);
// 获得窗口标题条的高度
UINT nYCaption=GetSystemMetrics(SM_CYCAPTION);
COLORREF cr;
if (bActive)
{
// 获得当窗口处于激活状态时其标题条的颜色
…………………………………………………………Page 522……………………………………………………………
cr=GetSysColor(COLOR_ACTIVECAPTION);
// 按从红到绿,再到蓝的渐变规律绘制标题条
for (UINT j=nYFrame; j