Napisałem aplikację konsolową i chciałbym narysować linie pionową na ekranie, w dowolnym jego miejscu. Jak mogę to zrobić?
To niestety nie działa: http://stackoverflow.com/questions/8542660/draw-on-desktop-using-visual-c
Błąd:
[Linker error] main.o:main.cpp:(.text+0x72): undefined reference to `CreateSolidBrush@4'
collect2: ld returned 1 exit status
C:\Users\ntmmed\Desktop\Mati\Programy\Obsluga myszy\Makefile.win [Error] [Obsluga_myszy.exe] Error 1 (if this is the only error: please check your library includes)
Już testowałem :) Próbowałem też WinApi ale nie wiem czy to nie przerost formy nad treścią. Bo musiałbym zrobić okno przeźroczyste na całym ekranie.
Bo jakiejś libki nie zlinkowałeś.
W przykładzie jest tylko
windows.h i iostream
A te mam zainkludowane.
MSDN napisał(a)
Minimum supported client Windows 2000 Professional
Minimum supported server Windows 2000 Server
Header Wingdi.h (include Windows.h)
Library Gdi32.lib
DLL Gdi32.dll
Azarien napisał(a):
MSDN napisał(a)
Minimum supported client Windows 2000 Professional
Minimum supported server Windows 2000 Server
Header Wingdi.h (include Windows.h)
Library Gdi32.lib
DLL Gdi32.dll
Dodałem do kompilatora i projektu bibliotekę Gdi32.lib, dodałem też plik nagłówkowy wingdi.h i mam taki error
C:\Users\ntmmed\Desktop\Mati\Programy\Obsluga myszy\main.cpp In function 'int main()':
15 43 C:\Users\ntmmed\Desktop\Mati\Programy\Obsluga myszy\main.cpp [Error] 'FillRect' was not declared in this scope
C:\Users\ntmmed\Desktop\Mati\Programy\Obsluga myszy\Makefile.win [Error] [main.o] Error 1 (if this is the only error: please check your library includes)
weź czasem trochę pogógluj...
http://msdn.microsoft.com/en-us/library/windows/desktop/dd162719(v=vs.85).aspx
odałem też plik nagłówkowy wingdi.h
nie. należy inkludować tylkowindows.h
, w którym jest zawarte#include <wingdi.h>
Niestety dalej nic. Mam taki kod:
#include <iostream>
#include <Windows.h>
int main() {
/* hide console window */
ShowWindow(FindWindowA("ConsoleWindowClass", NULL), false);
/* Calling GetDC with argument 0 retrieves the desktop's DC */
HDC hDC_Desktop = GetDC(0);
/* Draw a simple blue rectangle on the desktop */
RECT rect = { 20, 20, 200, 200 };
HBRUSH blueBrush=CreateSolidBrush(RGB(0,0,255));
FillRect(hDC_Desktop, &rect, blueBrush);
Sleep(10);
return 0;
}
Zainkludowany do projektu folder z biblioteką Gdi32.lib. I nic,
C:\Users\ntmmed\Desktop\Mati\Programy\drawing\main.cpp In function 'int main()':
15 43 C:\Users\ntmmed\Desktop\Mati\Programy\drawing\main.cpp [Error] 'FillRect' was not declared in this scope
C:\Users\ntmmed\Desktop\Mati\Programy\drawing\Makefile.win [Error] [main.o] Error 1 (if this is the only error: please check your library includes)
Skopiowałem ten kod do pliku a.cpp,
D:\>g++ a.cpp
C:\Users\Jarek\AppData\Local\Temp\cciVAGdz.o:a.cpp:(.text+0x72): undefined refer
ence to `CreateSolidBrush@4'
collect2: ld returned 1 exit status
D:\>g++ a.cpp -lGdi32
Wszystko działa.
Pewnie źle dodałeś bibliotekę... Jakiego IDE używasz? Niech zgadnę, Dev-C++...?
msm napisał(a):
Skopiowałem ten kod do pliku a.cpp,
D:\>g++ a.cpp
C:\Users\Jarek\AppData\Local\Temp\cciVAGdz.o:a.cpp:(.text+0x72): undefined refer
ence to `CreateSolidBrush@4'
collect2: ld returned 1 exit status
D:\>g++ a.cpp -lGdi32
Wszystko działa.
Pewnie źle dodałeś bibliotekę... Jakiego IDE używasz? Niech zgadnę, Dev-C++...?
Tak. Używam dev c++
Udało się! Źle dołączałem bibliotekę, miałeś racje ;).