首先看看这个效果图
然后,看看具体实现方法
头文件
private:
void SetComboInitData();
void SetWidgetSizeAndPos();
void SetWindowSizeAndPos();
CFont m_Font;
源文件
void CComboUIDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
//绘制背景
CBitmap bitmap;
bitmap.LoadBitmap(MAKEINTRESOURCE(IDB_BITMAP1));
BITMAP bmpInfo;
bitmap.GetBitmap(&bmpInfo);
CDC bitmapDC;
bitmapDC.CreateCompatibleDC(&dc);
CBitmap* pOldBitmap = bitmapDC.SelectObject(&bitmap);
dc.BitBlt(0, 0, bmpInfo.bmWidth, bmpInfo.bmHeight, &bitmapDC,0, 0, SRCCOPY);
bitmapDC.SelectObject(pOldBitmap);
bitmap.DeleteObject();
}
void CComboUIDlg::SetWindowSizeAndPos()
{
//对话框背景图片宽和高
const int nBkBmpWidth = 655;
const int nBkBmpHeight = 462;
int xPos = 0;
int yPos = 0;
//获得电脑显示器的像素宽度和像素高度
int ax = GetDC()->GetDeviceCaps(HORZRES) - nBkBmpWidth;
int ay = GetDC()->GetDeviceCaps(VERTRES) - nBkBmpHeight;
int nWidth = 0;
int nHeight = 0;
if(ax <= 0)
{ ax = 0; }
else
{ ax = ax/2; }
if(ay <= 0)
{ ay = 0; }
else
{ ay = ay/2; }
RECT clientRect;
clientRect.left = ax;
clientRect.top = ay;
clientRect.right = clientRect.left + nBkBmpWidth;
clientRect.bottom = clientRect.top + nBkBmpHeight;
MoveWindow(&clientRect);
}
void CComboUIDlg::SetWidgetSizeAndPos()
{
RECT clientRect;
int nBtnHeightSpace = 90;
clientRect.left = 182;
clientRect.top = 116 + nBtnHeightSpace*0;
clientRect.right = clientRect.left + 442;
clientRect.bottom = clientRect.top + 56;
m_editDlg.MoveWindow(&clientRect);
clientRect.left = 182;
clientRect.top = 116 + nBtnHeightSpace*1;
clientRect.right = clientRect.left + 442;
clientRect.bottom = clientRect.top + 240;
m_cbDlg.MoveWindow(&clientRect);
//设置字体大小
m_Font.CreateFont(50,0,0,0,FW_NORMAL,FALSE,FALSE,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH|FF_SWISS,"宋体");
m_editDlg.SetFont(&m_Font);
m_cbDlg.SetFont(&m_Font);
}
void CComboUIDlg::SetComboInitData()
{
m_cbDlg.AddString("combo1");
m_cbDlg.AddString("combo2");
m_cbDlg.AddString("combo3");
m_cbDlg.SetCurSel(0);
}