Witam, otóż mam problem. Jako, że w mojej szkole pojawiła się tablica interaktywna, zaproponowałem nauczycielowi napisanie programu do odpowiedzi na taką właśnie tablice. Cała ta tablica polega na tym, że projektor wyświetla obraz z komputera na tablica która przez czujniki ruchy na niej, wiec to ma być normalny program na komputer.

Jako, że programuje bardziej sieciowo a c++ zajmuję się od niedawna więc pierwszy aplikacja powstała na przeglądarkę w PHP i HTML'u (+ css oczywiście). Trochę to lipne gdyż potrzebne jest podłączenie do neta i ciągłe wczytywanie strony jest to trochę kłopotliwe. A postawić serwera na swoim kompie się nauczyciel nie zgodził. Zatem poczytałem trochę o C++ i napisałem konsolową wersje tegoż programu, co jednak nie daje mi w pełni szczęścia bo trzeba klikać w klawiaturę. Zacząłem więc pisać to w apce wina i mam trochę problem.

KOD C++ konsolowej wersji.

#include <iostream> 

#include <conio.h> 

#include <cmath> 

 

using namespace std; 

 

int main() 

{ 

    int ile; 

    string temat[3]; 

    cout << "Podaj temat 1:"; 

    cin >> temat[ 0 ]; 

     cout << "Podaj temat 2:"; 

    cin >> temat[ 1 ]; 

     cout << "Podaj temat 3:"; 

    cin >> temat[ 2 ]; 

    cout<< "Twoje tematy to: " << endl << temat [ 0 ] << endl << temat [ 1 ] << endl << temat [ 2 ] << endl; 

     cout << "Minimalna ilosc pytan po ktorej chcesz zakonczyc odpowiedz ?" << endl; 

    cin >> ile; 

    int koniec = 0; 

    int i = 1; 

    double plusy = 0; 

    double minusy = 0; 

    string dodaj; 

    int t = -1; 

    string znak; 

 

    cout << "Wcisnij P - plus / M - minus" <<endl; 

    do 

{ 

    if (t==2) 

    { 

    t = -1; 

    } 

 

    t++; 

 

    cout << "Pytanie nr " << i++ << " z tematu " << temat[ t ]; 

     dodaj = getch(); 

     if (dodaj == "m" || dodaj == "M" || dodaj == "p" || dodaj == "P") 

     { 

    if (dodaj == "m" || dodaj == "M" ) 

{ 

    minusy++; 

    cout << " -"; 

} 

if (dodaj == "p" || dodaj == "P") 

{ 

    plusy++; 

    cout << " +"; 

} 

    cout << endl; 

    } 

else 

{ 

 cout << "Wybrales zly przycisk wybierz ponownie"<< endl; 

 t--; 

 i--; 

} 

if (i > ile) 

{ 

    cout << " KONIEC ODPOWIEDZI. Chcesz zakonczyc?- T  Zadac dodatkowe pytanie - N" << endl; 

    znak = getch(); 

    if (znak == "t" || znak == "T" || znak == "n" || znak == "N") 

    { 

    if(znak == "t" || znak == "T") 

    { 

    koniec = 1; 

    } 

    if(znak == "n" || znak == "N" ) 

    { 

    koniec = 0; 

} 

    } 

     else 

{ 

 cout << "Wybrales zly przycisk wybierz ponownie"<< endl << "Zakonczyc ? T/N, jesli znowu pomylisz odpowiedz zostanie zakonczona"<< endl; 

    znak = getch(); 

    if (znak == "t" || znak == "T" || znak == "n" || znak == "N") 

    { 

    if(znak == "t" || znak == "T") 

    { 

    koniec = 1; 

    } 

    if(znak == "n" || znak == "N" ) 

    { 

    koniec = 0; 

    } 

} 

else 

{ 

koniec = 1; 

} 

    } 

} 

 

 

} while( koniec == 0 ); 

double M; 

cout << "Wynik z mapy( np. -3 lub + 2)" << endl; 

cin >> M; 

double m = M; 

if (m < 0) {m =0;} 

cout << "Wynik koncowy odpowiedzi: " << plusy << " plusow i " << minusy << " minusow, mapa:" << M <<". Wynik procentowy to "<< 100*((plusy + m)/(plusy + minusy + abs(M)))<< "%"; 

} 

Link do wersji PHP //geoask.cba.pl/

Kod WinAPI:

#include <windows.h>
#include <iostream>
#define ID_PRZYCISK1 501
#define ID_PRZYCISK2 502
using namespace std;
LPSTR NazwaKlasy = "Klasa Okienka";
MSG Komunikat;



int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow, string )
{

b temat1;
cin >> temat1;

char* temat2;
cin >> temat2;

char* temat3;
cin >> temat3;

LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
    // 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( NULL, IDI_APPLICATION );
    wc.hCursor = LoadCursor( NULL, IDC_ARROW );
    wc.hbrBackground =( HBRUSH )( COLOR_WINDOW + 1 );
    wc.lpszMenuName = NULL;
    wc.lpszClassName = NazwaKlasy;
    wc.hIconSm = LoadIcon( NULL, IDI_APPLICATION );

    // REJESTROWANIE KLASY OKNA
    if( !RegisterClassEx( & wc ) )
    {
        MessageBox( NULL, "Wysoka Komisja odmawia rejestracji tego okna!", "Niestety...",
        MB_ICONEXCLAMATION | MB_OK );
        return 1;
    }

    // TWORZENIE OKNA
    HWND hwnd;

    hwnd = CreateWindowEx( WS_EX_CLIENTEDGE, NazwaKlasy, "Oto okienko", WS_OVERLAPPEDWINDOW,
    CW_USEDEFAULT, CW_USEDEFAULT, 500 , 500, NULL, NULL, hInstance, NULL );

    if( hwnd == NULL )
    {
        MessageBox( NULL, "Okno odmówiło przyjścia na świat!", "Ale kicha...", MB_ICONEXCLAMATION );
        return 1;
    }

    ShowWindow( hwnd, nCmdShow ); // Pokaż okienko...
HWND hButton1 = CreateWindowEx( WS_EX_CLIENTEDGE, "BUTTON", "PLUS", WS_CHILD | WS_VISIBLE |
WS_BORDER,350, 100, 80, 80,  hwnd,( HMENU ) ID_PRZYCISK1, hInstance, NULL ),

hButton2 = CreateWindowEx( WS_EX_CLIENTEDGE, "BUTTON", "MINUS", WS_CHILD | WS_VISIBLE |
WS_BORDER, 350, 185, 80, 80, hwnd,( HMENU ) ID_PRZYCISK2, hInstance, NULL );

HWND hText = CreateWindowEx( WS_EX_CLIENTEDGE, "EDIT", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER |
WS_VSCROLL | ES_MULTILINE | ES_AUTOVSCROLL, 5, 5, 300, 500, hwnd, NULL, hInstance, NULL );

SetWindowText(hText, temat1 );
SetWindowText(hText, temat2 );
SetWindowText(hText, temat3 );



    // Pętla komunikatów
    while( GetMessage( & Komunikat, NULL, 0, 0 ) )
    {
        TranslateMessage( & Komunikat );
        DispatchMessage( & Komunikat );
    }
    return Komunikat.wParam;
}

// OBSŁUGA ZDARZEŃ
LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam )
{


    switch( msg )
    {
    case WM_CLOSE:
        DestroyWindow( hwnd );
        break;

    case WM_DESTROY:
        PostQuitMessage( 0 );
        break;


        case WM_COMMAND:
switch( wParam )
{
    case ID_PRZYCISK1:
    HWND hText;

cout << "+";
    break;

case ID_PRZYCISK2:
   cout<< "-";
SetWindowText(hText, "Napis" );

    break;

}
break;


        default:
        return DefWindowProc( hwnd, msg, wParam, lParam );
        break;
    }

    return 0;


}

Może trochę to się bugować bo dawno w tym nie grzebałem i nie bardzo mam inne wersje na tym skończyłem. Tak czy siak chcę aby po wpisaniu w konsolę tematów do pytania otwierało się okno wina z przyciskami + i - a następnie wyświetlało tematy do odpowiedzi w polu tekstowym tak jak było to na konsolówce. I na koniec wynik.

Jakieś sugestie, jak to zrobić ?

Pozdrawiam, Roszpun.