21

Re: WinApi - Drag&Drop проблема

Як же виявити момилку?

22

Re: WinApi - Drag&Drop проблема

Змінив:

char *chFileName;

MAXPATH на MAX_PATH (до речі, перевірте, може вони в Вас різні константи вертають

ну і звісно

   for (int j=1; j<MAX_PATH; j++){
        RichEdit1->Lines->Strings[i] = RichEdit1->Lines->Strings[i] + chFileName[j];
   }

23

Re: WinApi - Drag&Drop проблема

Наскільки я зрозумів він зупиняється на цьому:
First chance exception at $0030002E. Exception class $C0000005 with message 'access violation at 0x0030002e: read of address 0x0030002e'. Process Project3.exe (4896)

24

Re: WinApi - Drag&Drop проблема

[bcc32 Error] Unit4.cpp(187): E2034 Cannot convert 'char *' to 'wchar_t *'
Не хоче він Char

25

Re: WinApi - Drag&Drop проблема

Можу так поставити TCHAR

26

Re: WinApi - Drag&Drop проблема

incrome
Ну та й що? Адреса не може буди прочитана (доступ), а це що значить, значить десь вказівник вказує не туди куди потрібно (а може взагалі його не існує, це рядок, може виходить за межі, намагається втулити, наприклад, зщамість 100 символьного рядку - 260-символів, а там і до форматування диску С, не далеко

27

Re: WinApi - Drag&Drop проблема

Дізнайтеся в довідці від RAD Studio XE3, чи не використовуєте ви якихось застарілих функцій (Deprecated)

28

Re: WinApi - Drag&Drop проблема

incrome написав:

[bcc32 Error] Unit4.cpp(187): E2034 Cannot convert 'char *' to 'wchar_t *'
Не хоче він Char

Про чари

29

Re: WinApi - Drag&Drop проблема

Така істрорія, тількі що пишу як ви сказали, але з типом даних TCHAR! І що ви думаєте? Все запрацювало, але видав він мені щось незрозуміле перщі символи зі шляху а далі якісь символи. Подумав я може убрати цикл, та убрав! Він мені видав частину шляху, наступна спроба уже була з помилкою, вернув на цикл, тепер весь час помилки!

30

Re: WinApi - Drag&Drop проблема

incrome
А до речі, спробуйте char у зв_язці з функцією DragQueryFileA замість юнікодної

31

Re: WinApi - Drag&Drop проблема

incrome написав:

Така істрорія, тількі що пишу як ви сказали, але з типом даних TCHAR! І що ви думаєте? Все запрацювало, але видав він мені щось незрозуміле перщі символи зі шляху а далі якісь символи. Подумав я може убрати цикл, та убрав! Він мені видав частину шляху, наступна спроба уже була з помилкою, вернув на цикл, тепер весь час помилки!

А як Ви компілюєте? Може краще Ctrl + F9 ?

32

Re: WinApi - Drag&Drop проблема

Chemist-i написав:
incrome написав:

Така істрорія, тількі що пишу як ви сказали, але з типом даних TCHAR! І що ви думаєте? Все запрацювало, але видав він мені щось незрозуміле перщі символи зі шляху а далі якісь символи. Подумав я може убрати цикл, та убрав! Він мені видав частину шляху, наступна спроба уже була з помилкою, вернув на цикл, тепер весь час помилки!

А як Ви компілюєте? Може краще Ctrl + F9 ?

Маєте на увазі дебаг? І так і так пробував! Все з Char розібрася, змінив! Все тепер з Char, але таж помилка!

33

Re: WinApi - Drag&Drop проблема

First chance exception at $006605D9. Exception class $C0000005 with message 'access violation at 0x006605d9: read of address 0x555c3a2f'. Process Project3.exe (1600)

34

Re: WinApi - Drag&Drop проблема

incrome
Це досить дивно, а якщо без річЕдіт, а замість нього вставити месседжБокс? Теж помилка є?

35

Re: WinApi - Drag&Drop проблема

Якщо робити через DragQueryFileA і Char то також помилка! А якщо через AnsiStirng то помилки немає але нічого не виводить!

36

Re: WinApi - Drag&Drop проблема

Chemist-i написав:

incrome
Це досить дивно, а якщо без річЕдіт, а замість нього вставити месседжБокс? Теж помилка є?

Яж писав, навіть якщо в глобальну змінну писати! Зараз я у Form4->Caption записував...

37

Re: WinApi - Drag&Drop проблема

incrome
Наведіть будь ласка повник код програми, яка є зараз

38

Re: WinApi - Drag&Drop проблема

Стоп стоп, це помилка якщо у Caption писати, а якщо у річедіт то така вилазить:
http://www.pictureshack.ru/images/33170_qaz.png

39 Востаннє редагувалося incrome (13.06.2013 23:14:45)

Re: WinApi - Drag&Drop проблема

Не звертайте уваги там код крім того над чим ми думаємо не редагований)

//---------------------------------------------------------------------------

#ifndef Unit4H
#define Unit4H
//---------------------------------------------------------------------------
#include <System.Classes.hpp>
#include <Vcl.Controls.hpp>
#include <Vcl.StdCtrls.hpp>
#include <Vcl.Forms.hpp>
#include <Vcl.ExtCtrls.hpp>
#include <Vcl.ComCtrls.hpp>
#include <Vcl.DBGrids.hpp>
#include <Vcl.DBLookup.hpp>
#include <Vcl.FileCtrl.hpp>
#include <Vcl.Grids.hpp>
#include <Vcl.Outline.hpp>
#include <Vcl.Samples.DirOutln.hpp>
#include "shellapi.h"
#include <Vcl.AppEvnts.hpp>

//---------------------------------------------------------------------------
class TForm4 : public TForm
{
__published:    // IDE-managed Components
    TButton *Button1;
    TTimer *Timer1;
    TDirectoryListBox *DirectoryListBox1;
    TRichEdit *RichEdit1;
    void __fastcall iClick(TObject *Sender);
    void __fastcall iMove(TObject *Sender, TShiftState Shift, int X, int Y);
    void __fastcall FormCreate(TObject *Sender);
    void __fastcall Button1Click(TObject *Sender);

private:    // User declarations
    void __fastcall WmDropFiles(TWMDropFiles& Message);
protected:

public:        // User declarations
    __fastcall TForm4(TComponent* Owner);
    BEGIN_MESSAGE_MAP
    MESSAGE_HANDLER(WM_DROPFILES, TWMDropFiles, WmDropFiles)
    END_MESSAGE_MAP(TForm);
    void nImage(int num,UnicodeString path,int t,int l,int w,int h);
    void Read(UnicodeString a);

};
//---------------------------------------------------------------------------
extern PACKAGE TForm4 *Form4;
//---------------------------------------------------------------------------
#endif
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit4.h"
#include "Unit1.h"
#include <shellapi.hpp>
#include <windows.h>
#include <dir.h>
#include "string.h"
#include<stdlib.h>
#include <stdio.h>
#include <time.h>
#include <fstream>

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm4 *Form4;
POINT Fx;
TColor R_G_B = (TColor)RGB(101,101,101);
int CountImage = 1;

int WM_FILEREADY = WM_USER + 2000;
int step = 0;

UnicodeString abc;
UnicodeString PP;




//---------------------------------------------------------------------------
__fastcall TForm4::TForm4(TComponent* Owner)
    : TForm(Owner)
{
}


void TForm4::nImage(int num,UnicodeString path,int l,int t,int w,int h){
    /* TImage *_img[1];
    _img[num] = new TImage (Form4);
    _img[num]->Parent = Form4;
    _img[num]->Top = t;
    _img[num]->Left = l;
    _img[num]->Width = w;
    _img[num]->Height = h;
    _img[num]->Picture->LoadFromFile(path);
    _img[num]->OnClick = iClick;
    _img[num]->OnMouseMove = iMove;
     */

     TImage *Elements;
     Elements = new TImage (Form4);
    Elements->Parent = Form4;
    Elements->Top = t;
    Elements->Left = l;
    Elements->Width = w;
    Elements->Height = h;
    Elements->Picture->LoadFromFile(path);
    Elements->Transparent = true;
    Elements->Picture->Bitmap->TransparentColor = R_G_B;
    Elements->OnClick = iClick;
    //Elements->BringToFront();
    //Elements->OnMouseMove = iMove;

}
//---------------------------------------------------------------------------
void __fastcall TForm4::iClick(TObject *Sender){
  int a;
  exit(0);
 }


 void __fastcall TForm4::iMove(TObject *Sender, TShiftState Shift, int X, int Y){
 Fx.x = X;
 Fx.y = Y;
 Form4->Caption = Fx.x;
 }
//---------------------------------------------------------------------------

void __fastcall TForm4::FormCreate(TObject *Sender)
{
DragAcceptFiles(Form4->Handle,True);
Form4->Color = R_G_B + 2;
Form4->TransparentColor = True;
Form4->TransparentColorValue = R_G_B;
}

//---------------------------------------------------------------------------
/*
    for (_x = 0; _x < Form4->Width ; _x++) {
        for (_y = 0; _y < Form4->Width ; _y++) {
   color = Canvas->Pixels[_x][_y];

        if (color == R_G_B) {
        _img[1]->Canvas->Pixels[_x][_y] = clBlack;
        }
    }
    }
unsigned red   = GetRValue(color); // красная составляющая
unsigned green = GetGValue(color); // зеленая составляющая
unsigned blue  = GetBValue(color); // синяя составляющая

unsigned luminosity = (GetRValue(color)*77 + GetGValue(color)*151 + GetBValue(color)*28) >> 8;

ShowMessage(Canvas->Pixels[Fx.x][Fx.y]);

Form4->Caption = Form4->TransparentColorValue;

 TColor color = Canvas->Pixels[Fx.x][Fx.y];
*/

//---------------------------------------------------------------------------



void __fastcall TForm4::Button1Click(TObject *Sender)
{
  step += 50;
int x = GetSystemMetrics(SM_CXSCREEN);
int y = GetSystemMetrics(SM_CYSCREEN);
Form4->Caption = x;

Form1->Show();

  for (int i = 0; i < 1000; i+=10) {
  nImage(1,"D:\\Курсовой\\Программная часть(1%)\\Win32\\Release\\TollsBar2.bmp",x-125,y - 340-i,155,12);
  }

nImage(1,"D:\\Курсовой\\Программная часть(1%)\\Win32\\Release\\TollsBar.bmp",x-125,y-340,155,267);
nImage(1,"D:\\Курсовой\\Программная часть(1%)\\Win32\\Release\\Улитка.bmp",x-300,y-300,1000,1000);

 nImage(1,"D:\\Курсовой\\Программная часть(1%)\\Win32\\Release\\valik.bmp",x-200,y - 340,100,100);
 nImage(1,"D:\\Курсовой\\Программная часть(1%)\\Win32\\Release\\Skroll.bmp",x-125,y - 500,60,67);

//Form4->Refresh();



    TIcon * Ico = new TIcon;
    TBitmap * Bmp = new TBitmap;
    TBitmap * Out = new TBitmap;
        SHFILEINFO FileInfo;
        //SHGetFileInfo(abc.c_str(), 0, &FileInfo, sizeof(FileInfo), SHGFI_ICON);
        Ico->Handle=FileInfo.hIcon;
        Ico->SaveToFile("D:\\1.wma.ico");
        Bmp->Width = Ico->Width;
        Bmp->Height = Ico->Height;
        Bmp->Canvas->Brush->Color = R_G_B;
        Bmp->Canvas->FillRect(Rect(0,0,Bmp->Width,Bmp->Height));
        Bmp->Canvas->Draw(0,0,Ico);
        Out->Width = 50;
        Out->Height = 50;
        Out->Canvas->CopyRect(Rect(0,0,50,50),Bmp->Canvas,Rect(0,0,Ico->Width,Ico->Height));
        Out->SaveToFile("D:\\123.bmp");
        delete Ico;
                                      int an = 300;
        nImage(1,"D:\\123.bmp",(x-70)-300,(y-340)-step,300+an,280);



}
//---------------------------------------------------------------------------
      /*
void __fastcall TForm4::WmDropFiles(TWMDropFiles& Message)
{
   wchar_t *fName;
   int a = DragQueryFile(HDROP (Message.Drop), 0, fName , MAXPATH);
   //int filenum = DragQueryFileW(drop_handle, -1, NULL, NULL);
   //for(int i = 0; i < filenum; i++){
   //UnicodeString aaa;
   DragQueryFile(HDROP (Message.Drop), 0, fName , a);
   Form4->Caption = fName;
   //ReadPath(fName);
   DragFinish(HDROP (Message.Drop));

   //}
 }      */

 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++)//цикл по файлам
  {
   DragQueryFileA(HDROP (Message.Drop),i,chFileName,MAX_PATH); // запрос имени файла
  //abc = DragQueryFile(HDROP (Message.Drop),i,chFileName.c_str(),MAXPATH); // запрос имени файла
  //Form4->Caption = abc;
   //UnicodeString a;
   //Read(chFileName);
    for (int j=1; j<MAX_PATH; j++){
        RichEdit1->Lines->Strings[i] = RichEdit1->Lines->Strings[i] + chFileName[j];
        //RichEdit1->Lines->Strings[i] = chFileName;
   }
  //Form4->Caption =  chFileName;
  }
DragFinish(HDROP (Message.Drop)); // завершение перетаскивания

  }

40

Re: WinApi - Drag&Drop проблема

Цікава штука, деякі файли нормально виводить, а деякі з помилкою