Как добавить значок в приложение c ++ с помощью компилятора Digital Mars (rcc.exe и dmc.exe) - PullRequest
0 голосов
/ 11 апреля 2019

Я работаю над проектом, в котором я должен использовать компилятор Digital Mars c ++.Мне нужно добавить значок в мой файл .exe.Я знаю, как добавить значок в Visual Studio, но это не так, потому что я работаю над Digital Mars (мне нужно пошаговое руководство по командной строке, чтобы добавить значок, который, как я предполагаю, VS делает в фоновом режиме).Мой проект содержит файл ресурса как Hello.rc:

#include "resource.h"

MAINICON ICON "icon.ico"
MY_RESOURCE RCDATA "a.txt"

Файл заголовка ресурса как resource.h:

#define MAINICON      101    
#define RCDATA    256
#define ICON    257
#define MY_RESOURCE 300

и основной файл как Hello.cpp:

#include <iostream>
#include <windows.h>
#include <cstdio>
#include "resource.h"

using namespace std;

void LoadFileInResource(int name, int type, DWORD& size, const char*& data)
{
    HMODULE handle = ::GetModuleHandle(NULL);
    HRSRC rc = ::FindResource(handle, MAKEINTRESOURCE(name),
        MAKEINTRESOURCE(type));
    HGLOBAL rcData = ::LoadResource(handle, rc);
    size = ::SizeofResource(handle, rc);
    data = static_cast<const char*>(::LockResource(rcData));
}

// Usage example
int main()
{
    DWORD size = 0;
    const char* data = NULL;
    LoadFileInResource(MY_RESOURCE, RCDATA, size, data);    
    char snum[5];

    // convert 123 to string [buf]
    itoa(size, snum, 10);

    // print our string
    printf("%s\n", snum);
    /* Access bytes in data - here's a simple example involving text output*/
    // The text stored in the resource might not be NULL terminated.
    char* buffer = new char[size+1];    
    ::memcpy(buffer, data, size);
    buffer[size] = 0; // NULL terminator
    ::printf("Contents of text file: %s\n", buffer); // Print as ASCII text
    delete[] buffer;
    return 0;
}

Я компилирую свой проект, используя следующие команды.В результате .exe может прочитать содержимое a.txt, но не отображает значок.

rcc hello.rc
dmc hello.cpp hello.rc

Что-то не так с моим кодом или мне следует использовать другую команду?

...