使用CWnd::CreateEx创建一个WS_POPUP风格的窗体

牛虻&专家 2012-09-09 11:37:30
我首先使用以下的函数对窗口进行注册;

WNDCLASS wc;
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = NULL; //这里的窗口过程函数怎么制定?
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = AfxGetInstanceHandle();
wc.hIcon = NULL;
wc.hCursor = NULL;
wc.hbrBackground = NULL;
wc.lpszMenuName = NULL;
wc.lpszClassName = _T ("MyWnd ");
ATOM am=RegisterClass(&wc);

在使用以下函数创建窗口:
1.. BOOL bflag=m_myWnd1.CreateEx(0,_T ("MyWnd "),_T(""),WS_POPUPWINDOW|WS_VISIBLE|WS_OVERLAPPEDWINDOW,CRect(100,50,500,400),this,1);
2.. BOOL bflag=m_myWnd1.CreateEx(0,_T ("MyWnd "),_T(""),WS_POPUPWINDOW|WS_VISIBLE|WS_OVERLAPPEDWINDOW,CRect(100,50,500,400),this,0);

为什么bflag始终显示是0呢?
创建窗口不成功
CreateEx();函数中倒数第二个参数nID为0 和非零有什么区别?

望各位贤能人士给予解答。


...全文
606 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Eleven 2012-09-09
  • 打赏
  • 举报
回复
你的m_myWnd1是什么类型?
Gloveing 2012-09-09
  • 打赏
  • 举报
回复
比如MSDN例子:
void CMyDlg::OnCreateStatic() 
{
CWnd* pWnd = new CWnd;
pWnd->Create(_T("STATIC"), "Hi", WS_CHILD | WS_VISIBLE,
CRect(0, 0, 20, 20), this, 1234);
}
Gloveing 2012-09-09
  • 打赏
  • 举报
回复
你是使用了这个构造函数:
BOOL CreateEx(DWORD dwExStyle, LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, LPVOID lpParam = NULL);

pParentWnd

The parent window.

nID

The ID of the child window.
你自己指定一个不和其他窗口重复的ID
hdg3707 2012-09-09
  • 打赏
  • 举报
回复
nID是为了区别每个窗口,不能是0,每个窗口必须得有一个唯一的ID才行.包括控件也有一个唯一的ID
牛虻&专家 2012-09-09
  • 打赏
  • 举报
回复
m_myWnd1就是一个简单的继承与CWnd的一个窗口类

15,980

社区成员

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

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