Я работаю над проектом, в котором я должен использовать компилятор 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
Что-то не так с моим кодом или мне следует использовать другую команду?