CALLBACK FUNCTION CB_Tray()
'
STATIC active%
STATIC ti AS NOTIFYICONDATA
STATIC p AS POINTAPI
STATIC lOK AS LONG
SELECT CASE CBMSG
' Создали диалог и показали, что программа готова
CASE %WM_INITDIALOG
lOk = 1
GOSUB RecallReader
Shell_NotifyIcon %NIM_ADD, ti
SetTimer hTrayDlg, %TIMER_1, lPollMsec, BYVAL %NULL
' Здесь меняется иконка по таймеру
CASE %WM_TIMER
GOSUB RecallReader
' Завершение программы
CASE %WM_DESTROY
Shell_NotifyIcon %NIM_DELETE, ti
' А здесь иконка меняется извне - напр. из другой процедуры
' используя вот эту команду
' DIALOG POST hTrayDlg, %WM_USER+%DLG_TYPE_01, %SHOW_WARN, 0
CASE %WM_USER + %DLG_TYPE_01
IF CBLPARAM = %SHOW_WARN THEN
' меняем иконку и тултип
ti.hIcon = LoadIcon(hInst,BYVAL MAKLNG(%IDR_WARN,0))
ti.szTip = " WARNING! "
Shell_NotifyIcon %NIM_MODIFY, ti
END IF
..
..
..
RecallReader:
IF AlreadyCalled = %TRUE THEN RETURN
CALL LoadIni
CALL CheckInternet
ti.cbSize = SIZEOF(ti)
ti.hWnd = hTrayDlg
ti.uID = hInst
ti.uFlags = %NIF_ICON OR %NIF_MESSAGE OR %NIF_TIP
ti.uCallbackMessage = %WM_TRAY
ti.szTip = " Connecting ..."
' IMG_NUM - номер иконки в ресурсе
ti.hIcon = LoadIcon(hInst,BYVAL MAKLNG( IMG_NUM ,0))
Shell_NotifyIcon %NIM_MODIFY, ti
..
..
jangle писал(а):Нашел только пример прогрессбара в статус баре, а как сделать анимированную картинку? Например отображающую процесс подключения к серверу
#COMPILE EXE
#DIM ALL
%USEMACROS = 1
'~~~~~~~~~~~~~~~~~~~~~~~
#RESOURCE "anim.pbr"
'anim.rc содержит
'=========
'103 AVI DISCARDABLE "Findfile.avi" //<- поменять на свой фильмец
'~~~~~~~~~~~~~~~~~~~~~~~~
#INCLUDE "WIN32API.INC"
#INCLUDE "COMMCTRL.INC"
%IDC_BTN_SHOWANIMATION = 1001
%IDC_SYSANIMATE32_1 = 1002
CALLBACK FUNCTION cbProc()
STATIC trigger AS LONG
SELECT CASE AS LONG CBMSG
CASE %WM_INITDIALOG
CONTROL SHOW STATE CBHNDL, %IDC_SYSANIMATE32_1 , %SW_hide
CASE %WM_COMMAND
SELECT CASE AS LONG CBCTL
CASE %IDC_BTN_SHOWANIMATION
IF CBCTLMSG = %BN_CLICKED OR CBCTLMSG = 1 THEN
SELECT CASE AS LONG trigger
CASE 0
CONTROL SHOW STATE CBHNDL, %IDC_SYSANIMATE32_1 , %SW_SHOW
CONTROL SET TEXT CBHNDL,%IDC_BTN_SHOWANIMATION, "StopAnimation"
CASE 1
CONTROL SHOW STATE CBHNDL, %IDC_SYSANIMATE32_1 , %SW_hide
CONTROL SET TEXT CBHNDL,%IDC_BTN_SHOWANIMATION, "StartAnimation"
END SELECT
trigger=trigger XOR 1
END IF
END SELECT
END SELECT
END FUNCTION
FUNCTION PBMAIN()
LOCAL hDlg AS DWORD
InitCommonControls
DIALOG NEW %HWND_DESKTOP, "Example", 70, 70, 201, 121, %WS_POPUP OR %WS_BORDER OR %WS_DLGFRAME OR %WS_CAPTION OR %WS_SYSMENU _
OR %WS_MINIMIZEBOX OR %WS_CLIPSIBLINGS OR %WS_VISIBLE OR %DS_MODALFRAME OR %DS_CENTER OR %DS_3DLOOK OR _
%DS_NOFAILCREATE OR %DS_SETFONT, %WS_EX_WINDOWEDGE OR %WS_EX_CONTROLPARENT OR %WS_EX_LEFT OR %WS_EX_LTRREADING OR _
%WS_EX_RIGHTSCROLLBAR, TO hDlg
CONTROL ADD BUTTON, hDlg, %IDC_BTN_SHOWANIMATION, "ShowAnimation", 48, 88, 96, 20
CONTROL ADD "SysAnimate32", hDlg, %IDC_SYSANIMATE32_1, "#103", 16, 12, 172, 44, %WS_CHILD OR %WS_VISIBLE OR _
%ACS_TRANSPARENT OR %ACS_CENTER OR %ACS_AUTOPLAY
DIALOG SHOW MODAL hDlg, CALL cbProc
END FUNCTION
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 21