|
60精币
前两天,我做了一个CS1.6 IMGUI绘制。我意外的发现C++创建的透明窗体,卡帧,非常卡,不管是内部还是外部独立。都会导致游戏非常卡,
但又意外发现论坛上易语言模块写出来的窗口,非常丝滑,几乎没有一点影响,其中,我用C++创建的方法大概是这种原理
我看了易语言模块的源码,大致是这样的,但是我又研究不明白里面的区别, |
窗口创建 | 整数型 | | |
宽度 | 整数型 | | | | 高度 | 整数型 | | | | 回调 | 子程序指针 | | | | 字体大小 | 整数型 | | | | hWnd | 整数型 | | | | 字体名 | 文本型 | | | | 鼠标X | 整数型 | | | | 鼠标Y | 整数型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | 窗口类 | WNDCLASSEX | | | 窗口类名 | 文本型 | | | 窗口 | Margins | | | 如果真 (是否为空 (字体名 )) 字体名 = “msyhbd.ttc”如果真 (文件是否存在 (“C:\Windows\Fonts\” + 字体名 ) = 假)字体名 = “msyhbd.ttf”如果真 (文件是否存在 (“C:\Windows\Fonts\” + 字体名 ) = 假)字体名 = “simhei.ttf”窗口类名 = 随机窗口类名 ()窗口类.cbSize = 48 窗口类.style = 2 窗口类.cbClsExtra = 0 窗口类.cbWndExtra = 0 窗口类.hIconSm = 0 窗口类.hInstance = 随机模块句柄 ()窗口类.hIcon = 随机图标句柄 ()窗口类.hCursor = 随机鼠标句柄 ()窗口类.lpszMenuName = 特征码运算 ()窗口类.lpszClassName = 窗口类名 窗口类.lpfnWndProc = &窗口消息 RegisterClassExA (窗口类 )hWnd = CreateWindowExA (位或 (8, 32, 位或 (0, 262144, 128 )), 窗口类名, 随机窗口标题 (), 2147483648, 窗口.left, 窗口.top, 宽度, 高度, 0, 0, 窗口类.hInstance, 0 )ShowWindow (hWnd, 10 )UpdateWindow (hWnd )SetWindowLongA (hWnd, -20, 位或 (524288, GetWindowLongA (hWnd, -20 )) )SetLayeredWindowAttributes (hWnd, 0, 255, 2 )窗口.left = -1 窗口.right = 0 窗口.top = 0 窗口.bottom = 0 DwmExtendFrameIntoClientArea (hWnd, 窗口 )InitD3D (hWnd, 字体大小, 字体名 )CreateThread (0, 0, 到整数 (&功能封装 ), 到整数 (回调 ), 0, 0 )返回 (hWnd )
最后我把c++ CPP和易语言模块源码都打包上传一下,希望研究过这个问题的大佬可以指点我一下如何在C++里创建这种不掉帧的透明窗口.
|
|