/*  デスクトップの壁紙設定と透視 2000/ 1/12 宍戸 輝光 */ #include LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); HWND hwMain; int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance, PSTR szCmdLine,int iCmdShow) { MSG msg; WNDCLASS wndclass ; wndclass.style = CS_HREDRAW | CS_VREDRAW; wndclass.lpfnWndProc = WndProc; wndclass.cbClsExtra = 0; wndclass.cbWndExtra = 0; wndclass.hInstance = hInstance; wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION); wndclass.hCursor = LoadCursor (NULL, IDC_ARROW); wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); wndclass.lpszMenuName = NULL; wndclass.lpszClassName = "CWindow"; RegisterClass(&wndclass); hwMain=CreateWindow("CWindow","壁紙の設定と透視", WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,560,480, NULL,NULL,hInstance,NULL); DragAcceptFiles(hwMain,TRUE); /* ドラッグ&ドロップ受入 */ ShowWindow(hwMain,iCmdShow); /* ウインドウを表示 */ UpdateWindow(hwMain); /* 再描画 */ while (GetMessage(&msg,NULL,0,0)) { /* メッセージループ */ TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam ; } LRESULT CALLBACK WndProc(HWND hwnd,UINT iMsg,WPARAM wParam,LPARAM lParam) { HDROP hDrop; HDC hdc; PAINTSTRUCT ps; static char lpszFn[256]; switch(iMsg) { case WM_DROPFILES: /* ファイルがドロップされた時の処理 */ hDrop=(HDROP)wParam; /* HDROPを取得 */ DragQueryFile(hDrop,0,lpszFn,256); /* ファイル名を取得 */ /* ドロップされたファイルを壁紙に設定 */ SystemParametersInfo(SPI_SETDESKWALLPAPER,0,lpszFn,0); DragFinish(hDrop); /* ドラッグ&ドロップ終了処理 */ break; case WM_MOVE: /* ウインドウが移動されるたびに再描画 */ InvalidateRgn(hwnd,NULL,FALSE); UpdateWindow (hwnd); /* 再描画 */ break; case WM_PAINT: hdc=BeginPaint(hwnd,&ps); /* デバイスコンテキストにデスクトップ描画 */ PaintDesktop(hdc); EndPaint(hwnd,&ps); break; case WM_DESTROY : PostQuitMessage(0); break; } return DefWindowProc(hwnd,iMsg,wParam,lParam) ; }