| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Создание меню- как соединить с проектом? |
| Автор: Лёша 6.11.2002, 21:42 |
| Привет! Хочу сделать меню в программе ( BorlandC 5) Делаю так 1. Становлюсь Project Manager на файл .rc -> 2 раза клик->открывается окно 2. В окне правой кнопкой мышки -> New Resource->MENU название "MENU" 3. Дальше составляю его каким нужно Как теперь мне его вставить в прогу, т.к. почему-то после Building и Run его не видно, пустое окно .... #include <windows.h> LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ; #pragma argsused int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { static char szAppName[] = "Пример" ; HWND hwnd ; MSG msg ; WNDCLASSEX wndclass ; HMENU hMenu; wndclass.cbSize = sizeof (wndclass) ; wndclass.style = CS_HREDRAW | CS_VREDRAW ; wndclass.lpfnWndProc = WndProc ; wndclass.cbClsExtra = 0 ; wndclass.cbWndExtra = 0 ; wndclass.hInstance = hInstance ; wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ; // Èêîíêà wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ; //Êóðñîð wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ; wndclass.lpszMenuName = "MENU"; wndclass.lpszClassName = szAppName ; wndclass.hIconSm = LoadIcon (NULL, IDI_APPLICATION) ; RegisterClassEx (&wndclass) ; hwnd = CreateWindow (szAppName, "Пример", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL) ; ShowWindow (hwnd, iCmdShow) ; UpdateWindow (hwnd) ; while (GetMessage (&msg, NULL, 0, 0)) { TranslateMessage (&msg) ; DispatchMessage (&msg) ; } return msg.wParam ; } LRESULT CALLBACK WndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam) { HDC hdc ; PAINTSTRUCT ps ; RECT rect ; switch (iMsg) { case WM_PAINT : hdc = BeginPaint (hwnd, &ps) ; GetClientRect (hwnd, &rect) ; DrawText (hdc, "что-то написано ", -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER) ; EndPaint (hwnd, &ps) ; return 0 ; case WM_DESTROY : PostQuitMessage (0) ; return 0 ; } return DefWindowProc (hwnd, iMsg, wParam, lParam) ; } Вот текст меню produced by Borland Resource Workshop *****************************************************************************/ #define IDM_MENU1 1 IDM_MENU1 MENU { POPUP "&МЕНЮ" { MENUITEM "&Text1", 101 MENUITEM "&Text2", 104 MENUITEM SEPARATOR MENUITEM SEPARATOR MENUITEM "&Exit", 108 } POPUP "Help" { MENUITEM SEPARATOR MENUITEM "О программе", 903 } } Буду очень благодарен за ответ! До свидания. |
| Автор: Klin 6.11.2002, 22:08 |
| Так тебе просто нужно создать обыкновенное меню? |
| Автор: Finder Adventuries 7.11.2002, 15:56 |
| Klin , я уже ответил Лёше на вопрос (у него была просто ошибка в строке wndclass.lpszMenuName = "MENU") Сейчас меню появилось, всё нормально ; а как теперь сделать , чтобы после выбора конкретного подпункта меню вызывался , к примеру MessageBox? |
| Автор: Klin 7.11.2002, 18:37 |
| С чем именно, с какими кнопками? |
| Автор: Лёша 7.11.2002, 19:28 |
| 1) когда выб. пункт меню "Text1 " должно появл-ся MessageBox(0, "RERAD", "Text", MB_OK | MB_ICONEXCLAMATION); 2) когда выб. пункт меню "О программе" - MessageBox(0, "RERAD", "Copyright Ivanov ", MB_OK | MB_ICONEXCLAMATION); не знаю как сделать :-( Помогите пожалуйста! |
| Автор: Klin 8.11.2002, 04:28 | ||
Зачем MessageBox? Можно, чтобы форма появилась, а в ней содержимое!
Что именно? |
| Автор: Лёша 8.11.2002, 20:40 |
| Уже сделал (см. ниже) теперь на выбор пунктов меню реагирует нормально (кстати MessageBox мне нужен был только чтоб выяснить как это работает) Да, Klin, на самом деле мне нужно выводить в это же окно отрывок текста, но пока не могу :-(( может подскажете как это сделать ? LRESULT CALLBACK WndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam) { HDC hdc ; PAINTSTRUCT ps ; RECT rect ; switch(wParam) // { case 101:// text1 //MessageBox(0, "RERAD", "Lab1", MB_OK | MB_ICONEXCLAMATION); // <-Здесь // бы текст выводить ...??? // Функция DrawText (hdc, "..... ", -1, &rect, // DT_SINGLELINE | DT_CENTER | DT_VCENTER) ; // почему-то не выводится ....?? break; |
| Автор: Klin 8.11.2002, 22:31 | ||
Куда именно? |
| Автор: Лёша 9.11.2002, 00:40 |
| Куда выводить - всё равно, (можно в центр создаваемого окна)... |
| Автор: Klin 9.11.2002, 01:11 |
| Нет, я имею ввиду во что? |
| Автор: Finder Adventuries 9.11.2002, 21:57 |
| В DrawText (hdc, "ТЕКСТ.... ", -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER) ; |
| Автор: Klin 10.11.2002, 03:51 |
| Слушай кинь мне на мыло этот проект, я с ним разберусь. klin-2002@narod.ru |
| Автор: Finder Adventuries 10.11.2002, 05:49 |
| Klin , я послал , но почта вернулась с сообщением Remote host said: 550 5.7.1 Policy analysis reported: Spam source. Nonexistent administrators email (XELENA) (2002/10/29) rcpt=<klin-2002@narod.ru> я сделал тему , про TextOut , может это поможет ... |
| Автор: Klin 10.11.2002, 18:55 |
| Понятно, разберусь. |