Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Hilfeeeeeeee

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 <
010
03.03.2004, 17:49 Uhr
~Gast
Gast


Das erinnert mich jetzt an das Programm mit diesen sich überlagernden rechtecken aus dem petzold
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
04.03.2004, 00:13 Uhr
KaraHead



@Pablo
ncurses heißt unter Win conio.h

Wenn ich mich da nicht teusche
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
04.03.2004, 09:42 Uhr
~DU
Gast


Du täuscht dich.
Die conio.h die du meinst ist aus alten 16Bit Zeiten und von Borland.
Zeichnen in der Konsole ist nur durch direktes ansprechen der Grafikkarte über Interrupts möglich und da Win 32 keine Interrupts zulässt ......
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
04.03.2004, 09:50 Uhr
0xdeadbeef
Gott
(Operator)


Es gibt auch unter DOS ANSI-Escape-Sequenzen, allerdings muss man dafür die ansi.sys geladen haben (ne entsprechende device= bzw.devicehigh=-direktive in der config.sys einfügen). Unter Windoze wirds wahrscheinlich ähnlich gehen, aber das weiß ich nun wirklich nicht mehr.

Die conio.h ist etwas völlig anderes als (n)curses. Während die conio.h nur dau entwickelt wurde, ein paar grundsätzliche Funktionalitäten auf der Konsole umzusetzen, ist curses bzw. neuerdings ncurses ein komplettes Windowing-System ist, dass damals als schnelle, wenn auch nicht ganz so schicke und leistungsfähige Alternative zu X gebaut wurde.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
04.03.2004, 18:27 Uhr
KaraHead



tja was man nicht alles so dazu lernt
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
05.03.2004, 16:41 Uhr
~Dau
Gast


so falls mal jemanden ne lauffähige win api verison interressiert hab ich mal eine
achja wenn wer fehler findet oder verbesserungsvorschläage hat bitte posten



C++:
#include <windows.h>
#include <time.h>



LRESULT CALLBACK WndProc   (HWND, UINT, WPARAM, LPARAM) ;


int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
     srand(time(NULL));
     static TCHAR szAppName[] = TEXT ("Rectangel") ;
     HWND         hwnd ;
     MSG          msg ;
     WNDCLASS     wndclass ;

     wndclass.style         = CS_HREDRAW | CS_VREDRAW  ;
     wndclass.lpfnWndProc   = WndProc ;
     wndclass.cbClsExtra    = 0 ;
     wndclass.cbWndExtra    = 0 ;
     wndclass.hInstance     = hInstance ;
     wndclass.hIcon         = LoadIcon (NULL, IDI_APPLICATION) ;
     wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ;
     wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
     wndclass.lpszMenuName  = NULL ;
     wndclass.lpszClassName = szAppName ;
    
          
     if (!RegisterClass (&wndclass))
     {    // UNICODE-Compilierung ist die einzige realistische Fehlermöglichkeit
          MessageBox (NULL, TEXT ("Programm arbeitet mit Unicode und setzt Windows NT voraus!"),
                      szAppName, MB_ICONERROR) ;
          return 0 ;
     }


      hwnd = CreateWindow (szAppName, TEXT ("Rectangel"), WS_OVERLAPPEDWINDOW,              
                  CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,                    
                  NULL, NULL, hInstance, NULL) ;                            
    
    
    
     ShowWindow (hwnd, iCmdShow) ;
     UpdateWindow (hwnd) ;
    
    
     while (GetMessage (&msg, NULL, 0, 0))
     {
              
           TranslateMessage (&msg) ;
           DispatchMessage (&msg) ;
        
     }

        return msg.wParam ;
     }
    


LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    
     HBRUSH      hBrush ;
     HDC         hdc ;
     static int  cxClient, cyClient ;
     PAINTSTRUCT ps ;
     int         xLeft, xRight, yTop, yBottom ;
     short       nRed, nGreen, nBlue ;
    
     switch (message)
     {
     case WM_CREATE:

          // Timer anwerfen
          SetTimer (hwnd, 1, 250, NULL) ;
  
          return 0 ;
          
     case WM_SIZE:            
          
          cxClient = LOWORD (lParam) ;
          cyClient = HIWORD (lParam) ;
          return 0;      
          
     case WM_TIMER:            // ein "zufälliges" Rechteck zeichnen
          
        
          xLeft   = rand () % cxClient;
          xRight  = rand () % cxClient;
          yTop    = rand () % cyClient;
          yBottom = rand () % cyClient ;
          nRed    = rand () & 255 ;
          nGreen  = rand () & 255 ;
          nBlue   = rand () & 255 ;
          
          hdc = GetDC (hwnd) ;
          hBrush = CreateSolidBrush (RGB (nRed, nGreen, nBlue)) ;
          SelectObject (hdc, hBrush) ;
          
          Rectangle (hdc, min (xLeft, xRight), min (yTop, yBottom),
               max (xLeft, xRight), max (yTop, yBottom)) ;
          
          ReleaseDC (hwnd, hdc) ;
          DeleteObject (hBrush) ;
          return 0 ;
          
     case WM_PAINT:          
    
          InvalidateRect (hwnd, NULL, TRUE) ;
          hdc = BeginPaint (hwnd, &ps) ;
          EndPaint (hwnd, &ps) ;
          return 0 ;
          
  
          
     case WM_DESTROY:
        
          KillTimer (hwnd, 1) ;
          PostQuitMessage (0) ;
          return 0 ;
     }

  
     return DefWindowProc (hwnd, message, wParam, lParam) ;
}



Dieser Post wurde am 05.03.2004 um 17:49 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
05.03.2004, 17:43 Uhr
~Dau
Gast


na wie da schon sagt hab festgestellt das ich überlesen hab das das ohne grafische oberfläche sein soll
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
017
07.03.2004, 14:53 Uhr
Spacelord
Hoffnungsloser Fall


Wenn es für Windows sein soll hat Hausaufgabenservice-Spacelord zumindest nen Ansatz für dich.
Steht ja nirgendwo wie gross die Rechtecke sein sollen !

C++:
#include <windows.h>
#include <conio.h>


HANDLE hStdOut;
DWORD dwResult;
const WORD black = 0;

void ClearScreen();


int main()
{
   hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
  
    while(!_kbhit())
    {
        int x,y;
        x=rand()%80;//Standardkonsole vorausgesetzt
        y=rand()%25;//Realwert laesst sich auch abfragen
        COORD WriteCoord;
        WriteCoord.X=x;
        WriteCoord.Y=y;
        WORD color = rand()%150;
        FillConsoleOutputAttribute(hStdOut,color,1,WriteCoord,&dwResult);
        Sleep(100);

        ClearScreen();
    }

   return 0;
}


void ClearScreen()
{
   CONSOLE_SCREEN_BUFFER_INFO ConInfo;
   DWORD PufferGroesse;
   const COORD CurPos={0,0};
   GetConsoleScreenBufferInfo(hStdOut,&ConInfo);
   PufferGroesse = ConInfo.dwSize.X * ConInfo.dwSize.Y;
   FillConsoleOutputAttribute(hStdOut,black,PufferGroesse,CurPos,&dwResult);
   FillConsoleOutputCharacter(hStdOut,(TCHAR)' ',PufferGroesse,CurPos,&dwResult);
   SetConsoleCursorPosition(hStdOut,CurPos);
}



Wenn du den Code verstanden hast kannst du mit nem bisschen Rechnen auch grössere Rechtecke "zeichnen".

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.

Dieser Post wurde am 07.03.2004 um 14:56 Uhr von Spacelord editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
018
07.03.2004, 15:01 Uhr
Pablo
Supertux
(Operator)



Zitat:
0xdeadbeef postete
Es gibt auch unter DOS ANSI-Escape-Sequenzen, allerdings muss man dafür die ansi.sys geladen haben (ne entsprechende device= bzw.devicehigh=-direktive in der config.sys einfügen). Unter Windoze wirds wahrscheinlich ähnlich gehen, aber das weiß ich nun wirklich nicht mehr.



Ja, das ging bis Win9x. Bis Win 98 konnte man immer noch die config.sys ändern, und solche DOS Dateien wie ANSI.SYS waren noch dabei. Als ich mir WinME installiert habe, vor Jahren, hab ich selber die config.sys geändert und beim Neustart wurden sie vom System überschrieben und meine Änderungen gingen verloren. Und ANSI.SYS, KEYB.SYS & Co habe ich nimmer gefunden. Unter WinNT gibt es, soweit ist weiß, sowas nicht, ich habe jedenfalls nie unter 2000 oder XP solche Dateien gesehen, d.h. dass ANSI-Escape-Sequenzen nicht mehr möglich sind. Außer wenn WinNT andere Dateien wie ANSI.SYS haben, die man auf eine andere Art und Weise laden muss, aber dazu habe ich keine Information gefunden.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: