Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Позиция консольного окна на экране (рабочем столе) 
:(
    Опции темы
semibug
Дата 29.5.2009, 02:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 323
Регистрация: 27.3.2009

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



Подскажите пожалуйста, как правильно задать позицию для консоли на экране (на рабочем столе)
PM   Вверх
586
Дата 29.5.2009, 03:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



a. Указывается перед вызовом CreateProcess в структуре STARTUPINFO.
b. С помощью SetWindowPos(GetConsoleWindow(), ...)
Код
#include <windows.h>
#include <stdio.h>

int main(int argc, char* argv[])
{
    printf("Press enter for move window");
    getchar();
    SetWindowPos(GetConsoleWindow(), 0,
        50, 50, 0, 0, SWP_NOSIZE | SWP_NOZORDER);
    printf("Press enter for exit");
    getchar();
    return 0;
}


Это сообщение отредактировал(а) 586 - 29.5.2009, 03:59
PM   Вверх
Cheloveck
Дата 29.5.2009, 08:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Код

    HWND hWnd = GetConsoleWindow();
    SetWindowPos(hWnd, 0, 500, 500, 500, 500, 0);



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


Опытный
**


Профиль
Группа: Участник
Сообщений: 323
Регистрация: 27.3.2009

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



OK, отлично. Спасибо!
А как поступить в Windows98 ? (получить хэндл окна консоли. В описании GetConsoleWindow(); пишут: Requires Windows XP or Windows 2000 Professional.)
PM   Вверх
semibug
Дата 30.5.2009, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 323
Регистрация: 27.3.2009

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



Возможно такой вариант подойдет (под 98 не проверял, под XP работает):

Код

HWND CConsole::GetHWnd()
{
    char    title[256];
    char    newtitle[256];
    wchar_t lpsz[256];


    // Создаем GUID
    GUID    guid;
    HRESULT hr = CoCreateGuid( &guid );
    if ( FAILED( hr ) )
        return NULL;

    // Конвертируем его в текстовое представление (UNICODE)
    int size = StringFromGUID2( ( REFGUID ) guid, lpsz, 256 );

    // Конвертируем UNICODE в ANSI
    wcstombs( newtitle, lpsz, size );

    // Сохраняем текущий заголовок консоли
    if ( !GetConsoleTitle( title, sizeof( title ) ) )
        return NULL;

    // Устанавливаем уникальный заголовок 
    if ( !SetConsoleTitle( newtitle ) )
        return NULL;

    Sleep( 40 );


    HWND hwnd = FindWindow( NULL, newtitle );

    if ( !hwnd )
        return NULL;


    if ( !SetConsoleTitle( title ) )
        return NULL;

    Sleep( 40 );

    // Проверяем правильность найденного хэндла окна

    GetWindowText( hwnd, newtitle, sizeof( newtitle ) );
    if ( lstrcmp( title, newtitle ) )
        return NULL;

    return hwnd;
}


Смысл в том, чтобы назначить заголовку окна уникальный текст, а затем найти окно с таким заголовком.

Это сообщение отредактировал(а) semibug - 30.5.2009, 14:41
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

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


 




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


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

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