| 
			| 
					
						| WS_SAWER 
								Гость
 | 
								|  | «  : 25-11-2009 17:25 »  |  | 
 
 Сделал программу у, которая рисует график. К ней надо приделать ввод данных так  чтобы данные вводились во время работы программы , желательно в другом окне или меню, или вообще хоть как-то. #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 » |  Записан | 
 |  |  | 
	| 
			| 
					
						| Алексей++ 
								глобальный и пушистыйГлобальный модератор    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;
 }
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Алексей++ 
								глобальный и пушистыйГлобальный модератор    Offline 
								Сообщений: 13
								
								
								
								
								
							 | 
								|  | « Ответ #4 : 25-11-2009 20:36 »  |  | 
 
 WS_SAWER, думаю, в таком коде копаться мало кто станет    Лучше приложи проект. И так я не увидел EDIT, поиском даже поискал ))) Ты как собрался ЦИФРЫ вводить ? |  
						| 
								|  |  
								|  |  Записан | 
 
 |  |  | 
	| 
			| 
					
						| WS_SAWER 
								Гость
 | 
								|  | « Ответ #5 : 25-11-2009 20:49 »  |  | 
 
 Я для начала попытался просто окно сделать, не получилось. |  
						| 
								| 
 |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| WS_SAWER 
								Гость
 | 
								|  | « Ответ #6 : 25-11-2009 20:57 »  |  | 
 
 Мда.. я ту с форумом то кое как.В общем я совсем не давно на с++. И судя по всему, мало что понимаю. Попробую еще диалогом сделать. А как код выложить чтоб его читали?) А то на 3 форумах по 30 гдет просмотров и ни 1 ответа.
 
 И вот еще, комментарии на русском только в 1 случае почему отобразились нормально у меня, а вот во всех остальных почему-то  кракозябры, в чем дело может знаете?
 |  
						| 
								| 
 |  
								| « Последнее редактирование: 25-11-2009 20:59 от WS_SAWER » |  Записан | 
 |  |  | 
	| 
			| 
					
						| Вад | 
								|  | « Ответ #7 : 25-11-2009 21:25 »  |  | 
 
 Лучше всего заархивировать каталог проекта и выложить архив. Только убедись, что проект очищен от сборочных файлов, иначе будет очень много весить.А с кодировкой проблемы из-за глюка вставки (в браузере, если не ошибаюсь). Можешь попробовать копировать не сразу в форму для сообщения, а через блокнот. Точно не помню, как именно это лечится и из-за чего возникает, но что-то связанное с настройками кодировки на странице.
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| WS_SAWER 
								Гость
 | 
								|  | « Ответ #8 : 25-11-2009 22:00 »  |  | 
 
 Вот архив. В блокноте, нотепаде тоже крокозябры, хотя кодировки все перепробовал. Мб из-за того, что на вин7, хз. Хотя было предупреждение, он писал в уникоде сохранить, но все равно не помогает |  
						| 
								| 
 |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Алексей++ 
								глобальный и пушистыйГлобальный модератор    Offline 
								Сообщений: 13
								
								
								
								
								
							 | 
								|  | « Ответ #9 : 25-11-2009 22:28 »  |  | 
 
 >>И вот еще, комментарии на русском только в 1 случае почему отобразились нормально у меня, а вот во всех остальных почему-то  кракозябры, в чем дело может знаете?  лечится так: перед копированием в буфер обмена убедиться, что включена русская раскладка   |  
						| 
								|  |  
								|  |  Записан | 
 
 |  |  | 
	| 
			| 
					
						| Алексей++ 
								глобальный и пушистыйГлобальный модератор    Offline 
								Сообщений: 13
								
								
								
								
								
							 | 
								|  | « Ответ #10 : 26-11-2009 04:08 »  |  | 
 
 WS_SAWER, приложи проект целиком, только без папок DEBUG и RELEASE , и файл *.ncb удали |  
						| 
								|  |  
								|  |  Записан | 
 
 |  |  | 
	| 
			| 
					
						| WS_SAWER 
								Гость
 | 
								|  | « Ответ #11 : 26-11-2009 07:26 »  |  | 
 
 Вот все что есть. Папок DEBUG и RELEASE у меня нет вообще(кроме борландовских) и файла *.ncb тоже нетУ меня это все запускается и без пары файлов.
 |  
						| 
								| 
 |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Алексей++ 
								глобальный и пушистыйГлобальный модератор    Offline 
								Сообщений: 13
								
								
								
								
								
							 | 
								|  | « Ответ #12 : 26-11-2009 07:36 »  |  | 
 
 оказывается, это борланд. Переношу тему |  
						| 
								|  |  
								|  |  Записан | 
 
 |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #13 : 26-11-2009 09:23 »  |  | 
 
 Леш, это не Борланд, это изврат: зачем писать на Win32 API то, что уже написано давно и доступно в VCL...
 WS_SAWER, почему бы не попробовать VCL компоненты - горы вопросов сразу пропадут и будет понятнее и компактнее.
 |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	|  |