Форум программистов, компьютерный форум, киберфорум
C++: WinAPI
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.85/60: Рейтинг темы: голосов - 60, средняя оценка - 4.85
5 / 5 / 1
Регистрация: 13.01.2010
Сообщений: 3
1

Windowed <-> FullScreen

17.01.2010, 15:55. Показов 11471. Ответов 2
Метки нет (Все метки)

Тема не новая, но нигде не смог найти нормального описания. Как переключать оконное приложение в полноэкранное и обратно? Почему не работает Следующий код?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#include <windows.h>
 
HWND hMainWnd;
HINSTANCE hMainInst;
bool FullScreen = false;
 
LRESULT CALLBACK WndProc(HWND, UINT, UINT, LONG);
 
//Функция создания окна
HRESULT CreateMainWindow()
{
    //Создаем класс окна
    WNDCLASS WndClass;
    WndClass.style = CS_HREDRAW | CS_VREDRAW;
    WndClass.lpfnWndProc = WndProc;
    WndClass.cbClsExtra = 0;
    WndClass.cbWndExtra = 0;
    WndClass.hInstance = hMainInst;
    WndClass.hIcon = LoadIcon(NULL,IDI_APPLICATION);
    WndClass.hCursor = LoadCursor(NULL,IDC_ARROW);
    WndClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
    WndClass.lpszMenuName = NULL;
    WndClass.lpszClassName = "ppc";
    //Регестрируем класс окна
    if(!RegisterClass(&WndClass))
    {
        MessageBox(NULL, "Cant register window!", "Error!", MB_OK);
        return E_FAIL;
    }
    DWORD Style;
    int WndMode;
    if(FullScreen)
    {
        WndMode = SW_MAXIMIZE;
        Style = WS_EX_TOPMOST|WS_POPUP|WS_VISIBLE;
    }
    else
    {
        WndMode = SW_NORMAL;
        Style = WS_OVERLAPPED|WS_SYSMENU;
    }
    //Создаем окно
    hMainWnd = CreateWindow("ppc", "Sample", Style, CW_USEDEFAULT, CW_USEDEFAULT, 
        CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hMainInst, NULL);
    if(!hMainWnd)
    {
        MessageBox(NULL, "Cant create window!", "Error!", MB_OK);
        return E_FAIL;
    }
    ShowWindow(hMainWnd, WndMode);
    return S_OK;
}
//Главня функция приложения
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpszCmdParam, int nCmdShow)
{
    hMainInst = hInst;
    WNDCLASS WndClass;
    MSG msg;
           //Создаем окно
    if(FAILED(CreateMainWindow()))
        return 0;
 
    UpdateWindow(hMainWnd);
    //Запускаем главный цикл
    while(GetMessage(&msg,NULL,0,0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return msg.wParam;
}
//Функция обработки сообщений
LRESULT CALLBACK WndProc(HWND hWnd, UINT Message, UINT wParam, LONG lParam)
{
    switch(Message)
    {
            case WM_KEYDOWN:
        if(wParam == VK_SPACE)
        {
            FullScreen = !FullScreen;//Меняем вид окна
            DestroyWindow(hMainWnd);//Уничтожаем окно
            UnregisterClass("ppc",hMainInst);//Уничтожаем класс окна
                                  CreateMainWindow();//Создаем окно по новой
        }
        return 0; 
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        return 0;
    }
    return DefWindowProc(hWnd,Message,wParam, lParam);
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.01.2010, 15:55
Ответы с готовыми решениями:

Fullscreen mode to Windowed Mode
Приветствую! Нужна функция с помощью которой можно перевести приложение из режима Fullscreen в...

Fullscreen
Здравствуйте,форумчане.Мучаюсь над фуллскином,не знаю команды для его реализации.Поможете?

FullScreen
Вопрос такой: в уроке 150 startandroid есть код в onCreate для перевода во весь экран:...

Fullscreen
Привет:( Вопрос: можно ли в лотусе написать форму которая открывалась бы в режиме FullScreen?...

__________________

Записывайтесь на профессиональные курсы C++ разработчиков
2
5 / 5 / 1
Регистрация: 13.01.2010
Сообщений: 3
19.01.2010, 13:08  [ТС] 2
Вот рабочий код. При нажатии пробела менеться режим окна.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#include <windows.h>
 
HINSTANCE hInst;
HWND hWnd;
MSG msg;
WNDCLASSEX wc;
bool FullScreen = false;
WINDOWPLACEMENT wpc;
 
LRESULT CALLBACK WndProc(HWND hWnd, UINT Message, UINT wParam, LONG lParam)
{    
    switch(Message)
    {
    case WM_KEYDOWN:
        if(wParam == VK_SPACE)
        {
            if(!FullScreen)//Из оконного во весь экран
    {
                GetWindowPlacement(hWnd,&wpc);//Сохраняем параметры оконного режима
                SetWindowLong(hWnd,GWL_STYLE,WS_POPUP);//Устанавливаем новые стили
                SetWindowLong(hWnd,GWL_EXSTYLE,WS_EX_TOPMOST);
                ShowWindow(hWnd,SW_SHOWMAXIMIZED);//Окно во весь экран
         FullScreen = true;
    }
    else//Из всего эранна в оконное
    {     
        SetWindowLong(hWnd,GWL_STYLE,WS_OVERLAPPEDWINDOW|WS_VISIBLE);//Устанавливаем стили окнного режима
        SetWindowLong(hWnd,GWL_EXSTYLE,0L);
        SetWindowPlacement(hWnd,&wpc);//Загружаем парметры предыдущего оконного режима
               ShowWindow(hWnd,SW_SHOWDEFAULT);//Показываем обычное окно
        FullScreen = false;
    }
        }
        return 0; 
        break;
        case WM_DESTROY:
        PostQuitMessage(0);
        return 0;
    }
    return DefWindowProc(hWnd,Message,wParam, lParam);
}
 
INT WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR, INT)
{
    hInst=GetModuleHandle(NULL);
    wc.cbSize=sizeof(WNDCLASSEX);
    wc.cbClsExtra=0;
    wc.cbWndExtra=0;
    wc.style = CS_HREDRAW | CS_VREDRAW;
    wc.lpfnWndProc = WndProc;
    wc.hInstance = hInst;
    wc.hIcon = LoadIcon(NULL,IDI_APPLICATION);
    wc.hCursor = LoadCursor(NULL,IDC_ARROW);
    wc.hbrBackground = NULL;
    wc.lpszMenuName = NULL;
    wc.lpszClassName = "PPC";
    if(!RegisterClassEx(&wc))
    {
        MessageBox(NULL, "Cant register window!", "Error!", MB_OK);
        return 0;
    }
    DWORD Style;
    if(!FullScreen)
        Style = WS_OVERLAPPEDWINDOW |WS_VISIBLE;
    else
        Style = WS_POPUP | WS_EX_TOPMOST;
    hWnd = CreateWindow("PPC", "Sample", Style, 0, 0, 
        CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInst, NULL);
    if(!hWnd)
    {
        MessageBox(NULL, "Cant create window!", "Error!", MB_OK);
        return 0;
     }
     ShowWindow(hWnd, SW_SHOWDEFAULT);
     UpdateWindow(hWnd);
     ZeroMemory(&msg, sizeof(msg));
     while(msg.message!=WM_QUIT)
     {
          if(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
    {
        TranslateMessage(&msg);
         DispatchMessage(&msg);
    }
    }
    UnregisterClass( "PPC", wc.hInstance );
    return 0;
}
5
Brainsbreaker
894 / 371 / 51
Регистрация: 01.02.2011
Сообщений: 1,587
23.04.2011, 19:00 3
Неправильное окно... Не во весь экран и процессор грузит.

Добавлено через 15 минут
Поспешил. Во весь, но грузит все-равно. В общем недоделанное.

Добавлено через 23 минуты
Да, нормуль. ...Снова PeekMessage.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.04.2011, 19:00

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

С# or C++ fullscreen Window
Как реализовать в полно экраном режиме а то уже не чeго не понимаю XD private void InitDevice()...

Fullscreen panel
procedure TForm1.Panel1DblClick(Sender: TObject); begin panel1.WindowState:=wsMaximized;...

CMD. FullScreen
По умолчанию командная строка всегда запускается только в полноэкранном режиме, что не совсем...

FullScreen для обьекта
Как растянуть картинку на весь экран? (надеюсь вы дадите мне тока работующие коды)


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.