Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблема с PickIconDlg 
V
    Опции темы
_pussbb
Дата 13.4.2007, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 7.12.2006

Репутация: нет
Всего: нет



Код

typedef int(WINAPI PickIconDlg)(HWND hwnd, LPWSTR pszIconPath, UINT cbIconPath, int *piIconIndex);
void __fastcall TForm1::Button1Click(TObject *Sender)
{     ;
char  mStr[MAX_PATH] = {0};
    WCHAR wstrFile[MAX_PATH];
    MultiByteToWideChar(CP_ACP,0,mStr,MAX_PATH,wstrFile,MAX_PATH);
    int re = PickIconDlg(Form1->Handle,wstrFile,MAX_PATH,
                                                                            &mIndex); здесь ошибочка
    WideCharToMultiByte(CP_ACP,0,wstrFile,MAX_PATH,mStr,MAX_PATH,0,0);


}

ошибки
Код

[C++ Error] main.cpp(26): E2031 Cannot cast from 'int *' to 'int(void *,wchar_t *,unsigned int,int *)'
[C++ Warning] main.cpp(30): W8004 're' is assigned a value that is never used



Это сообщение отредактировал(а) _pussbb - 13.4.2007, 19:24
PM MAIL WWW   Вверх
586
Дата 13.4.2007, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 57
Всего: 146



typedef int(WINAPI* PickIconDlg)(HWND hwnd, LPWSTR pszIconPath, UINT cbIconPath, int *piIconIndex);

PM   Вверх
_pussbb
Дата 14.4.2007, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 7.12.2006

Репутация: нет
Всего: нет



пробывал "Access violation at adress 00000000 read of adress00000000" как раз на функции PickIconDlg

Добавлено через 4 минуты и 4 секунды
попробывал подключить #include <shlobj.h> убрал int(WINAPI* PickIconDlg)
и опять ошибка 

[Linker Error] Error: Unresolved external 'PickIconDlg' referenced from C:\DOCUMENTS AND SETTINGS\_PUSSBB\MY DOCUMENTS\BORLAND STUDIO PROJECTS\DEBUG_BUILD\UNIT1.OBJ
PM MAIL WWW   Вверх
586
Дата 14.4.2007, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 57
Всего: 146



Цитата(_pussbb @  14.4.2007,  15:13 Найти цитируемый пост)
пробывал "Access violation at adress 00000000 read of adress00000000" как раз на функции PickIconDlg

Сначала надо получить адрес через GetProcAddress, а потом вызывать.

Цитата(_pussbb @  14.4.2007,  15:13 Найти цитируемый пост)
[Linker Error] Error: Unresolved external 'PickIconDlg' referenced from C:\DOCUMENTS AND SETTINGS\_PUSSBB\MY DOCUMENTS\BORLAND STUDIO PROJECTS\DEBUG_BUILD\UNIT1.OBJ 

подключи shell32.lib
PM   Вверх
Klin
Дата 14.4.2007, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1938
Регистрация: 7.10.2002
Где: Краснодар

Репутация: 20
Всего: 25



Возможно нужно добавить:
Код

#define NO_WIN32_LEAN_AND_MEAN



--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
_pussbb
Дата 15.4.2007, 00:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 7.12.2006

Репутация: нет
Всего: нет



Спасибо помогло подключил  shell32.lib и все работает

может кому-то пртгодиться 
Код

#define NO_WIN32_LEAN_AND_MEAN

#pragma comment (lib, "shell32.lib")

void __fastcall TForm3::Button1Click(TObject *Sender)
{
int mIndex ;
char  mStr[MAX_PATH] = {0};
    WCHAR wstrFile[MAX_PATH];
    MultiByteToWideChar(CP_ACP,0,mStr,MAX_PATH,wstrFile,MAX_PATH);
    int re = PickIconDlg(Form3->Handle,wstrFile,MAX_PATH,&mIndex); //здесь ошибочка
    WideCharToMultiByte(CP_ACP,0,wstrFile,MAX_PATH,mStr,MAX_PATH,0,0);
   AnsiString    mFilePath = mStr;
Image1->Picture->Icon->Handle= ExtractIcon(HInstance,mFilePath.c_str() ,mIndex);
  //    if(hIcon != NULL){

  //    }

}

PM MAIL WWW   Вверх
586
Дата 15.4.2007, 00:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 57
Всего: 146



ИМХО в коде много лишнего:

Код
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    int mIndex;
    WCHAR wstrFile[MAX_PATH];

    wstrFile[0]=0;
    int re = PickIconDlg(Handle,wstrFile,MAX_PATH,&mIndex);
    AnsiString mFilePath = wstrFile;
    Image1->Picture->Icon->Handle= ExtractIcon(HInstance,mFilePath.c_str(), mIndex);
  //    if(hIcon != NULL){

  //    }

}

или так:
Код
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    int mIndex;
    char mStr[MAX_PATH];
    WCHAR wstrFile[MAX_PATH];

    wstrFile[0]=0;
    int re = PickIconDlg(Handle,wstrFile,MAX_PATH,&mIndex); //çäåñü îøèáî÷êà
    WideCharToMultiByte(CP_ACP,0,wstrFile,MAX_PATH,mStr,MAX_PATH,0,0);
    Image1->Picture->Icon->Handle= ExtractIcon(HInstance,mStr, mIndex);
  //    if(hIcon != NULL){

  //    }

}

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0712 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.