Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Pliki RC

Ostatnio zmodyfikowano 2017-04-27 14:43
Autor Wiadomość
sppmacd
Temat założony przez niniejszego użytkownika
Pliki RC
» 2017-04-26 19:45:09
Witam, mam problem z plikami RC. Mam stworzony plik RC
C/C++
/////////////////
// main.hpp
/////////////////

#define IDI_ICONBG 1000
#define IDI_ICONSM 1001

/////////////////
// icon.rc
/////////////////

#include "main.hpp"

IDI_ICONBG ICON "icon.ico"
IDI_ICONSM ICON "iconSm.ico"

1 VERSIONINFO
FILEVERSION 0, 0, 0, 0 // wersja pliku
PRODUCTVERSION 0, 0, 0, 0 // wersja produktu
FILETYPE VFT_APP
{
    BLOCK "StringFileInfo"
    {
        BLOCK "041504E4"
        {
            VALUE "CompanyName", "Sppmacd" // nazwa firmy
            VALUE "FileVersion", "0.0 beta" // wersja pliku
            VALUE "FileDescription", "Program do tworzenia errorów" // opis programu
            VALUE "InternalName", "sppprogramers.c0.pl" // wewnêtrzna nazwa pliku
            VALUE "LegalCopyright", "(C) Copyright by Sppmacd" // prawa autorskie
            VALUE "LegalTrademarks", "" // prawne znaki towarowe
            VALUE "OriginalFilename", "VirusCreator.exe" // oryginalna nazwa pliku
            VALUE "ProductName", "Virus Creator" // nazwa pliku
            VALUE "ProductVersion", "0.0 beta" // wersja produktu
        }
    }
    BLOCK "VarFileInfo"
    {
        VALUE "Translation", 0x0415, 1252
       
    }
}
/////////////////
// main.cpp
/////////////////

/////////////////////////////////////////
// Wygenerowane za pomocą CodeBlocks
/////////////////////////////////////////
#if defined(UNICODE) && !defined(_UNICODE)
#define _UNICODE
#elif defined(_UNICODE) && !defined(UNICODE)
#define UNICODE
#endif

#include <tchar.h>
#include <windows.h>
#include "main.hpp"

#define CTRL_ERRNAME 500
#define CTRL_ERRTEXT 501
#define CTRL_ISFATAL 502
#define CTRL_ICONTYPE   503
#define CTRL_BUTTONS 504

/*  Declare Windows procedure  */
LRESULT CALLBACK WindowProcedure( HWND, UINT, WPARAM, LPARAM );

/*  Make the class name into a global variable  */
TCHAR szClassName[] = _T( "CodeBlocksWindowsApp" );

int WINAPI WinMain( HINSTANCE hThisInstance,
HINSTANCE hPrevInstance,
LPSTR lpszArgument,
int nCmdShow )
{
    HMENU hMenu = LoadMenu( hThisInstance, MAKEINTRESOURCE( 200 ) );
    HWND hwnd; /* This is the handle for our window */
    MSG messages; /* Here messages to the application are saved */
    WNDCLASSEX wincl; /* Data structure for the windowclass */
   
    /* The Window structure */
    wincl.hInstance = hThisInstance;
    wincl.lpszClassName = szClassName;
    wincl.lpfnWndProc = WindowProcedure; /* This function is called by windows */
    wincl.style = CS_DBLCLKS; /* Catch double-clicks */
    wincl.cbSize = sizeof( WNDCLASSEX );
   
    /* Use default icon and mouse-pointer */
    wincl.hIcon = LoadIcon( NULL, MAKEINTRESOURCE( IDI_ICONBG ) );
    wincl.hIconSm = LoadIcon( NULL, MAKEINTRESOURCE( IDI_ICONSM ) );
    wincl.hCursor = LoadCursor( NULL, IDC_ARROW );
    wincl.lpszMenuName = NULL; /* No menu */
    wincl.cbClsExtra = 0; /* No extra bytes after the window class */
    wincl.cbWndExtra = 0; /* structure or the window instance */
    /* Use Windows's default colour as the background of the window */
    wincl.hbrBackground =( HBRUSH ) COLOR_BACKGROUND;
   
    /* Register the window class, and if it fails quit the program */
    if( !RegisterClassEx( & wincl ) )
         return 0;
   
    /* The class is registered, let's create the program*/
    hwnd = CreateWindowEx(
    0, /* Extended possibilites for variation */
    szClassName, /* Classname */
    _T( "Virus Creator v0.0 beta" ), /* Title Text */
    WS_OVERLAPPEDWINDOW, /* default window */
    CW_USEDEFAULT, /* Windows decides the position */
    CW_USEDEFAULT, /* where the window ends up on the screen */
    544, /* The programs width */
    375, /* and height in pixels */
    HWND_DESKTOP, /* The window is a child-window to desktop */
    hMenu, /* No menu */
    hThisInstance, /* Program Instance handler */
    NULL /* No Window Creation data */
    );
   
    /* Make the window visible on the screen */
    ShowWindow( hwnd, nCmdShow );
   
    /* Run the message loop. It will run until GetMessage() returns 0 */
    while( GetMessage( & messages, NULL, 0, 0 ) )
    {
        /* Translate virtual-key messages into character messages */
        TranslateMessage( & messages );
        /* Send message to WindowProcedure */
        DispatchMessage( & messages );
    }
   
    /* The program return-value is 0 - The value that PostQuitMessage() gave */
    return messages.wParam;
}


/*  This function is called by the Windows function DispatchMessage()  */

LRESULT CALLBACK WindowProcedure( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam )
{
    switch( message ) /* handle the messages */
    {
    case WM_DESTROY:
        PostQuitMessage( 0 ); /* send a WM_QUIT to the message queue */
        break;
        default: /* for messages that we don't deal with */
        return DefWindowProc( hwnd, message, wParam, lParam );
    }
   
    return 0;
}

Program nie ładuje ikon ani danych. Plik *.rc mam wrzucony w tym samym folderze, co projekt. Pomoże ktoś?
P-160529
darko202
» 2017-04-27 08:00:08
1.
zobacz jaki katalog programu uznaje za podstawowy.

np. Utwórz plik o unikalnej nazwie i zobacz gdzie został zapisany
być może jakieś ustawienia systemu operacyjnego powodują, że za podstawowy uznaje np.  "c:\user\tomek\...

użyj funkcji pobierającej nazwę bieżącego katalogu GetCurrentDirectory
https://msdn.microsoft.com​/en-us/library/windows/desktop​/aa364934(v=vs.85).aspx

2.
oraz sprawdź status otwarcia pliku RC
oraz jaki i czy jest dobrze utworzony
http://www.solvusoft.com/pl​/file-extensions​/file-extension-rc/
https://4programmers.net​/Delphi/Artyku%C5%82y​/Zasoby_w_EXE
P-160541
sppmacd
Temat założony przez niniejszego użytkownika
» 2017-04-27 14:43:20
Problemem było to, że nie dołączyłem pliku *.rc do projektu. Jednak ikona wyświetla się tylko w Eksploratorze, w samym oknie (na pasku u góry) już nie.
P-160553
« 1 »
  Strona 1 z 1