Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как получить доступ к свойствам контролов и форм?

1.9K
29 июля 2003 года
bad_duck
59 / / 29.07.2003
Необходимо во время работы программы изменять свойства котролов и форм (например размер). В басике все очень легко делается. А в VC++ даже не знаю где копать.

Если можно, покажите пример с диалоговым окном: изменение размеров окна и что-нибудь с каким-либо контролом (например, как свойство Caption изменить).

Заранее благодарен.
831
29 июля 2003 года
S_T
117 / / 23.10.2002
Цитата:
Originally posted by bad_duck
Необходимо во время работы программы изменять свойства котролов и форм (например размер). В басике все очень легко делается. А в VC++ даже не знаю где копать.

Если можно, покажите пример с диалоговым окном: изменение размеров окна и что-нибудь с каким-либо контролом (например, как свойство Caption изменить).

Заранее благодарен.


Допустим, у тебя есть на диалоге кнопка с идентификатором IDC_BUTTON1. чтобы поменять у нее Caption сделай в программе так:

CWnd* pWnd = GetDlgItem(IDC_BUTTON1);
pWnd->SetWindowText("New Caption");

1.9K
30 июля 2003 года
bad_duck
59 / / 29.07.2003
Цитата:
Originally posted by S_T

Допустим, у тебя есть на диалоге кнопка с идентификатором IDC_BUTTON1. чтобы поменять у нее Caption сделай в программе так:

CWnd* pWnd = GetDlgItem(IDC_BUTTON1);
pWnd->SetWindowText("New Caption");



SetWindowText - это ведь функция?
И много таких функций? На каждое свойство?
Можно ли где-то еще кроме MSDN получить такую информацию (своей нет, а Сети сидеть и разбираться со всем этим накладно получится, да и времени нет)?

И последний вопрос. Как размеры то менять? У форм.

3
30 июля 2003 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by bad_duck

SetWindowText - это ведь функция?
И много таких функций? На каждое свойство?



Эти функции являются врапперами (обертками) посылки соотв. сообщений окну. Эти же функции используются и бейсиком, только оборачиваются поверх своим враппером так, что кажуться обычными свойствами, полями классов. Так же можно сделать и в VC++, т.е. привести к виду

Win.Caption = "CaptionText";
Win.SizeX = 35;

и т.д.
Но это не очень наглядно, поэтому и не применяется обычно. Короче, дело вкуса.


Цитата:
Originally posted by bad_duck

И последний вопрос. Как размеры то менять? У форм.



См. SetWindowPos

1.9K
30 июля 2003 года
bad_duck
59 / / 29.07.2003
Цитата:
Originally posted by Green

См. SetWindowPos



Вобщем, взял я свой командер и стал шарить по папкам в поисках SetWindowPos. И нашел. В файлике Winuser.h такую штуку:

Код:
WINUSERAPI
BOOL
WINAPI
SetWindowPos(
    HWND hWnd,
    HWND hWndInsertAfter ,
    int X,
    int Y,
    int cx,
    int cy,
    UINT uFlags);

Попробовал. Не получилось. По крайней мере внешних проявлений никаких.
На HWND hWndInsertAfter VC++ заругался, когда я подставил туда тоже что и в hWnd (просто от незнания). Говорит, немогу convert parameter 2 from 'class CWnd *' to 'int' :-?. Может я что не так делаю? (В чем разница между CWnd и HWND?)
И снова вопросы.
Что такое HWND hWndInsertAfter?
И что такое UINT uFlags?
4.7K
31 июля 2003 года
Rig
4 / / 24.07.2003
Видимо ты используешь MFC классы. Тогда тебе больше подойдет функция MoveWindow. Описание функции:

http://firststeps.ru/mfc/steps/help/r.php?120

Пример использования:

http://firststeps.ru/mfc/steps/r.php?4

HWND - указатель (DWORD) на класс окна (иными словами - дескриптор окна), который получается при вызове API-функции CreateWindowEx. CWnd* - указатель на объект класса CWnd (что это - читай литературу или, на крайний случай MSDN). Через этот указатель можно получить HWND данного окна, обратясь к переменной m_hWnd, класса CWnd.

P.S. Лучше все таки приобрести книжку, иначе учиться будет очень и очень трудно.
1.9K
01 августа 2003 года
bad_duck
59 / / 29.07.2003
Цитата:
Originally posted by Rig
Видимо ты используешь MFC классы. Тогда тебе больше подойдет функция MoveWindow.



Не, SetWindowPos подошла.
Оказывается ClassWizard предложил мне создать новый класс, т.к. там, по его мнению, его не хватало. Вот я и создал класс, над которым и производил все измения. Потому и результата "не было".

Цитата:
P.S. Лучше все таки приобрести книжку, иначе учиться будет очень и очень трудно.



Ха! Книжку. Лежит у меня одна умная книжка: Дэвид Дж. Круглински, Скотт Уингоу, Джордж Шеферд "Программирование на Microsoft Visual C++ 6.0" Пер. с англ. Питер. Толстая такая, с диском! Но тама такого нету. Лишь скромное упоминание о структуре LPRECT (понадобилась она мне чтоб оригинальные размеры сохранить), объявление которой я не нашел ни в одном из "заголовочных" файлов (маска поиска: *.*) в каталоге Visual Studio.
По поводу MSDN повторюсь - нету ее у меня :( Так и быть, попробую в онлайне посмотреть.
Но я уже сам почти во всем разобрался. Хотя вопросы остались.
Спасибо всем.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог