Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.06.2013, 23:53   #1
vladonn
Новичок
Джуниор
 
Регистрация: 25.10.2011
Сообщений: 2
По умолчанию Drag&Drop не передается полученный путь к файлу.

Здравствуйте, помогите решить такой вопрос: При попытке записать путь файла что перемещается на форму, в RichEdit1 вылазит такая ошибка(13.jpg).
Не помогает и передача имени через функцию или в глобальную переменную, одно и тоже! Что делать? Что пробовать?
Unit1.h
Код:
private:    // User declarations
    void __fastcall WmDropFiles(TWMDropFiles& Message);
public:     // User declarations
    __fastcall TForm4(TComponent* Owner);
    BEGIN_MESSAGE_MAP
    MESSAGE_HANDLER(WM_DROPFILES, TWMDropFiles, WmDropFiles)
    END_MESSAGE_MAP(TForm);
Unit1.cpp
Код:
void __fastcall TForm4::FormCreate(TObject *Sender)
{
DragAcceptFiles(Form4->Handle,True);
}
 
void __fastcall TForm4::WmDropFiles(TWMDropFiles& Message)
{
wchar_t *chFileName;
int Count;
Count = DragQueryFile(HDROP (Message.Drop), 0xFFFFFFFF,chFileName,MAXPATH); // число перетащенных файлов
for (int i=0;i<Count;i++)//цикл по файлам
  {
   DragQueryFile(HDROP (Message.Drop),i,chFileName,MAXPATH); // запрос имени файла
   RichEdit1->Lines->Add(chFileName);
  }
DragFinish(HDROP (Message.Drop)); // завершение перетаскивания
 
  }
Изображения
Тип файла: jpg 13.jpg (123.3 Кб, 69 просмотров)
vladonn вне форума Ответить с цитированием
Старый 14.06.2013, 06:11   #2
microbit
Форумчанин
 
Аватар для microbit
 
Регистрация: 26.09.2011
Сообщений: 176
По умолчанию

wchar_t *chFileName; может тут нужна память выделить.
а если так:
Код:
HDROP dhandle = (HDROP)Msg.Drop;
WCHAR fName[MAXPATH];
int filenum = DragQueryFile(dhandle,-1,NULL,NULL);
for (int i = 0 ; i < filenum ; i++ )
{
	DragQueryFile(dhandle,i,fName,MAXPATH); 
}
не проверял.
microbit вне форума Ответить с цитированием
Старый 14.06.2013, 16:58   #3
Игорь С++
Пользователь
 
Регистрация: 23.06.2012
Сообщений: 19
По умолчанию

vladonn Вы на кибере создали тему в разделе WinAPI вам даже намекнули , что где тему создали , получили такой же ответ , но всё равно продолжаете создавать не в билдере , а в WinAPI .
Игорь С++ вне форума Ответить с цитированием
Старый 14.06.2013, 20:47   #4
vladonn
Новичок
Джуниор
 
Регистрация: 25.10.2011
Сообщений: 2
По умолчанию

Код:
void __fastcall TForm4::WmDropFiles(TWMDropFiles& Message)
{
char *chFileName = "";
//AnsiString chFileName;
int Count;
Count = DragQueryFileA(HDROP (Message.Drop), 0xFFFFFFFF, chFileName, MAX_PATH);
//Count = DragQueryFile(HDROP (Message.Drop), 0xFFFFFFFF,chFileName.c_str(),MAXPATH);
for (int i=0;i<Count;i++)
  {
   if ( DragQueryFileA(HDROP (Message.Drop), i, chFileName, MAX_PATH) != 0 )
   {
		//MessageBox( Form4->Handle, "Its allright", "good", MB_OK);
   } else
   {
		//MessageBox( Form4->Handle, "Dont good, error", "error", MB_OK);
		chFileName = "Error";
   }


	for (int j=0; j < strlen( chFileName ); j++){
		RichEdit1->Lines->Strings[i] = RichEdit1->Lines->Strings[i] + chFileName[j];
		//RichEdit1->Lines->Strings[i] = chFileName;
		abc = chFileName;
   }
  //Form4->Caption =  chFileName;
  }
DragFinish(HDROP (Message.Drop));

  }
Так работает.
vladonn вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
WinForms PictureBox VC++ Drag&Drop _Alerter_ Windows Forms 4 27.05.2011 10:38
Drag&Drop Guzal Qt и кроссплатформенное программирование С/С++ 0 12.04.2011 01:19
drag&drop БАО Общие вопросы C/C++ 2 06.05.2010 12:17
Нужна помощь (Drag-And-Drop & Drag-Abd-Dock)) Arkuz Общие вопросы Delphi 1 18.04.2009 00:15
Drag&Drop shtuceron Общие вопросы Delphi 3 09.04.2008 19:04