main.cpp 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. #include <windows.h>
  2. #include <stdio.h>
  3. struct x
  4. {
  5. const char *txt;
  6. };
  7. int main(int argc, char** argv)
  8. {
  9. int ret = 1;
  10. fprintf(stdout, "CTEST_FULL_OUTPUT (Avoid ctest truncation of output)\n");
  11. #ifdef CMAKE_RCDEFINE
  12. fprintf(stdout, "CMAKE_RCDEFINE defined\n");
  13. #endif
  14. #ifdef CMAKE_RCDEFINE_NO_QUOTED_STRINGS
  15. // Expect CMAKE_RCDEFINE to preprocess to exactly test.txt
  16. x test;
  17. test.txt = "*exactly* test.txt";
  18. fprintf(stdout, "CMAKE_RCDEFINE_NO_QUOTED_STRINGS defined\n");
  19. fprintf(stdout, "CMAKE_RCDEFINE is %s, and is *not* a string constant\n",
  20. CMAKE_RCDEFINE);
  21. #else
  22. // Expect CMAKE_RCDEFINE to be a string:
  23. fprintf(stdout, "CMAKE_RCDEFINE='%s', and is a string constant\n",
  24. CMAKE_RCDEFINE);
  25. #endif
  26. HRSRC hello = ::FindResource(NULL, MAKEINTRESOURCE(1025), "TEXTFILE");
  27. if(hello)
  28. {
  29. fprintf(stdout, "FindResource worked\n");
  30. HGLOBAL hgbl = ::LoadResource(NULL, hello);
  31. int datasize = (int) ::SizeofResource(NULL, hello);
  32. if(hgbl && datasize>0)
  33. {
  34. fprintf(stdout, "LoadResource worked\n");
  35. fprintf(stdout, "SizeofResource returned datasize='%d'\n", datasize);
  36. void *data = ::LockResource(hgbl);
  37. if (data)
  38. {
  39. fprintf(stdout, "LockResource worked\n");
  40. char *str = (char *) malloc(datasize+4);
  41. if (str)
  42. {
  43. memcpy(str, data, datasize);
  44. str[datasize] = 'E';
  45. str[datasize+1] = 'O';
  46. str[datasize+2] = 'R';
  47. str[datasize+3] = 0;
  48. fprintf(stdout, "str='%s'\n", str);
  49. free(str);
  50. ret = 0;
  51. #ifdef CMAKE_RCDEFINE_NO_QUOTED_STRINGS
  52. fprintf(stdout, "LoadString skipped\n");
  53. #else
  54. char buf[256];
  55. if (::LoadString(NULL, 1026, buf, sizeof(buf)) > 0)
  56. {
  57. fprintf(stdout, "LoadString worked\n");
  58. fprintf(stdout, "buf='%s'\n", buf);
  59. }
  60. else
  61. {
  62. fprintf(stdout, "LoadString failed\n");
  63. ret = 1;
  64. }
  65. #endif
  66. }
  67. }
  68. }
  69. }
  70. return ret;
  71. }