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

Jak połączyć WinAPI ze standardowym kodem C++?

Ostatnio zmodyfikowano 2018-03-29 16:37
Autor Wiadomość
askabius
Temat założony przez niniejszego użytkownika
» 2018-03-27 19:27:25
Dobrze, już tłumaczę na czym ma polegać program. Niedawno napisałem program konsolowy, który miał losować liczbę (trochę bardziej zaawansowany algorytm losowania ale to nieważne), więc losuje liczbę od 1 do 660 a następnie otwiera odpowiedni plik. Np. wylosował liczbę 240 i otwiera 240.txt. W tym pliku znajduje się tekst. Program wczytuje ten tekst i wyświetla na ekranie. Jest to swoisty test, a plik wygląda następująco

Pytanie
a) odpowiedz a
b) odpowiedz b
c) odpowiedz c
poprawna odpowiedz

Jeśli wpisana przeze mnie wartość będzie równa poprawnej odpowiedzi to program losuje dalej itd.

Mój problem pojawił się w momencie, w którym postanowiłem przenieść to (trochę napisać od nowa a trochę skopiować) do jakiegoś ładnego okienka aby nie było w konsoli. I mój problem polega na tym, że nie wiem jak sprawić, aby kod C++ z losowaniem i wczytywaniem tekstu współgrał z WinAPI. Oto cały problem.

P-170321
pekfos
» 2018-03-27 19:38:06
Logika programu się nie zmienia. Całość interakcji z userem wywalasz i robisz od nowa w WinAPI. Jeśli wiesz jak ją zrobić, to podpięcie logiki nie będzie żadnym problemem.
P-170324
skovv
» 2018-03-27 23:16:08
Ahh rozumiem chyba o co Ci chodzi(wnioskuje po kodzie ktry podales:
C/C++
#include <iostream>
#include <fstream>
#include <ctime>
#include <conio.h>
#include <string>

#include <windows.h>

using namespace std;

....< kod >....

int main() {
    ...< kod >....
}

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
    ....< kod >....
}

To nie tak, inaczej:
int main() {...}
 funkcja main jest funkcja glowna calego programu, sercem, "entry pointem". Winapi ma ja troszke zmodyfikowana, aby lapala parametry HINSTANCE i inne smiechowe rzeczy, ale to taki sam main. Jesli korzystasz w winapi po prostu zamiast "konsolowego" main'a
int main()
 daj
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
 rozumiesz? Jesli zrobisz jak wyzej(main() i WinMain(...)) to po prostu kompilator kmini "wtf, o co chodzi? To albo stad mam czytac albo stad!", rozumiesz? Staram sie to prosto wyplumaczyc, ale jestem w tym raczej kiepski :) Poprawniej:

C/C++
#include <iostream>
#include <fstream>
#include <ctime>
#include <string>

#include <windows.h>

using namespace std;

....< kod >....

// main() zamieniamy na WinMain(), choc o ile pamietam nawet nie koniecznie :)
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
    ....< kod >....
}

Ehh i prosze nie mow o laczeniu C++ z WinApi bo krew zalewa! :D Winapi to po prostu biblioteka do obslugi okien i innych bzdetow w C++, jak string do obslugi stringow, iostream do obslugi konsoli i tak dalej.. :)
P-170330
askabius
Temat założony przez niniejszego użytkownika
» 2018-03-29 16:37:07
Dziękuję skovvowi za przybliżenie odpowiedzi. Mniej więcej o to mi chodziło. Temat można zakończyć :)
P-170347
1 « 2 »
Poprzednia strona Strona 2 z 2