Шаг 97 - Структура окна на шаг впереди MFC

При классическом программирование на C под Windows(это ужас честное слово) для того, чтобы окно появилось на экране необходимо заполнить структуру CREATESTRUCT. Вот её описание

typedef struct tagCREATESTRUCT {   
   LPVOID    lpCreateParams;
   HANDLE    hInstance;
   HMENU     hMenu;
   HWND      hwndParent;
   int       cy;
   int       cx;
   int       y;
   int       x;
   LONG      style;
   LPCSTR    lpszName;
   LPCSTR    lpszClass;
   DWORD     dwExStyle;
} CREATESTRUCT;
Полное её описание описание надо делать отдельно. Но догадаться о назначении пуктов можно и так. Например cx и cy отвечают за высоту и ширину. Если вы хотите пообщаться с этой структурой, то вы должны перехватить её до начала создания окна и вызова функции CreateWindow. MFC вообще-то сам умеет задавать там параметры, вопрос в том устраивают они Вас или нет. Для того, чтобы получить доступ к этой структуре Вам нужно перегрузить PreCreateWindow из класса CMainFrame. Туда передается указатель на эту структуру и Вы сможете её подправить.

Теория ясна к делу теперь. Итак создаем MFC AppWizard приложение TestCreate как SDI. Сейчас функция вот такая и в её параметрах есть указатель на нашу структуру.

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
	if( !CFrameWnd::PreCreateWindow(cs) )
		return FALSE;
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return TRUE;
}
Правим ????
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
	if( !CFrameWnd::PreCreateWindow(cs) )
		return FALSE;
	
	cs.cx = 50;
	cs.cy = 50;

	return TRUE;
}
Попробуйте :-))) Будет маленькое такое окно !!!

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем.