Russian Qt Forum
Май 21, 2024, 15:09 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 ... 13 14 [15] 16 17 ... 20   Вниз
  Печать  
Автор Тема: Файловый менеджер  (Прочитано 215021 раз)
ритт
Гость
« Ответ #210 : Июль 10, 2009, 00:51 »

а нам пох - у нас мингв Веселый

если серьёзно, завтра исправлю Улыбающийся
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #211 : Июль 10, 2009, 01:03 »

Коль тему реанимировали, тоже скажу:
давненько не проверял, но пару недель назад прога валилсь при попытке скопировать файл.
Записан

Юра.
ритт
Гость
« Ответ #212 : Июль 10, 2009, 17:37 »

Попытался скомпилить текущую версию из git. Ну знаете это какая та мистика Улыбающийся
Валится на стадии линковки.

Цитировать
qfileoperationsthread.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__ShellExecuteW@24 в функции "public: static bool __cdecl QFileOperationsThread::execute(class QString const &,cl
ass QStringList const &,class QString const &)" (?execute@QFileOperationsThread@@SA_NABVQString@@ABVQStringList@@0@Z)
Че самое интересное в makefile даже нужные либы даже не подключаются Непонимающий
попробуй теперь
Записан
sLiva
Гость
« Ответ #213 : Июль 10, 2009, 20:02 »

попробуй теперь

Прилепите git ссылку в более видное место, например в профиль или еще куданить, а то пока нашел пипец, аж на 10-й странице Улыбающийся
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #214 : Июль 10, 2009, 20:43 »

Ссылку на до в первом сообщении.
Вот мои замечания, по вчерашнему срезу:
Код:
Срез: dcacce10be543341b9e4df3f169c6326df6ee3fe
 - Копирование файла
Можно задать только путь, нельзя указать имя целевога файла, как это сделано в Тотале

 - Контекстное меню каталога
Нет контекстного меню проводника ОС, а нужно! (там куча всяких операций)

 - F4 (Edit)
Не работает (т.е. вообще ничего не происходит); При этом F3 работает.
Записан

Юра.
ритт
Гость
« Ответ #215 : Июль 10, 2009, 23:54 »

Ссылку на до в первом сообщении.
попозжа

Вот мои замечания, по вчерашнему срезу:
Код:
<snip>
 - Контекстное меню каталога
Нет контекстного меню проводника ОС, а нужно! (там куча всяких операций)
<snip>
а кто-нть подскажет где искать пример для использования системного контекстного меню? а то я пока не встречал такого...
Записан
crackedmind
Гость
« Ответ #216 : Июль 11, 2009, 02:57 »

Ну компилируется нынче замечательно. Только вот стартует долго, а потом вообще ни на что не реагирует. Загрузка процессора 0%, но приложение выглядит подвисшым.  Непонимающий

Windows Vista, MS VC++ 2008 SP1 Express Edition

По поводу системного контекстного меню. Нашел неплохой пример правда только под винду.
http://www.codeproject.com/KB/shell/shellcontextmenu.aspx
« Последнее редактирование: Июль 11, 2009, 03:18 от crackedmind » Записан
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #217 : Июль 27, 2009, 17:57 »

а кто-нть подскажет где искать пример для использования системного контекстного меню? а то я пока не встречал такого...
Код:
	LRESULT OnContextMenu(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
// TODO : Add Code for message handler. Call DefWindowProc if necessary.
USES_CONVERSION;

//bHandled = FALSE;
HWND hwnd = (HWND) wParam;
int xPos = LOWORD(lParam);
int yPos = HIWORD(lParam);
if (hwnd == m_Tree.m_hWnd){
POINT pt;
RECT rect;
HTREEITEM hItem = m_Tree.GetSelectedItem();
if ((xPos == yPos) && (yPos == 65535)){ // (((( ну вот приходится так делать...
if (hItem != NULL){
if (m_Tree.GetItemRect(hItem, &rect, true)){
xPos = 0;
yPos = rect.bottom;
pt.x = xPos; pt.y = yPos;
::ClientToScreen(hwnd, &pt);
xPos = pt.x; yPos =  pt.y;
//int iii = 0;

}

} else {
return 0;

}
//rect =
} else {
pt.x = xPos; pt.y = yPos;
::ScreenToClient(hwnd, &pt);
UINT uFlag = 0;
hItem = m_Tree.HitTest(pt,&uFlag);
}
if (hItem != NULL){
//m_Tree.Select(hItem,TVGN_CARET);
m_Tree.SelectItem(hItem);
} else {
hItem = m_Tree.GetSelectedItem();
}
bHandled = true;
HRESULT hr;

CString pszPath = m_Tree.GetFullPath(hItem);
   // Строим полное имя файла/каталога
   TCHAR tchFullPath[MAX_PATH];
   hr = GetFullPathName(pszPath, sizeof(tchFullPath)/sizeof(TCHAR), tchFullPath, NULL);

   // Получаем интерфейс IShellFolder рабочего стола
   IShellFolder *pDesktopFolder;
   hr = SHGetDesktopFolder(&pDesktopFolder);
   if (NOERROR == hr  ){
   
   // Преобразуем заданный путь в LPITEMIDLIST
   LPITEMIDLIST pidl;
   hr = pDesktopFolder->ParseDisplayName(hwnd, NULL, T2OLE(tchFullPath), NULL, &pidl, NULL);
   if (S_OK == hr){
   
   // Ищем последний идентификатор в полученном списке pidl
   LPITEMIDLIST pLastId = pidl;
   USHORT temp;
   while(1)
   {
   int offset = pLastId->mkid.cb;
   temp = *(USHORT*)((BYTE*)pLastId + offset);

   if(temp == 0)
   break;

   pLastId = (LPITEMIDLIST)((BYTE*)pLastId + offset);
   }
   
   // Получаем интерфейс IShellFolder родительского объекта для заданного файла/каталога
   // Примечание: родительский каталог идентифицируется списком pidl за вычетом последнего
   //             элемента, поэтому мы временно зануляем pLastId->mkid.cb, отрезая его от списка
   temp = pLastId->mkid.cb;
   pLastId->mkid.cb = 0;
   IShellFolder *pFolder;
   hr = pDesktopFolder->BindToObject(pidl, NULL, IID_IShellFolder, (void**)&pFolder);
   if (S_OK == hr){

   // Получаем интерфейс IContextMenu для заданного файла/каталога
   // Примечание: относительно родительского объекта заданный файл/каталог идентифицируется
   //             единственным элементом pLastId
   pLastId->mkid.cb = temp;
   IContextMenu *pContextMenu;
   hr = pFolder->GetUIObjectOf(
  hwnd, 1, (LPCITEMIDLIST *)&pLastId, IID_IContextMenu, NULL, (void**)&pContextMenu);
   if (S_OK == hr){

   // Создаём меню
   HMENU hPopupMenu = CreatePopupMenu();

   // Заполняем меню
   pContextMenu->QueryContextMenu(hPopupMenu, 0, 1, 0x7FFF, 0);

   // Отображаем меню
   UINT nCmd = TrackPopupMenu(hPopupMenu,
  TPM_LEFTALIGN|TPM_LEFTBUTTON|TPM_RIGHTBUTTON|TPM_RETURNCMD, xPos, yPos, 0, hwnd, 0);

   // Выполняем команду (если она была выбрана)
   if(nCmd)
   {
  CMINVOKECOMMANDINFO ici;
  ZeroMemory(&ici, sizeof(CMINVOKECOMMANDINFO));
  ici.cbSize = sizeof(CMINVOKECOMMANDINFO);

  ici.hwnd = hwnd;
  ici.lpVerb = MAKEINTRESOURCE(nCmd-1);
  ici.nShow = SW_SHOWNORMAL;

  pContextMenu->InvokeCommand(&ici);
   }    
   }
   pContextMenu->Release();
   }

   // Освобождаем все полученные интерфейсы
   pFolder->Release();
   }
   // Получаем интерфейс IMalloc
       IMalloc *pMalloc;
   SHGetMalloc(&pMalloc);

   // Освобождаем память, выделенную для pidl
   pMalloc->Free(pidl);
   pMalloc->Release();
   }
       pDesktopFolder->Release();

}
return 0;
}
};

полностью тут: http://www.1cpp.ru/forumfiles/Attachments/OCP_ExtFiles_2006_06_27-11_30.rar
что-бы было понятно, что это за бодяга в сорцах, ссылки на историю:
http://www.1cpp.ru/forum/YaBB.pl?num=1150990860
http://www.1cpp.ru/forum/YaBB.pl?num=1161862716/10#10
« Последнее редактирование: Июль 27, 2009, 23:18 от panAlexey » Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #218 : Июль 27, 2009, 18:32 »

Уже сделано, спасибо огромное Константину.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
ритт
Гость
« Ответ #219 : Июль 27, 2009, 19:57 »

по поводу нативного меню меня сейчас интересует лишь пара вопросов:
1. по какому принципу TrackPopupMenu рассчитывает геометрию айтемов?
я делаю в обход TrackPopupMenu и нормальная геометрия возвращается только для крошечных элементов (например, 4х12). для остальных случаев корректна только высота, а ширина возвращается в 1.5-4х раз меньше требуемой
2. каким макаром программы вроде PicaView отрисовывают содержимое?
пробовал даже отправлять порченные структуры (без хэндла меню, без dc) - всё-равно рисует
/* странно, что мысля пришла только сейчас - возможно, оно наследует окно при инициализации и рисует "через голову"...надо будет проверить */

победить эти две заморочки - и можно будет отказаться от убогого нативного меню в пользу кутэшного.

panAlexey, но всё-равно спсибо за ссылку - на досуге поковыряю. а то я после многочасовой сортировки дерьма на кодпрожекте решил больше не искать по этой теме...
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #220 : Июль 29, 2009, 06:42 »

Помогите написать CMakeLists.txt. Вчера 6 часов убил, но так и не получилось. Косяки с инклудами в cpp типа #include "moc_что-то.cpp", так как cmake  делает moc_что-то.cxx. Грустный Гугл почему-то вообще не дает ответов.
« Последнее редактирование: Июль 29, 2009, 06:45 от panter_dsd » Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
crackedmind
Гость
« Ответ #221 : Июль 29, 2009, 08:03 »

А это читал? http://qtnode.net/wiki/Qt_with_cmake

В частности про QT4_WRAP_CPP.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #222 : Июль 29, 2009, 08:13 »

Читал, конечно. Я же сказал, что проблема именно при инклюде мока.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
crackedmind
Гость
« Ответ #223 : Июль 29, 2009, 08:37 »

Не понял, зачем их инклудить? Как я понял в проекте вроде все на cpp/h разбито, так зачем напрямую инклудить moc?
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #224 : Июль 29, 2009, 09:04 »

Помогите написать CMakeLists.txt.


CMake как система сборки для Qt приложений
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Страниц: 1 ... 13 14 [15] 16 17 ... 20   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.057 секунд. Запросов: 23.