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

[WinAPI] Problem z dodaniem zasobów

Ostatnio zmodyfikowano 2012-07-08 14:58
Autor Wiadomość
akcza
Temat założony przez niniejszego użytkownika
[WinAPI] Problem z dodaniem zasobów
» 2012-07-08 14:12:44
Witam,
mam problem z dodaniem zasobów do projektu.
Untitled1.rc:
1 10 "a.txt"
HRSRC uchwyt = FindResource( hInstance, MAKEINTRESOURCE( 1 ), 10);

Błąd:
2  C:\Users\Sara\Documents\Untitled1.rc [Resource error] syntax error
  C:\Users\Sara\Documents\Makefile.win [Error] [Project2_private.res] Error 1 (if this is the only error: please check your library includes)

Środowisko: Dev-C++
P-59709
DejaVu
» 2012-07-08 14:25:06
P-59710
akcza
Temat założony przez niniejszego użytkownika
» 2012-07-08 14:27:05
Właśnie się na tym kursie wzorowałem - jednak coś nie działa...
Nawet po skopiowaniu "żywcem" z podanego tutka nadal się nie kompiluje. Może błąd kompilatora? Może biblioteki brakuje?
P-59711
DejaVu
» 2012-07-08 14:40:50
Kod żywcem przekopiowany rzadko kiedy działa przy projektach wymagających więcej niż jednego pliku. Też kiedyś używałem tego tutoriala i trochę musiałem powalczyć aby osiągnąć sukces. Zobacz kod na tej drugiej stronie co podałem. Poza tym określ się co chcesz konkretnie wyciągnąć z resource-ów. Jeżeli plik to daję fragmenty CodeDesk-a:
C/C++
//resources.rh
#ifndef __resources_rh__
#define __resources_rh__

#define IDI_APP 5000
#define IDI_APP_CHANGED 5001
#define IDI_TOPIC_OPEN 5002
#define IDI_TOPIC_OPENI 5003
#define IDI_TOPIC_OPENV 5004
#define IDI_TOPIC_OPENVI 5005
#define IDI_TOPIC_CLOSED 5006
#define IDI_TOPIC_CLOSEDI 5007
#define IDI_TOPIC_CLOSEDV 5008
#define IDI_TOPIC_CLOSEDVI 5009
#define IDBIN_DOKUMENTACJA 5010

#define IDM_FILE 6000
#define ID_FILE_FIND 6001
#define ID_FILE_EXIT 6002


#endif //__resources_rh__

C/C++
//resources.rc
#include "resources.rh"

IDI_APP ICON "app.ico"
IDI_APP_CHANGED ICON "app-changed.ico"
IDI_TOPIC_OPEN ICON "open.ico"
IDI_TOPIC_OPENI ICON "open_i.ico"
IDI_TOPIC_OPENV ICON "open_v.ico"
IDI_TOPIC_OPENVI ICON "open_vi.ico"
IDI_TOPIC_CLOSED ICON "closed.ico"
IDI_TOPIC_CLOSEDI ICON "closed_I.ico"
IDI_TOPIC_CLOSEDV ICON "closed_V.ico"
IDI_TOPIC_CLOSEDVI ICON "closed_VI.ico"
IDBIN_DOKUMENTACJA RCDATA "dokumentacja.xml"

IDM_FILE MENU
{
    POPUP "&Plik"
    {
        //MENUITEM "&Szukaj...", ID_FILE_FIND
        //MENUITEM SEPARATOR
        MENUITEM "Zakończ", ID_FILE_EXIT
    }
}

C/C++
//CodeDeskApp.cpp (fragment)
void CCodeDeskApp::loadSearchDB()
{
    //Wczytanie danych binarnych z zasobów (RC)
    HINSTANCE hInstance =::GetModuleHandle( NULL );
    HRSRC hResource =::FindResource( hInstance, MAKEINTRESOURCE( IDBIN_DOKUMENTACJA ), RT_RCDATA );
    if( !hResource )
         return;
   
    DWORD iSize =::SizeofResource( hInstance, hResource );
    HGLOBAL hData =::LoadResource( hInstance, hResource );
    if( !hData )
         return;
   
    memory::ChunkedMemory < char > binResult;
    LPVOID pData =::LockResource( hData );
    if( pData )
    {
        binResult.push_back( reinterpret_cast < char *>( pData ), iSize );
        UnlockResource( hData );
    } //if
    ::FreeResource( hData );
   
    m_iGoogleVirtualKey = m_virtualDB.insert( new codedesk::CGoogleVR() );
    //Obsługa danych
    binResult.push_back( 0 );
    codedesk::CParseXml parse;
    if( !parse.parseFromContent( binResult.getArray() ) )
         return;
   
    codedesk::CDataDocumentation doc = parse.getDoc();
    BOOST_FOREACH( codedesk::CDataDocumentation::RRow & row, doc.rows() )
    {
        codedesk::CDocumentationVR * pItem = new codedesk::CDocumentationVR( m_searchEngine );
        pItem->setup( row );
        codedesk::CVirtualDB::KeyT iKey = m_virtualDB.insert( pItem );
        m_searchEngine.insert( row.iFullTitleId, row.sFullTitle, iKey );
        m_searchEngine.insert( row.iShortDescriptionId, row.sShortDescription, iKey );
    } //BOOST_FOREACH
}
P-59712
akcza
Temat założony przez niniejszego użytkownika
» 2012-07-08 14:58:28
Ok, już wiem co zrobiłem nie tak.
Głupi błąd:
HRSRC uchwyt = FindResource( hInstance, MAKEINTRESOURCE( 1 ), 10);
To powinno być w pliku .cpp, a nie .rc :-)

Dzięki za pomoc. Do zamknięcia.
P-59714
« 1 »
  Strona 1 z 1