Вопрос № 104565: Здарствуйте у меня два вопроса(MFC):
1) как определить где находиться указатель мыши в клиентской области
(я находил так через GetCursorPos потом вычитал это расположения окна и получалось маленькое смещение. Думаю это что я не учитывал рамку...Вопрос № 104593: Доброго времени суток уважаемые эксперты, нужно написать рекурсивную функцию, которая переводит число из десятичной системы счисления в троичную. Спасибо....Вопрос № 104602: Уважаемые эксперты. Мне нужно построить линию алгоритмом Брезенхема. Я нашел исходник, но не
знаю в какой среде с++ и как его скомпилировать. Помогите пожалуйста. Код в приложении....
Вопрос № 104.565
Здарствуйте у меня два вопроса(MFC):
1) как определить где находиться указатель мыши в клиентской области
(я находил так через GetCursorPos потом вычитал это расположения окна и получалось маленькое смещение. Думаю это что я не учитывал рамку окна)
2) По поводу CListCtrl. что мыша была нажата на определеном SubItem или просто item??(стиль как поняли LVS_REPORT)
Отправлен: 07.10.2007, 14:50
Вопрос задал: CruelHity (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: mega
Здравствуйте, CruelHity!
POINT cursor;
GetCursorPos(&cursor);
ScreenToClient(Handle,&cursor);
после таких манипуляций, cursor будет указывать в координатах клиентской области окна Handle
Ответ отправил: mega (статус: 3-ий класс)
Ответ отправлен: 07.10.2007, 14:56 Оценка за ответ: 5 Комментарий оценки: Отлично,спасибо!! работает!!
Вопрос № 104.593
Доброго времени суток уважаемые эксперты, нужно написать рекурсивную функцию, которая переводит число из десятичной системы счисления в троичную. Спасибо.
Отвечает: Зелик Колабухин
Здравствуйте, Виктор Малейчик!
Из задания не понятно, что в каком виде должно входить число в функцию и в каком - выходить. У меня число в троичной системе пишется в десятичное число, так что как с числом с ним работать нельзя, но посмотреть, как выглядит заданное десятичное число в троичной системе счисления можно.
Думаю не сложно эту процедурку подправить согласно уточненному заданию.
Главное знать, что при переводе берутся остатки деления на 3 и выстраиваются справа на лево.
Приложение:
Ответ отправил: Зелик Колабухин (статус: 3-ий класс)
Ответ отправлен: 08.10.2007, 10:11 Оценка за ответ: 5 Комментарий оценки: Пробовал писать сам и получилось почти как у вас, но сомневался в оптимальности решения, но думаю более простого способа нет.
Отвечает: Sov
Здравствуйте, Виктор Малейчик!
#include <stdlib.h>
#include <stdio.h>
int main(int argc, char* argv[])
{
int chislo=1000;
printf("%d
",funk(chislo,0));
system("pause");
return 0;
}
Ответ отправил: Sov (статус: 7-ой класс)
Ответ отправлен: 08.10.2007, 10:14 Оценка за ответ: 5 Комментарий оценки: Пробовал писать сам, получил что-то похожее на ответ другого эксперта, из вашего же ответа узнал о С++ что-то новое:) Спасибо.
Вопрос № 104.602
Уважаемые эксперты. Мне нужно построить линию алгоритмом Брезенхема. Я нашел исходник, но не знаю в какой среде с++ и как его скомпилировать. Помогите пожалуйста. Код в приложении.
Отвечает: Гальцов Андрей Михаилович
Здравствуйте, Евлампий Семенович Шпак!
Держите работающую программу...на Turbo C++ 3.0...просто нет ничего другого сейчас под рукой...
Только там в коде измените координаты на те, которые Вам нужны...Та и оси можете поменять и подписис как Вам удобно...
и еще! не забудте поменять там путь к вашему BGI(ф-ция initgraph)...BGI находится в папке ТС...
#include <stdio.h>
#include <conio.h>
#include <graphics.h>
main ()
{
int gdriver=DETECT,i,y,x,gmode,errorcode,x1=170,y1=70,x2=60,y2=60,c;
float e ,pe;
float p,px,py;
initgraph(&gdriver, &gmode,"D:\TC\BGI");
errorcode=graphresult();
if (errorcode !=grOk)
{printf ("Graphics error");}
setbkcolor(15);
setcolor(RED);
settextstyle(GOTHIC_FONT,HORIZ_DIR,1);
outtextxy (250,10,"Laboratornaya rabota N 3");
outtextxy (250,30,"Gal'cov Andrey");
if (x1>x2 && y1>y2)
{
c=x1; x1=x2; x2=c;
c=y1; y1=y2; y2=c;
}
px=x2-x1;
py=y2-y1;
putpixel(x1,y1,13);
pe=py*1.0;
while(y1<y2)
{
e+=pe;
if (e>=px)
{ y1++; e=e-px; }
x1++;
putpixel(x1,y1,13);
}
setcolor(3);
outtextxy (120,100,"otrezok (170-70)-(60,60) po algoritmu Brezenhema. Turbo C");
setcolor(BLUE);
line (50,50,180,50);
line (50,50,50,130);
line (180,50,177,47);
line (180,50,177,53);
line (50,130,47,127);
line (50,130,53,127);
Ответ отправил: Гальцов Андрей Михаилович (статус: 7-ой класс)
Ответ отправлен: 07.10.2007, 21:03 Оценка за ответ: 5
Отвечает: kool
Здравствуйте, Евлампий Семенович Шпак!
Вы нашли не весь алгоритм.
В нем нет определений ф-ций distance(X0, Y0, X1, Y1),
swap (Y0,Y1) и т.д. Среда разработки возможно Билдер.
Ищите дальше!
Удачи!
--------- I am.
Ответ отправил: kool (статус: Практикант)
Ответ отправлен: 08.10.2007, 19:02