Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Czy można zrobić "program w programie" ?

Ostatnio zmodyfikowano 2013-11-22 16:50
Autor Wiadomość
pekfos
» 2013-11-21 20:09:16
Czyli zanim pokażę konsole MUSZE zniszczyć okienko ?
Nie.

to mam stworzyć konsolę jako okienko i muszę dać jej osobną obsługę zdarzeń ???
Nie.
P-96977
Zdziwiony
Temat założony przez niniejszego użytkownika
» 2013-11-21 20:12:51
Zakodziłem coś takiego:

C/C++
LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam );
BOOL WINAPI AllocConsole( void );

int WINAPI WinMain( HINSTANCE hInst, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
    FreeConsole();
   
    hInstance = hInst;
    // WYPEŁNIANIE STRUKTURY
    WNDCLASSEX wc;
    wc.cbSize = sizeof( WNDCLASSEX );
    wc.style = 0;
    wc.lpfnWndProc = WndProc;
    wc.cbClsExtra = 0;
    wc.cbWndExtra = 0;
    wc.hInstance = hInstance;
    wc.hIcon = LoadIcon( hInstance, MAKEINTRESOURCE( 511 ) );
    wc.hCursor = LoadCursor( NULL, IDC_ARROW );
    wc.hbrBackground =( HBRUSH )( COLOR_WINDOW + 1 );
    wc.lpszMenuName = NULL;
    wc.lpszClassName = NazwaKlasy;
    wc.hIconSm = LoadIcon( hInstance, MAKEINTRESOURCE( 511 ) );

C/C++
// OBSŁUGA ZDARZEŃ
BOOL WINAPI AllocConsole( void );
{
    {
        int main()
        std::string nick;
        std::cin >> nick;
        std::string N = "java -jar Pliki\\minecraftlauncher1.6.jar C:\\mc1.6.4 " + nick + " 1.6.4-Forge 600 800";
        system( N.c_str() );
        return 0;
    }
}

Wywala:
C:\Users\Łukasz\Desktop\C++\Launcher\main.cpp:8:20: warning: deprecated conversion from string constant to 'LPSTR {aka char*}' [-Wwrite-strings]
C:\Users\Łukasz\Desktop\C++\Launcher\main.cpp:96:1: error: expected unqualified-id before '{' token
Process terminated with status 1 (0 minutes, 0 seconds)
1 errors, 1 warnings (0 minutes, 0 seconds)

Źle to złożyłem ? Jakie błędy popełniłem ? (zapewne podstawowe jak zwykle :P ? )
P-96980
pekfos
» 2013-11-21 20:17:17
» KursyKurs C++ kurs
Odeślij się do lekcji o składni C++, budowie programu i używaniu funkcji.
P-96983
Zdziwiony
Temat założony przez niniejszego użytkownika
» 2013-11-21 20:30:02
Aha czyli bardzo źle ;d

Dla usprawiedliwienia siebie, pokazuje ten kod :P :
C/C++
#include <windows.h>
#include "resource.h"
#include "dialog.h"

LPSTR NazwaKlasy = "Klasa Okienka";
MSG Komunikat;
HWND g_hPrzycisk;
HWND g_hPrzycisk2;
HWND g_hPrzycisk3;
HWND g_hPrzycisk4;
HWND g_hPrzycisk5;
HWND g_hPrzycisk6;
HWND g_hPrzycisk7;
HDC kon;
PAINTSTRUCT ps;
HINSTANCE hInstance;

LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam );
BOOL CALLBACK DlgProc( HWND, UINT, WPARAM, LPARAM ); //Okno dialogowe

[ / cpp ]


--------------------------------------------------------------------------------------------
[ cpp ] LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
    switch( msg )
    {
    case WM_CLOSE:
        DialogBox( GetModuleHandle( NULL ), MAKEINTRESOURCE( IDD_MOJDIALOG2 ), hwnd, DlgProc2 ); //pytanie o wyjscie
        break;
       
    case WM_DESTROY:
        PostQuitMessage( 0 );
        break;

Plik .rc
C/C++
IDD_MOJDIALOG2 DIALOG DISCARDABLE 100, 100, 180, 60
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Czy na pewno?"
FONT 10, "MS Sans Serif"
{
    DEFPUSHBUTTON "&TAK", IDYES, 10, 40, 50, 14
    DEFPUSHBUTTON "&NIE", IDNO, 75, 40, 50, 14
   
    LTEXT "Czy na pewno chcesz wyjść?", IDC_LABEL, 16, 18, 100, 15
}
Jak widać na załączonym kodzie oknom dialogowym tworzy się własną obsługę zdarzeń i używa przy tym "BOOL CALLBACK DlgProc( HWND, UINT, WPARAM, LPARAM );" I to mnie zmyliło właśnie słowo BOOL:P (odpowie ktoś w jakim miejscu wywołuje się konsole :) bo w dokumentacji Link: http://msdn.microsoft.com/en-us/library/windows/desktop/ms681944%28v=vs.85%29.aspx
Nie ma żadnego przykładu a do tego jest po angielsku, a ja ang słabo znam ;/
Podpowie ktoś życzliwy może coś jeszcze :) ?
P-96986
pekfos
» 2013-11-21 20:43:37
Zapewne po prostu tak:
C/C++
AllocConsole();
P-96989
Monika90
» 2013-11-21 20:56:00
Po co Ci ta konsola? Niech użytkownik wpisze nicka w editboksie.
P-96991
Zdziwiony
Temat założony przez niniejszego użytkownika
» 2013-11-21 21:07:01
Dzięki pekfos :) Teoretycznie działa :P
C/C++
case GRAJ:
AllocConsole();
std::string nick;
std::cout <<( "Podaj swoj nick i potwierdz ENTEREM! :D\n" );
std::cin >> nick;
std::string N = "java -jar Pliki\\minecraftlauncher1.6.jar C:\\mc1.6.4 " + nick + " 1.6.4-Forge 600 800";
system( N.c_str() );
return 0;
break;

Dobry zapis ?

Mówię, że teoretycznie bo nie chce mi wczytać danych do konsoli -.- (tj C:\\mc1.6.4 " +nick+ " 1.6.4-Forge 600 800";) odpala mi tylko jara i tyle i to mnie dziwi...

@Monika90
Potrzebna mi konsola, bo jak zrobię to w textboxie to MC odpala po wpisaniu jednej literki O.o i tak cały czas... 1 literka nicku więcej = odpalony kolejny mc... Kod podesłał mi chyba Buby i chyba zrobił jakiś błąd :P A sam za mało ograniam, żeby to napisać ;) (Może w przyszłości to zrobię :P )
P-96993
pekfos
» 2013-11-21 21:13:25
AllocConsole() i freopen() dla strumieni standardowych.
P-97001
1 « 2 » 3
Poprzednia strona Strona 2 z 3 Następna strona