Re: WinApi - Drag&Drop проблема
В мене зовсім нічого не виводить((
Може новий проект спробувати?
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → C++ → WinApi - Drag&Drop проблема
Сторінки Попередня 1 2 3 4 Наступна
Для відправлення відповіді ви повинні увійти або зареєструватися
В мене зовсім нічого не виводить((
Може новий проект спробувати?
Знаєте! Я де що зробив! Я повернув до wchar_t та оголосив змінну через PCHAR! І в мене в РічЕдіт вивелося багато символів... Та після перезапуску програми ось що я маю:
Зовсім не розумію що коїться, то воно працює(криво), то зовсім не працює...
Ну, ось щось таке:
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;
}
//Form4->Caption = chFileName;
}
DragFinish(HDROP (Message.Drop));
}
//---------------------------------------------------------------------------
Ось знову я вирубаю цей білдер проклятий, мінію на Char, запускаю, бачу ось таке:
Закриваю програму та знов запускаю її! І що ви думаєте? Ось це я бачу:
Чи с періодом часу воно відновлюється , все не знаю..
Знаєте що саме смішне? Такого результату я добився все давно, але нащо він такий нужен якщо він не відображає повний шлях)
Ну це вже щось, а тепер можете переробити на юнікод
Ви подивились моє попереднє повідомлення?
Так))
Ось так?
void __fastcall TForm4::WmDropFiles(TWMDropFiles& Message)
{
AnsiString chFileName = "";
//AnsiString chFileName;
int Count;
Count = DragQueryFileA(HDROP (Message.Drop), 0xFFFFFFFF, chFileName.c_str(), 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.c_str(), 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.c_str() ); j++){
RichEdit1->Lines->Strings[i] = RichEdit1->Lines->Strings[i] + chFileName[j];
//RichEdit1->Lines->Strings[i] = chFileName;
}
//Form4->Caption = chFileName;
}
DragFinish(HDROP (Message.Drop));
}
Нє, так:
void __fastcall TForm4::WmDropFiles(TWMDropFiles& Message)
{
wchar_t *chFileName;
//AnsiString chFileName;
int Count;
Count = DragQueryFileW(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 ( DragQueryFileW(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 < wcslen( chFileName ); j++){
RichEdit1->Lines->Strings[i] = RichEdit1->Lines->Strings[i] + chFileName[j];
//RichEdit1->Lines->Strings[i] = chFileName;
}
//Form4->Caption = chFileName;
}
DragFinish(HDROP (Message.Drop));
}
//---------------------------------------------------------------------------
Або ось так?
void __fastcall TForm4::WmDropFiles(TWMDropFiles& Message)
{
UnicodeString chFileName = "";
//AnsiString chFileName;
int Count;
Count = DragQueryFile(HDROP (Message.Drop), 0xFFFFFFFF, chFileName.c_str(), MAX_PATH);
//Count = DragQueryFile(HDROP (Message.Drop), 0xFFFFFFFF,chFileName.c_str(),MAXPATH);
for (int i=0;i<Count;i++)
{
if ( DragQueryFile(HDROP (Message.Drop), i, chFileName.c_str(), 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 < chFileName.Length(); j++){
RichEdit1->Lines->Strings[i] = RichEdit1->Lines->Strings[i] + chFileName[j];
//RichEdit1->Lines->Strings[i] = chFileName;
}
//Form4->Caption = chFileName;
}
DragFinish(HDROP (Message.Drop));
}
А це мій перший спосіб:
А другий без помилок, але нічого не виводить...
Ця магія мене вже доконала(( Авжешь дуже хочеться узнати в чому то проблема, але може є якась альтернатива?
incrome
Так, є альтернатива - переходьте на лінукс
Яж не для себе пишу, невже всім на лінукс переходити?
ні, розбирайтесь зі вказівниками на рядок, точно в цьому біда
Я вже не знаю що робити в загалі:(
Яб до того що ви зробили, сумніваюся що б додумався, а то й ще щось самому придумати....