robaczek122 Temat założony przez niniejszego użytkownika |
[C++] kolor pixela » 2009-05-13 10:20:08 Czolem! Chcialem zrobic jakis wiekszy program, a wlasciwie nieszkodliwego bota. Wszystko wlasciwie mogloby juz dzialac, ale zatrzymalem sie i juz od kilku dni nie posunalem sie nawet na krok do przodu... Mam problem z pobieraniem koloru pixela. Z tego co sie dowiedzialem to w jako takim C++ w jakim pisalem wszystko (caly algorytm "myslacy", symulacja myszki i klawiatury) nie da sie tego zrobic. (?chyba) Podobno musze to zrobic w WinAPI. I tutaj zaczely sie schody... Co prawda google znalazlo mi przyklad na pobieracza kolorow: #include <iostream> #include <windows.h> using namespace std;
int main() { HDC Ekran = GetDC( NULL ); COLORREF Kolor = RGB( 255, 255, 255 ); Kolor = GetPixel( Ekran, 0, 0 ); short int r, g, b; r = GetRValue( Kolor ); g = GetGValue( Kolor ); b = GetBValue( Kolor ); cout << "Czerwony : " << r << "\n" "Zielony : " << g << "\n" "Niebieski : " << b << "\n"; ReleaseDC( NULL ); system( "PAUSE" ); return 0; }
Ale nie potrafie tego skompilowac, a wlasciwie to kompilator nie potrafi :P (Dex-C++ 4.9.9.2) wywala strasznie duzo bledow. Powyzszy kod wkleilem do nowego projektu "Windows Application" i nacisnalem F9, poprosil mnie o zapisanie, wiec zapisalem. I BUM, nie dziala :/ W ramach nauki, aby sie czegos dowiedziec, zajrzalem do tutoriala WinAPI i pierwszysz program: #include <windows.h>
INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR lStart, INT nShow ) { return 0; }
I BUUUUM, rowniez nie dziala:/ Pewnie robie cos glupiego, lub vista jest glupia:P bo przed pierwszymi kompilacjami normalnych prostych programow musialem zmienic sciezki w opcjach kompilatora, zeby wszystko dzialalo na cacy. Bardzo prosze o pomoc :) |
|
krdk |
» 2009-05-13 11:32:23 Pokaż log błędów. |
|
DejaVu |
» 2009-05-13 11:32:57 Wklej logi kompilacji z drugiego programu. Mój wygląda tak: Kompilator: Default compiler Wykonywanie g++.exe... g++.exe "C:\Documents and Settings\Dejavu\Pulpit\plik.cpp" -o "C:\Documents and Settings\Dejavu\Pulpit\plik.exe" -I"C:\Dev-Cpp\lib\gcc\mingw32\3.4.2\include" -I"C:\Dev-Cpp\include\c++\3.4.2\backward" -I"C:\Dev-Cpp\include\c++\3.4.2\mingw32" -I"C:\Dev-Cpp\include\c++\3.4.2" -I"C:\Dev-Cpp\include" -L"C:\Dev-Cpp\lib" Wykonanie zakończone Kompilacja zakończona sukcesem |
|
robaczek122 Temat założony przez niniejszego użytkownika |
» 2009-05-13 11:48:56 log z drugiej kompilacji: Kompilator: Default compiler Building Makefile: "C:\Dev-Cpp\Makefile.win" Wykonywanie make... C:\D ev - Cpp\bin\make.exe - f "C:\Dev-Cpp\Makefile.win" all C:\D ev - Cpp\bin\g++.exe - c main.cpp - o main.o - I "C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include" - I "C:/Dev-Cpp/include/c++/3.4.2/backward" - I "C:/Dev-Cpp/include/c++/3.4.2/mingw32" - I "C:/Dev-Cpp/include/c++/3.4.2" - I "C:/Dev-Cpp/include"
In file included from C:/ Dev - Cpp / include / windows.h: 55, from main.cpp: 1: C:/ Dev - Cpp / include / winuser.h: In function ` int main() ': C:/ Dev - Cpp / include / winuser.h : 12 : error : ` GetDC ' undeclared (first use this function) C:/ Dev - Cpp / include / winuser.h : 12 : error :( Each undeclared identifier is reported only once for each function it appears in.) C:/ Dev - Cpp / include / winuser.h : 24 : error : ` ReleaseDC ' undeclared (first use this function) In file included from C:/ Dev - Cpp / include / windows.h : 86 , from main.cpp : 1 : C:/ Dev - Cpp / include / commdlg.h : At global scope : C:/ Dev - Cpp / include / commdlg.h : 360 : error : ` NMHDR ' does not name a type C:/ Dev - Cpp / include / commdlg.h : 365 : error : ` NMHDR ' does not name a type In file included from C:/ Dev - Cpp / include / ole2.h : 29 , from C:/ Dev - Cpp / include / windows.h : 111 , from main.cpp : 1 : C:/ Dev - Cpp / include / oleidl.h : 199 : error : ` LPMSG ' has not been declared C:/ Dev - Cpp / include / oleidl.h : 303 : error : ` TranslateAccelerator ' declared as a `virtual' field C:/ Dev - Cpp / include / oleidl.h : 303 : error : expected `; ' before '( ' token
C:/ Dev - Cpp / include / oleidl.h: 329: error: ` TranslateAccelerator ' declared as a `virtual' field C:/ Dev - Cpp / include / oleidl.h: 329: error: expected `; ' before '( ' token
In file included from C:/ Dev - Cpp / include / windows.h: 111, from main.cpp: 1: C:/ Dev - Cpp / include / ole2.h: 75: error: ` LPMSG ' has not been declared
C:/ Dev - Cpp / include / ole2.h: 85: error: ` LPMSG ' has not been declared
C:\D ev - Cpp\bin\make.exe: ***[ main.o ] Error 1
Wykonanie zako ń czone
edit: niepokojaca moze byc linijka: C:/Dev-Cpp/include/winuser.h: In function `int main()': `int main()' - wlasciwie nie wiem czemu w ogóle tam jest... (?) |
|
DejaVu |
» 2009-05-13 18:59:20 Weź ściągnij sobie od nowa Dev-C++ i zainstaluj go poprawnie. #include <iostream> #include <windows.h> using namespace std;
int main() { HDC Ekran = GetDC( NULL ); COLORREF Kolor = RGB( 255, 255, 255 ); Kolor = GetPixel( Ekran, 0, 0 ); short int r, g, b; r = GetRValue( Kolor ); g = GetGValue( Kolor ); b = GetBValue( Kolor ); cout << "Czerwony : " << r << "\n" "Zielony : " << g << "\n" "Niebieski : " << b << "\n"; ReleaseDC( NULL, Ekran ); system( "PAUSE" ); return 0; }
Powyższy kod się kompiluje. Linker wyrzuca jeden błąd: [Linker error] undefined reference to `GetPixel@12' Aby usunąć błąd linkera trzeba utworzyć projekt i dołączyć do niego jakąś bibliotekę (nie szukałem jaką). |
|
robaczek122 Temat założony przez niniejszego użytkownika |
» 2009-05-17 13:54:29 na msdn znalazlem: Header windows.h Library coredll.lib
czy oznacza to ze musze sciagnac biblioteke coredll? szukalem, ale nie moglem znalezc... na forum gdzie znalazlem przyklad pobieracza kolorow, znalazla sie taka notka: 1. Utwórz nowy projekt typy "Console application" 2. Wklej tam kod 3. Wejdź w opcje projektu (Projekt->Opcje projektu) 4. Przejdź do zakładki "Parametry" 5. Kliknij na "Dodaj plik" 6. W otwartym okienku przejdź do folderu, gdzie zainstalowany jest Dev-c++ i przejdź tam do katalogu "lib" 7. Zaznacz plik "libgdi32.a" i kliknij "Otwórz" 8. Po dodaniu pliku kliknij "OK" i skompiluj kod
postepujac krok po kroku, kompilator wywalil blad: 3743 C:\Dev-Cpp\include\winuser.h too few arguments to function `int ReleaseDC(HWND__*, HDC__*)' jakies pomysly co dalej zrobic? |
|
TomekU |
» 2009-05-17 15:52:53 Zamien HDC Ekran = GetDC( NULL ); na HDC Ekran = GetDC( GetDesktopWindow() ); i powinno byc ok. U mnie w VS 2k8 EE kompiluje i odpala sie bez problemu. |
|
robaczek122 Temat założony przez niniejszego użytkownika |
» 2009-05-17 16:27:37 niestety dla mojego kompilatora jest to bez znaczenia dev-c++ 4.9.9.2 |
|
« 1 » 2 |