On-line: гостей 1. Всего: 1 [подробнее..]
АвторСообщение
постоянный участник




Пост N: 1998
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 11.01.12 21:59. Заголовок: Как вызвать "Копирование файлов" в xHarboure ?


При длительных операциях иногда "полезнее" для пользователя (и для программы) показывать вместо бегунка - стандартное окно:


Т.е. если делаешь операции типа копирование из одной базы в другую. Без вывода на экран такая операция намного быстрей проходит. А чтоб юзер не скучал - хочу такое окно повесить.

Как перевести пример Филатова \MiniGUI\SAMPLES\Advanced\AVI_Animation под хХарбор ?


Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 37 , стр: 1 2 All [только новые]


администратор




Пост N: 2255
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 15.01.12 15:40. Заголовок: Andrey пишет: Да я ..


Andrey пишет:

 цитата:
Да я не Си-ник, перевести на Харбор не смогу


А раздел C++ у нас для чего (надеюсь не только для обсуждения стандартов) ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1070
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 15.01.12 16:37. Заголовок: Andrey пишет: Да та..


Andrey пишет:

 цитата:
Да там же в папке \MiniGUI\SAMPLES\Advanced\AVI_Animation\161.avi


Я не это имел ввиду
Пример от Григория и SHFileOperation немного разные. Не вдаваясь в подробности, SHFileOperation для визуализации использует шаблон диалога. Найти его можно в той же dll, гле и находится вышеупомянутая функция shellapi.dll (там же и "листочки" ). Вытащить этот шаблон можно с помощью какого-то редактора ресурсов, тюнера или хакера, которых в достаточном количестве можно найти на просторах и-нета.

1020 DIALOGEX 20, 20, 240, 105, 0 
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
STYLE DS_SETFONT | DS_MODALFRAME | DS_NOIDLEMSG | DS_FIXEDSYS | WS_POPUPWINDOW | WS_DLGFRAME
FONT 8, "MS Shell Dlg"
{
CONTROL "", 106, "SysAnimate32", 0x5000000E, 10, 0, 240, 25, WS_EX_TRANSPARENT
CONTROL "", 103, "STATIC", NOT WS_GROUP | SS_BLACKRECT | SS_GRAYFRAME | SS_NOPREFIX, 55, 46, 175, 10, WS_EX_TOPMOST | WS_EX_TRANSPARENT
CONTROL "", 102, "STATIC", NOT WS_GROUP | SS_BLACKRECT | SS_GRAYFRAME | SS_NOPREFIX, 55, 35, 175, 10, WS_EX_TOPMOST | WS_EX_TRANSPARENT
CONTROL "", 104, "msctls_progress32", 0, 10, 65, 220, 10, WS_EX_TOPMOST | WS_EX_TRANSPARENT
LTEXT "", 105, 78, 85, 100, 10, NOT WS_GROUP | SS_NOPREFIX
DEFPUSHBUTTON "Отмена", 500, 180, 83, 50, 14, NOT WS_TABSTOP
LTEXT "Название:", 12289, 11, 35, 38, 8, 0, WS_EX_TOPMOST | WS_EX_TRANSPARENT
LTEXT "Куда:", 12289, 11, 46, 30, 8, 0, WS_EX_TOPMOST | WS_EX_TRANSPARENT
LTEXT "Расчет времени:", 12289, 11, 85, 62, 8, 0, WS_EX_TOPMOST | WS_EX_TRANSPARENT
}

Вот если бы вы использовали Harbour, то для выполнения этого диалога смогли бы использовать функцию wapi_DialogBoxParam (из библиотеки hbwin). В папке harbour\contrib\hbwin\tests\ можно найти пример вызова диалога dlg.prg

Вот как этот пример выглядит в работе

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1071
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 15.01.12 16:41. Заголовок: А вот так выглядит д..


А вот так выглядит диалог с "листочками"


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1072
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 15.01.12 16:46. Заголовок: Код примера #include..


Модифицированный код примера
#include "common.ch" 
#include "hbwin.ch"

#include "dlg1.ch"

PROCEDURE Main()

wapi_DialogBoxParam( 0, IDD_DIALOG1, 0, @DialogFunc() )

RETURN

FUNCTION DialogFunc( hWnd, message, wParam, lParam, wPHigh, wPLow )

HB_SYMBOL_UNUSED( wParam )
HB_SYMBOL_UNUSED( lParam )
HB_SYMBOL_UNUSED( wPHigh )

SWITCH message
CASE WM_INITDIALOG

wapi_SetDlgItemText( hWnd, IDC_STATIC1, "?" )
wapi_SetDlgItemText( hWnd, IDC_STATIC2, "!" )
wapi_SetDlgItemText( hWnd, IDC_STATIC3, Time() )
wapi_SetDlgItemAvi( wapi_GetDlgItem( hWnd, IDC_ANIMATE1 ), 0, IDR_AVI1 )
wapi_SetDlgItemPBRange( wapi_GetDlgItem( hWnd, IDC_PBAR1 ), 0, 100 )
wapi_SetDlgItemPBPos( wapi_GetDlgItem( hWnd, IDC_PBAR1 ), 50 )
RETURN .T.

CASE WM_CLOSE
IF wapi_MessageBox( 0, "?!", "!!", WIN_MB_OKCANCEL + WIN_MB_ICONQUESTION ) == 1
wapi_SetDlgItemAvi( wapi_GetDlgItem( hWnd, IDC_ANIMATE1 ), 0, 0 )
wapi_EndDialog( hWnd, 3 )

RETURN .T.
ENDIF
EXIT

CASE WM_COMMAND
SWITCH wPLow
CASE IDC_BUTTON1
SELF_CLOSE( hWnd )

RETURN .T.
ENDSWITCH
ENDSWITCH

RETURN .F.

#pragma BEGINDUMP
#include "hbwin.h"
#include "hbwapi.h"
#include "hbapiitm.h"

#include <commctrl.h>

#if defined( __BORLANDC__ ) && !defined( HB_ARCH_64BIT )
#undef MAKELONG
#define MAKELONG(a,b) ((LONG)(((WORD)((DWORD_PTR)(a) & 0xffff)) | \
(((DWORD)((WORD)((DWORD_PTR)(b) & 0xffff))) << 16)))
#endif

HB_FUNC( WAPI_SETDLGITEMAVI )
{
int iResult = SendMessage( hbwapi_par_raw_HWND( 1 ),
ACM_OPEN,
( WPARAM ) hbwapi_par_raw_HINSTANCE( 2 ),
( LPARAM ) hbwapi_par_INT( 3 ) );

hbwapi_SetLastError( GetLastError() );
hbwapi_ret_NI( iResult );
}

HB_FUNC( WAPI_SETDLGITEMPBRANGE )
{
SendMessage( hbwapi_par_raw_HWND( 1 ), PBM_SETRANGE, 0, MAKELONG( hbwapi_par_INT( 2 ), hbwapi_par_INT( 3 ) ) );
}

HB_FUNC( WAPI_SETDLGITEMPBPOS )
{
SendMessage( hbwapi_par_raw_HWND( 1 ), PBM_SETPOS, ( WPARAM ) hbwapi_par_INT( 2 ), 0 );
}

HB_FUNC_STATIC( SELF_CLOSE )
{
SendMessage( hbwapi_par_raw_HWND( 1 ), WM_CLOSE, 0, 0 );
}
#pragma ENDDUMP



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1073
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 15.01.12 16:53. Заголовок: Файл ресурсов dlg.rc..


Файл ресурсов dlg.rc
 
#include <windows.h>
#include <commctrl.h>

LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US

1 MANIFEST "dlg.xml"

1020 DIALOGEX 20, 20, 240, 105, 0
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
STYLE DS_SETFONT | DS_MODALFRAME | DS_NOIDLEMSG | DS_FIXEDSYS | WS_POPUPWINDOW | WS_DLGFRAME
FONT 8, "MS Shell Dlg"
{
CONTROL "", 106, "SysAnimate32", 0x5000000E, 10, 0, 240, 25, WS_EX_TRANSPARENT
CONTROL "", 103, "STATIC", NOT WS_GROUP | SS_BLACKRECT | SS_GRAYFRAME | SS_NOPREFIX, 55, 46, 175, 10, WS_EX_TOPMOST | WS_EX_TRANSPARENT
CONTROL "", 102, "STATIC", NOT WS_GROUP | SS_BLACKRECT | SS_GRAYFRAME | SS_NOPREFIX, 55, 35, 175, 10, WS_EX_TOPMOST | WS_EX_TRANSPARENT
CONTROL "", 104, "msctls_progress32", 0, 10, 65, 220, 10, WS_EX_TOPMOST | WS_EX_TRANSPARENT
LTEXT "", 105, 78, 85, 100, 10, NOT WS_GROUP | SS_NOPREFIX
DEFPUSHBUTTON "Отмена", 500, 180, 83, 50, 14, NOT WS_TABSTOP
LTEXT "Название:", 12289, 11, 35, 38, 8, 0, WS_EX_TOPMOST | WS_EX_TRANSPARENT
LTEXT "Куда:", 12289, 11, 46, 30, 8, 0, WS_EX_TOPMOST | WS_EX_TRANSPARENT
LTEXT "Расчет времени:", 12289, 11, 85, 62, 8, 0, WS_EX_TOPMOST | WS_EX_TRANSPARENT
}

2020 AVI "161.avi"

Файл манифеста dlg.xml (чтобы приложение поддерживало темы Windows)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
type="win32"
name="MyOrganization.MyDivision.MyApp"
version="1.0.0.0"
processorArchitecture="X86"
/>
<description>Verbal description of MyApp.</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>

Ну и dlg1.ch
#define IDD_DIALOG1                        1020 
#define IDC_STATIC1 102
#define IDC_STATIC2 103
#define IDC_PBAR1 104
#define IDC_STATIC3 105
#define IDC_ANIMATE1 106
#define IDC_BUTTON1 500
#define IDR_AVI1 2020

#define WM_INITDIALOG 0x0110
#define WM_COMMAND 0x0111
#define WM_SYSCOMMAND 0x0112
#define WM_CLOSE 0x0010



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2008
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 15.01.12 17:56. Заголовок: Петр пишет: Вот ес..


Петр пишет:

 цитата:

Вот если бы вы использовали Harbour



А на хХарбор нельзя перетащить ?
Очень просим, все работающие на хХарборе тоже захотят .....

Пытался собрать сам, да не получается.
хХарбор не понимает команды ENDSWITCH

xHarbour Compiler build 1.0.0 (SimpLex)
Copyright 1999-2007, http://www.xharbour.org http://www.harbour-project.org/
Compiling 'CopyFileWinApi.PRG'...

CopyFileWinApi.PRG(44) Error E0020 Incomplete statement or unbalanced delimiters
CopyFileWinApi.PRG(45) Error E0020 Incomplete statement or unbalanced delimiters
CopyFileWinApi.PRG(89) Error E0030 Syntax error: "syntax error at 'я'"

3 errors


Проект для хХарбора здесь http://zalil.ru/32502422
Может что-то неправильно сделал ?.....

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 675
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 16.01.12 10:03. Заголовок: Andrey пишет: хХарб..


Andrey пишет:

 цитата:
хХарбор не понимает команды ENDSWITCH


А END понимает?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1074
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 16.01.12 11:06. Заголовок: PSP пишет: А END по..


PSP пишет:

 цитата:
А END понимает?


END он понимает, а вот Андрей не понимает, что он хочет.


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2009
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 16.01.12 18:06. Заголовок: PSP пишет: А END п..


PSP пишет:

 цитата:

А END понимает?



А я знаю что-ли ??? Я не пользуюсь такой конструкцией, без надобности....

Петр пишет:

 цитата:
END он понимает, а вот Андрей не понимает, что он хочет.



Ну понимаю что прошу невыполнимое, но надеюсь, а вдруг можно сделать....


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 2256
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 16.01.12 18:16. Заголовок: Andrey пишет: А я ..


Andrey пишет:

 цитата:

А я знаю что-ли ??? Я не пользуюсь такой конструкцией, без надобности....


:\svn\xharbour\doc\en\switch.txt

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2020
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 20.01.12 20:29. Заголовок: Опять возвращаюсь к ..


Опять возвращаюсь к проекту, что Петр выложил.

Я на Харборе программ еще не делал, так что опять наткнулся на грабли, как обойти - не знаю.
Собрал файл проекта CopyFile.hbp для HBMK2

При компиляции выдает ошибку:
Z:\hb30\SHFileOperation>Z:\hb30\bin\hbmk2.exe CopyFile
hbmk2: Compiling Harbour sources...
Harbour 3.0.0 (Rev. 16951)
Copyright (c) 1999-2011, http://harbour-project.org/
Compiling 'CopyFileWinApi.prg'...
Lines 965, Functions/Procedures 2
Generating C source output to 'OBJ\CopyFileWinApi.c'... Done.
hbmk2: Compiling resources...
Borland Resource Compiler Version 5.40
Copyright (c) 1990, 1999 Inprise Corporation. All rights reserved.
hbmk2: Compiling...
OBJ\CopyFileWinApi.c:
Error E2293 CopyFileWinApi.prg 60: ) expected
Error E2206 CopyFileWinApi.prg 76: Illegal character '\' (0x5c)
*** 2 errors in Compile ***
hbmk2: Error: Running C/C++ compiler. 1
bcc32.exe -c -q -d -6 -O2 -OS -Ov -Oi -Oc -tWM -w -Q -w-sig- -nOBJ -IZ:\BCC55\Include -IZ:\hb30\include
OBJ\CopyFileWinApi.c


Сами исходники здесь: http://zalil.ru/32543676

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 709
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 20.01.12 20:57. Заголовок: Andrey пишет: Error..


Andrey пишет:

 цитата:
Error E2293 CopyFileWinApi.prg 60: ) expected
Error E2206 CopyFileWinApi.prg 76: Illegal character '\' (0x5c)


Ну, а что в файле CopyFileWinApi.prg в строках 60 и 76?

ЗЫ. Ну да, ну да... Вроде все красиво. BCC что-ли неправильно препроцессерствует...

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2021
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 20.01.12 21:21. Заголовок: PSP пишет: ЗЫ. Ну д..


PSP пишет:

 цитата:
ЗЫ. Ну да, ну да... Вроде все красиво. BCC что-ли неправильно препроцессерствует...


Вот и я не пойму, что там ему не понравилось ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 710
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 20.01.12 21:32. Заголовок: Andrey пишет: Вот и..


Andrey пишет:

 цитата:
Вот и я не пойму, что там ему не понравилось ?


Кажись, я понял.
После копирования текста из форума, во всех строках в конце добавлен пробел.
Получается, что в #define в 60-й строке символ \ остается после обработки препроцессором,
а его в результирующей строке быть не должно. Он означает "продолжение на следующей строке", должен быть последним в строке.
Убери замыкающий пробел в 60-й строке.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2022
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 21.01.12 00:32. Заголовок: PSP пишет: Убери за..


PSP пишет:

 цитата:
Убери замыкающий пробел в 60-й строке.


Не помогло ....
Убрал \ и подтянул всю строку, тогда заработало...

Но не собралась программа ....
Error: Unresolved external '_HB_FUN_WAPI_DIALOGBOXPARAM' referenced from Z:\HB30\SHFILEOPERATION\OBJ\COPYFILEWINAPI.OBJ
Error: Unresolved external '_HB_FUN_WAPI_SETDLGITEMTEXT' referenced from Z:\HB30\SHFILEOPERATION\OBJ\COPYFILEWINAPI.OBJ
Error: Unresolved external '_HB_FUN_WAPI_GETDLGITEM' referenced from Z:\HB30\SHFILEOPERATION\OBJ\COPYFILEWINAPI.OBJ
Error: Unresolved external '_HB_FUN_WAPI_MESSAGEBOX' referenced from Z:\HB30\SHFILEOPERATION\OBJ\COPYFILEWINAPI.OBJ
Error: Unresolved external '_HB_FUN_WAPI_ENDDIALOG' referenced from Z:\HB30\SHFILEOPERATION\OBJ\COPYFILEWINAPI.OBJ
Error: Unresolved external '_hbwapi_SetLastError' referenced from Z:\HB30\SHFILEOPERATION\OBJ\COPYFILEWINAPI.OBJ
hbmk2: Error: Running linker. 2

Видать какую-то библиотеку нужно добавлять....

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2023
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 21.01.12 00:42. Заголовок: Нашел методом тыка, ..


Нашел методом тыка, где сидит WAPI_DIALOGBOXPARAM - в hbwin.lib
Добавил в проект -lhbwin.lib
Ура, заработало

Кому интересно вот готовый проект - http://zalil.ru/32545255
PSP спасибо за подсказку !!!

Петр, БОЛЬШОЕ СПАСИБО !!!


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2024
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 22.01.12 13:33. Заголовок: А как бегунок застав..


А как бегунок заставить "бежать" в этом примере ?
И надписи меняться - выдавать имя копируемой базы ?

Уж больно синтаксис навороченный в этом примере !
Да и правильно хочется понять, как такие конструкции использовать.
Заранее спасибо за разъяснения.


Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 37 , стр: 1 2 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 24
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет