Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Полноэкранный режим WinApi, Переход в полноэкранный режим 
:(
    Опции темы
OutlawZ
Дата 2.9.2009, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 269
Регистрация: 19.10.2007

Репутация: нет
Всего: нет



Привет всем, помогите перевести программу в полноэкранный режим, прочитал фак тока я не понял там написано для WinApi
Код

Чтобы перевести окно в полноэкранный режим, достаточно:
в WinAPI - вызовом SetWindowLong(hWnd, GWL_EXSTYLE, GetWindowLong(hWnd, GWL_EXSTYLE) | WS_EX_TOPMOST);


Мой код программы:
Код

#include "stdax.h"

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

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
    HWND hMainWnd;
    char szClassName[] = "MyClass";
    MSG msg;
    WNDCLASSEX wc;

    //Ñòðóêòóðà êëàññà îêíà
    wc.cbSize = sizeof(wc);
    wc.style = CS_HREDRAW | CS_VREDRAW;
    wc.lpfnWndProc = WndProc;
    wc.cbClsExtra = 0;
    wc.cbWndExtra = 0;
    wc.hInstance = hInstance;
    wc.hIcon = LoadIcon(NULL,IDI_ASTERISK);
    wc.hCursor = LoadCursor(NULL,IDC_UPARROW);
    wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
    wc.lpszMenuName = NULL;
    wc.lpszClassName = szClassName;
    wc.hIconSm = LoadIcon(NULL,IDI_ASTERISK);

    if(!RegisterClassEx(&wc)){
        MessageBox(NULL,"Íå ìîãó ðåãíóòü êëàññ","Îøèáêà",MB_OK);
        return 0;
    }

    //Ñîçäàíèå îêíà
    hMainWnd = CreateWindow(szClassName,"Òðàíñôîðìåð",WS_OVERLAPPEDWINDOW,
                            CW_USEDEFAULT,0,500,300,(HWND)NULL,
                            (HMENU)NULL,(HINSTANCE)hInstance,NULL);

    ShowWindow(hMainWnd,nCmdShow);
    UpdateWindow(hMainWnd);

    while(GetMessage(&msg,NULL,0,0)){
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

    return msg.wParam;
}

LRESULT CALLBACK WndProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
    switch(uMsg)
    {
    case WM_CLOSE:
        DestroyWindow(hWnd);
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd,uMsg,wParam,lParam);
    }
    return 0;
}


Куда тут прописывать  SetWindowLong(hWnd, GWL_EXSTYLE, GetWindowLong(hWnd, GWL_EXSTYLE) | WS_EX_TOPMOST); , в функцию оконной процедуры?
 smile  smile 


--------------------
user posted image
user posted image
PM MAIL   Вверх
Cheloveck
Дата 2.9.2009, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1578
Регистрация: 26.7.2008
Где: Тула

Репутация: 1
Всего: 32



Цитата(OutlawZ @  2.9.2009,  22:56 Найти цитируемый пост)
    hMainWnd = CreateWindow(szClassName,"Òðàíñôîðìåð",WS_OVERLAPPEDWINDOW,
                            CW_USEDEFAULT,0,500,300,(HWND)NULL,
                            (HMENU)NULL,(HINSTANCE)hInstance,NULL);

После здесь. А вообще, лучше юзать CreateWindowEx, там первым параметром расширенные стили.


--------------------
user posted image
PM Jabber   Вверх
OutlawZ
Дата 2.9.2009, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 269
Регистрация: 19.10.2007

Репутация: нет
Всего: нет



Не получается, попробовал использовать CreateWindowEx но тоже не работает


--------------------
user posted image
user posted image
PM MAIL   Вверх
586
Дата 3.9.2009, 05:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 39
Всего: 146



Цитата(OutlawZ @  2.9.2009,  22:56 Найти цитируемый пост)
Чтобы перевести окно в полноэкранный режим, достаточно:
в WinAPI - вызовом SetWindowLong(hWnd, GWL_EXSTYLE, GetWindowLong(hWnd, GWL_EXSTYLE) | WS_EX_TOPMOST);

Это показ окна поверх всех окон, а не вывод в полноэкранный режим.
Окно поверх всех окон обычно показывают не с помощью SetWindowLong, а с помощью SetWindowPos:
Код
SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);

Чтобы растянуть форму на весь экран, нужно:
1. Показать окно поверх всех окон (для того, чтобы панель задач не мешала)
2. Растянуть её на весь экран.
для всего этого, код должен получиться такой:
Код
SetWindowPos(hMainWnd, HWND_TOPMOST, 0, 0, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN), 0);

или такой:
Код
hMainWnd = CreateWindowEx(WS_EX_TOSMOST, szClassName,"Òðàíñôîðìåð",WS_OVERLAPPEDWINDOW,
                            0,0,GetSystemMetrics(SM_CXSCREEN),GetSystemMetrics(SM_CYSCREEN),(HWND)NULL,
                            (HMENU)NULL,(HINSTANCE)hInstance,NULL);


Это сообщение отредактировал(а) 586 - 3.9.2009, 06:05
PM   Вверх
Andrey44
Дата 3.9.2009, 06:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

Репутация: 8
Всего: 26



Или такой
Код

SendMessage(hWnd, WM_SYSCOMMAND, SC_MAXIMIZE, 0);



--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.1006 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.