小编Man*_*era的帖子

c ++使用GetDIBits()读取像素

我正在尝试创建一个与 windows API GetPixel() 函数等效的函数,但我想创建屏幕的位图,然后读取该缓冲区。

这就是我所得到的(主要是从谷歌搜索中复制粘贴的),当我运行它时,它只打印出 0。我想我大部分都说对了,我的问题是我不知道如何读取 BYTE 变量。

所以我的问题是,我需要做什么才能让它用我的 for 循环打印出一些随机颜色(R、G 或 B)?

#include <Windows.h>
#include <iostream>
#include <math.h>
#include <stdio.h>

using namespace std;

int main() {

    HDC hdc,hdcMem;

    hdc = GetDC(NULL);
    hdcMem = CreateCompatibleDC(hdc); 

    HBITMAP hBitmap = CreateCompatibleBitmap(hdc, 1680, 1050);

    BITMAPINFO MyBMInfo = {0};
    MyBMInfo.bmiHeader.biSize = sizeof(MyBMInfo.bmiHeader); 
    // Get the BITMAPINFO structure from the bitmap
    if(0 == GetDIBits(hdcMem, hBitmap, 0, 0, NULL, &MyBMInfo, DIB_RGB_COLORS)) {
        cout << "error" << endl;
    }

    // create the bitmap buffer
    BYTE* lpPixels …
Run Code Online (Sandbox Code Playgroud)

c++ pixel bmp getdibits

2
推荐指数
1
解决办法
9960
查看次数

没有暂停代码的用户输入(c ++控制台应用程序)

如何在不导致代码停止执行的情况下输入输入?我一直在寻找答案,在过去的20分钟内没有结果.

cin >> string; 暂停代码AFAIK.

我需要使用多线程,还是有更好的方法?(我甚至不知道多线程是否有效.)

我最近开始学习c ++,至少可以说是初学者,所以请详细解释并包含我可能需要的任何库,谢谢.

c++ multithreading user-input cin console-application

0
推荐指数
1
解决办法
9532
查看次数