Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Размеры окна в зависимости от разрешения


Автор: ToshaR 6.12.2008, 15:03
У меня окно создается на весь экран, а в нем есть дочерние окна. И елси запустить программу на мониторе с большим разрешением, то все криво тображается. Как сделать что бы дочерние окна увиличивались в зависимости от разрешения? Тоесть занимали например все свободное место внизу?

Автор: BorisVorontsov 6.12.2008, 22:51
У тебя MDI или SDI?

Автор: J0ker 7.12.2008, 01:19
проблема даже еще сложней
помимо разрешения существует еще и плотность точек и разный размер стандартных шрифтов - вот это вот действительно *опа  smile 

Автор: ToshaR 7.12.2008, 14:02

Цитата

У тебя MDI или SDI?


Я не знаю что такое MDI или SDI. Я только начал WinAPI изучать. Просто хочу чтобы программа везде одинакового отображалась, желательно на весь экран.

Автор: ToshaR 7.12.2008, 21:31
У меня еще один вопрос, не совсем по этой теме. Вообщем есть dll. В ней диалог. Если я его делаю модальным, то все равботает. Но если я его хочу сделать не модальным, то че то не пашет.

Вот загружаю dll:
Код

if(NULL==(hr=LoadLibraryEx((LPCSTR)"Language\\RusMenu.dll",0,LOAD_LIBRARY_AS_DATAFILE))){
            errorReport();
            return 0;
        }

Вот вызываю диалог:
Код

hWnd=CreateDialogParam(hr, MAKEINTRESOURCE(IDD_TOOLS), hWnd, (DLGPROC)Tools, (LPARAM) hWnd);


В дилоге соотвественно везде пишу не EndDialog, a DestroyWindow

Автор: 586 8.12.2008, 00:27
Цитата(ToshaR @  7.12.2008,  21:31 Найти цитируемый пост)
if(NULL==(hr=LoadLibraryEx((LPCSTR)"Language\\RusMenu.dll",0,LOAD_LIBRARY_AS_DATAFILE))){
            errorReport();
            return 0;
        }

Неправильно!
Код
if(NULL==(hr=LoadLibraryEx(TEXT("Language\\RusMenu.dll"),0,LOAD_LIBRARY_AS_DATAFILE))){
            errorReport();
            return 0;
        }

Цитата
Но если я его хочу сделать не модальным, то че то не пашет.

Проверь, отмечено ли в свойствах диалога свойство Visible, или вызывай функцию ShowWindow(hWnd, SW_SHOWNORMAL) для диалога.

Автор: ToshaR 8.12.2008, 18:30
Спасибо, заработало с помощью ShowWindow(hWnd, SW_SHOWNORMAL). Вот у меня еще вопрос, извините что опять не совсем по теме, зато опять про диалоги)

Вообщем у меня диалог, а в нем я выбираю какой язык в программе использую. И вот почему то когда я его меня в диалоге, то меняется все кроме меню, которое я загружаю из dll. А если менять язык не в диалоге, а в меню, то все работает.

Вот сообщение о том что выбран Английский.
Код

case ID_ENG:
    if(hr) FreeLibrary(hr);
        if(he) FreeLibrary(he);
        if(menu) DestroyMenu(menu);
        if(NULL==(he=LoadLibraryEx(/*(LPCSTR)*/TEXT("Language\\EngMenu.dll"),0,LOAD_LIBRARY_AS_DATAFILE))){
            errorReport();
            return 0;
        }
        menu=LoadMenu(he,MAKEINTRESOURCE(IDC_TTF));
        SetMenu(hWnd, menu);
        EnableMenuItem(GetMenu(hWnd), IDM_ABOUT, MF_ENABLED);
        CheckMenuItem(GetMenu(hWnd), ID_ENG, MF_CHECKED);
        CheckMenuItem(GetMenu(hWnd), ID_RUS, MF_UNCHECKED);
        eng=true;
        rus=false;



А вот в диалоге я проверяю, где отмечено,и тогда посылаю нужное сообщение:
Код

if(LOWORD(wParam)==IDC_APPLY)
        {
            if(SendDlgItemMessage(hDlg,IDC_RADIO1,BM_GETSTATE,0,0)){
                SendMessage(WndParent,ID_RUS,0,0); rus=true; eng=false;}
            if(SendDlgItemMessage(hDlg,IDC_RADIO3,BM_GETSTATE,0,0)){
                SendMessage(WndParent,ID_ENG,0,0); rus=false; eng=true;}
            return (INT_PTR)TRUE;
        }


Автор: ToshaR 9.12.2008, 18:50
Ладно для этого вопроса я лучше другую тему создам... а как быть то с разрешением?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)