右クリックメニューとステータスバーを付ける今回は、今まで作ったプログラムを少し手直しします。ディレクトリに対して右クリックで操作を選択できるようにします。状態をステータスバーに表示するようにします。メニューに「ひとつ上のディレクトリへ」を加えます。ボップアップメニューです。これで、少し使いやすくなりました。左の図のように、途中経過をステータスバーに表示するようにしました。プログラムを見てみましょう。独立したヘッダーファイル(myftp.h)にしました。"を作成します",IDC_STATIC,81,12,39,8ENDクラスメニューの項目が少し増えました。右クリックされる場所によってポップアップメニューを変えています。FALSE;//インターネットに接続しているかどうかソースファイル本体の最初のほうは大分すっきりしました。あたりまえですがmyftp.hをインクルードするのを忘れないでください。Wininet.libをリンクするのを忘れないでください。InitInstanceの各関数に変更はありません。0;}WM_CREATEメッセージが来たときにステータスバーを作ります。構造体のdwICCメンバにICC_BAR_CLASSESを加えるのを忘れないでください。ステータスバーの高さをstatic変数に保存しておきます。WM_SIZEメッセージが来たら各子供ウィンドウの大きさを調整します。ステータスバーに送りつけています。高さを低くするのを忘れないでください。TrackPopupMenu関数については第44章を参照してください。処理が今までと少し変更になっています。引数が変更になって、最後にhStatusが追加されています。リストビューをソート後、ステータスバーの状態表示を消しています。これを行わないと、最後の状態表示がずっと残ってしまうからです。ほとんど同じ処理です。TRUE;}</H3></PRE>この関数の引数がひとつ増えています。最後のhStatusがそうです。今までと中身は大体同じなのですが、STATUSCALLBAC構造体(自作)のhwndStatusメンバにhStaticではなくてhStatusを設定して、InternetConnect関数に渡しています。状態をステータスバーに表示するためです。"ダウンロードに失敗しました。return;}</H3></PRE>この関数も引数がひとつ増えました(hStatus)。STATUSCALLBACK構造体のhwndStatusメンバにhStatusを設定してFtpGetFile関数に渡すのはMyConnect関数と同じです。MyDriveProcの各関数に変更はありません。"「%s」を「%s」にアップロードします。return;}</H3></PRE>この関数も引数が増えました(hStatus)。前章では状態表示を行いませんでしたが今回からアップロード時にも状態表示を行います。ダウンロードのときと要領は同じです。ソースを眺めてみてください。MyCreateDirProcの各関数に変更はありません。"「%s」からディレクトリ「%s」を削除してもよろしいですか。"ディレクトリ削除に失敗しました。return;}</H3></PRE>FTPのディレクトリを削除する関数です。lpszDirectory);</H3></PRE>FTPサーバー上のディレクトリを削除します。<P>hFtpSessionには、FTPセッションのハンドルを指定します。<P>lpszDirectoryには、削除するディレクトリの名前を指定します。<P>ディレクトリ中にファイルが存在するとこの関数は失敗します。MyCompProcの各関数に変更はありません。return;}</H3></PRE>状態表示用のコールバック関数です。状態をスタティックコントロールに表示していたのを、ステータスバーに表示するように変更しました。アップロード時の状態も表示するようにしました。ダウンロード時のdwTemp変数を廃止して受信バイト数をそのまま表示するようにしました。<P>だんだんプログラムが長くなってきて面倒そうに見えますが、一つ一つを見ていくと大して難しくはありません。あと、改良点はまだまだあります。不満な点を列挙してみて改善を試みてください。転載あるいはコンピュータ等のファイルに保存することを禁じます。</FONT></ADDRESS></BODY></HTML>。