76 lines
2.0 KiB
C++
Raw Normal View History

2011-02-07 16:37:25 +01:00
#include <stdio.h>
2016-07-09 11:21:54 +02:00
#include <windows.h>
2011-01-16 11:35:12 +01:00
2015-11-17 17:22:37 +01:00
extern int lib();
2011-02-07 16:37:25 +01:00
struct x
{
2016-07-09 11:21:54 +02:00
const char* txt;
2011-02-07 16:37:25 +01:00
};
int main(int argc, char** argv)
{
int ret = 1;
fprintf(stdout, "CTEST_FULL_OUTPUT (Avoid ctest truncation of output)\n");
#ifdef CMAKE_RCDEFINE
fprintf(stdout, "CMAKE_RCDEFINE defined\n");
#endif
#ifdef CMAKE_RCDEFINE_NO_QUOTED_STRINGS
// Expect CMAKE_RCDEFINE to preprocess to exactly test.txt
x test;
test.txt = "*exactly* test.txt";
fprintf(stdout, "CMAKE_RCDEFINE_NO_QUOTED_STRINGS defined\n");
fprintf(stdout, "CMAKE_RCDEFINE is %s, and is *not* a string constant\n",
2016-07-09 11:21:54 +02:00
CMAKE_RCDEFINE);
2011-02-07 16:37:25 +01:00
#else
// Expect CMAKE_RCDEFINE to be a string:
fprintf(stdout, "CMAKE_RCDEFINE='%s', and is a string constant\n",
2016-07-09 11:21:54 +02:00
CMAKE_RCDEFINE);
2011-02-07 16:37:25 +01:00
#endif
HRSRC hello = ::FindResource(NULL, MAKEINTRESOURCE(1025), "TEXTFILE");
2016-07-09 11:21:54 +02:00
if (hello) {
2011-02-07 16:37:25 +01:00
fprintf(stdout, "FindResource worked\n");
HGLOBAL hgbl = ::LoadResource(NULL, hello);
2016-07-09 11:21:54 +02:00
int datasize = (int)::SizeofResource(NULL, hello);
if (hgbl && datasize > 0) {
2011-02-07 16:37:25 +01:00
fprintf(stdout, "LoadResource worked\n");
fprintf(stdout, "SizeofResource returned datasize='%d'\n", datasize);
2016-07-09 11:21:54 +02:00
void* data = ::LockResource(hgbl);
if (data) {
2011-02-07 16:37:25 +01:00
fprintf(stdout, "LockResource worked\n");
2016-07-09 11:21:54 +02:00
char* str = (char*)malloc(datasize + 4);
if (str) {
2011-02-07 16:37:25 +01:00
memcpy(str, data, datasize);
str[datasize] = 'E';
2016-07-09 11:21:54 +02:00
str[datasize + 1] = 'O';
str[datasize + 2] = 'R';
str[datasize + 3] = 0;
2011-02-07 16:37:25 +01:00
fprintf(stdout, "str='%s'\n", str);
free(str);
ret = 0;
#ifdef CMAKE_RCDEFINE_NO_QUOTED_STRINGS
fprintf(stdout, "LoadString skipped\n");
#else
char buf[256];
2016-07-09 11:21:54 +02:00
if (::LoadString(NULL, 1026, buf, sizeof(buf)) > 0) {
2011-02-07 16:37:25 +01:00
fprintf(stdout, "LoadString worked\n");
fprintf(stdout, "buf='%s'\n", buf);
2016-07-09 11:21:54 +02:00
} else {
2011-02-07 16:37:25 +01:00
fprintf(stdout, "LoadString failed\n");
ret = 1;
}
2016-07-09 11:21:54 +02:00
#endif
2011-02-07 16:37:25 +01:00
}
}
}
2016-07-09 11:21:54 +02:00
}
2011-02-07 16:37:25 +01:00
2015-11-17 17:22:37 +01:00
return ret + lib();
2011-01-16 11:35:12 +01:00
}