#include <windows.h> int WINAPI WinMain( HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow ); BOOL InitApplication( HINSTANCE hInstance ); BOOL InitInstance( HINSTANCE hInstance,int nCmdShow ); LRESULT CALLBACK MainWndProc( HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam ); BOOL ShowFileInfo( HWND hWnd,HDC hDC,HDROP hDropInfo ); int WINAPI WinMain( HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow ) { MSG msg; if( !InitApplication( hInstance ) ) return FALSE; if( !InitInstance( hInstance,nCmdShow ) ) return FALSE; while( GetMessage( &msg,NULL,0,0 ) ) { TranslateMessage( &msg ); DispatchMessage( &msg ); } return msg.wParam; } BOOL InitApplication( HINSTANCE hInstance ) { WNDCLASS wc; wc.style = 0; wc.lpfnWndProc = ( WNDPROC )MainWndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hIcon = LoadIcon( NULL,IDI_APPLICATION ); wc.hCursor = LoadCursor( NULL,IDC_ARROW ); // wc.hbrBackground = GetStockObject( WHITE_BRUSH ); wc.hbrBackground = (HBRUSH)GetStockObject( WHITE_BRUSH ); wc.lpszMenuName = NULL; wc.lpszClassName = "DropFileClass"; return RegisterClass( &wc ); } BOOL InitInstance( HINSTANCE hInstance,int nCmdShow ) { HWND hWnd; hWnd = CreateWindowEx( 0, "DropFileClass", "DropFile Demo", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL ); if( !hWnd ) return FALSE; ShowWindow( hWnd,nCmdShow ); UpdateWindow( hWnd ); return TRUE; } LRESULT CALLBACK MainWndProc( HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam ) { HDC hDC; switch( uMsg ) { case WM_CREATE: DragAcceptFiles( hWnd,TRUE ); break; case WM_DROPFILES: HDROP hDropInfo; hDropInfo = ( HDROP )wParam; // hDropInfo = ( HANDLE )wParam; hDC = GetDC( hWnd ); ShowFileInfo( hWnd,hDC,hDropInfo ); DragFinish( hDropInfo ); ReleaseDC( hWnd,hDC ); break; case WM_DESTROY: DragAcceptFiles( hWnd,FALSE ); PostQuitMessage( 0 ); break; default: return DefWindowProc( hWnd,uMsg,wParam,lParam ); } return 0; } BOOL ShowFileInfo( HWND hWnd,HDC hDC,HDROP hDropInfo ) { POINT pt; WORD cFiles; HINSTANCE hCurrentInst; HICON hIcon; SHFILEINFO sfi; char lpszFile[ 80 ]; char szBuff[ 1024 ]; DragQueryPoint( hDropInfo,&pt ); cFiles = DragQueryFile( hDropInfo,( UINT )0xFFFFFFFF,( LPTSTR )NULL,( UINT )NULL ); if( cFiles > 1 ) { wsprintf( szBuff,"DragFileNumber: %d",( int )cFiles ); TextOut( hDC,pt.x,pt.y,szBuff,lstrlen( s |