Pocket PC.
eVC 3.0.
Создаю мастером MFC программку и сразу её компилирую.
Запускаю её и вижу, что моё меню сместилось в право,
а первым пунктом какое-то Т... с одним подпунктом foo.
Я этого не делал. Я вообще не менял ни чего в созданой мастером программе.
Откуда это взялось и как убрать?
Стандартные программы в моём КПК такого дефекта не имеют.
Здравствуйте, MOG2, Вы писали:
MOG>Pocket PC. MOG>eVC 3.0. MOG>Создаю мастером MFC программку и сразу её компилирую. MOG>Запускаю её и вижу, что моё меню сместилось в право, MOG>а первым пунктом какое-то Т... с одним подпунктом foo. MOG>Я этого не делал. Я вообще не менял ни чего в созданой мастером программе. MOG>Откуда это взялось и как убрать? MOG>Стандартные программы в моём КПК такого дефекта не имеют.
Вообще, обычно визард такого не генерит, но может у него крыша съехала. Поищи по исходникам это foo — тогда сразу станет ясно, кто именно и где его добавляет.
--
Я думал, ты огромный страшный Бажище,
А ты недоучка, крохотный Бажик...
Re[2]: CCeCommandBar. Откуда взялся лишний элемент?
Здравствуйте, Alexander Shargin, Вы писали:
AS>Вообще, обычно визард такого не генерит, но может у него крыша съехала. Поищи по исходникам это foo — тогда сразу станет ясно, кто именно и где его добавляет.
Я искал по файлам своего проекта.
Cannot find the string 'foo'.
А вот в файлах MFC.
Например:
WINDOWS CE TOOLS\wce300\MS Pocket PC\mfc\include\l.deu\wceres.rc
нашёл прилюботнийшие строчки:
AFXCE_IDR_SCRATCH_SHMENU MENU DISCARDABLE
BEGIN
POPUP "&Temp"
BEGIN
MENUITEM "foo", 100
END
END
Обнаружил, что этот файл (wceres.rc) в моём проекте находится в разделе External Dependncies.
1. Зачем визард мне его добавил в проект?
2. Как избавиться от ненужного меню корректным способом?
Можно ли это сделать не изменяя файл wceres.rc?
Re[3]: CCeCommandBar. Откуда взялся лишний элемент?
Здравствуйте, MOG2, Вы писали:
MOG>Обнаружил, что этот файл (wceres.rc) в моём проекте находится в разделе External Dependncies. MOG>1. Зачем визард мне его добавил в проект?
Это как раз нормально — там лежат все CE-specific ресурсы, которые использует MFC.
MOG>2. Как избавиться от ненужного меню корректным способом?
Простой путь — просто грохнуть эту кнопку программно. Более правильный — всё-таки разобраться, почему он появился. Но это сложно сделать, не имея кода. Если хочешь, скинь мне проект на alex [at] softspb [dot] com.
MOG> Можно ли это сделать не изменяя файл wceres.rc?
Править этот файл ни в коем случае не надо.
--
Я думал, ты огромный страшный Бажище,
А ты недоучка, крохотный Бажик...
Re[4]: CCeCommandBar. Откуда взялся лишний элемент?
Здравствуйте, Alexander Shargin, Вы писали:
AS>Простой путь — просто грохнуть эту кнопку программно. Более правильный — всё-таки разобраться, почему он появился. Но это сложно сделать, не имея кода. Если хочешь, скинь мне проект на alex [at] softspb [dot] com.
MOG>> Можно ли это сделать не изменяя файл wceres.rc?
AS>Править этот файл ни в коем случае не надо.
Я выслал проект на указаный адрес.
Спасибо за помощь.
Re[5]: CCeCommandBar. Откуда взялся лишний элемент?
Здравствуйте, MOG2, Вы писали:
MOG>Я выслал проект на указаный адрес.
Посмотрел проект. Задумчивый он. Ты будешь смеяться, но у меня проблема не повторилась ни в дебаге, ни в релизе. Но я немного почитал код и могу предложить следующее:
— перегенери проект без использования doc/view и прочей ерунды — на PPC это портировано довольно криво, да и смысла особого в этом нет.
— если хочется использовать именно этот проект, добавь в CMainFrame::OnCreate (до создания комманд бара) строчку:
m_bShowSharedNewButton = FALSE;
Background: ресурс AFXCE_IDR_SCRATCH_SHMENU используется в MFC для создании пустого комманд бара. Позже, при обработке InsertMenuBar и LoadToolBar MFC парсит ресурсы меню/тулбара и добавляет кнопки в этот пустой комманд бар. Но, как ты заметил, этот пустой комманд бар не совсем пустой — в нём есть один пункт "New". Если флаг bShowSharedNewButton не задан, эта кнопка просто удаляется при создании комманд бара:
Вот почему в большинстве проектов этот пункт не фигурирует — визард сам выставляет флаг в FALSE. Видимо, ты выбрал такой набор опций, при котором этого не произошло.
Если же кнопка осталась, она должна приводить к вызову обработчика OnFileNew. Если у тебя это работает не так, для меня это загадка.
--
Я думал, ты огромный страшный Бажище,
А ты недоучка, крохотный Бажик...
Re[6]: CCeCommandBar. Откуда взялся лишний элемент?
Здравствуйте, Alexander Shargin, Вы писали:
AS>Посмотрел проект. Задумчивый он. Ты будешь смеяться, но у меня проблема не повторилась ни в дебаге, ни в релизе. Но я немного почитал код и могу предложить следующее: AS>- перегенери проект без использования doc/view и прочей ерунды — на PPC это портировано довольно криво, да и смысла особого в этом нет. AS>- если хочется использовать именно этот проект, добавь в CMainFrame::OnCreate (до создания комманд бара) строчку:
Спасибо за помощь.
Я поставил EMVC4.0 (тем более, что у меня pocket pc 2003).
В этой IDE такких неприятностей не появлялось.
Но всё равно спасибо за помощь.
К стати я на втром шаге визарда обнаружил галку Shared New.
Так вот оказывается если её не ставить то в моём меню не проявляется пункт New.
Я вообще только начинаю программировать так что вы не удивляётесь моим открытиям.
немного не в тему, но тут была ситуация, когда была программа, использующая CCeCommandBar, и возникла задача, тчобы эта программа апустилась на PC. В общем уж не знаю как, но это очень вредный класс, так как аналога на PC нет, так что я долго писал заменитель
Re[2]: CCeCommandBar. Откуда взялся лишний элемент?
Здравствуйте, Xentrax, Вы писали:
X>немного не в тему, но тут была ситуация, когда была программа, использующая CCeCommandBar, и возникла задача, тчобы эта программа апустилась на PC. В общем уж не знаю как, но это очень вредный класс, так как аналога на PC нет, так что я долго писал заменитель
А зачем? Command bar — это просто тулбар, объединённый с меню (для экономии места). На PC надо было просто создать отдельно меню и тулбар из тех же ресурсов.
--
Я думал, ты огромный страшный Бажище,
А ты недоучка, крохотный Бажик...
Re[3]: CCeCommandBar. Откуда взялся лишний элемент?
Здравствуйте, Alexander Shargin, Вы писали:
AS>А зачем? Command bar — это просто тулбар, объединённый с меню (для экономии места). На PC надо было просто создать отдельно меню и тулбар из тех же ресурсов.
Ну тогда ладно.
Просто в моем случае коллеги-индусы что-то такое активно с ним делали, на лету конструируя всякие меню, так что "ресурсов" там не было, а лезть в их код не хотелось.
Re[4]: CCeCommandBar. Откуда взялся лишний элемент?
Здравствуйте, Xentrax, Вы писали:
X>Просто в моем случае коллеги-индусы что-то такое активно с ним делали, на лету конструируя всякие меню, так что "ресурсов" там не было, а лезть в их код не хотелось.
Тогда понятно. Не повезло.
--
Я думал, ты огромный страшный Бажище,
А ты недоучка, крохотный Бажик...