如何制作窗口,或更像是剪切区域,我可以在其中绘制像素?它可能使用WinApi,但是我不希望我的项目看起来像winapi,所以它将
int main(){}
Run Code Online (Sandbox Code Playgroud)
代替
int WINAPI WinMain(HINSTANCE ...
Run Code Online (Sandbox Code Playgroud)
我找到了一个示例,可以在控制台窗口中绘制
int main()
{
COLORREF color = RGB(255,0,0); // COLORREF to hold the color info
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
HDC hdc = GetDC(hwnd); // Get the DC from that HWND
for( int i = 0 ; i < 50 ; i++ )
{
SetPixel(hdc, 5+i, 12, color); // SetPixel(HDC hdc, int x, int y, COLORREF color)
}
ReleaseDC(hwnd, hdc); // Release the DC
DeleteDC(hdc); // Delete the DC
system("pause");
return(0);
}
Run Code Online (Sandbox Code Playgroud)
但是我想在控制台上绘制而不是控制台,该区域将保持焦点(当用户单击它时,等等)。
能够为该程序处理简单的键盘/鼠标事件也很不错,但这不是我的主要目标,也许其他一些第三方库也可以帮助您。
我希望我已经清楚地解释了我想做的事情,但是英语不是我的母语,所以对于任何误会我深感抱歉。
感谢您的帮助。
第一次使用此网站时,很抱歉在错误的地方出现少量垃圾邮件或邮件,因为我不确定在哪里发布下一封邮件:-)所以我想写的是:
“否则,Allegro / SDL如何创建窗口?它们使用汇编程序调用还是shell调用?当我能够从头开始创建窗口时,无论需要进行多少工作,我都会感到非常高兴:)”
您不会喜欢这样-在Windows中,您必须创建一个窗口,然后覆盖WM_PAINT消息,然后绘制从系统调用时必须绘制的内容。那是老派的做事方式,还不错。
一些有趣且相关的链接:
http://www.winprog.org/tutorial/bitmaps.html
http://www.codeproject.com/Articles/66250/BeginPaint-EndPaint-or-GetDC-ReleaseDC.aspx
如果您真的想避免所有这些,请尝试popcap。那里的学习曲线可能更陡峭,所以您可能真的想坚持使用GDI和HWND,无论它在一开始看起来有多困难和令人困惑。