Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.12.2017, 13:47   #1
progster
 
Регистрация: 21.03.2016
Сообщений: 3
По умолчанию Не открывается окно приложения!

При компилировании студия никаких ошибок не выдает,но при этом ничего не появляется. В чем причина? Вот main:
#include "windows.h"
#include "objidl.h"
#include "gdiplus.h"
#include "Game.h"
#include "Menu.h"
Код:
using namespace Gdiplus;

#pragma comment (lib, "Gdiplus.lib")

void OnPaint(HDC hdc);

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, PSTR, int iCmdShow)
{
    HWND hwnd;
    MSG msg;
    WNDCLASS wndClass;
    GdiplusStartupInput gdiStartup;
    ULONG_PTR gdiToken;

    GdiplusStartup(&gdiToken, &gdiStartup, NULL);

    wndClass.style = CS_HREDRAW | CS_VREDRAW;
    wndClass.lpfnWndProc = WndProc;
    wndClass.hInstance = hInstance;
    wndClass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    wndClass.hCursor = LoadCursor(NULL, IDC_ARROW);
    wndClass.lpszMenuName = NULL;
    wndClass.cbClsExtra = 0;
	wndClass.cbWndExtra = 0;
    wndClass.lpszClassName = TEXT("Puzzle");
    wndClass.hbrBackground = NULL;

    RegisterClass(&wndClass);

    hwnd = CreateWindow(TEXT("Puzzle"), TEXT("Пятнашки"), WS_OVERLAPPEDWINDOW , CW_USEDEFAULT, CW_USEDEFAULT,
        300 + GetSystemMetrics(SM_CXBORDER) * 2, 300 + GetSystemMetrics(SM_CYBORDER) + GetSystemMetrics(SM_CYCAPTION) +
        GetSystemMetrics(SM_CYMENU) + 30, NULL, NULL, hInstance, NULL);

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

    while(GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    GdiplusShutdown(gdiToken);
    return 0;
}
void paint(HDC hdc);

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam)
{
    HDC hdc;
    PAINTSTRUCT ps;
    static Game *game = new Game(hwnd,300,300);
    static Menu menu(hwnd);
    switch(message)
    {
    case WM_SIZE:
        game->Resize(LOWORD(lparam),HIWORD(lparam));
        break;
    case WM_SIZING:
        LPRECT rect;
        rect=(LPRECT)lparam;
        switch(wparam)
        {
        case WMSZ_TOP:
        case WMSZ_TOPRIGHT:
        case WMSZ_BOTTOM:
            rect->right = rect->bottom - rect->top + rect->left + GetSystemMetrics(SM_CXBORDER) * 2 - game->GetInfoPanelHeight() -
                GetSystemMetrics(SM_CYBORDER) - GetSystemMetrics(SM_CYMENU) - GetSystemMetrics(SM_CYCAPTION);
            break;
        case WMSZ_BOTTOMRIGHT:
        case WMSZ_RIGHT:
        case WMSZ_LEFT:
        case WMSZ_BOTTOMLEFT:
            rect->bottom = rect->right - rect->left + rect->top + GetSystemMetrics(SM_CYBORDER) + game->GetInfoPanelHeight() +
                GetSystemMetrics(SM_CYMENU) + GetSystemMetrics(SM_CYCAPTION) - GetSystemMetrics(SM_CXBORDER) * 2;
            break;
        case WMSZ_TOPLEFT:
            rect->left = rect->right - rect->bottom + rect->top - GetSystemMetrics(SM_CXBORDER) * 2 + game->GetInfoPanelHeight() +
                GetSystemMetrics(SM_CYCAPTION) + GetSystemMetrics(SM_CYMENU) + GetSystemMetrics(SM_CYBORDER);
            break;
        }
   case WM_TIMER:
        switch(wparam)
        {
        case game->ID_TimerAnimation:
            game->Animation();
            break;
        case game->ID_TimerClock:
            game->InfoPanel();
            break;
        }
        break;
    case WM_LBUTTONDOWN:
        game->MouseClick(LOWORD(lparam), HIWORD(lparam));
        break;
    case WM_KEYDOWN:
        switch (wparam)
        {
        case VK_LEFT:
            game->Left();
            break;
        case VK_RIGHT:
            game->Right();
            break;
        case VK_UP:
            game->Up();
            break;
        case VK_DOWN:
            game->Down();
            break;
        }
        if(menu.IsChecked(menu.ID_TIP))
        {
            menu.Uncheck(menu.ID_TIP);
        }
        break;
    case WM_COMMAND:
        switch(wparam)
        {
        case menu.ID_HELP:
            MessageBox(hwnd,L"Игра Пятнашки.",L"HELP",MB_OK);
            break;
        case menu.ID_EXIT:
            PostQuitMessage(0);
            break;
        case menu.ID_NEWGAME:
            game->Restart();
            break;
        case menu.ID_NUMBER:
            game->SetBackgroundNumber();
            menu.Check(menu.ID_NUMBER);
            menu.Uncheck(menu.ID_IMAGE);
            menu.Disabled(menu.ID_TIP);
            break;
        case menu.ID_IMAGE:
            menu.OpenImage(game);
            break;
        case menu.ID_TIP:
            game->ShowRightCombination();
            if(menu.IsChecked(menu.ID_TIP))
            {
                menu.Uncheck(menu.ID_TIP);
            }
            else
            {
                menu.Check(menu.ID_TIP);
            }
            break;
        }
        break;
    case WM_PAINT:
        BeginPaint(hwnd,&ps);
        game->Draw();
        EndPaint(hwnd,&ps);
        break;
    case WM_DESTROY:
        delete game;
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hwnd, message, wparam, lparam);
    }
    return 0;
}
progster вне форума Ответить с цитированием
Старый 26.12.2017, 14:03   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

В данном виде не компилится, а если убрать лишнее то все работает.
Кстати, у WM_SIZING отсуствиет break...
waleri вне форума Ответить с цитированием
Старый 26.12.2017, 14:11   #3
progster
 
Регистрация: 21.03.2016
Сообщений: 3
По умолчанию

Это код немаленького проекта "Пятнашки". Что именно мешает запуститься? (break добавил)
progster вне форума Ответить с цитированием
Старый 26.12.2017, 15:31   #4
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Попробуйте вместо iCmdShow использовать константу, SW_SHOW
waleri вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Папка не открывается, а открывается командная строка, как исправить? Серёга07 Свободное общение 4 09.11.2012 22:30
Окно Windows-приложения ProgStud Помощь студентам 8 09.06.2012 23:50
при запуске открывается консоль и выскакивает окно-ошибка приложения. как исправить? Ника К Помощь студентам 1 07.06.2012 23:29
консольное окно в dev c++ открывается с ошибкой olegnaum Софт 0 01.10.2010 23:34
Не открывается новое окно в ИЕ8 Syltan JavaScript, Ajax 2 19.04.2010 00:12