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

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

Страниц: 1 2 [3]   Вниз
  Печать  
Автор Тема: copyFileEx+winapi  (Прочитано 19916 раз)
koldun90
Крякер
****
Offline Offline

Сообщений: 345


Просмотр профиля
« Ответ #30 : Март 29, 2015, 11:30 »

я бы никогда не додумался до этого
Код
C++ (Qt)
  static MainWindow* instance_;
public:
   static  MainWindow* instance()
   {
       return instance_;
   }

и

Код
C++ (Qt)
MainWindow* MainWindow::instance_ = 0;

можно подробнее
Записан
alex312
Хакер
*****
Offline Offline

Сообщений: 606



Просмотр профиля
« Ответ #31 : Март 29, 2015, 12:35 »

вообщем огромное спасибо тебе
а где прочитать про статистические переменные доступно....
Я так понял, что заработало ?
По поводу почитать - http://www.stroustrup.com/4th.html (так сказать, из первых уст)
Записан
koldun90
Крякер
****
Offline Offline

Сообщений: 345


Просмотр профиля
« Ответ #32 : Март 29, 2015, 12:52 »

да заработало
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #33 : Март 29, 2015, 13:17 »

почему никто не предложил лямбду в качестве коллбека?
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Bepec
Гость
« Ответ #34 : Март 29, 2015, 14:33 »

Ну вот и без меня разобрались Улыбающийся

to Kambala - потому что лямбда новый стандарт. Который если и применяется где то широко, то одиночными людьми Улыбающийся
Записан
alex312
Хакер
*****
Offline Offline

Сообщений: 606



Просмотр профиля
« Ответ #35 : Март 29, 2015, 15:27 »

почему никто не предложил лямбду в качестве коллбека?
А как указать для лямбды соглашение о вызове __stdcall ? Равно как и для std::bind ?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #36 : Март 29, 2015, 16:07 »

to Kambala - потому что лямбда новый стандарт. Который если и применяется где то широко, то одиночными людьми Улыбающийся
которому уже не первый год Подмигивающий

у меня все работает по дефолту, без всяких указаний. компилятор от студии 2012.
Код
C++ (Qt)
   auto ok = ::CopyFileEx(L"d:\\video\\Krym.Put.Na.Rodinu.2015.HDTV.720p.x264.mkv", L"d:\\test.mkv", [](
                          _In_     LARGE_INTEGER TotalFileSize,
                          _In_     LARGE_INTEGER TotalBytesTransferred,
                          _In_     LARGE_INTEGER StreamSize,
                          _In_     LARGE_INTEGER StreamBytesTransferred,
                          _In_     DWORD dwStreamNumber,
                          _In_     DWORD dwCallbackReason,
                          _In_     HANDLE hSourceFile,
                          _In_     HANDLE hDestinationFile,
                          _In_opt_ LPVOID lpData
                          ) -> DWORD {
             qDebug() << TotalBytesTransferred.QuadPart << "/" << TotalFileSize.QuadPart;
             return PROGRESS_CONTINUE;
   }, 0, 0, 0);
   qDebug("result %d, GetLastError %lu", ok, ::GetLastError());
вывод:
Цитировать
0 / 3940615453
1048576 / 3940615453
...
3940548608 / 3940615453
3940615453 / 3940615453
result 1, GetLastError 0
« Последнее редактирование: Март 29, 2015, 16:11 от kambala » Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #37 : Март 29, 2015, 16:46 »

у меня все работает по дефолту, без всяких указаний. компилятор от студии 2012.
Вообще-то противоречит идее лямбды (как я ее понял со времен AutoLisp)  Улыбающийся Хорошо получается если ф-ция или очень мала или "погружена в контекст", а здесь ни того ни другого.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #38 : Март 29, 2015, 17:53 »

показывать прогресс копирования в прогресс баре - не мала и не погружена в контекст?..
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #39 : Март 29, 2015, 18:07 »

показывать прогресс копирования в прогресс баре - не мала и не погружена в контекст?..
Ну да, ни то ни другое. Ее наоборот надо выносить чтобы глаза не мозолила. Не мала - потому что отделаться печатью в консоли не удастся, надо городить окно и.т.д - хотя там только аргументов масса. Не погружена - потому что не зависит ни от одной локальной переменной в месте вызова. То до чого ота лямбда?  Улыбающийся 
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #40 : Март 29, 2015, 20:21 »

во-первых, неизвестно что там у ТСа на самом деле в проекте (вероятно _progressBar->setProgress(double(TotalBytesTransferred.QuadPart) / TotalFileSize.QuadPart); ). во-вторых, выносить коллбек в отдельную функцию ради того, чтобы воспользоваться ею лишь в одном месте, смысла не вижу (с лямбдой намного нагляднее).

еще с коллбеком в виде функции придется возиться с передачей виджета в нее и кастовать lpData к виджету (да, это одна строчка, но можно же и без нее обойтись Улыбающийся ).
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #41 : Март 30, 2015, 12:24 »

Старожилы снова удивляют. 3 страницы уже нафлудили, а толку... Читать до просветления.

Код:
LPCSTR q=QString("C:\\am74364.dll").toLocal8Bit().data();
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #42 : Март 30, 2015, 13:36 »

видел эту магию когда первый раз читал, потом забыл отписать Улыбающийся
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Страниц: 1 2 [3]   Вверх
  Печать  
 
Перейти в:  


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