Device Manage for OS/2

DevCon for OS/2 - Developer Connection

Operating systems:
ArcaOS, eComStation, IBM OS/2 Warp
Мифы о eComStation 

(Unsorted)  
 
 
Compilers  
 
 
Tools  
 
 
User Interface  
 
 
REXX  
 
 
Drivers/kernel  
 
 

 

 

/ Guidelines: Additional control elements / Progress-bar / Progress-bar FAQ, tricks&tips

Progress-bar FAQ, tricks&tips

It's difficult learn how Progress bar works.. Прежде чем писпользовать PROGRESS.DLL в своей программе, ознакомьтесь с примером (prtest.c).
When to use Progress bar?

Open the window with progress bar if operation requires more than 5-10 seconds. You should provide Cancel button to user.

Why to use our Progress bar?
  • we draw eye-candy progress bar
  • we are sorting text strings on the surface of the window
  • we calculate the size of the window
Which kind of Progress bar to use?

Use Round PBar for applications which are rebuilding / changing / destroying something. Don't use Round PBar for copy / search operations.

How to create modal window Для того, чтобы сделать окно модальным или системно-модальным воспользуйтесь функциями WinProcessDlg() и WinSetSysModalWindow().

Если была вызвана функция WinProcessDlg(), для её завершения следует выполнить WinDismisssDlg(). Ни в коем случае нельзя уничтожать модальный диалог прогресса (WinDestroyWindow()) до того, как вызвана WinDismisssDlg()! Не стоит также, пытаться открывать какие либо новые окна (например, Message Box'ы), пока существует системно модальное окно. Пользователь всё равно, не сможет ими воспользоваться.

How to perform additional initialization? Если нужно произвести дополнительную инициализацию прогресса после его создания (например, установить атрибуты некоторых контролов), нужно создавать его без флага PRS_SHOW. После того, как дополнительная инициализация произведена, диалог можно показать с помощью WinShowWindow().
How to use own PNG pictures? Для использования своих картинок, их следует поместить в ресурсы исполнимого файла, или DLL ресурсов. Картинки должны иметь тип RT_PNG (определён в "progress.h"), а их ID должны идти подряд. ID первой картинки следует указать при вызове PrgShowDlg(). Для полоси всегда используются две картинки. Для иконки (круглого прогрессбара) используются столько картинок, сколько будет найдено (до первого несуществующего ID), но не более 101. Если указано использовать икноку или графическую полоску, но картинок для них в ресурсах найдено менее 2-х, диалог прогресса не будет найден и функция вернёт FALSE.
The window is jumping, changing size during the process Если какую-либо из надписей предполагается менять в процессе, следует при инициализации задать для неё заведомо большую строку, например " ", а затем, устанавливать новую надпись функцией PrgSetupCaption() указав в параметре flUpdate значение FALSE.
Text on buttons MSG-BOX-1: It's a good idea to use your own captions on the buttons instead of the default. Always use verbs as captions: "Close window", "Do not close", "Overwrite file", "Keep file" instead of "Yes", "No", "OK", etc.
Progress-bar animation only How to disable all text strings, frames and keep progress-bar animation only? All strings as NULL, disable frames
How to put Progress-bar dialog to the center of desktop? You can do this manually: example
How can I tell a progress bar the place to draw itself? no information
Is there are way to set the position within it's client window (owner)? no information
How can I calculate the size of a progress bar? no information
Can I draw the bar without any caption? no information
Can there be an implementation of progressbar as a static control window? no information

 


 

(C) OS2.GURU 2001-2024