MFC от A.. до Z..


Стиль показа окна

В прошлом примере я использовал SW_SHOW – показать активным

Попробуем теперь посмотреть все стили в действии . Необходимо немножко изменить наш проект . Нужно поставить на окно ListBox и назвать его m_lbShowWindow . Проделаем все это по шагам (по пунктикам как американцы) :

  1. Перетаскиваем на диалоговое окно ListBox.
  2. Жмем на нем дважды левую кнопку придерживая Ctrl .
  3. Появляется окно Add Member Variable . в ... name вводим m_lbShowWindow
  4. В category выбираем Controll.
  5. ОК

В дальнейшем как создавать переменные и функции , я повторятся небуду .

Редактируем функцию OnInitDialog()

Как нетрудно догадаться она активизируется перед самым показом окна, когда оно уже создано . Вот она нам и нужна .

В ней мы будем добавлять записи в ListBox .

В ListBox есть метод AddString – добавить строку , но это сейчас несущественно .

Вот код, который нужно вставить после строчки // TODO: Add extra initialization here


m_lbShowWindow.AddString("SW_FORCEMINIMIZE");
m_lbShowWindow.AddString("SW_HIDE");
m_lbShowWindow.AddString("SW_MAXIMIZE");
m_lbShowWindow.AddString("SW_MINIMIZE");
m_lbShowWindow.AddString("SW_RESTORE");
m_lbShowWindow.AddString("SW_SHOW");
m_lbShowWindow.AddString("SW_SHOWDEFAULT");
m_lbShowWindow.AddString("SW_SHOWMAXIMIZED");
m_lbShowWindow.AddString("SW_SHOWMINIMIZED");
m_lbShowWindow.AddString("SW_SHOWMINNOACTIVE");
m_lbShowWindow.AddString("SW_SHOWNA");
m_lbShowWindow.AddString("SW_SHOWNOACTIVATE");
m_lbShowWindow.AddString("SW_SHOWNORMAL");

т.к параметрами функции ShowWindow являются константы , а в ListBox у нас строки нужно написать функцию перевода .

Создаем функцию

int StringToId(CString stroka) 
{
if (stroka=="SW_FORCEMINIMIZE")return SW_FORCEMINIMIZE;
else if (stroka=="SW_HIDE")return SW_HIDE;
else if (stroka=="SW_MAXIMIZE")return SW_MAXIMIZE;
else if (stroka=="SW_MINIMIZE")return SW_MINIMIZE;
else if (stroka=="SW_RESTORE")return SW_RESTORE;
else if (stroka=="SW_SHOW")return SW_SHOW;
else if (stroka=="SW_SHOWDEFAULT")return SW_SHOWDEFAULT;
else if (stroka=="SW_SHOWMAXIMIZED")return SW_SHOWMAXIMIZED;
else if (stroka=="SW_SHOWMINIMIZED")return SW_SHOWMINIMIZED;
else if (stroka=="SW_SHOWMINNOACTIVE")return SW_SHOWMINNOACTIVE;
else if (stroka=="SW_SHOWNA")return SW_SHOWNA;
else if (stroka=="SW_SHOWNOACTIVATE")return SW_SHOWNOACTIVATE;
else if (stroka=="SW_SHOWNORMAL")return SW_SHOWNORMAL;

}

чего может быть проще ? Определенной строке равен определенный параметр . ну вот дошла очередь до функции OnCreatenew() . в ней запишем :


int Current=m_lbShowWindow.GetCurSel();   // смотрим какой элемент выбран
	CString stroka;
if (Current>=0){m_lbShowWindow.GetText(Current,stroka);  // если , что-то выбрано считываем текст а переменную stroka
		

	int WindowStyle=StringToId(stroka);  // ну и соответственно WindowStyle и есть стиль вывода
	m_pDial=new CDial1Dlg();
	m_pDial->Create(IDD_DIAL1_DIALOG);
m_pDial->ShowWindow(WindowStyle);

	}
else AfxMessageBox("Выберите стиль окна!!!");  // если ничего не выбрано то выдать сообщение .

Назад Содержание Вперед

Последнняя модификация: 18.08.2001


Если будут вопросы , пишите

Author :Igor Tsmokanich
Rambler's Top100