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

Listowanie plików

Ostatnio zmodyfikowano 2011-01-21 21:21
Autor Wiadomość
malan
» 2010-12-29 00:57:50
Nie wiem, co masz dokładnie na myśli... Przeciąganie plików na okno, a przeciąganie plików na "program" to dwie różne rzeczy. W jednym przypadku, program został już uruchomiony, a w drugim jest uruchamiany. Powiedz może, co chcesz osiągnąć, to będzie nam łatwiej Ci pomóc.
Kod, który podałem po części realizuje "drag and drop" (czyli-
przeciąganie plików na "program"
).
Po części, bo oczywiście odczytanie ścieżki do pliku, na którym będziemy pracować to dopiero początek :).
P-25831
kizia
Temat założony przez niniejszego użytkownika
» 2010-12-29 01:05:14
Tak wiem że to początek, ale ze ścięzką już sobie poradzę.
Mam program napisany w C++ z użyciem SDL i nie mam konsoli, tylko mam okno windosowkie.
I teraz chciałbym uzyskać właście w taki jakiś sposób jak pokazałeś ścięzkę do pliku przeciąganego na
EDIT : .
okno programu

Oto co chcę osiągnąć :

W programie klikasz na przycisk "Dodaj zdjęcie" i wtedy wyświetla Ci się tabelka z danymi do wypełnienia nanosisz na nią myszką to zdjęcie i zdjęcie wyświetla się w dolnym rogu tabelki a ty wypełniasz dane w tabelce  xD.
P-25832
malan
» 2010-12-29 01:29:48
...C++ z użyciem SDL i nie mam konsoli, tylko mam okno windosowkie.
Za pomocą jakiej biblioteki tworzysz okno? SDL, czy WinAPI, bo to jest ważne.
P-25833
kizia
Temat założony przez niniejszego użytkownika
» 2010-12-29 01:31:25
SDL, a dokładniej :
SDL_Surface* = SDL_SetVideoMode(SCREEN_WIDTH,SCREEN_HEIGHT,SCREEN_BBP,SDL_SWSURFACE) ;
P-25834
malan
» 2010-12-29 02:05:58
Przekopałem dokumentację SDL, ale nic nie znalazłem o możliwości przeciągania plików na okno...
Za to "napisanie" tego w WinAPI zajęło mi... minutę(?)
C/C++
#include <windows.h>

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

/*  Make the class name into a global variable  */
char szClassName[] = "CodeBlocksWindowsApp";

int WINAPI WinMain( HINSTANCE hThisInstance,
HINSTANCE hPrevInstance,
LPSTR lpszArgument,
int nCmdShow )
{
    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, IDI_APPLICATION );
    wincl.hIconSm = LoadIcon( NULL, IDI_APPLICATION );
    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 */
    "Code::Blocks Template Windows App", /* 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 */
    NULL, /* No menu */
    hThisInstance, /* Program Instance handler */
    NULL /* No Window Creation data */
    );
   
    DragAcceptFiles( hwnd, true );
   
    /* 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_DROPFILES:
        {
            HDROP fDrop =( HDROP ) wParam;
            UINT nBufSize = DragQueryFile( fDrop, 0, NULL, 0 );
            TCHAR * fName = new TCHAR[ nBufSize ];
           
            DragQueryFile( fDrop, 0, fName, 5000 );
           
            MessageBox( hwnd, fName, TEXT( "Error!" ), MB_OK );
           
            DragFinish( fDrop );
            delete[] fName;
        }
        break;
    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;
}
P-25835
kizia
Temat założony przez niniejszego użytkownika
» 2010-12-29 02:09:14
No właśnie wiem, zacząłem pisać program w SDL, i teraz strasznie ciężko robi się jakiekolwiek "okienka".
Muszę się nauczyć WinApi i przerobić cały program.

Czyli z SDL'a ścieżki do pliku poprzez przeciągnięcie nie uzyskam?
P-25836
malan
» 2010-12-29 11:22:56
zacząłem pisać program w SDL, i teraz strasznie ciężko robi się jakiekolwiek "okienka"
SDL to biblioteka przystosowana do pisania gier, a nie aplikacji okienkowych. Jeżeli chcesz tworzyć aplikacje okienkowe, to zainteresuj się wxWidgets, Qt, (ewentualnie) WinAPI.

Czyli z SDL'a ścieżki do pliku poprzez przeciągnięcie nie uzyskam?
Nie mogę Ci odpowiedzieć na to pytanie. Przekopywałem wczoraj trochę dokumentację SDLa, ale nic takiego nie znalazłem. Co nie znaczy, że tego tam nie ma. Spróbuj poszukać trochę sam- może coś znajdziesz :).
P-25844
kizia
Temat założony przez niniejszego użytkownika
» 2010-12-29 22:03:27
Prawie jeszcze do tematu.

Jak sprawdzić ile jest linijek w pliku?
P-25901
1 « 2 » 3 4
Poprzednia strona Strona 2 z 4 Następna strona