WEB开发网
开发学院软件开发VC VC自绘对话框 阅读

VC自绘对话框

 2010-07-01 20:42:04 来源:WEB开发网   
核心提示:闲来无事,写了一个简单的对话框界面,VC自绘对话框,希望给需要的朋友有所帮助,界面如下:界面很单调,首先,创建一个基于对话框的应用程序,我只是想说明一下如何实现界面的自绘,如果有需要

闲来无事,写了一个简单的对话框界面,希望给需要的朋友有所帮助。

界面如下:

界面很单调,我只是想说明一下如何实现界面的自绘。如果有需要,也可以绘制更复杂漂亮的界面。

程序的实现也不复杂,接下来就跟着我一步一步做。

首先,创建一个基于对话框的应用程序。

接下来,在CTestDlg类中添加两个成员函数:

// In CTestDlg.h
public:
  void DrawView();
HBITMAP CreateGradientBMP(HDC hDC,COLORREF cl1,COLORREF cl2,int nWidth,int nHeight,int nDir,int nNumColors);

函数的具体内容如下:

// In CtestDlg.cpp
void CTestDlg::DrawView()
{
    CPaintDC dc(this);
    CRect rect;
    CString strText="TEST. HEllo WoRLD! 你好,VCKBASE!"; //文本内容
    GetClientRect(rect);
    rect.right=27; //自绘区域宽度
    COLORREF  m_clrSideBarStart; //自绘区域起始处颜色
    COLORREF  m_clrSideBarEnd; //自绘区域结束处颜色
    
    m_clrSideBarStart=RGB(205,205,205); //灰色
    m_clrSideBarEnd=RGB(100,0,0); //褐色
    //创建图及绘制区域
    HBITMAP  bmpBar = CreateGradientBMP(
      dc.m_hDC, m_clrSideBarStart, m_clrSideBarEnd,
      rect.Width(), rect.Height(),
      0, 256);
    if (bmpBar)
    {
      CDC memDC;
      memDC.CreateCompatibleDC(&dc);
      HBITMAP hOldBmp = (HBITMAP)::SelectObject(memDC.m_hDC, bmpBar);
      dc.BitBlt(rect.left, rect.top,
        rect.Width(), rect.Height(),
        &memDC, 0, 0, SRCCOPY);
      ::SelectObject(memDC, hOldBmp);
      ::DeleteObject(bmpBar);
    }
    //绘制文本
    CFont  vertFont;
    //字体
    vertFont.CreateFont(16, 0, 900, 900, FW_BOLD,
      0, 0, 0, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS,
      CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
      DEFAULT_PITCH, "Arial");
    CFont *pOldFont = dc.SelectObject(&vertFont);
    COLORREF oldColor = dc.GetTextColor();
    dc.SetTextColor(RGB(255, 255, 255)); //文本颜色
    dc.SetBkMode(TRANSPARENT);
    dc.TextOut(rect.left+2, rect.bottom-4, strText); //文本起始位置
    dc.SetTextColor(oldColor);
    dc.SelectObject(pOldFont);
    vertFont.DeleteObject();
}

1 2  下一页

Tags:VC 对话框

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接