Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > WNDCLASSEX - не могу сделать помогите пожалуйста


Автор: Nikitozz 11.6.2008, 16:55
Дело собственно вот в чем. Пытаюсь создать и отобразить пустое окно но постоянно вылетают две ошибки. вот весь код:
Код

#include <windows.h>
#include <winuser.h>

LRESULT CALLBACK MainWinProc(HWND hwnd,
                             UINT msg,
                             WPARAM wparam,
                             LPARAM lparam)
{
    switch(msg)
    {
    case WM_PAINT:
        break;
    case WM_DESTROY:
        {
            PostQuitMessage(0);
            return(0);
        } break;
    }

    return (DefWindowProc(hwnd, msg, wparam, lparam));
}

int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hprevinstance, LPSTR lpcmdline, int ncmdshow)
{
    WNDCLASSEX windowsclass;
    HWND hwnd;
    MSG msg;

    windowsclass.cbSize = sizeof(windowsclass);
    windowsclass.style = CS_DBLCLKS|CS_OWNDC|CS_HREDRAW|CS_VREDRAW;
    windowsclass.lpfnWndProc = MainWinProc;
    windowsclass.cbClsExtra = 0;
    windowsclass.cbWndExtra = 0;
    windowsclass.hInstance = hinstance;
    windowsclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    windowsclass.hCursor = LoadCursor(NULL, IDC_ARROW);
    windowsclass.hbrBackground = (HBRUSH)GetStockObject(GRAY_BRUSH);
    windowsclass.lpszMenuName = NULL;
    windowsclass.lpszClassName = "WINDOWSCLASS";
    windowsclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);

    if(!RegisterClassEx(&windowsclass))
        return(0);

    if(!(hwnd = CreateWindowEx(NULL,
        "WINDOWSCLASS",
        "Базовое окно для DirectX",
        WS_OVERLAPPEDWINDOW|WS_VISIBLE,
        0,0,
        500,400,
        NULL,
        NULL,
        hinstance,
        NULL)))
        return(0);

    ShowWindow(hwnd, SW_SHOWDEFAULT);
    UpdateWindow(hwnd);
    while(GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

    return(msg.wParam);
}


Текст ошибки:

Compiling...
WindowsBazis.cpp
c:\visual studio 2008\projects\urok1\urok1\windowsbazis.cpp(39) : error C2440: '=' : cannot convert from 'const char [13]' to 'LPCWSTR'
        Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast

c:\visual studio 2008\projects\urok1\urok1\windowsbazis.cpp(54) : error C2664: 'CreateWindowExW' : cannot convert parameter 2 from 'const char [13]' to 'LPCWSTR'
        Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
Build log was saved at "file://c:\Documents and Settings\Никта\My Documents\Visual Studio 2008\Projects\Urok1\Urok1\Debug\BuildLog.htm"
Urok1 - 2 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Помогите пожалуйста, уже второй день не могу решить эту проблему...

Автор: Rrader 11.6.2008, 17:03
Нет 2008 студии, но попробуй перед строковыми константами букву L поставить:
Код

..., L"Базовое окно для DirectX", ...

Автор: Nikitozz 11.6.2008, 17:11
Попробовал, без изминений

Добавлено через 10 минут и 36 секунд
Кстати Visual Studio 2008 можно бесплатно скачать здесь: http://www.microsoft.com/express/download/
В пакет входит C++, C#, VB, Web Developer и SQL Server 2005. MSDN тоже есть

Автор: TanK1sT 11.6.2008, 18:04
В настройках проекта Configuration Properties/General/Character Set установи No set. Проблема в юникоде.

Автор: Nikitozz 11.6.2008, 18:21
TanK1sT ты мой брат навеки!!! Работает smile 
Спасибо огромное

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)