Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Меню в Visual C++

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
Proger



Зарегистрирован: 18.08.2005
Сообщения: 16

СообщениеДобавлено: Чт Сен 01 2005 15:38    Заголовок сообщения: Меню в Visual C++ Ответить с цитатой

У меня при роботе в компиляторе Visual C++ .NET возникает следуюшая проблема:

Я хочу зделать меню.
Завожу файл RC.rc, добавляю ресурс, меню .
Создаю в меню две возможности File -> Exit и Help -> About;
Им присваиваю ID добавляю меню в прогу. Все нормально меню есть но действий никоких не выполняет.

Потом дописую в оброботчике событий :
case ID_MENU_FILE:
{
//lalala;
}break;

case ID_HELP_ABOUT :
{
//lalala;
}break;

Потом компилирую но результат тот-же как и в предидушем варианте.

Кто знает в чем проблема (если что пишу под API) помогите.
Зарание спасибо.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Rasta



Зарегистрирован: 01.08.2005
Сообщения: 35

СообщениеДобавлено: Пн Ноя 28 2005 16:54    Заголовок сообщения: Ответить с цитатой

Там не надо ничего добавлять руками!!! Никакой код писать не надо. Щелкаешь на весь свой диалог и в меню properties включаешь свое меню => меню добавилось, добавляешь там все кнопки, и правой кнопкой щелкаешь на кнопку и добавляешь event handler и там пишешь свой код.
Получится что-то такое:
void CVideoTestDlg::OnFileExit()
{
// TODO: Add your command handler code here
OnBnClickedCancel();
}

void CVideoTestDlg::OnPlayPausevideo()
{
// TODO: Add your command handler code here
OnBnClickedPause();
}

void CVideoTestDlg::OnVideoStopvideo()
{
// TODO: Add your command handler code here
OnBnClickedStop();
}

void CVideoTestDlg::OnVideoMuteaudio()
{
// TODO: Add your command handler code here
OnBnClickedMute();
}
void CVideoTestDlg::OnMenu()
{
// TODO: Add your command handler code here
OnBnClickedOpenFile();
}

Если что, спрашивай!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Feniksa



Зарегистрирован: 28.08.2005
Сообщения: 122
Откуда: Чернобыль

СообщениеДобавлено: Ср Ноя 30 2005 14:44    Заголовок сообщения: Ответить с цитатой

Привожу полный исходник шкурки программы под WINAPI (извини, но под DIALUP у меня времени просто редактировать не было)
// Просто исходник программы
// подрубаем библиотеки
#include <windows.h>
#include <stdio.h>
#include "resource.h" // Ето файл, где храняться твои ID меню, иконок , // курсоров

HINSTANCE* hGlobalInstance; // Глобальныый указателть на // индентификатор программы

int RegClass (LPCTSTR);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpcmdline, int nCmdShow)
{
hGlobalInstance=&hInstance;
MSG Msg;
HWND hWnd;

RegClass("WndClassEx");
hWnd=CreateWindowEx(NULL,"WndClassEx","Feniks Programm",WS_VISIBLE | WS_OVERLAPPEDWINDOW,0,0,200,200,0,0,hInstance,NULL);

if(!hWnd)
{
MessageBox(NULL,"Ошибка приложения. Невозможно создать hWnd","Error",MB_OK | MB_ICONWARNING);
return 1;
}

ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);

while (GetMessage(&Msg,0,0,0))
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
return((int)Msg.wParam);
}

int RegClass(LPCTSTR Name)
{
WNDCLASSEX WndClass;

WndClass.cbSize=sizeof(WndClass);
WndClass.style= CS_VREDRAW | CS_HREDRAW | CS_OWNDC ;
WndClass.lpfnWndProc=WndProc;
WndClass.cbClsExtra=0;
WndClass.cbWndExtra=0;
WndClass.hInstance=*hGlobalInstance;
// Подключаем иконки, меню, курсоры. Обрати внимание на //использование макроса MAKEINTRESOURCE();
WndClass.hIcon=LoadIcon(*hGlobalInstance,
WndClass.hIconSm=LoadIcon(*hGlobalInstance,MAKEINTRESOURCE(IDI_ICON1));
WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);
WndClass.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);
WndClass.lpszMenuName=MAKEINTRESOURCE(IDR_MENU1);
WndClass.lpszClassName=Name;

return (RegisterClassEx(&WndClass)!=0);
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT Message, WPARAM wParam, LPARAM lParam)
{
PAINTSTRUCT PaintStruct;
HDC hDC;
RECT Rect;
char bufer[50];

switch(Message)
{
case WM_CREATE:
{
return 0;
}
case WM_PAINT:
{
InvalidateRect(hWnd,NULL,0);
hDC=BeginPaint(hWnd,&PaintStruct);
EndPaint(hWnd,&PaintStruct);
return 0;
}
// А вот и обработчик твоих клацаний по меню
case WM_COMMAND:
{
switch(LOWORD(wParam))
{
case ID_GAME_EXIT:
{
PostMessage(hWnd,WM_CLOSE,0,0);
break;
}
case ID_HELP_ABOUT:
{
sprintf(bufer,"Made by Feniks");
hDC=GetDC(hWnd);
GetClientRect(hWnd,&Rect);
TextOut(hDC,(int)Rect.right-150,(int)Rect.bottom-20,bufer,(int)strlen(bufer));
ReleaseDC(hWnd,hDC);
break;
}
default:break;
}
return 0;
}
// Конец обработчика
case WM_CLOSE:
{
if (MessageBox(hWnd,"Do you whant to quit?","Quit", MB_YESNO | MB_ICONINFORMATION)==IDYES)
{
return DefWindowProc(hWnd,Message,wParam,lParam);
}
else
{
return 0;
}
}
case WM_DESTROY:
{
PostQuitMessage(0);
return 0;
}
}
return (DefWindowProc(hWnd,Message,wParam,lParam));
}

Вот содержание файла Resource.h
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by RC.rc
//
#define IDR_MENU1 104
#define IDI_ICON1 200
#define ID_GAME_EXIT 40001
#define ID_HELP_ABOUT 40002

// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 105
#define _APS_NEXT_COMMAND_VALUE 40003
#define _APS_NEXT_CONTROL_VALUE 1001
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...