我想在MFC的对话框中添加静态图片,请问该怎么办?

我想在MFC的对话框中添加静态图片,请问该怎么办?,第1张

首先,你需要加载一张,构造一个HBITMAP的句柄;
之后,((CStatic )GetDlgItem(控件ID))->SetBitmap(hBitmap);
这样就设置好了
切换响应对应的消息映射后更换这个句柄重新设置就可以了

你说了应该是三态按钮(也有四态的,原理差不多),可以在网上查有很多的例子;
这个原理从头讲可是多了去了,至少得懂点mfc关于自绘的基本知识再讲你还能明白,不然说了你也一塌糊涂
你可以先找本简单的入门的MFC书籍,着重看一下关于自绘的基本知识,看完那个以后,对着搜索的例子,即使不讲应该也能明白了

建立一个窗口应用程序,然后添加一个按钮,并在类向导(按ctrl+w)中添加相应函数,然后在函数中定义d出窗口的对象,然后调用DoModal()函数显示d出窗口,在d出窗口中显示,先将你要显示的加载到资源中,然后添加MFC中的Picture控件,右键单击其属性,将类型改成位图,在图像中加载你要显示位图的ID,然后就OK了,有什么问题,继续追问

背景图像加载很简单,你只需要做以下几步即可(假设你的登陆界面对话框类名叫“CLoginDlg”):
(1)菜单“Insert”->"Resource",选择Bitmap,然后点“Import”,选择你的背景图像,然后假设该资源ID为“IDB_BITMAP1”;
(2)在LoginDlgh下声明一个CBitmap m_BKbitmap;
(3)在LoginDlgcpp的构造函数中:m_BKbitmapLoadBitmap(IDB_BITMAP1);
(4)在LoginDlgcpp的OnPaint()函数中写上:
void CLoginDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
if (IsIconic())
{
SendMessage(WM_ICONERASEBKGND, (WPARAM) dcGetSafeHdc(), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rectWidth() - cxIcon + 1) / 2;
int y = (rectHeight() - cyIcon + 1) / 2;
// Draw the icon
dcDrawIcon(x, y, m_hIcon);
}
else
{
BITMAP bm;
CRect rect;
CDC dcMem;
m_BKbitmapGetBitmap (&bm);
GetClientRect(&rect);
dcMemCreateCompatibleDC (&dc);
CBitmap oldbitmap=dcMemSelectObject (&m_BKbitmap);
dcBitBlt (0,0,bmbmWidth ,bmbmHeight ,&dcMem,0,0,SRCCOPY);
dcMemSelectObject(oldbitmap);
CDialog::OnPaint();
}
}
你的问题就OK了。
关于按钮控件显示,建议你可以下载一个CButton的继承类,什么“CButtonST”啊、“CBtnST”啊、“CDlgShadeButtonST”啊,自己手写的话不划算,有很多现成的控件类,都写的非常好,完全可以拿来为我们所用。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13411234.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-31
下一篇 2023-07-31

发表评论

登录后才能评论

评论列表(0条)

保存