Проблема с вашим кодом:
Я опробовал ваш код и обнаружил, что строка, кажется, появляется в некотором случае ее выполнения, но иногда, когда я ее выполняю, красная линия не обнаруживается! Насколько я понимаю, это потому, что вы сохранили эти 3 утверждения:
// Set text of the console so you can find the window
SetConsoleTitle("Pixel In Console?");
HWND hwnd = FindWindow(NULL, "Pixel In Console?"); // Get the HWND
HDC hdc = GetDC(hwnd); // Get the DC from that HWND
Но Windows обновляет имя вашего окна только через некоторое время, поэтому, если вы заставите эти операторы выполняться один за другим, оператор HWND hwnd = FindWindow(NULL, "Pixel In Console?");
не сможет найти такое окно, потому что Windows требуется время, чтобы обновить заголовок, как: SetConsoleTitle("Pixel In Console?");
Решение:
Вы можете оставить Sleep(int);
(включая windows.h
) или использовать:
HWND hwnd = FindWindowA("ConsoleWindowClass",NULL); // Get the HWND
вместо
SetConsoleTitle("Pixel In Console?"); // Set text of the console so you can find the window
HWND hwnd = FindWindow(NULL, "Pixel In Console?"); // Get the HWND
Вот пример программы :
#include <windows.h>
#include<conio.h>`
#include<iostream.h>`
POINT p; //structure with coordinates to mouse location`
void main()
{
COLORREF color = RGB(255,0,0); // COLORREF to hold the color info`
HWND hwnd = FindWindowA("ConsoleWindowClass",NULL); // Get the HWND
HDC hdc = GetDC(hwnd); // Get the DC from that HWND
for( int i = 0 ; i < 400 ; i++ )
{
for(int j=0;j<50;j++)
SetPixel(hdc, i, j, color);
}
while(1)
{
GetCursorPos(&p);
ScreenToClient(hwnd,&p);
cout<<p.x<<' '<<p.y;
clrscr();
if(GetAsyncKeyState(1)) //checks if left mouse button is pressed
{
//fool around with these functions:
SetPixel(hdc,p.x,p.y,color);
//LineTo(hdc,p.x,p.y);
//Rectangle(hdc,200,200,p.x,p.y);
Sleep(10);
}
}
ReleaseDC(hwnd, hdc); // Release the DC
DeleteDC(hdc); // Delete the DC
system("pause");
}
Это мой первый ответ. Я надеюсь, что помог, и потребовалось много поисков, чтобы найти эти функции
кроме того, я думаю, что я узнал больше из вашего сценария, чем показал вам:)