Moin.
Kurz nach dem Krieg hatte ich in Info ein Progrämmchen gebaut, dass mit Zahlen jongliert hat und mit deren Hilfe dann eine Grafik ausgegeben hat.
Etwas ähnliches möchte ich nun wieder tun: Es werden ca 50 X-Koordinaten und zu jeder X-Koordinate wiederum 100 Y- bzw Z-Koordinaten eingelesen.
Mit den Y- und Z- Koordinaten ergibt sich für jedes X eine „Kurve“ (eher ein spline) die alle sozusagen „übereinander“ gezeichnet werden sollen.
-Soviel zum Plan
Die Koordinaten werden in Pixelkoordinaten transformiert, so dass es eigentlich funktionieren sollte - tut es aber nicht
Offensichtlich kann Visual C++ Express 2005 die Verknüpfung zwischen diesen beiden Quelltexten nicht herstellen:
Dieses:
#include
#include
#include
void zeichenprogramm (HWND hWnd)
{
HDC dc;
RECT rect;
FILE * datzeiger;
double x[58], Aspt[58], y[58][101], z[58][101], hilf, disVol, max=16.1;
char datname[40]=„E:\Uni\Schiff c++\stations.txt“, temptext[11];
int i, j, iy[58][101], iz[58][101], pixqu, zaktuell, yaktuell, rahmen, hilfint;
HPEN strich; strich=CreatePen(PS_SOLID,1,RGB(0,0,0));
HPEN Rahmen; Rahmen=CreatePen(PS_SOLID,3,RGB(0,0,0));
dc = GetDC(hWnd);
GetClientRect(hWnd,&rect);
.
.
. usw
und dieses:
// WinMain - Quelltext zeichnehaupt.cpp
#include
#include „stdafx.h“
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
void zeichenprogramm(HWND);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,
LPSTR lpCmdLine,int nCmdShow)
{
MSG msg; WNDCLASS wc; HWND hwndMain;
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = (WNDPROC) WndProc;
wc.hInstance = hInstance;
wc.hIcon = NULL;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wc.lpszClassName = „MainWndClass“;
wc.lpszMenuName = NULL;
RegisterClass(&wc);
hwndMain = CreateWindow(„MainWndClass“, „Zeichenprogramm“,
WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT, (HWND) NULL,
(HMENU) NULL, hInstance, (LPVOID) NULL);
ShowWindow(hwndMain, nCmdShow);
UpdateWindow(hwndMain);
while (GetMessage(&msg, (HWND) NULL, 0, 0))
{TranslateMessage(&msg); DispatchMessage(&msg);}
return msg.wParam;
}
/**********************************************************************/
LRESULT CALLBACK WndProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
switch (uMsg)
{case WM_PAINT: zeichenprogramm(hwnd); break;
case WM_DESTROY: PostQuitMessage(0);
}
return (DefWindowProc(hwnd, uMsg, wParam, lParam));
}
Da kommen dann zahlreiche Fehlermeldungen:
1>------ Erstellen gestartet: Projekt: Linienriss, Konfiguration: Debug Win32 ------
1>Kompilieren…
1>Linienriss.cpp
error C2065: ‚HWND‘: nichtdeklarierter Bezeichner
error C2146: Syntaxfehler: Fehlendes ‚)‘ vor Bezeichner ‚hWnd‘
error C2182: ‚zeichenprogramm‘: Unzulässige Verwendung des Typs ‚void‘
error C2059: Syntaxfehler: ‚)‘
error C2143: Syntaxfehler: Es fehlt ‚;‘ vor ‚{‘
error C2447: ‚{‘: Funktionskopf fehlt - Parameterliste im alten Stil?
1>zeichnehaupt.cpp
error C2146: Syntaxfehler: Fehlendes ‚;‘ vor Bezeichner ‚CALLBACK‘
error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: „default-int“ wird von C++ nicht unterstützt.
error C2146: Syntaxfehler: Fehlendes ‚;‘ vor Bezeichner ‚WndProc‘
error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: „default-int“ wird von C++ nicht unterstützt.
error C2065: ‚HWND‘: nichtdeklarierter Bezeichner
error C2065: ‚UINT‘: nichtdeklarierter Bezeichner
error C2065: ‚WPARAM‘: nichtdeklarierter Bezeichner
error C2065: ‚LPARAM‘: nichtdeklarierter Bezeichner
error C4430: Fehlender Typspezifizierer - int wird angenommen.
Und viele Fehler mehr…
Soweit ich mich erinnere war der 2. Quelltext irgendwie für die Grafik an sich zuständig - wie genau, weiß ich nicht, da ich bestenfalls ein Grundwissen zu C/C++ habe…
Ich hoffe, jemand kann mir einige Ansätze liefen.
MfG
Pogotorte