Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование с использованием WinAPI

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61

Открыть новую тему     Написать ответ в эту тему

TeXpert



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
plazzmex
Цитата:
lf.lfFaceName, "Microsoft Sans Serif";
Ну так догадайся, что тут неправильного) Иногда думай всё же).

----------
Майкудук, Пришахтинск не предлагать!:)
А на Пирогова приходит снова весенний гомон...

Всего записей: 3604 | Зарегистр. 08-02-2003 | Отправлено: 22:10 28-05-2007
Abs62



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
plazzmex

Цитата:
когда ставлю = пишет "Error: incompatible types in assignment."

Ну так надо же понимать разницу между указателем и массивом.
Поле lfFaceName объявлено как TCHAR lfFaceName[LF_FACESIZE], а не как TCHAR *lfFaceName.  
Стало быть, не lf.lfFaceName="Microsoft Sans Serif", а lstrcpyn(lf.lfFaceName,"Microsoft Sans Serif",LF_FACESIZE).
А ещё лучше lstrcpyn(lf.lfFaceName,_T("Microsoft Sans Serif"),LF_FACESIZE) - тогда не возникнет проблем при переходе на юникод.

Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 22:33 28-05-2007
plazzmex



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Abs62

Цитата:
lstrcpyn(lf.lfFaceName,"Microsoft Sans Serif",LF_FACESIZE).

ок.. а што дает LF_FACESIZE ?
я счас в книжке одной прочитал и там есть пример. и вэтом примере вот так написано:

Код:
strcpy(lf2.lfFaceName, "Microsoft Sans Serif");

и это работает..  
а чем оно отличается от того что ты написал? это хуже ?
 
 
TeXpert
и до этого я должен был догадатся?
вау.

Всего записей: 1123 | Зарегистр. 29-09-2005 | Отправлено: 23:04 28-05-2007 | Исправлено: plazzmex, 23:06 28-05-2007
Garrett

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
TeXpert
Abs62
Парнишка начинает надоедать. Не надо отвечать ему, пусть научится пользоваться MSDN.

Всего записей: 2736 | Зарегистр. 16-10-2003 | Отправлено: 23:19 28-05-2007
Abs62



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
plazzmex

Цитата:
а чем оно отличается от того что ты написал? это хуже ?

strcpy(s1,s2) копирует всю строку s2 в s1, независимо от длины. strcpyn(s1,s2,n) копирует не более n символов. Страховка на случай, если строка окажется длиннее, чем допустимо.  

Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 23:32 28-05-2007 | Исправлено: Abs62, 01:06 29-05-2007
plazzmex



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Garrett

Цитата:
Парнишка начинает надоедать. Не надо отвечать ему, пусть научится пользоваться MSDN.

втом то и дело.. что я сначала ищу вMSDN и если не нахожу то спрашиваю вас..
ну вы же умные.. а я тупой..
 
Abs62
TeXpert
Garrett
ShIvADeSt
огромное спасибо за помощь !!!!
я уже и вправду переборщил с вопросами.  
и надоел вам всем..  
 
еще раз огромное спасибо !
 
 
....Plazzmex

Всего записей: 1123 | Зарегистр. 29-09-2005 | Отправлено: 00:44 29-05-2007
Garrett

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
plazzmex
Петцольда залил на свой сайт (http://alexsoft.home.nov.ru), ищи в Программах.

Всего записей: 2736 | Зарегистр. 16-10-2003 | Отправлено: 09:00 29-05-2007
Qraizer



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
В догонку: за "...массивы и указатели в С и С++ - это одно и тоже...", которое то и дело проскакивает в учебниках, я б эти учебники вместе с авторами в топку.

----------
Одни с годами умнеют, другие становятся старше.

Всего записей: 613 | Зарегистр. 08-08-2006 | Отправлено: 14:54 29-05-2007
TeXpert



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Qraizer
Батенька, да вы инквизитор). Ну, с другой стороны, человек научится, обжёгшись.

----------
Майкудук, Пришахтинск не предлагать!:)
А на Пирогова приходит снова весенний гомон...

Всего записей: 3604 | Зарегистр. 08-02-2003 | Отправлено: 17:17 29-05-2007
Qraizer



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Ну да. Типа - "Мальчик , сунь пальцы в розетку... Ага! Понял, что этого делать никогда нельзя?"

----------
Одни с годами умнеют, другие становятся старше.

Всего записей: 613 | Зарегистр. 08-08-2006 | Отправлено: 18:39 30-05-2007
plazzmex



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
помогите пожалуйста...
я уже пол дня сижу и у меня никак не работает галочка в сплывающем меню.. все пересмотрел, MSDN почитал.. но вроде делаю все правильно а оно не работает.
глупость блин, аж спрашивать стыдно.
 
смысл такой : ввыпадающем меню изначально стоит галочка. при нажатии на пункт меню галочка убирается. еще раз нажать появляется опять..
 
вот часть кода меню: (а именно, тот пункт в котором галочка..)

Код:
InsertMenu(hPopupMenu, 1, MF_BYPOSITION | MF_STRING | MF_CHECKED, ID_CONTEXT_MENU1, "&Check");

 
вот код WM_COMMAND на Id пункта:

Код:
 
 
CheckMenu = GetMenuState(hPopupMenu, 1, MF_BYPOSITION);
if (CheckMenu == MF_CHECKED)
{
      CheckMenuItem(hPopupMenu, 1, MF_UNCHECKED );
}
else
{
      CheckMenuItem(hPopupMenu, 1, MF_CHECKED );
}

 
вчем может быть проблема.. пожалуйста гляньте если не трудно.
очень буду благодарен за помощь !
.... Plazzmex

Всего записей: 1123 | Зарегистр. 29-09-2005 | Отправлено: 00:13 16-06-2007
Qraizer



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
GetMenuState() возвращает полное состояние элемента меню. Поэтому это набор флагов, а не один единственный флаг. Попробуй if ((CheckMenu & MF_CHECKED) != 0) ...

----------
Одни с годами умнеют, другие становятся старше.

Всего записей: 613 | Зарегистр. 08-08-2006 | Отправлено: 16:36 16-06-2007
plazzmex



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
все равно не работает..
это может быть из за того что меню это на айконе в трее ?
или из за того что это не resource.rc а меню прямо на правой кнопке миши ?

Всего записей: 1123 | Зарегистр. 29-09-2005 | Отправлено: 17:11 16-06-2007
Lyrik

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
plazzmex
попробуй так:

Код:
CheckMenuItem(hPopupMenu, 1, MF_BYPOSITION|MF_UNCHECKED );

поскольку по умолчанию для CheckMenuItem является MF_BYCOMMAND. Но лучше не надеяться и всегда ставить и MF_BYCOMMAND.

Всего записей: 388 | Зарегистр. 04-04-2006 | Отправлено: 17:52 16-06-2007 | Исправлено: Lyrik, 17:54 16-06-2007
plazzmex



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Lyrik
нет.. не помогает.. ничего не происходит..
 
может нужно как то обновлять меню? как я допустим делаю в WM_PAINT InvalidateRect ?
или может нужно еще что то добавить что я не написал?

Всего записей: 1123 | Зарегистр. 29-09-2005 | Отправлено: 18:16 16-06-2007
Hiken



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
plazzmex, в самом деле, хорошо бы ты сделал меню в ресусе, мог бы здесь привести его полностью, а мы бы посмотрели. Никаких Invalidate'ов не требуется, это точно.
 
А вообще, я бы проверял на галочку так:

Код:
if (GetMenuState(hPopupMenu, 1, MF_BYPOSITION) & MF_CHECKED)

 
InsertMenu с индексом 0 делал?

Всего записей: 1343 | Зарегистр. 14-01-2006 | Отправлено: 18:37 16-06-2007 | Исправлено: Hiken, 18:39 16-06-2007
Lyrik

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
plazzmex
а hPopupMenu у тя как static? или ты его потом получаешь?

Всего записей: 388 | Зарегистр. 04-04-2006 | Отправлено: 18:48 16-06-2007
plazzmex



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Hiken

Цитата:
InsertMenu с индексом 0 делал?

всмысле? вот меню:

Код:
 
case WM_RBUTTONDOWN:
      hPopupMenu = CreatePopupMenu();
      InsertMenu(hPopupMenu, 1, MF_BYPOSITION | MF_STRING | MF_CHECKED, ID_CONTEXT_MENU1, "&Check");
      InsertMenu(hPopupMenu, 2, MF_BYPOSITION | MF_SEPARATOR, 0, 0);
      InsertMenu(hPopupMenu, 3, MF_BYPOSITION | MF_STRING , ID_NUMBER1, "&Number One");
      SetForegroundWindow(hwnd);
      TrackPopupMenu(hPopupMenu, TPM_BOTTOMALIGN | TPM_LEFTALIGN | TPM_RIGHTBUTTON, p.x, p.y, 0, hwnd, NULL);
      DestroyMenu(hPopupMenu);
      return 0;
 

 
Lyrik

Цитата:
а hPopupMenu у тя как static? или ты его потом получаешь?


Код:
HMENU hPopupMenu;

и при WM_RBUTTONDOWN получаю
 
Добавлено:
P.S -  
кстати если сделать вот так то постоянно появляется "Checked" независимо сколько раз я нажимаю

Код:
 
if ((CheckMenu & MF_CHECKED) != 0)
{
       MessageBox(hwnd, "Checked", "Error", MB_OK | MB_ICONINFORMATION);
       CheckMenuItem(hPopupMenu, 6, MF_BYPOSITION |MF_CHECKED );
}
else
{
       MessageBox(hwnd, "Unchecked", "Error", MB_OK | MB_ICONINFORMATION);
       CheckMenuItem(hPopupMenu, 6, MF_BYPOSITION | MF_UNCHECKED );
}
 

Всего записей: 1123 | Зарегистр. 29-09-2005 | Отправлено: 19:57 16-06-2007
Qraizer



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:

Код:
if ((CheckMenu & MF_CHECKED) != 0)  
{  
       MessageBox(hwnd, "Checked", "Error", MB_OK | MB_ICONINFORMATION);  
       CheckMenuItem(hPopupMenu, 6, MF_BYPOSITION |MF_CHECKED );  
}  
else  
{  
       MessageBox(hwnd, "Unchecked", "Error", MB_OK | MB_ICONINFORMATION);  
       CheckMenuItem(hPopupMenu, 6, MF_BYPOSITION | MF_UNCHECKED );  
}
А ты случаем не перепутал "then" и else местами? Я имею в виду последний параметр в вызовах CheckMenuItem()

----------
Одни с годами умнеют, другие становятся старше.

Всего записей: 613 | Зарегистр. 08-08-2006 | Отправлено: 22:14 16-06-2007
plazzmex



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Qraizer

Цитата:
А ты случаем не перепутал "then" и else местами? Я имею в виду последний параметр в вызовах CheckMenuItem()

не понял..... можно поподробнее?
в каком смысле перепутал последний параметр?
 
Добавлено:
ты имееш ввиду:

Код:
 
if ((CheckMenu & MF_CHECKED) != 0)  
{  
       MessageBox(hwnd, "Checked", "Error", MB_OK | MB_ICONINFORMATION);  
       CheckMenuItem(hPopupMenu, 6, MF_BYPOSITION |MF_UNCHECKED );  
}  
else  
{  
       MessageBox(hwnd, "Unchecked", "Error", MB_OK | MB_ICONINFORMATION);  
       CheckMenuItem(hPopupMenu, 6, MF_BYPOSITION | MF_CHECKED );  
}
 

тык.. пробовал вроде.. все равно не работает..

Всего записей: 1123 | Зарегистр. 29-09-2005 | Отправлено: 23:10 16-06-2007
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование с использованием WinAPI


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru