acc15
Гость
|
|
« : 22-10-2005 17:42 » |
|
собственно вопрос... создаю проект MFC AppWizard... Он делает главное окно с меню... если убрать это меню из ресурсов, то пишется ошибка... как мне убрать это ненужное меню??? и вообще всё лишнее... акселераторы, about dialog, и прочую левоту???
|
|
|
Записан
|
|
|
|
Александр Цикин
Гость
|
|
« Ответ #1 : 23-10-2005 06:17 » |
|
В файле MainFrm.cpp в функции OnCreate происходит создание всей этой "левоты ". Смотри, что тебе не нужно, и не создавай (просто убей код создания). Удачи
|
|
|
Записан
|
|
|
|
acc15
Гость
|
|
« Ответ #2 : 23-10-2005 13:29 » |
|
а вот неправда )))... ошибка происходит здесь ----------------------------------------------------------------------------------------- // Change the registry key under which our settings are stored. // TODO: You should modify this string to be something appropriate // such as the name of your company or organization. SetRegistryKey(_T("Local AppWizard-Generated Applications"));
LoadStdProfileSettings(0); // Load standard INI file options (including MRU)
// Register the application's document templates. Document templates // serve as the connection between documents, frame windows and views.
CSingleDocTemplate* pDocTemplate; pDocTemplate = new CSingleDocTemplate( IDR_MAINFRAME, RUNTIME_CLASS(CXwDoc), RUNTIME_CLASS(CMainFrame), // main SDI frame window RUNTIME_CLASS(CXwView)); AddDocTemplate(pDocTemplate);
// Parse command line for standard shell commands, DDE, file open CCommandLineInfo cmdInfo; ParseCommandLine(cmdInfo);
// Dispatch commands specified on the command line if (!ProcessShellCommand(cmdInfo)) return FALSE; ----------------------------------------------------------------------------------------- главный файл приложения...
а в OnCreate у MainFrame'а написано следующее
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CFrameWnd::OnCreate(lpCreateStruct) == -1) return -1;
return 0; }
пробовал сделать так: int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { lpCreateStruct->hMenu = 0; if (CFrameWnd::OnCreate(lpCreateStruct) == -1) return -1;
return 0; } не помогло... Да и вообще до OnCreate он не доходит... ошибка происходит до него... в конструкторе MainFram'a ничего не сделаешь...
|
|
« Последнее редактирование: 20-12-2007 21:09 от Алексей1153++ »
|
Записан
|
|
|
|
Александр Цикин
Гость
|
|
« Ответ #3 : 23-10-2005 17:03 » |
|
А, милль пардон, именно меню так нельзя А вылетает оно здесь: BOOL CFrameWnd::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, LPCTSTR lpszMenuName, DWORD dwExStyle, CCreateContext* pContext) { HMENU hMenu = NULL; if (lpszMenuName != NULL) { // load in a menu that will get destroyed when window gets destroyed HINSTANCE hInst = AfxFindResourceHandle(lpszMenuName, RT_MENU); if ((hMenu =[glow=red,2,300] ::LoadMenu(hInst, lpszMenuName)) [/glow] == NULL) { TRACE(traceAppMsg, 0, "Warning: failed to load menu for CFrameWnd.\n"); PostNcDestroy(); // perhaps delete the C++ object return FALSE; } }
m_strTitle = lpszWindowName; // save title for later
if (!CreateEx(dwExStyle, lpszClassName, lpszWindowName, dwStyle, rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top, pParentWnd->GetSafeHwnd(), hMenu, (LPVOID)pContext)) { TRACE(traceAppMsg, 0, "Warning: failed to create CFrameWnd.\n"); if (hMenu != NULL) DestroyMenu(hMenu); return FALSE; }
return TRUE; }
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #4 : 24-10-2005 05:37 » |
|
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { cs.hMenu=0;//убрали меню
cs.lpszName=m_CaptionText; cs.style = WS_OVERLAPPED | WS_CAPTION | WS_THICKFRAME | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_MAXIMIZE; if( !CFrameWnd::PreCreateWindow(cs) )return FALSE;
return TRUE; }
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #5 : 24-10-2005 05:41 » |
|
> акселераторы - просто удалить из дерева ресурсов в визарде
> about dialog - проще не задавать визарду при создании проекта. а теперь - ищешь имя класса (он описан в файле с классом theApp) диалога помощи и по смыслу удавляешь. На все ошибки укажет компилятор - подчистишь
|
|
|
Записан
|
|
|
|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #6 : 24-10-2005 08:17 » |
|
acc15, Чёт я не пойму - что ты хочшь? Тебе нужна лепёшка, а ты делаешь пиццу, чтобы потом, выбросив всё "левое", получить лепёшку? Есть определённая архитектура, есть специальные объекты, для решения определённых задач, если они тебе не подходят - возьми другие. Зачем природу насиловать?
|
|
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #7 : 24-10-2005 08:52 » |
|
Джон , не , у меня так было поначалу - ещё не знаешь чего хошь, создаёшь лишнее. А потом надо убрать, не порушив сильно
|
|
|
Записан
|
|
|
|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #8 : 24-10-2005 09:00 » |
|
ещё не знаешь чего хошь Не, ну эт конечно аргумент
|
|
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #9 : 24-10-2005 09:11 » |
|
ну ладно тебе, ты ж сам со мной мучился
|
|
|
Записан
|
|
|
|
acc15
Гость
|
|
« Ответ #10 : 24-10-2005 10:11 » |
|
Нет, уважаемые, вы меня не поняли.... мне надо иметь обычное окно, что-то вроде диалога только имеющее CView... я в MFC если честно баран )), (в ВинАпи шарю, но не помогает).. так что поправьте если шо не так...
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #11 : 24-10-2005 10:57 » |
|
acc15 , тогда создавай проект на основе диалога или - всё вышеназванное + надо скрыть тулбар и строку состояния а ещё проще - скажи, что хочешь сделать-то?
|
|
« Последнее редактирование: 24-10-2005 10:59 от Алексей1153 »
|
Записан
|
|
|
|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #12 : 24-10-2005 14:31 » |
|
Ок, - (только вот долгов у меня всё больше и больше набирается ) Значица так - не вникая в оооочень глубокие подробности - простейшая рамка на MFC делатся так: 1. Создаеём АБСОЛЮТНО пустой проект Win32 exe назовём его simple 2. Веключаем в опциях проекта поддержку MFC - использовать статическую библиотеку 3. добавляем в него 1 файл например simple.cpp #include "afxwin.h"
class CMainFrame : public CFrameWnd { public: CMainFrame(); };
CMainFrame::CMainFrame() { Create(NULL,"Simple1",WS_OVERLAPPEDWINDOW,rectDefault,NULL,NULL); }
class CSimpleApp : public CWinApp { public: CSimpleApp(); virtual BOOL InitInstance(); };
CSimpleApp::CSimpleApp(){}
BOOL CSimpleApp::InitInstance() { m_pMainWnd=new CMainFrame(); ASSERT(m_pMainWnd); m_pMainWnd->ShowWindow(SW_SHOW); m_pMainWnd->UpdateWindow(); return TRUE; };
CSimpleApp theApp;
Всё. Теперь про View - это неизменный объект Doc/View архитектуры с кучей функций. Предназначен для отображения данных объекта CDocument. И тд и тп Если необходимо просто использовать ф-ю OnPaint то лучше взять простое окно CWnd - дочернее в CMainFrame. Пример - завтра.
|
|
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
acc15
Гость
|
|
« Ответ #13 : 26-10-2005 22:08 » |
|
всё... разобрался... thx всем, чьи посты имеются в данной теме, в частности Джону... а ещё проще - скажи, что хочешь сделать-то? надо было сделать.... а я уже сделал... ))) если хочешь глянуть могу выслать... только там платка одна нужна... и драйверок под неё... без этого просто тупое бесполезное окно... кстати нету опции статической линковки MFC, как вылечить?
|
|
« Последнее редактирование: 26-10-2005 22:13 от acc15 »
|
Записан
|
|
|
|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #14 : 27-10-2005 09:05 » |
|
если хочешь глянуть могу выслать...
Глянул бы с удовольствием, да только времени мало - если считаешь, что есть чему и другим поучиться - можешь прям здесь выложить - прицепи к посту. Вообще-то у нас так принято - решение проблемы выкладывать - особенно если сам допёр. Тогда другие могут это тоже прочитать. кстати нету опции статической линковки MFC, как вылечить?
Хм странно... Вот скриншоты для 6ой (она у меня правда немецкая) и .NET 2003
|
|
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии
Offline
Пол:
Бодрый птах
|
|
« Ответ #15 : 27-10-2005 09:28 » |
|
в ВинАпи шарю, но не помогает).. так что поправьте если шо не так... не знаю, апи - это как раз всегда поможет, только дольше, МФСя надстройка.... Так что - .... странно как - то... Рзобрался и класненько
|
|
|
Записан
|
А птичку нашу прошу не обижать!!!
|
|
|
acc15
Гость
|
|
« Ответ #16 : 27-10-2005 12:26 » |
|
Хм странно... Вот скриншоты для 6ой (она у меня правда немецкая) и .NET 2003 вот, вот... у меня там вот что... скрин свой прилепил... а и ещё один оффтопный вопрос... где скачать MSDN полный... ??
|
tmk.JPG (31.97 Кб - загружено 1057 раз.)
|
« Последнее редактирование: 27-10-2005 12:33 от acc15 »
|
Записан
|
|
|
|
|