0xC0000005: расположение чтения нарушения доступа 0x4fa2b3f1 при выполнении CStatic.Create - PullRequest
0 голосов
/ 08 июля 2011

У меня проблема с CStatic. Итак, у меня есть это:

    CStatic * lblPresent;
    SetWindowPos(NULL,GetSystemMetrics(SM_CXSCREEN)/2-234,0,0,0,SWP_NOSIZE | SWP_NOZORDER);
    lblPresent=new CStatic();
    wstring wtemp=L"Welcome";
    tempChar = new WCHAR[wtemp.length()+1];
    wcscpy_s(tempChar, wtemp.size()+1, (LPWSTR)wtemp.c_str());
    lblPresent->Create(tempChar, WS_CHILD | WS_VISIBLE,CRect(20, 90, 448, 130), this);

Когда он достигает последней строки, он говорит:

Unhandled exception at 0x6e54ba20 in CPTest.exe: 0xC0000005: Access violation reading location 0x4fa2b3f1.

Когда я перехожу через отладчик, это подводит меня к следующему:

AfxWndProcDllStatic(HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lParam)
{
    AFX_MANAGE_STATE(&afxModuleState);
    return AfxWndProc(hWnd, nMsg, wParam, lParam);
}

Кажется, что исключение происходит в той строке, которая возвращает значения (записанные в часах):

        hWnd    0x001a01d0 {unused=0 }  HWND__ *
        lParam  0                       long
        nMsg    272                     unsigned int
        wParam  2425038                 unsigned int

Кто-нибудь знает, что происходит и что делать?

Спасибо, Reinardus

1 Ответ

0 голосов
/ 14 июля 2011

Почему вы не можете сделать это так просто:

lblPresent->Create(L"Welcome", WS_CHILD | WS_VISIBLE,CRect(20, 90, 448, 130), this);

Является ли указатель this действительным и действительно указывает на некоторый действительный CWnd?

...