Создание окна в с++

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by maked0n, 1 Oct 2010.

  1. maked0n

    maked0n New Member

    Joined:
    14 Sep 2010
    Messages:
    144
    Likes Received:
    3
    Reputations:
    0
    люди добрые, почему етот код не выводит на экран окно???? я нажимаю отладку а он просто моргает и всё.
    Code:
    
    #include <windows.h>
    
    #define MAX_LOADSTRING 100
    
    TCHAR WINDOWSCLASS[MAX_LOADSTRING];	 // имя класса главного окна
    TCHAR szTitle[MAX_LOADSTRING];	 // Текст строки заголовка
    
    LRESULT CALLBACK MainWindProc(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(WNDCLASSEX);
    
    windowsclass.style = CS_DBLCLKS|CS_OWNDC|CS_HREDRAW|CS_VREDRAW;
    windowsclass.lpfnWndProc = MainWindProc;
    windowsclass.cbClsExtra = 0;
    windowsclass.cbClsExtra = 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);
    }
    
    hwnd = CreateWindowEx(NULL, WINDOWSCLASS, szTitle, WS_OVERLAPPEDWINDOW, 0, 0, 500, 400, NULL, NULL, hinstance, NULL);
    
    if(!hwnd)
    {
    return FALSE;
    }
    
    ShowWindow(hwnd, SW_SHOWDEFAULT);
    UpdateWindow(hwnd);
    
    while(GetMessage(&msg, NULL, 0, 0))
    {
    TranslateMessage(&msg);
    DispatchMessage(&msg);
    }
    return (msg.wParam);
    }
    
     
    #1 maked0n, 1 Oct 2010
    Last edited by a moderator: 1 Oct 2010
  2. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    TCHAR WINDOWSCLASS[MAX_LOADSTRING]; // имя класса главного окна

    ну да, тут объявил переменную. а где ты задал ей значение с именем класса??
     
  3. maked0n

    maked0n New Member

    Joined:
    14 Sep 2010
    Messages:
    144
    Likes Received:
    3
    Reputations:
    0
    а как надо задать, подскажи пожалуйста)))
    ЗЫ: прошу прощения за ламерство)
     
    #3 maked0n, 1 Oct 2010
    Last edited: 1 Oct 2010
  4. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    или strcpy сразу после объявления переменно = "тралялял";
     
  5. maked0n

    maked0n New Member

    Joined:
    14 Sep 2010
    Messages:
    144
    Likes Received:
    3
    Reputations:
    0
    я написал: TCHAR WINDOWSCLASS[MAX_LOADSTRING] = "WINDOWSCLASS";
    пишет ошибку: инициализация: невозможно преобразовать 'const char [13]' в 'TCHAR [100]'
     
  6. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    выучи хотябы основы а потом начинай писать
     
  7. maked0n

    maked0n New Member

    Joined:
    14 Sep 2010
    Messages:
    144
    Likes Received:
    3
    Reputations:
    0
    вот я и начал учить по книге горнакова, но исходник не работал. выложил его сюда. Неужто нельзя нормально помочь?
     
  8. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    макрос есть _TEXT("lol"); изучай msdn
    тебеж написали 'const char [13]' в 'TCHAR [100]' не могу преобразовать - так вот лезь в msdn и читай че за тип такой TCHAR
     
    _________________________
  9. maked0n

    maked0n New Member

    Joined:
    14 Sep 2010
    Messages:
    144
    Likes Received:
    3
    Reputations:
    0
    с этим разобрался, теперь такая проблема: подключаю библиотеку d3d9.lib:
    #pragma comment (lib, "d3d9.lib")
    ошибка:
    fatal error LNK1104: не удается открыть файл ''d3d9.lib''
    что с этим можно сделать?
     
    #9 maked0n, 2 Oct 2010
    Last edited: 2 Oct 2010
  10. WNZRS

    WNZRS Member

    Joined:
    3 Sep 2009
    Messages:
    294
    Likes Received:
    52
    Reputations:
    1
    Основы не с DirectX'a начинаются...
    Тебе надо скачать DirectX 9 SDK
     
  11. maked0n

    maked0n New Member

    Joined:
    14 Sep 2010
    Messages:
    144
    Likes Received:
    3
    Reputations:
    0
    основы я знаю, и directX sdk стоит девятый.
     
  12. WNZRS

    WNZRS Member

    Joined:
    3 Sep 2009
    Messages:
    294
    Likes Received:
    52
    Reputations:
    1
    тогда зачем глупые вопросы? находишь эту либу и кидаешь к проекту
     
  13. maked0n

    maked0n New Member

    Joined:
    14 Sep 2010
    Messages:
    144
    Likes Received:
    3
    Reputations:
    0
    ну в том то и дело что он не мог её открыть. Ну впрочем, я уже решил проблему. После названия либы в свойствах проекта поставил запятую, вот он и не мог её найти.
    Спасибо всем за помощь!