在网上看了些做界面的教程,跟着学做,他是这么写的
1,按钮属性 Owner Drew选上,按钮ID: IDC_BUTTON1
2,定义变量:
CBitmapButton m_button;
3,在初始化里边
m_button.LoadBitmaps(_T("IDB_BITMAP3"),_T("IDB_BITMAP4"),_T("IDB_BITMAP3"),_T("IDB_BITMAP5"));我跟着做了,按钮属性选择了Bitmap和OwnerDraw风格,也和变量关联了,其中他说的定义变量要在哪里定义阿?我先是定义的全局变量,可编译出错说,LoadBitmaps()不是成员,我定义在初始化里也不对,编译连接都没问题,运行时出错,好像是说我没有关联变量,可我明明关联了的,我忽略后,看见界面按钮位置没有预想的图片,而是白色一片,高手帮帮忙啊,不胜感谢!
1,按钮属性 Owner Drew选上,按钮ID: IDC_BUTTON1
2,定义变量:
CBitmapButton m_button;
3,在初始化里边
m_button.LoadBitmaps(_T("IDB_BITMAP3"),_T("IDB_BITMAP4"),_T("IDB_BITMAP3"),_T("IDB_BITMAP5"));我跟着做了,按钮属性选择了Bitmap和OwnerDraw风格,也和变量关联了,其中他说的定义变量要在哪里定义阿?我先是定义的全局变量,可编译出错说,LoadBitmaps()不是成员,我定义在初始化里也不对,编译连接都没问题,运行时出错,好像是说我没有关联变量,可我明明关联了的,我忽略后,看见界面按钮位置没有预想的图片,而是白色一片,高手帮帮忙啊,不胜感谢!
解决方案 »
- vs2008如何在MediaPlayer 视频上任意位置叠加文字?
- VC++程序运行完关闭之后,弹出应用程序错误。,怎么解决啊
- 新手求教大家指点 “socket编程” 该如何学?
- 网络关键词频度统计分析程序
- 我用ADO访问Access数据库的程序为什么在有些机子上可以运行,有些不行?
- 关于中文分词的问题,请高手解答。急!
- 请问使用psapi的问题,为什么得到的进程少于windows任务管理器进程查看栏呢?
- 一个socket可以同时监听两各端口吗?
- 请大家帮小弟看看下面的程序有什么问题,怎么不能响应?
- 关于Invlid Address specified to RtlFreeHeap
- 在win32下使用itk出现问题
- combox控件的自动排序问题
在CxxDlg.H文件中将CButton m_button;改为CBitmapButton m_button;
5,m_button.SizeToContent();
http://www.joyvc.cn/GuiAndWindows/GuiAndWindows00030.html第一种:
Button属性页里Style的Bitmap点上 CBitmap Bitmap;
Bitmap.LoadBitmap(IDB_BITMAP1);
HBITMAP hBitmap=(HBITMAP)Bitmap.Detach();
CButton *pButton=(CButton*)GetDlgItem(IDCANCEL);
pButton->SetBitmap(hBitmap); 感觉效果不是很好。因为图片不会自动拉伸。 第二种:
可以采用CButtonST控件,挺好用的,比MFC的那些封装好用。 第三种:
把button按钮属性设置为ower draw
然后映射onDrawItem消息
在ondraw函数内自己绘制就可以了
void CUi6Dlg::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct)
{
if(nIDCtl == IDC_HELLO_CFAN)
{
//绘制按钮框架
UINT uStyle = DFCS_BUTTONPUSH;
//是否按下去了?
if (lpDrawItemStruct->itemState & ODS_SELECTED)
uStyle |= DFCS_PUSHED;
CDC dc;
dc.Attach(lpDrawItemStruct->hDC);
dc.DrawFrameControl(&lpDrawItemStruct->rcItem, DFC_BUTTON, uStyle);
//输出文字
dc.SelectObject(&m_Font);
dc.SetTextColor(RGB(0, 0, 255));
dc.SetBkMode(TRANSPARENT);
CString sText;
m_HelloCFan.GetWindowText(sText);
dc.TextOut(lpDrawItemStruct->rcItem.left + 20, lpDrawItemStruct->rcItem.top + 20, sText);
//是否得到焦点
if(lpDrawItemStruct->itemState & ODS_FOCUS)
{
//画虚框
CRect rtFocus = lpDrawItemStruct->rcItem;
rtFocus.DeflateRect(3, 3);
dc.DrawFocusRect(&rtFocus);
}
return;
}
CDialog::OnDrawItem(nIDCtl, lpDrawItemStruct);
} 第四种:
1. 按钮属性 Onwer Drew选上,按钮ID: IDC_BUTTON1
2. 定义private变量:
CBitmapButton m_button;
3. 在初始化里边
m_button.LoadBitmaps(IDB_BITMAP1, IDB_BITMAP2);//IDB_BITMAP1:平时;IDB_BITMAP2:按下
m_button.SubclassDlgItem(IDC_BUTTON1, this);
m_button.SizeToContent();
这种方法还可以。
2,定义变量:
CBitmapButton m_button;
3,在初始化里边
m_button.LoadBitmaps(_T("IDB_BITMAP3"),_T("IDB_BITMAP4"),_T("IDB_BITMAP3"),_T("IDB_BITMAP5"));
============================
1,按钮属性 Owner Drew选上,按钮ID: IDC_BUTTON1
2,定义变量:
CBitmapButton m_button;
3、把该变量与按钮控件关联起来:DDX_Control(pDX, IDC_BUTTON1, m_button);4,在初始化里边
m_button.LoadBitmaps(_T("IDB_BITMAP3"),_T("IDB_BITMAP4"),_T("IDB_BITMAP3"),_T("IDB_BITMAP5"));红色部分你设置了没有。
1,按钮属性 Owner Drew选上,按钮ID: IDC_BUTTON1
2,定义变量:
CBitmapButton m_button;
3,在初始化里边
m_button.AutoLoad(IDC_BUTTON1, this);
m_button.LoadBitmaps(_T("IDB_BITMAP3"),_T("IDB_BITMAP4"),_T("IDB_BITMAP3"),_T("IDB_BITMAP5")); 这样就可以了。
参加18楼的代码,你这个错误不应该是CBitmapButton引起,你可以把相关代码注释掉,测试下是哪部分代码引起的问题
实在 SRC 里面的WINMAIN.CPP里的。
提示是:Loaded 'C:\WINDOWS\system32\psapi.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\MSCTFIME.IME', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\mslbui.dll', no matching symbolic information found.