powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / WinAPI снова))))
10 сообщений из 10, страница 1 из 1
WinAPI снова))))
    #33433041
'FaTsO'
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот так вот я написал отрисовку графика на окне...)))
автор
LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wparam,LPARAM lparam)
{
HDC hDC = GetDC (hwnd);
HPEN Setka = CreatePen (PS_SOLID,1,RGB(205,205,205));
SelectObject (hDC, Setka);
HFONT hFont = CreateFont(-9, 0, 0, 0, 0,
FALSE, FALSE, FALSE, DEFAULT_CHARSET,
OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, ANTIALIASED_QUALITY,
DEFAULT_PITCH,
(LPCTSTR)"Arial");
SelectObject (hDC, hFont);
//вот тут рисую сетку)
for (int i = -20; i <= 20; i++)
{
MoveToEx(hDC, (i+20)*15, 0, NULL);
LineTo(hDC,(i+20)*15,600);
// а вот тут мне надо написать координату
не наю как преобразовать int в строку((( (знаю позор мне)
TextOut(hDC,(i+20)*15,615, i, 3);
//_______
MoveToEx(hDC, 0, (i+20)*15, NULL);
LineTo(hDC,600,(i+20)*15);
TextOut(hDC,615,(i+20)*15, str, 3);
}
HPEN Os = CreatePen (PS_SOLID,1,RGB(0,0,0));
SelectObject (hDC, Os);
MoveToEx(hDC,300,0, NULL);
LineTo(hDC,300,600);
MoveToEx(hDC,0,300, NULL);
LineTo(hDC,600,300);

HPEN Graf = CreatePen (PS_SOLID,1,RGB(0,0,0));
SelectObject (hDC, Graf);

А вот тут начинается самое интересное...начинает грузиться и зависает((( в чем поблема не могу понять(((
double j = -20.0;
while (j <= 20.0)
{
if (j == -20.0)
{
MoveToEx(hDC,300.0 + j*15.0, 300.0 - j*15.0, NULL);
}
else
{
LineTo(hDC,300.0 + j*15.0, 300.0 - j*15.0);
j = j + 0.1;
}

}
DeleteObject (Setka);
DeleteObject (Os);
DeleteObject (Graf);

ReleaseDC (hwnd, hDC);
if (Message == WM_DESTROY )
{
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd,Message,wparam,lparam);
}


Как преобразовать инт в чар что ли...
и почему зависает все ето дело(((

Заранее большое спасибо
...
Рейтинг: 0 / 0
WinAPI снова))))
    #33433203
'FaTsO'
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Забыл добавить что если
double j = -20.0;
поставить 0 то все прекрасно работает(((
...
Рейтинг: 0 / 0
WinAPI снова))))
    #33433215
ZrenBy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не по вопросу, но по субжу

Обрати внимание на следующее

MSDN
BOOL DeleteObject(

. . .

Remarks

Do not delete a drawing object (pen or brush) while it is still selected into a device context.
...
Рейтинг: 0 / 0
WinAPI снова))))
    #33433245
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
'FaTsO'Как преобразовать инт в чар что ли...
Учите матчасть... F1 Вам в помощь...
На самом деле это элементарно:

для единичного символа (число от 0 до 9)
0х30+<число>

из числа в строку:
itoa() - для числа типа int;
ltoa() - для числа типа long...

из строки в число:
atoi() - для числа типа int;
atol() - для числа типа long...
...
Рейтинг: 0 / 0
WinAPI снова))))
    #33433252
Фотография Землекоп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
'FaTsO'
// а вот тут мне надо написать координату
не наю как преобразовать int в строку((( (знаю позор мне)



Код: plaintext
1.
2.
char buff[ 128 ];
sprintf(buff, "%d", i);
TextOut(hDC,(i+ 20 )* 15 , 615 , buff,  3 );	

по поводу зависает. j не увеличивается, если равно -20

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
double j = - 20 . 0 ;
while (j <=  20 . 0 )
{
if (j == - 20 . 0 )
{
MoveToEx(hDC, 300 . 0  + j* 15 . 0 ,  300 . 0  - j* 15 . 0 , NULL);
}
else
{
LineTo(hDC, 300 . 0  + j* 15 . 0 ,  300 . 0  - j* 15 . 0 );
}
j = j +  0 . 1 ;
}         
...
Рейтинг: 0 / 0
WinAPI снова))))
    #33433850
Teem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MoveTo и LineTo - не могут принимать параметры типа double.
Это стандартные функции API. Тут никак не обойти, разве что написать свои функции. А зачем?
...
Рейтинг: 0 / 0
WinAPI снова))))
    #33434228
Teem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
'FaTsO'Вот так вот я написал отрисовку графика на окне...)))
[quot автор]

double j = -20.0;
while (j <= 20.0)
{
if (j == -20.0)
{
MoveToEx(hDC,300.0 + j*15.0, 300.0 - j*15.0, NULL);
}
else
{
LineTo(hDC,300.0 + j*15.0, 300.0 - j*15.0);
j = j + 0.1;
}

}


for(double j1=-20.0;j1<=20.0;j1=j1+0.1)
{
if (j1==-20.0)
MoveToEx(hDC,(int)(300.0 + j1*15.0),(int)(300.0 - j1*15.0),NULL);
LineTo(hDC,(int)(300.0 + j1*15.0), (int)(300.0 - j1*15.0));

}
Вот так вот не виснет. Хотя у меня вышло за границе окна. Нужно еще окно перерисовывать правильно - но это уже другой вопрос.
Да и преобразовать в строку при помощи функции itoa(,,,)
...
Рейтинг: 0 / 0
WinAPI снова))))
    #33434422
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор
LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wparam,LPARAM lparam)
{


Это чего, реально такая вот процедура окна ? На все сообщения пытается что-то рисовать ? Ну так еще бы не зависла, конечно, стек переполнится очень быстро.
...
Рейтинг: 0 / 0
WinAPI снова))))
    #33434429
alex_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да виснет то не поэтому :)

хотя, конечно, можно было бы и посимпатичнее написать :)
...
Рейтинг: 0 / 0
WinAPI снова))))
    #33439670
Borya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv, точный удар прямо в сердце.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / WinAPI снова))))
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]