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

Ваш аккаунт

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

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

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

Помогите новичку

305
30 апреля 2003 года
Kashuk
385 / / 21.02.2003
1 - Как уменьшить размер шрифта в Edit и высоту Edit'a
2 - Как выбрать последовательность компонентов, по переходу по табу
3 - Как запретить закрытие формы при нажатие ентера и ескейпа?
319
30 апреля 2003 года
xelos
577 / / 27.02.2003
Цитата:
Originally posted by Kashuk
1 - Как уменьшить размер шрифта в Edit и высоту Edit'a
2 - Как выбрать последовательность компонентов, по переходу по табу
3 - Как запретить закрытие формы при нажатие ентера и ескейпа?



1 - Вместо Edit используй RichEditControl, только его надо инициализировать до отображения диалога (функция AfxInitRichEdit( );). Тут со шрифтом можешь делать все что хочешь (тип шрифта, размерь подчеркивать, наклонять, делать жирным). А так в простом едите используется системный шрифт. Размеры элементов изменяются в редакторе диалоговых окон.

2 - Последовательность обхода задается в редакторе диалогового окна CTRL-D и потом кликаешь на элементы в порядке обхода.

3 - на IDOK и IDCANCEL создаешь свои обработчики где делаешь передачу данных или просто закрытие диалога (если тела функций оставить пустыми - то диалог не закроется при нажатии на кнопки), главное убрать стандартные вызовы CDialog::OnCancel(); и CDialog::OnOK();.

305
05 мая 2003 года
Kashuk
385 / / 21.02.2003
Цитата:
Originally posted by xelos


1 - Вместо Edit используй RichEditControl, только его надо инициализировать до отображения диалога (функция AfxInitRichEdit( );). Тут со шрифтом можешь делать все что хочешь (тип шрифта, размерь подчеркивать, наклонять, делать жирным). А так в простом едите используется системный шрифт. Размеры элементов изменяются в редакторе диалоговых окон.

2 - Последовательность обхода задается в редакторе диалогового окна CTRL-D и потом кликаешь на элементы в порядке обхода.

3 - на IDOK и IDCANCEL создаешь свои обработчики где делаешь передачу данных или просто закрытие диалога (если тела функций оставить пустыми - то диалог не закроется при нажатии на кнопки), главное убрать стандартные вызовы CDialog::OnCancel(); и CDialog::OnOK();.




А как зделать так, что б при закрытие формы(нажатие на крестик :-) ) форма закрывалась, а при нажатие ескейп, она не закрывалася. Ну може я плохо выразился, но думаю вы меня поймёте.

1.8K
08 мая 2003 года
Jeff
94 / / 22.04.2003
Цитата:
Originally posted by Kashuk



А как зделать так, что б при закрытие формы(нажатие на крестик :-) ) форма закрывалась, а при нажатие ескейп, она не закрывалася. Ну може я плохо выразился, но думаю вы меня поймёте.



Ну вообще ескейп является по сути отменой ( тот же крестик ). Возможно не надо перегружать OnCancel() окна. Создай MsgProc ( в класс-визарде можно ), а там перехвати нажатие ескейпа и никому сообщение не отдавай. Только ескейп КАЖИСЬ надо перехватывать так
WindowProc( hWnd, uMsg, wParam, lParam )
{
BOOL doNothing = FALSE;
switch( uMsg )
{
case WM_COMMAND
switch( LOWORD(wParam) )
{

case VK_ESCAPE
{
doNothing = TRUE; //ничего не делаем
}//case VK_ESCAPE

}//switch( LOWORD(wParam) )

}//switch( uMsg )

if ( !doNothing ) return DefWindowProc( hWnd, uMsg, wParam, lParam );
return TRUE;

Я такое вроде где-то писал, но точно сказать заработает это или нет сказать не могу.

462
08 мая 2003 года
little brother
81 / / 18.10.2002
Цитата:
Originally posted by Kashuk



А как зделать так, что б при закрытие формы(нажатие на крестик :-) ) форма закрывалась, а при нажатие ескейп, она не закрывалася. Ну може я плохо выразился, но думаю вы меня поймёте.



А разве нельзя в Class Wizard'е поставить обработку сообщения WM_KEYDOWN у класса диалога? У клавиши Esc nChar=27, а дальше...
if (nChar == 27){
Любые действия при Esc
}
По-моему так должно работать.

305
08 мая 2003 года
Kashuk
385 / / 21.02.2003
Цитата:
Originally posted by little brother


А разве нельзя в Class Wizard'е поставить обработку сообщения WM_KEYDOWN у класса диалога? У клавиши Esc nChar=27, а дальше...
if (nChar == 27){
Любые действия при Esc
}
По-моему так должно работать.



Неужели ВСЕ на этом форуме пишут такие проги, какие закрываются по Esc'y и Enter'y, что-то я неверю.

А попробуй это попробуй то, я задал вполне простой вопрос, а не тему, на которую нужно много философствывать в поиске оптимального варианта....

305
08 мая 2003 года
Kashuk
385 / / 21.02.2003
Цитата:
Originally posted by Jeff


Ну вообще ескейп является по сути отменой ( тот же крестик ). Возможно не надо перегружать OnCancel() окна. Создай MsgProc ( в класс-визарде можно ), а там перехвати нажатие ескейпа и никому сообщение не отдавай. Только ескейп КАЖИСЬ надо перехватывать так
WindowProc( hWnd, uMsg, wParam, lParam )
{
BOOL doNothing = FALSE;
switch( uMsg )
{
case WM_COMMAND
switch( LOWORD(wParam) )
{

case VK_ESCAPE
{
doNothing = TRUE; //ничего не делаем
}//case VK_ESCAPE

}//switch( LOWORD(wParam) )

}//switch( uMsg )

if ( !doNothing ) return DefWindowProc( hWnd, uMsg, wParam, lParam );
return TRUE;

Я такое вроде где-то писал, но точно сказать заработает это или нет сказать не могу.



Спасибо, проверю, если сработает объязательно скажу!

319
09 мая 2003 года
xelos
577 / / 27.02.2003
Цитата:
Originally posted by Kashuk


Неужели ВСЕ на этом форуме пишут такие проги, какие закрываются по Esc'y и Enter'y, что-то я неверю.

А попробуй это попробуй то, я задал вполне простой вопрос, а не тему, на которую нужно много философствывать в поиске оптимального варианта....


Используй не диалоговую форму :)

305
09 мая 2003 года
Kashuk
385 / / 21.02.2003
Цитата:
Originally posted by xelos

Используй не диалоговую форму :)



Подскажи какую и как, яж всётаки нровичёк...

3.9K
09 мая 2003 года
Leonid
6 / / 07.04.2003
Цитата:
Originally posted by Kashuk


Неужели ВСЕ на этом форуме пишут такие проги, какие закрываются по Esc'y и Enter'y, что-то я неверю.

А попробуй это попробуй то, я задал вполне простой вопрос, а не тему, на которую нужно много философствывать в поиске оптимального варианта....



Попробуй ещё и это:
ClassWizard->Massage Maps->Class Name->(в списке)твой класс диалога->Object IDs->(в списке)твой класс диалога->Massages->(в списке)PreTranslateMessage->Add Function->Edit Code
Перед оператором
return CDialog::PreTranslateMessage(pMsg);
вставляешь:
if(pMsg->message == WM_KEYDOWN )
{
if(pMsg->wParam == VK_ESCAPE )
ShowWindow(SW_SHOW);

return TRUE;
}
Только не забудь в OnCancel() вернуть строку:
CDialog::OnCancel ();
если ты её раньше удалил.

P.S. Или так:
if(pMsg->message == WM_KEYDOWN &&
pMsg->wParam == VK_ESCAPE)
{
return FALSE;
}

3
09 мая 2003 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by Leonid


Попробуй ещё и это:
ClassWizard->Massage Maps->Class Name->(в списке)твой класс диалога->Object IDs->(в списке)твой класс диалога->Massages->(в списке)PreTranslateMessage->Add Function->Edit Code
Перед оператором
return CDialog::PreTranslateMessage(pMsg);
вставляешь:
if(pMsg->message == WM_KEYDOWN )
{
if(pMsg->wParam == VK_ESCAPE )
ShowWindow(SW_SHOW);

return TRUE;
}
Только не забудь в OnCancel() вернуть строку:
CDialog::OnCancel ();
если ты её раньше удалил.



Ну кажется всё тебе рассказали кроме размера шрифта. Это просто:

CFont font;

BOOL CMyDlg::OnInitDialog()
{
...........................

CFont* pFont = m_Edit.GetFont();
if(pFont)
{
LOGFONT lf;
memset(&lf, 0, sizeof(LOGFONT));
pFont->GetLogFont(&lf);
lf.lfHeight = 20; //Здесь устанавливаем высоту

font.CreateFontIndirect(&lf);
m_Edit.SetFont(&font, TRUE);
}
.......................
}

305
19 мая 2003 года
Kashuk
385 / / 21.02.2003
Цитата:
Originally posted by Green


Ну кажется всё тебе рассказали кроме размера шрифта. Это просто:

CFont font;

BOOL CMyDlg::OnInitDialog()
{
...........................

CFont* pFont = m_Edit.GetFont();
if(pFont)
{
LOGFONT lf;
memset(&lf, 0, sizeof(LOGFONT));
pFont->GetLogFont(&lf);
lf.lfHeight = 20; //Здесь устанавливаем высоту

font.CreateFontIndirect(&lf);
m_Edit.SetFont(&font, TRUE);
}
.......................
}



А как выбрать последовательность перехода по табу?

319
19 мая 2003 года
xelos
577 / / 27.02.2003
Выбор формы зависит от того, что ты хочешь делать в своей программе - для чего она предназначена. Диалоговая форма - получение информации от пользователя и простой вывод информации. форма, наследница от CView, например, предназначена для вывода сложной информации, ввод в ней идет через меню и вызов диалоговых окон, или от кликов на экране.
про табуляцию я уже писал.
2.2K
19 мая 2003 года
Alex_Odessa
30 / / 12.05.2003
А как выбрать последовательность перехода по табу?


Открываешь в рабочей области нужный диалог, и нажимаешь "CTRL + D". Все элементы управления пронумеруются. Выбираешь их в нужном порядке и все ОК. Вот только не знаю как это сделать на эл. упр. созданные ручками (через Create). Если кто знает, напишите.
2.2K
19 мая 2003 года
Alex_Odessa
30 / / 12.05.2003
А как выбрать последовательность перехода по табу?

Открываешь в рабочей области нужный диалог, и нажимаешь "CTRL + D". Все элементы управления пронумеруются. Выбираешь их в нужном порядке и все ОК. Вот только не знаю как это сделать на эл. упр. созданные ручками (через Create). Если кто знает, напишите.
305
19 мая 2003 года
Kashuk
385 / / 21.02.2003
Цитата:
Originally posted by xelos
Выбор формы зависит от того, что ты хочешь делать в своей программе - для чего она предназначена. Диалоговая форма - получение информации от пользователя и простой вывод информации. форма, наследница от CView, например, предназначена для вывода сложной информации, ввод в ней идет через меню и вызов диалоговых окон, или от кликов на экране.
про табуляцию я уже писал.



Извени что я не заметил, прсто у меня иногда этот форум не хочит грузится, наверно проблемы с инетом.

Большое спасибо тебе и Alex_Odessa

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