重载CStatic类对象无法在对话框中显示,求解?(含代码段)

gh_doit 2013-03-21 07:57:03
重载CStatic类,仅仅重载,其他什么都没有做。然后在对话框的OnInitDialog()中Create,SetBitmap,但是执行后结果是:使用创建的CStatic可以正常在对话框上显示出来,而创建的CMyStatic没能在对话框中显示出来。请问是什么地方出问题了呢?难道是不能对CStatic进行重载么?

//MyStatic.h
class CMyStatic : public CStatic
{
...
};
//MyDlg.h
...
CMyStatic m_mystatic;
CStatic m_static;
...
//MyDlg.cpp
BOOL CMyDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();

// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
// 执行此操作
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标

// TODO: 在此添加额外的初始化代码
CRect recta(5,5,100,100);
CRect rectb(5,110,100,100);
HBITMAP hBitmapb;
hBitmapb = (HBITMAP)::LoadBitmapW(AfxGetInstanceHandle(),MAKEINTRESOURCEW(IDB_BITMAP1));

m_static.Create(L"static",WS_CHILD | WS_VISIBLE | WS_TABSTOP |
ES_AUTOHSCROLL | WS_BORDER, recta, this, ID_EXTRA_EDIT);
m_static.ModifyStyle(0xF,SS_BITMAP|SS_CENTERIMAGE);
m_static.SetBitmap(hBitmapb);

m_mystatic.Create(L"cell",WS_CHILD | WS_VISIBLE | WS_TABSTOP |
ES_AUTOHSCROLL | WS_BORDER, rectb, this, ID_MYSTATIC);
m_mystatic.ModifyStyle(0xF,SS_BITMAP|SS_CENTERIMAGE);
m_mystatic.SetBitmap(hBitmapb);

return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}





...全文
198 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
gh_doit 2013-03-22
  • 打赏
  • 举报
回复
找到错误了: 1、矩形区域重叠 CRect rectb(5,110,100,100);
gh_doit 2013-03-21
  • 打赏
  • 举报
回复
引用 1 楼 schlafenhamster 的回复:
m_static.Create(L"static", WS_VISIBLE | SS_BITMAP | SS_CENTERIMAGE , recta, this, ID_EXTRA_EDIT); m_static.SetBitmap(hBitmapb);
这里的ID_EXTRA_EDIT并不代表什么,在rcsource.h中 #define ID_EXTRA_EDIT 200 #define ID_MYSTATIC 201 仅仅是定义一个值。 ------------------------------------------------- CMyStatic m_mystatic; -》不能够显示出来,连控件边框都没有 CStatic m_static; -》能够在对话框中显示该控件并包含加载的图片
schlafenhamster 2013-03-21
  • 打赏
  • 举报
回复
m_static.Create(L"static", WS_VISIBLE | SS_BITMAP | SS_CENTERIMAGE , recta, this, ID_EXTRA_EDIT); m_static.SetBitmap(hBitmapb);

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧