• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

О Visual C++ 2005 Express Edition

  • Автор темы 4elove4ek
  • Дата начала
Статус
Закрыто для дальнейших ответов.
4

4elove4ek

Помогите немного разобратся в Visual C++:
когда я например добавляю МЕНЮ и пишу его идентификатор, то как мне узнать его номер?
на сайте firststeps.ru идентификатор меню 40001
#define ID_FILE_EXIT 40001;
я его записал таким, но меню не активное получилось... потом что-то я поколдовал и мне выдал ошибку, я на неё нажал и он мне открыл какой-то файл где было описано:
.....
#define ID_FILE_EXIT 40002;
.....
я изменил 1 на 2 и заработало.
Вопрос остаётся в силе, как узнать Номер Идентификатора?
 
4

4elove4ek

А ещё подскажите каким классом можно узнать положение курсора? Т.е. координаты х и у.
 
G

GRLEX

Координаты ХИУ можно узнать функцией GetCursorPos, наскоко помню - передаешь хендлер окна, которое тебя интересует, и получаешь то, шо надо.
 
G

Guest

Пардон, что вмешиваюсь в высокоученую дискуссию, но чего в VS C++ 2005 учить? C++ - стандартный, по крайней мере, если флажок ANSI стоит, WinAPI тот же что был и раньше. Кстати, IMHO, WinAPI учить бесполезно, слишком много. Для этого есть кнопка F1 и MSDN. А знать надо концепции, принципы. Об этом и правда хороших книжек нету, приходится обычно разбираться по мере возникновения потребности. :(
 
4

4elove4ek

<!--QuoteBegin-GRLEX+7:05:2007, 09:25 -->
<span class="vbquote">(GRLEX @ 7:05:2007, 09:25 )</span><!--QuoteEBegin-->Координаты ХИУ можно узнать функцией GetCursorPos, наскоко помню - передаешь хендлер окна, которое тебя интересует, и получаешь то, шо надо.
[snapback]65001" rel="nofollow" target="_blank[/snapback]​
[/quote]
Она возвращает переменную класса CPoint. Т.е. когда нам функция щелчка мыши возвращает значение типа: (CPoint Cp), то как нам из него вытащить координаты х и у?
 
E

European

<!--QuoteBegin-4elove4ek+7:05:2007, 16:05 -->
<span class="vbquote">(4elove4ek @ 7:05:2007, 16:05 )</span><!--QuoteEBegin-->как нам из него вытащить координаты х и у?
[snapback]65073" rel="nofollow" target="_blank[/snapback]​
[/quote]
А посмотреть какие у этого класса методы и члены-данные слабо?
Код:
CPoint Point;
Point.x // X
Point.y // Y
 
4

4elove4ek

Оки. Спасибо получилось :)
Добавились ещё вопросы, помогите пожалуйста!!!!
Не понимаю где вы это находили... у меня 3 самоучителя и ни в одном этого нету!

1. Есть ли какие-либо функции чтения графических изображений? Например .bmp? И хоть бы небольшой пример с их работой. Т.е. у меня в файле машинка например нарисована. Хочу чтобы кликая на экране где-то эта машинка рисовалась туда.

2. При работе с мышкой возникли трудности. В Функции OnLButtonDown есть вызов другой функции которая в текущие координаты мышки рисует крест, с помощью MoveTo LineTo. При первом нажатии клавиши - крест появляется. но при последующих - нет! Нашёл одну функцию Invalidate(TRUE); которая перерисовывает экран. При добавлении её в начало функции OnLButtonDown - предыдущие кресты исчезают - но новые зато появляются! Как сделать чтобы всё работало стабильно без перерисовывания экрана?

И ещё:
3. Можно ли как-либо снимать координаты курсора когда нажат и зажат левая кнопка мыши для примера? Напримере той машинки, т.е. я нажал на левую кнопку и передвигаю ею по экрану и соответсвенно машинка должна рисоватся во все положения мыши.

4. Как можно записать в переменную код нажатой клавиши?

5. Нужна функция аналог паскалевской delay(). Да да.. та которая устанавливает задержку в миллисекундах.
 
E

European

1. Использовать класс CBitmap
2. Перерисовывать только ту часть экрана, в которой было нарисовано прошлое изображение при помощи функции InvalidateRect
3. Для получения координат мыши при перемещении обрабатывать событие WM_MOUSEMOVE. В MFC необходимо перегрузить метод OnMouseMove класса окна.
4. Обычным присваиванием с явным или неявным приведением типов
5. Sleep. Я так понимаю, что поток у тебя пока один (хотя, возможно, ты об этом и не знаешь) и ты можешь ее смело использовать
 
4

4elove4ek

Спасибо!!
1. Ок. Пробую..
2. А для чего необходимо вообще перерисовывать те или иные части экране перед новыми зарисовками?
3. Блин.. а я ещё не умею обрабатывать события.. Можно маааленький пример?
4. Не понял как делать... Работать надо с функцией
void CMainWnd::OnKeyDown(UINT, UINT, UINT)
{
// но здесь что писать?
}
5. Ок. Пробую.
 
E

European

2. Для того чтобы обновить окно :unsure: Если тебе не нужно обновлять, то и не перерисовывай :D Хотя может я не понял вопроса
3.
4. А что ты хочешь сделать?
 
4

4elove4ek

<!--QuoteBegin-European+8:05:2007, 12:04 -->
<span class="vbquote">(European @ 8:05:2007, 12:04 )</span><!--QuoteEBegin-->1. Использовать класс CBitmap
[snapback]65195" rel="nofollow" target="_blank[/snapback]​
[/quote]
Я открываю изображение. А как дальше его вывести на экран?

Код:
	char cpFileName[]="D:\\FFX.bmp";
CBitmap mypic;
mypic.LoadBitmap(cpFileName);
2. Я просто очень долго писал проги в Паскале. И я привык что там рисуешь и рисуешь ничего не надо обновлять. А тут я нарисовал крест, а при следующем нажатии клавиши на мышку он уже не хочет рисоватся ( в другой области ) пока я не обновлю экран.. Странно всё это :unsure: Но это не главное. Как я подумал я буду использовать полное обновление экрана.
3. Но там всё в OpenGl...?
4. Мне надо чтобы в результате в переменной какой-либо хранился код нажатой клавиши...
 
E

European

1. [snapback]65212" rel="nofollow" target="_blank[/snapback]</div>[/quote]
Черт, не заметил :unsure: Тогда
Вообще проштудируй уроки по Visual C++ на www.firststeps.ru - вопросов будет явно поменьше
 
G

GRLEX

Такой тупой вопрос, аж самому стыдно :D
Как в 2005 VS из кода сделать кнопку недоступной (доступной)?
(enable /disable аороче)
Блин, у нее такое свойство есть в окне свойств, а из кода - хоть убей не найду!! :unsure:
нид хелллп.
 
E

European

<!--QuoteBegin-GRLEX+8:05:2007, 16:25 -->
<span class="vbquote">(GRLEX @ 8:05:2007, 16:25 )</span><!--QuoteEBegin-->Такой тупой вопрос, аж самому стыдно
[snapback]65238" rel="nofollow" target="_blank[/snapback]​
[/quote]
:unsure::):D EnableWindow
 
4

4elove4ek

<!--QuoteBegin-European+8:05:2007, 13:59 -->
<span class="vbquote">(European @ 8:05:2007, 13:59 )</span><!--QuoteEBegin-->Вообще проштудируй уроки по Visual C++ на www.firststeps.ru - вопросов будет явно поменьше
[snapback]65214" rel="nofollow" target="_blank[/snapback]​
[/quote]
Я их первым делом прочитал... первые 20. Остальные - тяжеловато и не в тему. А курсовая не ждёт :D
Про мышку - читаю. Про рисунки тоже.

На счёт клавиатуры ещё так и не ясно :unsure:
А мне надо чтобы в результате работы функции в переменной какой-либо хранился код нажатой клавиши...
 
E

European

<!--QuoteBegin-4elove4ek+8:05:2007, 17:05 -->
<span class="vbquote">(4elove4ek @ 8:05:2007, 17:05 )</span><!--QuoteEBegin-->А мне надо чтобы в результате работы функции в переменной какой-либо хранился код нажатой клавиши...
[snapback]65244" rel="nofollow" target="_blank[/snapback]​
[/quote]
Код:
UINT CharCode;  // где-то ранее в программе
... ... ...

void CMainWnd::OnKeyDown( UINT Char, UINT RepCnt, UINT Flags ) 
{
CharCode = Char;
}
 
G

GRLEX

:unsure: :D Спасибо.
Самое обидное, шо я уже делал это и не раз!!!
Напроч отбило мозги!! :D
 
4

4elove4ek

European, огромное спасибо. Почти всё что хотел - зделал.
Остался только вопрос с загрузкой изображения. Там, по ссылке на firststeps.ru идёт описание с того что открывает новый проект и MFC AppWizzard и там есть класс CTestBMPView. Но в моём проекте его нету, как мне добавить возможность использования этого класса? Или есть способ попроще?
 
B

Beast_cooL

Такой вопрос:
при создании самой простой программки (Hello), я включаю iostream, а когда он при компиляции видит cout - говорит что это неизвестный идентификатор. В чем дело?
P.S.: Прошу прощения, если пост немного не в той ветке
 
4

4elove4ek

Почему не в том месте. Всё правильно.. Если код в visual 2005 - то всё правильно. там нету уже как-такового iostream... Можно пользоватся printf(); Хотя могу ошибатся. Сам столкнулся с этой проблемой и мне на каком-то форуме рассказали...


Вопрос по моему проекту ещё один ( с рисунком так и не разобрался кстати ):
У меня есть метод OnLButtonDown() который прорисовывет крутящийся крест. Как мне сделать чтобы когда пользователь нажал на кнопку мыши левую и держал мышь в одном месте - этот крестик крутился бы. Ну а при движении я уже сделал этот крутящийся крест в OnMouseMove....

А есть аналог функции паскалевской Random(). Чтобы число случайное какое-либо записывалось в переменную?
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!