CreateEx创建窗口的问题

usa008 2015-03-02 03:43:54
创建一个窗口 上面显示一张图片,在上面再叠一张 gif动态图片但是动态gif图片动不了 只显示一帧,在MFC普通的窗口上显示则没问题。请问什么原因呢?另外还一个问题 CreateEx 的第 4、5个参数 0,0 不是窗口的坐标吗,为什么改变这2个参数 窗口位置不变呢。

代码如下
	CreateEx(0,
AfxRegisterWndClass(0, AfxGetApp()->LoadStandardCursor(IDC_ARROW)),
NULL, WS_POPUP | WS_VISIBLE, 0, 0, bitmap.bmWidth, bitmap.bmHeight, NULL , NULL);
//显示gif
VERIFY(m_gifpicture2.Create(_T("my picture static"), WS_EX_TRANSPARENT|WS_CHILD|WS_VISIBLE|WS_TABSTOP,CRect(10,20,110,220), this));
if (m_gifpicture2.Load(MAKEINTRESOURCE(IDR_GIF2),_T("GIF")))//IDR_GIF1是添加的GIF动画的ID号。gif即是在添加时所键入的文件类型
m_gifpicture2.Draw();
...全文
156 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lougd 2015-03-02
  • 打赏
  • 举报
回复
lz试一下这个,mfc的可以就跟进mfc的方法中看下mfc是怎么实现的。
void CMyDlg::OnCreateExtendedControl() 
{
   // m_pWndStaticEx is a CWnd* member of CMyDlg
   m_pWndStaticEx = new CStatic;
   m_pWndStaticEx->CreateEx(WS_EX_CLIENTEDGE, // Make a client edge label.
      _T("STATIC"), _T("Hi"),
      WS_CHILD | WS_TABSTOP | WS_VISIBLE,
      5, 5, 30, 30, m_hWnd, (HMENU)2345);
}


 
usa008 2015-03-02
  • 打赏
  • 举报
回复
引用 3 楼 u011391040 的回复:
[quote=引用 2 楼 usa008 的回复:] [quote=引用 1 楼 u011391040 的回复:] lz试一下这个,mfc的可以就跟进mfc的方法中看下mfc是怎么实现的。
void CMyDlg::OnCreateExtendedControl() 
{
   // m_pWndStaticEx is a CWnd* member of CMyDlg
   m_pWndStaticEx = new CStatic;
   m_pWndStaticEx->CreateEx(WS_EX_CLIENTEDGE, // Make a client edge label.
      _T("STATIC"), _T("Hi"),
      WS_CHILD | WS_TABSTOP | WS_VISIBLE,
      5, 5, 30, 30, m_hWnd, (HMENU)2345);
}


 
是不是用CreateEx创建窗口 没有消息循环 不能重绘 所以上面显示的动态的东西都不自动更新呢,请问要怎么加消息循环呢[/quote] 应该可以,mfc应该已经将消息循环封装到框架里了。 [/quote] 但是用createex创建出来的窗口 好像不重绘,吧其他的窗口放在createex创建的窗口上 就卡了 窗口就乱了 。是不是这个原因呢
lougd 2015-03-02
  • 打赏
  • 举报
回复
引用 2 楼 usa008 的回复:
[quote=引用 1 楼 u011391040 的回复:] lz试一下这个,mfc的可以就跟进mfc的方法中看下mfc是怎么实现的。
void CMyDlg::OnCreateExtendedControl() 
{
   // m_pWndStaticEx is a CWnd* member of CMyDlg
   m_pWndStaticEx = new CStatic;
   m_pWndStaticEx->CreateEx(WS_EX_CLIENTEDGE, // Make a client edge label.
      _T("STATIC"), _T("Hi"),
      WS_CHILD | WS_TABSTOP | WS_VISIBLE,
      5, 5, 30, 30, m_hWnd, (HMENU)2345);
}


 
是不是用CreateEx创建窗口 没有消息循环 不能重绘 所以上面显示的动态的东西都不自动更新呢,请问要怎么加消息循环呢[/quote] 应该可以,mfc应该已经将消息循环封装到框架里了。
usa008 2015-03-02
  • 打赏
  • 举报
回复
引用 1 楼 u011391040 的回复:
lz试一下这个,mfc的可以就跟进mfc的方法中看下mfc是怎么实现的。
void CMyDlg::OnCreateExtendedControl() 
{
   // m_pWndStaticEx is a CWnd* member of CMyDlg
   m_pWndStaticEx = new CStatic;
   m_pWndStaticEx->CreateEx(WS_EX_CLIENTEDGE, // Make a client edge label.
      _T("STATIC"), _T("Hi"),
      WS_CHILD | WS_TABSTOP | WS_VISIBLE,
      5, 5, 30, 30, m_hWnd, (HMENU)2345);
}


 
是不是用CreateEx创建窗口 没有消息循环 不能重绘 所以上面显示的动态的东西都不自动更新呢,请问要怎么加消息循环呢

15,979

社区成员

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

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