小编use*_*4D4的帖子

GDI+ 双缓冲:后缓冲双色单色

我正在尝试使用 C++、Windows api 和 GDI+ 构建一个非常简单的图形应用程序。第一次尝试构建应用程序时,引入了严重的闪烁,因此此代码尝试使用双缓冲,但失败了。hdcBuf 是后备缓冲区。

当尝试使用 GDI+ Graphics::DrawCachedBitmap 将某些内容绘制到后台缓冲区时,位图将以黑白双色绘制。

LoadBitmapRes 从 EXE 资源创建一个 CachedBitmap;该函数适用于单缓冲。

代码有什么问题吗?提前致谢!

全球的:

CachedBitmap* fish;
HDC hdc;
HDC hdcBuf;
HBITMAP hbmpBuf;
Graphics* gfxBuf;
Run Code Online (Sandbox Code Playgroud)

WM_创建:

hdc = GetDC(hwnd);
hdcBuf = CreateCompatibleDC(hdc);
hbmpBuf = CreateCompatibleBitmap(hdcBuf, 640, 480);
SelectObject(hdcBuf, hbmpBuf);
gfxBuf = Graphics::FromHDC(hdcBuf); 
fish = LoadBitmapRes(gfxBuf, MAKEINTRESOURCE(FISH2), "SPRITE");
Run Code Online (Sandbox Code Playgroud)

WM_PAINT:

HDC temp = BeginPaint(hwnd, &ps);
gfxBuf->DrawCachedBitmap(fish, x, y);
BitBlt(temp, 0, 0, 640, 480, hdcBuf, 0, 0, SRCCOPY);
EndPaint(hwnd, &ps);
Run Code Online (Sandbox Code Playgroud)

c++ windows winapi doublebuffered

4
推荐指数
1
解决办法
1215
查看次数

D Lua没有得到满足

我正在尝试让Lua使用新的编程语言D.一切正常(库,lua52.dll等)但luaL_getmetatable崩溃了.最初,函数没有在dlua中定义,但我添加了它:

    //C     #define luaL_getmetatable(L,n)  (lua_getfield(L, LUA_REGISTRYINDEX, (n)))
    void luaL_getmetatable(lua_State* L, const(char)* s) {
        lua_getfield(L, LUA_REGISTRYINDEX, s);
    }
Run Code Online (Sandbox Code Playgroud)

但是当我跑步时:

    L = lua_open();
    luaL_openlibs(L);
    // prevent script kiddies
    luaL_dostring(L, "os = nil; io = nil");
    // reprogram 'print'
    luaL_newmetatable(L, "vector");
    luaL_getmetatable(L, "vector"); // CRASH
Run Code Online (Sandbox Code Playgroud)

它崩溃了.任何想法为什么会这样?

lua d

3
推荐指数
1
解决办法
302
查看次数

标签 统计

c++ ×1

d ×1

doublebuffered ×1

lua ×1

winapi ×1

windows ×1