IDE(統合開発環境)のヘルプ > バージョン情報で エディションの確認は出来るとおもいます
タイトルの下に『Microsoft Visual Studio 2005』の画像の下側にあると思います
VB/C#/C++などが1つのIDEで処理できるならプロ以上です
C++などの単独のIDEの場合
C++の新規のプロジェクトでMFC/ATLなどがあるならStandardでしょう
ないならば無償版の Express
ということになります
Win32で処理するなら
メインのCPPファイルの冒頭の
#include "stdafx.h"
の次ぐらいに Drag&Drop用のヘッダーを追加
#include <shellapi.h>
WndProc(または WindowProc)という関数が存在するともいます
その中に switch( message ) の中の
case WM_PAINT:
などと同じ階層に
case WM_DROPFILES:
if ( ::DropQueryFile( (HDROP)wParam, 0, chFileName, 256 ) != 0xFFFFFFFF ) {
::SetWindowText( hEdit1, chFileName );
// 別名を作成するロジックを記述
::SetWindowText( hEdit2, chCHangedName );
}
break;
を記述します
同様に
case WM_CREATE: のブロックに
// Drag and Dropの許可
::DragAcceptFile( hWnd, TRUE );
break;
といった具合でしょう
WndProcのローカル変数に
//ファイル名を受け取るための変数
TCHAR chFileName[256];
//変更後のファイル名を受け取る変数
TCHAR chChangedName[256];
//用意します
テキストボックスのハンドル用の変数をグローバル変数で用意します
int APIENTRY _tWinMain(HINSTANCE hInstance,
の行の前当たりに
HWND hEdit1, hEdit2;
WndProcのWM_CREATEのブロック(DragAcceptFileを記述した部分)に
hEdit1 = ::CreateWindow( _T("EDIT"), _T(""), WS_CHILD | WS_VISIBLE | WS_BORDER,
0, 0, 256, 32, (HMENU)1024, hWnd, NULL, NULL );
hEdit2 = ::CreateWindow( _T("EDIT"), _T(""), WS_CHILD | WS_VISIBLE | WS_BORDER,
256+8, 0, 256, 32, (HMENU)1024, hWnd, NULL, NULL );
を break; までの間に挿入
といった具合です
CreateWindow SetWindowText DragAcceptFile DropQueryFile
など APIの詳細については MSDNなどのリファレンスを参照ください
お礼
細かいアドバイスありがとうございました! ダイアログの設計から何から何まで本当に助かります。 redfox63さんのおかげでメドがつきそうです。 本当にありがとうございました。