这是我想要实现的:我有一个类的列表(Class1到Classn)继承自主类我希望能够实现任何n类的对象,而无需做大的开关案例(或同等学历).类似的东西:
static ClassPointerType const * const ArrayOfClassTypes[]={ Class1, Class2, .. Classn };
static Class *GetObjectOfClass(int i)
{
return new ArrayOfClassTypes[i](some parameters for the constructor);
}
Run Code Online (Sandbox Code Playgroud)
您可以在其他OO语言中执行此操作,例如Delphi,您可以使用TClass类型并获取对象的类...但我无法在C++中找到等效的功能.
我正在开发一个webassembly程序。我可以使用emscripten_set_canvas_size设置画布大小(直到我读到我需要切换到新的API,因为这个API将会被贬值)...
但是我的问题是:如何设置画布上的像素?我的程序为画布生成32位颜色的数组,我需要将这些位从内部存储器传输到画布。我怎样才能做到这一点?
另外,如果我只能获取指向画布数据的内存指针,则可以直接在所述内存中写...
我希望,如果可能的话,无需重新排序至任何其他API(GL,SDL ...),就可以将颜色尽快转移到画布上……仅此而已。
理想情况下,我正在按照以下方式寻找一个简短的示例程序:
#include <...>
uint32_t screen[320*320];
static void main_loop()
{
memset(screen, 0, 320*320*4); // Clear screen
for (int x=0; x<320; x++)
for (int y=0; y<320; y++)
screen[320*(x|y) + (x&y)]= 0xffffff; // set pixel(x or y, x and y) to white... (will draw a serpinsky triangle)
Copy_ToCanvas(screen); // THIS IS THE FUNCTION THAT I AM LOOKING FOR
}
int main()
{
emscripten_set_canvas_size(320, 320);
emscripten_set_main_loop(main_loop, 100, true);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
谢谢,西里尔
我正在尝试以编程方式列出我的 win10 系统上所有已安装的应用程序。
基本上,我试图获取当您在资源管理器窗口中键入“shell:appsFolder”时可以看到的列表。
这是我使用的代码:
HRESULT hr;
IShellFolder *psParent= nullptr, *psApps= nullptr;
LPITEMIDLIST pidlSystem = NULL;
hr = SHGetFolderLocation(NULL, CSIDL_SYSTEM, NULL, NULL, &pidlSystem); // get root pidl which is needed to get the parrent of our app folder
LPITEMIDLIST pidlApps= NULL;
if (!SUCCEEDED(hr= SHGetKnownFolderItem(FOLDERID_AppsFolder, KF_FLAG_DEFAULT, NULL, IID_IShellItem , (void**)&pidlApps)))
goto done; // get pidl for apps folder
if (!SUCCEEDED(hr=SHBindToParent(pidlSystem, IID_IShellFolder, (void **) &psParent, (LPCITEMIDLIST*)&pidlApps)))
goto done; // Get shell folder of parrent, which is needed to get shell folder of …Run Code Online (Sandbox Code Playgroud)