Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Ввод данных  (Прочитано 16716 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
WS_SAWER
Гость
« : 25-11-2009 17:25 » new

Сделал программуу, которая рисует график. К ней надо приделать ввод данных так чтобы данные вводились во время работы программы, желательно в другом окне или меню, или вообще хоть как-то.

Код:
#include <windows.h>
#include <iostream.h>
#include <math.h>
#define ID_FIRSTCHILD 100
#define ID_SECONDCHILD 101
#define ID_THIRDCHILD 102
#define Pi 3.14159265
//---------------------------------------------------------------------------
//Dannie
//---------------------------------------------------------------------------

double shag=1;
double xx=2;
double x1=-5;
double x2=5;
double x3=x2-x1;
double kolshag=x3/shag;
int mnogitel=1;
double udef;
bool flag=true;

//---------------------------------------------------------------------------
//часть 1 - окно
//---------------------------------------------------------------------------

LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
void DrawDiagram(HWND hWnd, HDC hdc, int offset);

//---------------------------------------------------------------------------
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
//---------------------------------------------------------------------------
HWND hWnd;
MSG msg;
WNDCLASS wcex;
//---------------------------------------------------------------------------
//wcex.cbSize = sizeof(WNDCLASS);  //размер структуры
wcex.style = CS_HREDRAW | CS_VREDRAW; //задаем стиль окна, подробнее смотрите в MSDN
wcex.lpfnWndProc = (WNDPROC)WindowProcedure;  //указываем оконную процедуру
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;  //указываем дескриптор приложениея
wcex.hIcon = LoadIcon(NULL, IDI_APPLICATION);  //устанавливаем иконку приложения по умолчанию
wcex.hCursor = LoadCursor(NULL, IDC_ARROW); //устанавливаем курсор по умолчанию
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); //задаем цвет окна
wcex.lpszMenuName = NULL;     //меню окна - нет меню
wcex.lpszClassName = szWindowClass;  //указываем класс окна
//wcex.hIconSm = LoadIcon(NULL, IDI_APPLICATION); //загружаем иконку окна
RegisterClass ( &wcex );                          // регистрируем класс окна
NULL);

hWnd = CreateWindow(
              szWindowClass,        // имя класса окна
              szTitle,              // заголовок окна
              WS_OVERLAPPEDWINDOW,  // стиль окна
              CW_USEDEFAULT,        // начальная Х-координата окна (или введите значение)
              CW_USEDEFAULT,        // начальная У-координата окна (или введите значение)
              CW_USEDEFAULT,        // начальный горизонтальный размер(или введите значение)
              CW_USEDEFAULT,        // начальный вертикальный размер  (или введите значение)
              NULL,                 // дескриптор родительского окна
              NULL,
              hInstance,            // дескриптор экземпляра программы
              NULL);                // параметры создания
if(!hWnd)
{

  MessageBox(hWnd, "Ошибка создания окна", "Ошибка", IDI_ERROR || MB_OK); //в случае чего - говорим об ошибке
return 1;
}

RECT rcClient;
//---------------------------------------------------------------------------
ShowWindow( hWnd , nCmdShow );  // отобразить окно на экране
UpdateWindow( hWnd );           // вывести на экран рабочую область окна.
//---------------------------------------------------------------------------
while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
//---------------------------------------------------------------------------
LRESULT CALLBACK WindowProcedure (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
        PAINTSTRUCT ps;  //структура для рисования
HDC hdc;  //дескриптор устройства (монитор)
RECT rect;  //область, где рисовать
static int offset = 0;  //смещение для синусоиды
SetTimer(hWnd, 1, 3000, NULL);  //устанавливаем таймер обновления рисунка
switch (message)  //обрабатываем сообщения ос
{

        case WM_TIMER: // если сообщение - сработал таймер, то...
        GetClientRect(hWnd, &rect);  //получаем рабочую область
       InvalidateRect(hWnd, &rect, true); //объявляем ее недействительной
         UpdateWindow(hWnd); //перерисовываем окно
        return 0;
       case WM_PAINT:   // если сообщение - перерисовать окно, то...
         hdc = BeginPaint(hWnd, &ps); //получаем дескриптор устройства
        DrawDiagram(hWnd, hdc, offset); //рисуем синусоиду
        EndPaint(hWnd, &ps); //заканчиваем рисование
       return 0;
         case WM_DESTROY: // если сообщение - уничтожить окно, то...
         PostQuitMessage(0); //посылаем "прощальное" сообщение операционке
                         return 0;
       default:
       return DefWindowProc(hWnd, message, wParam, lParam); //обработка всех других сообщений
           }
return 0;
}
//---------------------------------------------------------------------------
//часть2
//---------------------------------------------------------------------------

void DrawDiagram(HWND hWnd, HDC hdc, int offset)
{
RECT rect;
GetClientRect(hWnd, &rect);
GetLastError;
const int xVE = rect.right - rect.left;
const int yVE = rect.bottom - rect.top;
//double nPixPerVolt = yVE / 1000.0;    //у е
//double nPixPerMs = xVE / 680.0;       //у е
//---------------------------------------------------------------------------
int xmin=0;
int xmax=xVE+56;
int ymin=-yVE/2;
int ymax=yVE/2;

double u;
double xd=x3/xmax;
u=xx * cos(xx*xd /* radianPerx * */+xx*x1);
if(!udef)
        udef=u;
double yd=(ymax-ymin)/2;
//*yd;

//---------------------------------------------------------------------------
SetMapMode(hdc, MM_ISOTROPIC);
SetWindowExtEx(hdc, xVE+200, yVE+100, NULL);
SetViewportExtEx(hdc, xVE+56, -yVE, NULL);  //ctnrf
SetViewportOrgEx(hdc, 40.0, yVE/2, NULL);
//---------------------------------------------------------------------------
char* xMark[]={"1234", "1234", "1234", "1234", "1234","1234", "1234", "1234", "1234", "1234","1234", "1234", "1234", "1234", "1234","1234", "1234", "1234", "1234", "1234","1234", "1234", "1234", "1234", "1234"};
char* yMark[] = {"  -5 ","  -4 ", "  -3 ", "  -2 ", "  -1 ", "    0", "    1", "    2", "    3", "    4","    5","    6"};

double perem3=0,perem2=0;
int perem1=0, perem=0;
double x1def=x1;

if(flag)
        while(x1def<=x2)
        {
        sprintf(xMark[perem],"%f",x1def);
        perem++;
        x1def=x1def+shag;
        flag=false;
        }
//---------------------------------------------------------------------------
perem2=shag*mnogitel/5;
perem3=udef-shag*mnogitel;

while(perem1<=10)
{
sprintf(yMark[perem1],"%f",perem3);
perem1++;
perem3+=perem2;
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
HPEN hPen1 = CreatePen(PS_SOLID, 1, RGB(200, 200, 200));
SelectObject(hdc, hPen1);

int x=xmin, xshag=xmax/kolshag;
int y=ymin, yshag=(ymax-ymin)/10;

for(int i = 0; i <= kolshag; ++i)
{
        TextOut(hdc, xmin-40, y+8, yMark[i], sizeof(yMark[i]));
        TextOut(hdc, x+4, -8, xMark[i], sizeof(xMark[i]));
        MoveToEx(hdc, x, ymin, NULL); //перемещаемся в заданную точку
LineTo(hdc, x, ymax);         //рисуем туда линию
        MoveToEx(hdc, xmin, y, NULL); //перемещаемся в заданную точку
LineTo(hdc, xmax, y);         //рисуем туда линию
        x=x+xshag;
        y=y+yshag;
}
//---------------------------------------------------------------------------
HPEN hPen0 = CreatePen(PS_SOLID, 3, RGB(0, 160, 0));
HPEN hOldPen = (HPEN)SelectObject(hdc, hPen0);
        MoveToEx(hdc, xmin, ymin, NULL); //перемещаемся в заданную точку
LineTo(hdc, xmin, ymax);         //рисуем туда линию
        MoveToEx(hdc, xmin, 0, NULL); //перемещаемся в заданную точку
LineTo(hdc, xmax, 0);         //рисуем туда линию
//---------------------------------------------------------------------------
//формула и вывод
//---------------------------------------------------------------------------
HPEN hPen2 = CreatePen(PS_SOLID, 3, RGB(200, 50, 50));
SelectObject(hdc, hPen2);

int tStep = 1; //задаем шаг графика
//double radianPerx = 180 / Pi   ;  //вычисляем угол радиан   (1-udef)/(shag*mnogitel)
int h=0;
double uravnoves=(shag*mnogitel);
MoveToEx(hdc, 0, ((u-udef)/ uravnoves )* yd, NULL); //вычисляем начальную точку
while( h <= xmax)   //до достижения максимального значения х графика
{
        h += tStep;
u = (xx * cos(xx*h*xd /* radianPerx * */+xx*x1)); //вычисляем косинус
LineTo(hdc, h , ((u-udef)/ uravnoves )* yd+0 ); //рисуем линию
        if(u<(udef-shag*mnogitel)||(u>udef+shag*mnogitel))
                {
                if(u>udef+shag*mnogitel)
                        udef+=shag*mnogitel;
                else
                        udef-=shag*mnogitel+0;
                mnogitel*=2;
                h=xmax+1;
                }
}
}
//---------------------------------------------------------------------------

Нужен ввод shag, x1, x2, xx
Подскажите, плз, как делать. Хотяб какими функциями или как.
Пробовал инпатбоксом, нормально он не работал, либо не было возможности передать значение функции.
Пробовал меню, дочерние окна, другие окна, ничего не получилось(
« Последнее редактирование: 29-11-2009 08:16 от Sel » Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #1 : 25-11-2009 17:55 » 

Код:
Пробовал меню, дочерние окна, другие окна, ничего не получилось(
покажи, как пробовал. Именно  дочерние окна, а именно EDIT
Записан

WS_SAWER
Гость
« Ответ #2 : 25-11-2009 18:58 » 

Как тогда делал показать не могу, но вот то что сейчас получилось
Код:
#include <windows.h>
#include <iostream.h>
#include <math.h>
#define ID_FIRSTCHILD 100
#define ID_SECONDCHILD 101
#define ID_THIRDCHILD 102
#define Pi 3.14159265
//---------------------------------------------------------------------------
//Dannie
BOOL CALLBACK EnumChildProc(hwndChild, lParam)
HWND hwndChild;
LPARAM lParam;
{
LPRECT rcParent;
int i, idChild;
// Âîññòàíîâëåíèå èäåíòèôèêàòîðà äî÷åðíåãî îêíà.
// Èñïîëüçîâàòü åãî äëÿ óñòàíîâêè äî÷åðíåãî îêíà.
idChild = GetWindowLong(hwndChild, GWL_ID);
if (idChild == ID_FIRSTCHILD)
i = 0;
else if (idChild == ID_SECONDCHILD)
i = 1;
else
i = 2;
// Ðàçìåð è ïîçèöèÿ äî÷åðíåãî îêíà.
rcParent = (LPRECT) lParam;
MoveWindow(hwndChild, (rcParent->right / 3) * i,0, rcParent->right / 3,rcParent->bottom,TRUE);
// Óäîñòîâåðèòåñü, ÷òî äî÷åðíåå îêíî âèäèìî
ShowWindow(hwndChild, SW_SHOW);
return TRUE;
}
//---------------------------------------------------------------------------

double shag=1;
double xx=2;
double x1=-5;
double x2=5;
double x3=x2-x1;
double kolshag=x3/shag;
int mnogitel=1;
double udef;
bool flag=true;
char charsym;

//---------------------------------------------------------------------------

//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
//îñíîâíàÿ ÷àñòü ïðîãðàììû
//÷àñòü 1 - îêíî
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
void DrawDiagram(HWND hWnd, HDC hdc, int offset);

//---------------------------------------------------------------------------
TCHAR szTitle[] = "×åðòèëêà";
TCHAR szWindowClass[] = "chert";
//---------------------------------------------------------------------------
//function CreateMenu( hMenu, SubMenu: HMENU; Cap: PChar; _uID, _wID: UINT; Sep: boolean ): boolean;
// hMenu - ìåíþ, â êîòîðîå äîáàâëÿåòñÿ íîâûé ïóíêò
// SubMenu - ñâÿçàííîå ñ ýòèì ïóíêòîì ïîäìåíþ (åñëè îíî åñòü)
// Cap - çàãîëîâîê íîâîãî ïóíêòà
// _uID - âñåãäà 0 (ýòîò ïàðàìåòð èñïîëüçóåòñÿ â ôóíêöèè InsertMenuItem)
// _wID - èäåíòèôèêàòîð, ñâÿçàííûé ñ äàííûì ïóíêòîì
// Sep - ïðèçíàê, ÿâëÿåòñÿ ëè íîâûé ïóíêò ðàçäåëèòåëåì èëè íåò
//var
//  Mi: MENUITEMINFO; //ýòó ñòðóêòóðó íóæíî èíèöèàëèçèðîâàòü äëÿ ñîçäàíèÿ ìåíþ

//---------------------------------------------------------------------------
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
//---------------------------------------------------------------------------

HWND hWnd;
MSG msg;
WNDCLASS wcex;
//---------------------------------------------------------------------------
//wcex.cbSize = sizeof(WNDCLASS);  //ðàçìåð ñòðóêòóðû
wcex.style = CS_HREDRAW | CS_VREDRAW; //çàäàåì ñòèëü îêíà, ïîäðîáíåå ñìîòðèòå â MSDN
wcex.lpfnWndProc = (WNDPROC)WindowProcedure;  //óêàçûâàåì îêîííóþ ïðîöåäóðó
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;  //óêàçûâàåì äåñêðèïòîð ïðèëîæåíèåÿ
wcex.hIcon = LoadIcon(NULL, IDI_APPLICATION);  //óñòàíàâëèâàåì èêîíêó ïðèëîæåíèÿ ïî óìîë÷àíèþ
wcex.hCursor = LoadCursor(NULL, IDC_ARROW); //óñòàíàâëèâàåì êóðñîð ïî óìîë÷àíèþ
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); //çàäàåì öâåò îêíà
wcex.lpszMenuName = NULL;     //ìåíþ îêíà - íåò ìåíþ
wcex.lpszClassName = szWindowClass;  //óêàçûâàåì êëàññ îêíà
//wcex.hIconSm = LoadIcon(NULL, IDI_APPLICATION); //çàãðóæàåì èêîíêó îêíà
RegisterClass ( &wcex );                          // ðåãèñòðèðóåì êëàññ îêíà
//---------------------------------------------------------------------------

//---------------------------------------------------------------------------
//hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
hWnd = CreateWindow(
              szWindowClass,        // èìÿ êëàññà îêíà
              szTitle,              // çàãîëîâîê îêíà
              WS_OVERLAPPEDWINDOW,  // ñòèëü îêíà
              CW_USEDEFAULT,        // íà÷àëüíàÿ Õ-êîîðäèíàòà îêíà (èëè ââåäèòå çíà÷åíèå)
              CW_USEDEFAULT,        // íà÷àëüíàÿ Ó-êîîðäèíàòà îêíà (èëè ââåäèòå çíà÷åíèå)
              CW_USEDEFAULT,        // íà÷àëüíûé ãîðèçîíòàëüíûé ðàçìåð(èëè ââåäèòå çíà÷åíèå)
              CW_USEDEFAULT,        // íà÷àëüíûé âåðòèêàëüíûé ðàçìåð  (èëè ââåäèòå çíà÷åíèå)
              NULL,                 // äåñêðèïòîð ðîäèòåëüñêîãî îêíà
              NULL,
//              MENUITEMINFO,         // äåñêðèïòîð ìåíþ îêíà - NULL - ìåíþ ïî óìîë÷àíèþ
              hInstance,            // äåñêðèïòîð ýêçåìïëÿðà ïðîãðàììû
              NULL);                // ïàðàìåòðû ñîçäàíèÿ
for (int i = 0; i < 3; i++)
              CreateWindowEx(0,"ChildWClass",(LPCTSTR) NULL,WS_CHILD | WS_BORDER,
               0,0,0,0,hWnd,(HMENU) (int) (ID_FIRSTCHILD + i),hInstance,NULL);
              return 0;
if(!hWnd)
{

  MessageBox(hWnd, "Îøèáêà ñîçäàíèÿ îêíà", "Îøèáêà", IDI_ERROR || MB_OK); //â ñëó÷àå ÷åãî - ãîâîðèì îá îøèáêå
return 1;
}

RECT rcClient;
//---------------------------------------------------------------------------

//---------------------------------------------------------------------------
ShowWindow( hWnd , nCmdShow );  // îòîáðàçèòü îêíî íà ýêðàíå
UpdateWindow( hWnd );           // âûâåñòè íà ýêðàí ðàáî÷óþ îáëàñòü îêíà.
//---------------------------------------------------------------------------
while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}

return msg.wParam;
}

//---------------------------------------------------------------------------

LRESULT CALLBACK WindowProcedure (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
        PAINTSTRUCT ps;  //ñòðóêòóðà äëÿ ðèñîâàíèÿ
HDC hdc;  //äåñêðèïòîð óñòðîéñòâà (ìîíèòîð)
RECT rect;  //îáëàñòü, ãäå ðèñîâàòü
static int offset = 0;  //ñìåùåíèå äëÿ ñèíóñîèäû
SetTimer(hWnd, 1, 3000, NULL);  //óñòàíàâëèâàåì òàéìåð îáíîâëåíèÿ ðèñóíêà
switch (message)  //îáðàáàòûâàåì ñîîáùåíèÿ îñ
{
                        case WM_SIZE: // èçìåíåíèå ðàçìåðîâ îñíîâíîãî îêíà
                        GetClientRect(hWnd, &rect);
                        EnumChildWindows(hWnd, EnumChildProc,(LPARAM) &rect);
                        break;
        case WM_TIMER: // åñëè ñîîáùåíèå - ñðàáîòàë òàéìåð, òî...
        GetClientRect(hWnd, &rect);  //ïîëó÷àåì ðàáî÷óþ îáëàñòü
        InvalidateRect(hWnd, &rect, true); //îáúÿâëÿåì åå íåäåéñòâèòåëüíîé
        UpdateWindow(hWnd); //ïåðåðèñîâûâàåì îêíî
        return 0;
        case WM_PAINT:   // åñëè ñîîáùåíèå - ïåðåðèñîâàòü îêíî, òî...
        hdc = BeginPaint(hWnd, &ps); //ïîëó÷àåì äåñêðèïòîð óñòðîéñòâà
        DrawDiagram(hWnd, hdc, offset); //ðèñóåì ñèíóñîèäó
        EndPaint(hWnd, &ps); //çàêàí÷èâàåì ðèñîâàíèå
        return 0;
        case WM_DESTROY: // åñëè ñîîáùåíèå - óíè÷òîæèòü îêíî, òî...
        PostQuitMessage(0); //ïîñûëàåì "ïðîùàëüíîå" ñîîáùåíèå îïåðàöèîíêå
                        return 0;
        default:
        return DefWindowProc(hWnd, message, wParam, lParam); //îáðàáîòêà âñåõ äðóãèõ ñîîáùåíèé
           }
return 0;
}
//---------------------------------------------------------------------------
//÷àñòü2
//---------------------------------------------------------------------------

void DrawDiagram(HWND hWnd, HDC hdc, int offset)
{
RECT rect;
GetClientRect(hWnd, &rect);
GetLastError;
const int xVE = rect.right - rect.left;
const int yVE = rect.bottom - rect.top;
//double nPixPerVolt = yVE / 1000.0;    //ó å
//double nPixPerMs = xVE / 680.0;       //ó å
//---------------------------------------------------------------------------
int xmin=0;
int xmax=xVE+56;
int ymin=-yVE/2;
int ymax=yVE/2;

double u;
double xd=x3/xmax;
u=xx * cos(xx*xd /* radianPerx * */+xx*x1);
if(!udef)
        udef=u;
double yd=(ymax-ymin)/2;
//*yd;

//---------------------------------------------------------------------------
SetMapMode(hdc, MM_ISOTROPIC);
SetWindowExtEx(hdc, xVE+200, yVE+100, NULL);
SetViewportExtEx(hdc, xVE+56, -yVE, NULL);  //ctnrf
SetViewportOrgEx(hdc, 40.0, yVE/2, NULL);
//---------------------------------------------------------------------------
char* xMark[]={"1234", "1234", "1234", "1234", "1234","1234", "1234", "1234", "1234", "1234","1234", "1234", "1234", "1234", "1234","1234", "1234", "1234", "1234", "1234","1234", "1234", "1234", "1234", "1234"};
char* yMark[] = {"  -5 ","  -4 ", "  -3 ", "  -2 ", "  -1 ", "    0", "    1", "    2", "    3", "    4","    5","    6"};

double perem3=0,perem2=0;
int perem1=0, perem=0;
double x1def=x1;

if(flag)
        while(x1def<=x2)
        {
        sprintf(xMark[perem],"%f",x1def);
        perem++;
        x1def=x1def+shag;
        flag=false;
        }
//---------------------------------------------------------------------------
perem2=shag*mnogitel/5;
perem3=udef-shag*mnogitel;

while(perem1<=10)
{
sprintf(yMark[perem1],"%f",perem3);
perem1++;
perem3+=perem2;
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
HPEN hPen1 = CreatePen(PS_SOLID, 1, RGB(200, 200, 200));
SelectObject(hdc, hPen1);

int x=xmin, xshag=xmax/kolshag;
int y=ymin, yshag=(ymax-ymin)/10;

for(int i = 0; i <= kolshag; ++i)
{
        TextOut(hdc, xmin-40, y+8, yMark[i], sizeof(yMark[i]));
        TextOut(hdc, x+4, -8, xMark[i], sizeof(xMark[i]));
        MoveToEx(hdc, x, ymin, NULL); //ïåðåìåùàåìñÿ â çàäàííóþ òî÷êó
LineTo(hdc, x, ymax);         //ðèñóåì òóäà ëèíèþ
        MoveToEx(hdc, xmin, y, NULL); //ïåðåìåùàåìñÿ â çàäàííóþ òî÷êó
LineTo(hdc, xmax, y);         //ðèñóåì òóäà ëèíèþ
        x=x+xshag;
        y=y+yshag;
}
//---------------------------------------------------------------------------
HPEN hPen0 = CreatePen(PS_SOLID, 3, RGB(0, 160, 0));
HPEN hOldPen = (HPEN)SelectObject(hdc, hPen0);
        MoveToEx(hdc, xmin, ymin, NULL); //ïåðåìåùàåìñÿ â çàäàííóþ òî÷êó
LineTo(hdc, xmin, ymax);         //ðèñóåì òóäà ëèíèþ
        MoveToEx(hdc, xmin, 0, NULL); //ïåðåìåùàåìñÿ â çàäàííóþ òî÷êó
LineTo(hdc, xmax, 0);         //ðèñóåì òóäà ëèíèþ
//---------------------------------------------------------------------------
//ôîðìóëà è âûâîä
//---------------------------------------------------------------------------
HPEN hPen2 = CreatePen(PS_SOLID, 3, RGB(200, 50, 50));
SelectObject(hdc, hPen2);

int tStep = 1; //çàäàåì øàã ãðàôèêà
//double radianPerx = 180 / Pi   ;  //âû÷èñëÿåì óãîë ðàäèàí   (1-udef)/(shag*mnogitel)
int h=0;
double uravnoves=(shag*mnogitel);
MoveToEx(hdc, 0, ((u-udef)/ uravnoves )* yd, NULL); //âû÷èñëÿåì íà÷àëüíóþ òî÷êó
while( h <= xmax)   //äî äîñòèæåíèÿ ìàêñèìàëüíîãî çíà÷åíèÿ õ ãðàôèêà
{
        h += tStep;
u = (xx * cos(xx*h*xd /* radianPerx * */+xx*x1)); //âû÷èñëÿåì êîñèíóñ
LineTo(hdc, h , ((u-udef)/ uravnoves )* yd+0 ); //ðèñóåì ëèíèþ
        if(u<(udef-shag*mnogitel)||(u>udef+shag*mnogitel))
                {
                if(u>udef+shag*mnogitel)
                        udef+=shag*mnogitel;
                else
                        udef-=shag*mnogitel+0;
                mnogitel*=2;
                h=xmax+1;
                }
}
//---------------------------------------------------------------------------

}
тут хоть hInstanse распознает, но вот после switch (message)  уже не идет
Записан
WS_SAWER
Гость
« Ответ #3 : 25-11-2009 19:16 » 

Не нашел кнопку редактирования.
Вот измененная часть, про дочерние окна и то место где не работает

Код:
// выше функция BOOL CALLBACK EnumChildProc(hwndChild, lParam)

hWnd = CreateWindow(
              szWindowClass,        // èìÿ êëàññà îêíà
              szTitle,              // çàãîëîâîê îêíà
              WS_OVERLAPPEDWINDOW,  // ñòèëü îêíà
              CW_USEDEFAULT,        // íà÷àëüíàÿ Õ-êîîðäèíàòà îêíà (èëè ââåäèòå çíà÷åíèå)
              CW_USEDEFAULT,        // íà÷àëüíàÿ Ó-êîîðäèíàòà îêíà (èëè ââåäèòå çíà÷åíèå)
              CW_USEDEFAULT,        // íà÷àëüíûé ãîðèçîíòàëüíûé ðàçìåð(èëè ââåäèòå çíà÷åíèå)
              CW_USEDEFAULT,        // íà÷àëüíûé âåðòèêàëüíûé ðàçìåð  (èëè ââåäèòå çíà÷åíèå)
              NULL,                 // äåñêðèïòîð ðîäèòåëüñêîãî îêíà
              NULL,
//              MENUITEMINFO,         // äåñêðèïòîð ìåíþ îêíà - NULL - ìåíþ ïî óìîë÷àíèþ
              hInstance,            // äåñêðèïòîð ýêçåìïëÿðà ïðîãðàììû
              NULL);                // ïàðàìåòðû ñîçäàíèÿ
for (int i = 0; i < 3; i++)
              CreateWindowEx(0,"ChildWClass",(LPCTSTR) NULL,WS_CHILD | WS_BORDER,
               0,0,0,0,hWnd,(HMENU) (int) (ID_FIRSTCHILD + i),hInstance,NULL);
              return 0;
if(!hWnd)
{

  MessageBox(hWnd, "Îøèáêà ñîçäàíèÿ îêíà", "Îøèáêà", IDI_ERROR || MB_OK); //â ñëó÷àå ÷åãî - ãîâîðèì îá îøèáêå
return 1;
}

RECT rcClient;
//---------------------------------------------------------------------------

//---------------------------------------------------------------------------
ShowWindow( hWnd , nCmdShow );  // îòîáðàçèòü îêíî íà ýêðàíå
UpdateWindow( hWnd );           // âûâåñòè íà ýêðàí ðàáî÷óþ îáëàñòü îêíà.
//---------------------------------------------------------------------------
while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}

return msg.wParam;
}

//---------------------------------------------------------------------------

LRESULT CALLBACK WindowProcedure (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
        PAINTSTRUCT ps;  //ñòðóêòóðà äëÿ ðèñîâàíèÿ
HDC hdc;  //äåñêðèïòîð óñòðîéñòâà (ìîíèòîð)
RECT rect;  //îáëàñòü, ãäå ðèñîâàòü
static int offset = 0;  //ñìåùåíèå äëÿ ñèíóñîèäû
SetTimer(hWnd, 1, 3000, NULL);  //óñòàíàâëèâàåì òàéìåð îáíîâëåíèÿ ðèñóíêà
switch (message)  //îáðàáàòûâàåì ñîîáùåíèÿ îñ
{
                        case WM_SIZE: // èçìåíåíèå ðàçìåðîâ îñíîâíîãî îêíà
                        GetClientRect(hWnd, &rect);
                        EnumChildWindows(hWnd, EnumChildProc,(LPARAM) &rect);
                        break;
        case WM_TIMER: // åñëè ñîîáùåíèå - ñðàáîòàë òàéìåð, òî...
        GetClientRect(hWnd, &rect);  //ïîëó÷àåì ðàáî÷óþ îáëàñòü
        InvalidateRect(hWnd, &rect, true); //îáúÿâëÿåì åå íåäåéñòâèòåëüíîé
        UpdateWindow(hWnd); //ïåðåðèñîâûâàåì îêíî
        return 0;
        case WM_PAINT:   // åñëè ñîîáùåíèå - ïåðåðèñîâàòü îêíî, òî...
        hdc = BeginPaint(hWnd, &ps); //ïîëó÷àåì äåñêðèïòîð óñòðîéñòâà
        DrawDiagram(hWnd, hdc, offset); //ðèñóåì ñèíóñîèäó
        EndPaint(hWnd, &ps); //çàêàí÷èâàåì ðèñîâàíèå
        return 0;
        case WM_DESTROY: // åñëè ñîîáùåíèå - óíè÷òîæèòü îêíî, òî...
        PostQuitMessage(0); //ïîñûëàåì "ïðîùàëüíîå" ñîîáùåíèå îïåðàöèîíêå
                        return 0;
        default:
        return DefWindowProc(hWnd, message, wParam, lParam); //îáðàáîòêà âñåõ äðóãèõ ñîîáùåíèé
           }
return 0;
}
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #4 : 25-11-2009 20:36 » 

WS_SAWER, думаю, в таком коде копаться мало кто станет Улыбаюсь Лучше приложи проект. И так я не увидел EDIT, поиском даже поискал ))) Ты как собрался ЦИФРЫ вводить ?
Записан

WS_SAWER
Гость
« Ответ #5 : 25-11-2009 20:49 » 

Я для начала попытался просто окно сделать, не получилось.

* Project1.bpr (3.42 Кб - загружено 884 раз.)
Записан
WS_SAWER
Гость
« Ответ #6 : 25-11-2009 20:57 » 

Мда.. я ту с форумом то кое как.
В общем я совсем не давно на с++. И судя по всему, мало что понимаю. Попробую еще диалогом сделать. А как код выложить чтоб его читали?) А то на 3 форумах по 30 гдет просмотров и ни 1 ответа.

И вот еще, комментарии на русском только в 1 случае почему отобразились нормально у меня, а вот во всех остальных почему-то  кракозябры, в чем дело может знаете?

* Project1.bpf (0.1 Кб - загружено 848 раз.)
* Project1.res (0.86 Кб - загружено 844 раз.)
« Последнее редактирование: 25-11-2009 20:59 от WS_SAWER » Записан
Вад
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #7 : 25-11-2009 21:25 » 

Лучше всего заархивировать каталог проекта и выложить архив. Только убедись, что проект очищен от сборочных файлов, иначе будет очень много весить.
А с кодировкой проблемы из-за глюка вставки (в браузере, если не ошибаюсь). Можешь попробовать копировать не сразу в форму для сообщения, а через блокнот. Точно не помню, как именно это лечится и из-за чего возникает, но что-то связанное с настройками кодировки на странице.
Записан
WS_SAWER
Гость
« Ответ #8 : 25-11-2009 22:00 » 

Вот архив. В блокноте, нотепаде тоже крокозябры, хотя кодировки все перепробовал. Мб из-за того, что на вин7, хз. Хотя было предупреждение, он писал в уникоде сохранить, но все равно не помогает

* files.rar (5.25 Кб - загружено 837 раз.)
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #9 : 25-11-2009 22:28 » 

>>И вот еще, комментарии на русском только в 1 случае почему отобразились нормально у меня, а вот во всех остальных почему-то  кракозябры, в чем дело может знаете?

лечится так: перед копированием в буфер обмена убедиться, что включена русская раскладка Улыбаюсь
Записан

Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #10 : 26-11-2009 04:08 » 

WS_SAWER, приложи проект целиком, только без папок DEBUG и RELEASE , и файл *.ncb удали
Записан

WS_SAWER
Гость
« Ответ #11 : 26-11-2009 07:26 » 

Вот все что есть. Папок DEBUG и RELEASE у меня нет вообще(кроме борландовских) и файла *.ncb тоже нет
У меня это все запускается и без пары файлов.

* File_.rar (218.27 Кб - загружено 874 раз.)
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #12 : 26-11-2009 07:36 » 

оказывается, это борланд. Переношу тему
Записан

RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #13 : 26-11-2009 09:23 » 

Леш, это не Борланд, это изврат: зачем писать на Win32 API то, что уже написано давно и доступно в VCL...

WS_SAWER, почему бы не попробовать VCL компоненты - горы вопросов сразу пропадут и будет понятнее и компактнее.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines