我在Dialog的窗体上再创建别的窗体用WNDCLASS 类但创建的时候总是出错是什么原因?
代码如下,hDlg是 Dialog的窗体句饼
WNDCLASS wndclass;
RECT rect;
    wndclass.style         = CS_HREDRAW | CS_VREDRAW;
    wndclass.cbClsExtra    = 0;
    wndclass.cbWndExtra    = 0;
    wndclass.hInstance     = g_hInstance;
    wndclass.hIcon         = 0;
    wndclass.hCursor       = NULL;   wndclass.lpfnWndProc   = (WNDPROC)movieWndProc;
    wndclass.lpszClassName = (LPCTSTR)movieName;
RegisterClass(&wndclass); GetClientRect(hDlg, &rect);
movie = CreateWindow(movieName, _T(""), CW_USEDEFAULT | WS_VISIBLE, 0, cbheight, rect.right, rect.bottom - cbheight, /*fi.frameWidth/20,fi.frameHeight/20,*/ frame, NULL, g_hInstance, NULL);
if (!movie) 
{
TCHAR buf[80];
wsprintf(buf, _T("couldnt create movie, lasterr = %d, frameWidth = %d, frameHeight = %d"), GetLastError(), fi.frameWidth, fi.frameHeight);
MessageBox(NULL, buf, _T(""), 0);
}

解决方案 »

  1.   

    CW_USEDEFAULT | WS_VISIBLE,  子窗体不加ws_child风格?
      

  2.   

    上面是笔误我本来 程序是WS_CHILD的不能创建才改成CW_USEDEFAULT的
      

  3.   

    CreateWindow(movieName, _T(""), CW_USEDEFAULT | WS_VISIBLE, 0, cbheight, rect.right, rect.bottom - cbheight, /*fi.frameWidth/20,fi.frameHeight/20,*/ frame, NULL, g_hInstance, NULL); cbheight
    rect.right
    rect.bottom - cbheight
     看看这几个值是不是过大或出负值了
      

  4.   

    可能漏了这个FillMemory (&wndclass, sizeof (wndclass), 0);
      

  5.   

    同意楼上的如果还不行, GetLastError
      

  6.   

    GetLastError得出1407的错误 (找不到窗口类别)
      

  7.   

    试试这个,对照你自己的看看(Good Luck):
    int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                        PSTR szCmdLine, int iCmdShow)
    {
    //1.注册窗口类
    static TCHAR szAppName[] = TEXT ("HelloWin") ; //窗口类名称
    //定制"窗口类"结构
    WNDCLASS     wndclass ;
    wndclass.style         = CS_HREDRAW | CS_VREDRAW ;
    wndclass.lpfnWndProc   = WndProc ; //关联消息处理函数  
    wndclass.cbClsExtra    = 0 ;
    wndclass.cbWndExtra    = 0 ;
    wndclass.hInstance     = hInstance ; //实例句柄
    wndclass.hIcon         = LoadIcon (NULL, IDI_APPLICATION) ; //图标
    wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ; //光标
    wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH); //画刷
    wndclass.lpszMenuName  = NULL ;
    wndclass.lpszClassName = szAppName; //类名称
    //注册
    if (!RegisterClass (&wndclass))
    {
    MessageBox (NULL, TEXT ("RegisterClass Fail!"), 
    szAppName, MB_ICONERROR) ;
    return 0 ;
    }

    //建立窗口
    HWND hwnd ;
    hwnd = CreateWindow (szAppName, //窗口类名称
    TEXT ("The Hello Program"), //窗口标题 
    WS_OVERLAPPEDWINDOW, //窗口风格
    CW_USEDEFAULT,
    CW_USEDEFAULT,
    CW_USEDEFAULT,
    CW_USEDEFAULT,
    NULL,
    NULL,
    hInstance, //实例句柄
    NULL);

    ShowWindow (hwnd, iCmdShow) ;
    UpdateWindow (hwnd) ;

    //消息循环
    MSG          msg ;
    while (GetMessage (&msg, NULL, 0, 0)) //从消息队列中取消息 
    {
    TranslateMessage (&msg) ; //转换消息
    DispatchMessage (&msg) ; //派发消息
    }
    return msg.wParam ;
    }
      

  8.   

    wndclass.style = CS_HREDRAW | CS_VREDRAW ; 
    不要忘了UpdateWindow (hwnd) ;
    在对话框上创建为何不直接domodal或createwindow