none
RegisterClass返回了错误代码是2,系统找不到指定的文件,要怎么解决? RRS feed

  • 问题

  •  

    WNDCLASS mywin;
    mywin.cbClsExtra=0;
    mywin.cbWndExtra=0;
    mywin.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);
    mywin.hCursor=LoadCursor(NULL,IDC_APPSTARTING);
    mywin.hIcon=LoadCursor(NULL,IDC_ARROW);
    mywin.hInstance=hInstance;
    mywin.lpfnWndProc=(WNDPROC)MyWinProc;
    mywin.lpszClassName="窗口";
    mywin.lpszMenuName=NULL;
    mywin.style=CS_HREDRAW | CS_VREDRAW;
    RegisterClass(&mywin);
    DWORD err=GetLastError();//这里err的值是2。
    HWND hwnd=CreateWindow("窗口","我的窗口",WS_OVERLAPPEDWINDOW,0,0,800,600,NULL,NULL,NULL,NULL);

    err=GetLastError();//这里err的值是0。
    ShowWindow(hwnd,SW_SHOW);

     

    错误类型是说系统找不到指定的文件。这是怎么回事?编译什么的都正确。我以前就模拟MFC封装过创建窗口的类,当时也是这么写的没有错误,后来不小心格式化了硬盘封装就消失了。装完新系统就又封装了个结果就返回了这个错误。

    • 已移动 MagicDreamModerator 2009年5月19日 9:28 ([Loc]From:Windows Vista 开发相关讨论)
    2009年1月10日 8:41

答案

  • 找到问题所在了,原来窗口过程直接返回了0。以前都直接引用习惯了,重新写一下又发现问题了。哈,温故而知新。

    2009年1月10日 13:16

全部回复

  • 呵呵,这个问题很久前我也遇到过,你看看RegisterClass返回的值ATOM是不是0,若不是的话,那就是成功了,GetLastError返回2并不等于它失败了.可能是你程序其他地方的问题.

    你可以选择建一个非空Windows标准API工程,里面会有建立对话框窗口的标准程序.然后你再对照一步步的查就可以了.

    2009年1月10日 12:20
    版主
  • 找到问题所在了,原来窗口过程直接返回了0。以前都直接引用习惯了,重新写一下又发现问题了。哈,温故而知新。

    2009年1月10日 13:16