Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

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

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 ]
000
03.03.2005, 13:33 Uhr
Airdamn



Ich hab jetzt mal den Digital Mars Compiler ausprobiert.
Wenn ich mit dem ein WinAPI Projekt kompiliere, dann hab ich auch im Hintergrund ein Konsolenfenster (wie man es von Java kennt).
Mit dem MSVC++ wurde das Konsolenfenster nicht angezeigt.
Weiß einer wie ich das auch beim Digital Mars unterdrücken kann?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
03.03.2005, 15:26 Uhr
Oliver
S2-Pixelgeneral


WinMain statt main()? Sonst liegt's wohl am Compiler, den ich aber nicht kenne...
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
04.03.2005, 10:33 Uhr
Airdamn



Ich hab da WinMain benutzt:

C++:
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd )
...



Es wird ja auch ein Fenster erstellt usw. nur hab ich zusätzlich im Hintergrund ein Konsolenfenster. Kann also mit cout etc. dort Dinge ausgeben.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
04.03.2005, 11:24 Uhr
enno-tyrant
Frag nicht!


mach mal:

C++:
int APIENTRY WinMain(...)


--
...um etwas zu verstehen muß man wissen wie es funktioniert...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
04.03.2005, 11:53 Uhr
Spacelord
Hoffnungsloser Fall


Aus windef.h


C++:
#define APIENTRY    WINAPI






MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
04.03.2005, 11:56 Uhr
RedEagle



Du musst beim Erstellen deines Projektes darauf achten, das du KEINE Konsolenanwendung erstellst.
--
MFG RedEagle
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
04.03.2005, 12:05 Uhr
Spacelord
Hoffnungsloser Fall


Ich denke nicht dass das das Problem ist.Da sollte der Compiler meckern wenn er keine main findet.
Wäre hilfreich wenn man mal den Code zu Gesicht bekommen würde.

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
04.03.2005, 13:12 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Ich denke das es ganz einfach am Compiler liegt, der noch zusätzlich ein solches Fenster aufmacht. Aus welchem Grund auch immer....vielleicht damit man während der Entwicklung einfach mal was zum test ausgeben kann oder so.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
04.03.2005, 13:15 Uhr
Airdamn



eigentlich ist es eine einfaches WinAPI Programm, mehr zum testen.
Da ist eigentlich nix besonderes dran:

C++:
#include <windows.h>

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

LPCSTR lpszAppName = "AppName";
LPCSTR lpszTitle = "WinAPI Window";

HWND hEdit;
HWND hButton;

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd )
{
    HWND        hWnd;
    MSG            msg;
    WNDCLASSEX    wc;

    wc.cbSize            = sizeof( WNDCLASSEX );
    wc.style            = CS_HREDRAW | CS_VREDRAW;
    wc.lpfnWndProc        = WndProc;
    wc.cbClsExtra        = 0;
    wc.cbWndExtra        = 0;
    wc.hInstance        = hInstance;
    wc.hCursor            = LoadCursor( NULL, IDC_ARROW );
    wc.hIcon            = LoadIcon( NULL, IDI_APPLICATION );
    wc.hbrBackground    = (HBRUSH) ( COLOR_WINDOW );
    wc.lpszClassName    = lpszAppName;
    wc.lpszMenuName        = lpszAppName;
    wc.hIconSm            = LoadIcon( NULL, IDI_APPLICATION );

    if( RegisterClassEx( &wc ) == 0 )
        return 0;

    hWnd = CreateWindowEx( NULL, lpszAppName, lpszTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 300, 300, NULL,
                           NULL, hInstance, NULL );

    if( !hWnd )
        return 0;

    ShowWindow( hWnd, nShowCmd );
    UpdateWindow( hWnd );

    CHOOSECOLOR cc;
    COLORREF cr = RGB( 255, 0,0 );
    COLORREF cstmclrs[16];

    for( int i = 0; i < 16; i++ )
        cstmclrs[i] = RGB( 0, 0, 0 );

    cc.lStructSize = sizeof( CHOOSECOLOR );
    cc.hwndOwner = hWnd;
    cc.rgbResult = cr;
    cc.lpCustColors = cstmclrs;
    cc.Flags = CC_ANYCOLOR | CC_FULLOPEN | CC_RGBINIT;

    hButton = CreateWindowEx( WS_EX_CLIENTEDGE, "BUTTON", "&OK", WS_CHILD | WS_VISIBLE, 200, 240, 80, 25, hWnd, NULL, GetModuleHandle( NULL ), NULL );


    while( GetMessage( &msg, NULL, 0, 0 ) > 0 )
    {
        TranslateMessage( &msg );
        DispatchMessage( &msg );
    }

    return 0;
}

LRESULT CALLBACK WndProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
{
    PAINTSTRUCT ps;
    HDC hDC;
    char szText[] = "Ein Teststring";

    switch( uMsg )
    {
    case WM_CREATE:
        hEdit = CreateWindowEx( WS_EX_CLIENTEDGE, "EDIT", "", WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL | ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL,
                                40, 40, 200, 200, hWnd, NULL, GetModuleHandle( NULL ), NULL );
        return 0;
    case WM_PAINT:
        hDC = BeginPaint( hWnd, &ps );
        SetTextColor( hDC, RGB( 120, 200, 177 ));
        SetBkMode( hDC, TRANSPARENT );
        TextOut( hDC, 0, 0, szText, sizeof( szText ) - 1 );
        EndPaint( hWnd, &ps );
        return 0;
    case WM_DESTROY:
        PostQuitMessage( 0 );
        return 0;
    case WM_KEYDOWN:
        SetWindowText( hWnd, "Eine Taste wurde gedrückt" );
        return 0;
    case WM_KEYUP:
        SetWindowText( hWnd, "Die Taste wurde wieder losgelassen" );
        return 0;
    case WM_LBUTTONDOWN:
        SetWindowText( hWnd, "Die linke Maustaste wurde gedrückt" );
        return 0;
    case WM_LBUTTONUP:
        SetWindowText( hWnd, "Die linke Maustaste wurde losgelassen" );
        return 0;
    case WM_RBUTTONDOWN:
        SetWindowText( hWnd, "Die rechte Maustaste wurde gedrückt" );
        return 0;
    case WM_RBUTTONUP:
        SetWindowText( hWnd, "Die rechte Maustaste wurde losgelassen" );
        return 0;
    case WM_MOVE:
        SetWindowText( hWnd, "Die Position des Fensters wurde verändert" );
        return 0;
    case WM_SIZE:
        SetWindowText( hWnd, "Die Größe des Fensters wurde verändert" );
        return 0;
    }

    return DefWindowProc( hWnd, uMsg, wParam, lParam );
}



denke auch, dass es am compiler liegt...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
04.03.2005, 14:17 Uhr
Spacelord
Hoffnungsloser Fall


www.digitalmars.com/faq.html#consolewindow

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
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: