www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 工業(yè)控制 > 電子設(shè)計(jì)自動(dòng)化
[導(dǎo)讀]自從微軟公司推出Windows 95操作系統(tǒng)以來(lái),系統(tǒng)托盤應(yīng)用作為一種極具吸引力的用戶界面設(shè)計(jì)深受廣大用戶的喜愛。使用系統(tǒng)托盤作為用戶界面的Windows應(yīng)用程序數(shù)不勝數(shù),比如"金山詞霸"、"Winamp"、"RealPlayer"等等。

自從微軟公司推出Windows 95操作系統(tǒng)以來(lái),系統(tǒng)托盤應(yīng)用作為一種極具吸引力的用戶界面設(shè)計(jì)深受廣大用戶的喜愛。使用系統(tǒng)托盤作為用戶界面的Windows應(yīng)用程序數(shù)不勝數(shù),比如"金山詞霸"、"Winamp"、"RealPlayer"等等。

這些程序運(yùn)行時(shí)不顯示運(yùn)行窗口,只在任務(wù)欄上顯示一個(gè)圖標(biāo),表示程序正在運(yùn)行,用戶可以通過鼠標(biāo)與應(yīng)用程序交互,程序開發(fā)人員有時(shí)也需要編制一些僅在后臺(tái)運(yùn)行的類似程序,為了不干擾前臺(tái)程序的運(yùn)行界面和不顯示不必要的窗口,應(yīng)使程序運(yùn)行時(shí)的主窗口不可見。同時(shí)將一個(gè)圖標(biāo)顯示在任務(wù)欄右端靜態(tài)通告區(qū)中并響應(yīng)用戶的鼠標(biāo)動(dòng)作。本實(shí)例就介紹Visual C++開發(fā)這類程序的設(shè)計(jì)方法,該程序編譯運(yùn)行后,如果雙擊托盤圖標(biāo),程序會(huì)彈出一個(gè)消息列表窗口,只要鼠標(biāo)在托盤圖標(biāo)上移動(dòng)或點(diǎn)擊(無(wú)論是左右鍵的單擊或雙擊),產(chǎn)生的消息都會(huì)顯示在這個(gè)窗口里;當(dāng)鼠標(biāo)光標(biāo)移到托盤圖標(biāo)上時(shí),在圖標(biāo)附近會(huì)顯示提示信息;單擊右鍵時(shí)彈出上下文菜單,這個(gè)菜單中應(yīng)包含打開屬性頁(yè)的命令或者打開與圖標(biāo)相關(guān)的其它窗口的命令,另外,該程序還可以動(dòng)態(tài)的改變托盤的圖標(biāo)。參照這個(gè)例子,相信讀者能輕松自如地在自己的程序中應(yīng)用系統(tǒng)托盤。

一、實(shí)現(xiàn)方法

為了實(shí)現(xiàn)拖盤程序,首先要使程序的主窗口不可見,這點(diǎn)實(shí)現(xiàn)起來(lái)十分容易,只要調(diào)用ShowWindow(SW_HIDE)就可以了,本實(shí)例采用的就是這種方法,還有一種思路是通過分別設(shè)置主邊框窗口的風(fēng)格和擴(kuò)展風(fēng)格來(lái)隱藏主框架:

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
cs.style =WS_POPUP;//使主窗口不可見;
cs.dwExStyle =WS_EX_TOOLWINDOW;//不顯示任務(wù)按鈕;
return CFrameWnd::PreCreateWindow(cs);
}

在任務(wù)條上顯示圖標(biāo)是利用系統(tǒng)API函數(shù)Shell_NotifyIcon()來(lái)將一個(gè)圖標(biāo)顯示在任務(wù)欄的通告區(qū)中。該函數(shù)的原型為:

BOOL Shell_NotifyIcon(DWORD dwMessage, PNOTIFYICONDATA pnid);

該函數(shù)的第一個(gè)參數(shù)dwMessage類型為DWORD,表示要進(jìn)行的動(dòng)作,它可以是下面的值之一:

NIM_ADD: 添加一個(gè)圖標(biāo)到任務(wù)欄。

NIM_MODIFY: 修改狀態(tài)欄區(qū)域的圖標(biāo)。

NIM_DELETE: 刪除狀態(tài)欄區(qū)域的圖標(biāo)。

NIM_SETFOCUS: 將焦點(diǎn)返回到任務(wù)欄通知區(qū)域。當(dāng)完成用戶界面操作時(shí),任務(wù)欄圖標(biāo)必須用此消息。例如,如果任務(wù)欄圖標(biāo)正顯示上下文菜單,但用戶按下"ESCAPE"鍵取消操作,這時(shí)就必須用此消息將焦點(diǎn)返回到任務(wù)欄通知區(qū)域。

NIM_SETVERSION:指示任務(wù)欄按照相應(yīng)的動(dòng)態(tài)庫(kù)版本工作。

第二個(gè)參數(shù)pnid是NOTIFYICONDATA結(jié)構(gòu)的地址,其內(nèi)容視dwMessage的值而定。這個(gè)結(jié)構(gòu)在SHELLAPI.H文件中定義如下:

typedef struct _NOTIFYICONDATA {
DWORD cbSize; // 結(jié)構(gòu)大?。╯izeof struct),必須設(shè)置
HWND hWnd; // 發(fā)送通知消息的窗口句柄
UINT uID; // 圖標(biāo)ID ( 由回調(diào)函數(shù)的WPARAM 指定)
UINT uFlags;
UINT uCallbackMessage; // 消息被發(fā)送到此窗口過程
HICON hIcon; // 任務(wù)欄圖標(biāo)句柄
CHAR szTip[64]; // 提示文本
} NOTIFYICONDATA;

該結(jié)構(gòu)中uFlags的值分別為:

#define NIF_MESSAGE 0x1 // 表示uCallbackMessage 有效
#define NIF_ICON 0x2 // 表示hIcon 有效
#define NIF_TIP 0x4 // 表示szTip 有效

在該結(jié)構(gòu)的成員中,cbSize為該結(jié)構(gòu)所占的字節(jié)數(shù),hWnd為接受該圖標(biāo)所發(fā)出的消息的窗口的句柄(鼠標(biāo)在任務(wù)欄上程序圖標(biāo)上動(dòng)作時(shí)圖標(biāo)將發(fā)出消息,這個(gè)消息用戶要自己定義),uID為被顯示圖標(biāo)的ID,uFlags指明其余的幾個(gè)成員(hIcon、uCallBackMessage和szTip)的值是否有效,uCallbackMessage為一個(gè)用戶自定義的消息,當(dāng)用戶在該圖標(biāo)上作用一些鼠標(biāo)動(dòng)作時(shí),圖標(biāo)將向應(yīng)用程序的主框架窗口(hWnd成員中指定的窗口)發(fā)出該消息,為了使程序的主框架得到該通知消息,需要設(shè)置NOTIFYICONDATA 結(jié)構(gòu)的flag成員的值為NIF_MESSAGE。hIcon為將在任務(wù)欄上顯示的圖標(biāo)句柄,szTip鼠標(biāo)停留在該圖標(biāo)上時(shí)顯示的提示字符串。

盡管Shell_NotifyIcon函數(shù)簡(jiǎn)單實(shí)用,但它畢竟是個(gè)Win32 API,為此本實(shí)例將它封裝在了一個(gè)C++類中,這個(gè)類叫做CTrayIcon,有了它,托盤編程會(huì)更加輕松自如,因?yàn)樗[藏了NOTIFYICONDATA、消息代碼、標(biāo)志以及一些繁瑣的細(xì)節(jié)。

二、編程步驟

1、 啟動(dòng)Visual C++6.0,生成一個(gè)單文檔的應(yīng)用程序TrayTest,取消文檔視圖支持;

2、 在CMainFrame類中添加自定義消息#define WM_MY_TRAY_NOTIFICATION WM_USER+0,并在該類中為此自定義消息手動(dòng)添加消息映射ON_MESSAGE(WM_MY_TRAY_NOTIFICATION, OnTrayNotification)和消息響應(yīng)函數(shù)afx_msg LRESULT OnTrayNotification(WPARAM wp, LPARAM lp);

3、 設(shè)計(jì)二個(gè)圖標(biāo)添加到項(xiàng)目中,其ID標(biāo)志分別為"IDI_MYICON"、"IDI_MYICON2",作為托盤顯示時(shí)的圖標(biāo);

4、 在CMainFrame類中添加下述變量: CTrayIcon m_trayIcon(用來(lái)操作圖標(biāo)的類對(duì)象)、CEdit m_wndEdit(編輯框用來(lái)顯示所跟蹤到的鼠標(biāo)消息)、int m_iWhichIcon(決定當(dāng)前托盤使用哪個(gè)圖標(biāo))、BOOL m_bShutdown(是否關(guān)閉當(dāng)前拖盤程序標(biāo)志)、BOOL m_bShowTrayNotifications(是否顯示托盤消息標(biāo)志);

5、 為程序的IDR_MAINFRAME添加處理菜單項(xiàng)和托盤的上下文菜單IDI_TRAYICON(具體的菜單項(xiàng)的標(biāo)題和ID標(biāo)志符參見代碼部分),然后使用Class Wizard為各個(gè)菜單項(xiàng)添加處理函數(shù);

6、 添加代碼,編譯運(yùn)行程序。

///////////////////////////////////////////////CTrayIcon類的頭文件;
#ifndef _TRAYICON_H
#define _TRAYICON_H
class CTrayIcon : public CCmdTarget {
 protected:
DECLARE_DYNAMIC(CTrayIcon)
NOTIFYICONDATA m_nid; // struct for Shell_NotifyIcon args
 public:
CTrayIcon(UINT uID);
~CTrayIcon();
// Call this to receive tray notifications
void SetNotificationWnd(CWnd* pNotifyWnd, UINT uCbMsg);
BOOL SetIcon(UINT uID); // main variant you want to use
BOOL SetIcon(HICON hicon, LPCSTR lpTip);
BOOL SetIcon(LPCTSTR lpResName, LPCSTR lpTip)
{ return SetIcon(lpResName ?
AfxGetApp()->LoadIcon(lpResName) : NULL, lpTip); }
BOOL SetStandardIcon(LPCTSTR lpszIconName, LPCSTR lpTip)
{ return SetIcon(::LoadIcon(NULL, lpszIconName), lpTip); }
virtual LRESULT OnTrayNotification(WPARAM uID, LPARAM lEvent);
};
#endif
///////////////////////////////////////////////////CTrayIcon類的.CPP文件
#include "stdafx.h"
#include "trayicon.h"
#include // for AfxLoadString
IMPLEMENT_DYNAMIC(CTrayIcon, CCmdTarget)
CTrayIcon::CTrayIcon(UINT uID)
{
 memset(&m_nid, 0 , sizeof(m_nid)); // Initialize NOTIFYICONDATA
 m_nid.cbSize = sizeof(m_nid);
 m_nid.uID = uID; // never changes after construction
 AfxLoadString(uID, m_nid.szTip, sizeof(m_nid.szTip));
 // Use resource string as tip if there is one
}

CTrayIcon::~CTrayIcon()
{
 SetIcon(0); // remove icon from system tray
}

void CTrayIcon::SetNotificationWnd(CWnd* pNotifyWnd, UINT uCbMsg)
{
 // Set notification window. It must created already.
 ASSERT(pNotifyWnd==NULL::IsWindow(pNotifyWnd->GetSafeHwnd()));
 m_nid.hWnd = pNotifyWnd->GetSafeHwnd();
 ASSERT(uCbMsg==0uCbMsg>=WM_USER);
 m_nid.uCallbackMessage = uCbMsg;
}

BOOL CTrayIcon::SetIcon(UINT uID)
{
 // Sets both the icon and tooltip from resource ID ,To remove the icon, call SetIcon(0)
 HICON hicon=NULL;
 if (uID) {
AfxLoadString(uID, m_nid.szTip, sizeof(m_nid.szTip));
hicon = AfxGetApp()->LoadIcon(uID);
 }
 return SetIcon(hicon, NULL);
}

BOOL CTrayIcon::SetIcon(HICON hicon, LPCSTR lpTip)
{
 // Common SetIcon for all overloads.
 UINT msg;
 m_nid.uFlags = 0;
 if (hicon) {
// Set the icon
msg = m_nid.hIcon ? NIM_MODIFY : NIM_ADD;
m_nid.hIcon = hicon; // Add or replace icon in system tray
m_nid.uFlags= NIF_ICON;
 } else {
if (m_nid.hIcon==NULL) // remove icon from tray
return TRUE; // already deleted
msg = NIM_DELETE;
 }
 if (lpTip) // Use the tip, if any
strncpy(m_nid.szTip, lpTip, sizeof(m_nid.szTip));
 if (m_nid.szTip[0])
m_nid.uFlags= NIF_TIP;
 if (m_nid.uCallbackMessage && m_nid.hWnd) // Use callback if any
m_nid.uFlags= NIF_MESSAGE;
BOOL bRet = Shell_NotifyIcon(msg, &m_nid); // Do it
 if (msg==NIM_DELETE!bRet)
m_nid.hIcon = NULL; // failed
 return bRet;
}
LRESULT CTrayIcon::OnTrayNotification(WPARAM wID, LPARAM lEvent)
{
 if (wID!=m_nid.uID(lEvent!=WM_RBUTTONUP && lEvent!=WM_LBUTTONDBLCLK))
return 0;
 CMenu menu;//裝載上下文菜單;
 if (!menu.LoadMenu(m_nid.uID))
return 0;
 CMenu* pSubMenu = menu.GetSubMenu(0);
 if (!pSubMenu)
return 0;
 if (lEvent==WM_RBUTTONUP) {//設(shè)置第一個(gè)菜單項(xiàng)為默認(rèn)菜單項(xiàng)目
::SetMenuDefaultItem(pSubMenu->m_hMenu, 0, TRUE);
//將當(dāng)前菜單作為上下文菜單;
CPoint mouse;
GetCursorPos(&mouse);
::SetForegroundWindow(m_nid.hWnd);
::TrackPopupMenu(pSubMenu->m_hMenu, 0, mouse.x, mouse.y, 0,m_nid.hWnd, NULL);
 } else // double click: execute first menu item
::SendMessage(m_nid.hWnd, WM_COMMAND, pSubMenu->GetMenuItemID(0), 0);
 return 1;
}

///////////////////////////////// MainFrm.h : interface of the CMainFrame class
#if !defined(AFX_MAINFRM_H__9ED70A69_C975_4F20_9D4E_B2877E3575D0__INCLUDED_)
#define AFX_MAINFRM_H__9ED70A69_C975_4F20_9D4E_B2877E3575D0__INCLUDED_
#if _MSC_VER >1000
#pragma once
#endif // _MSC_VER >1000

#include "trayicon.h"
class CMainFrame : public CFrameWnd
{
 public:
CMainFrame();
 protected:
DECLARE_DYNAMIC(CMainFrame)
// Attributes
 public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CMainFrame)
//}}AFX_VIRTUAL
// Implementation
 public:
virtual ~CMainFrame();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
 protected: // control bar embedded members
CStatusBar m_wndStatusBar;
CTrayIcon m_trayIcon; // my tray icon
CEdit m_wndEdit; // to display tray notifications
int m_iWhichIcon; // which HICON to use
BOOL m_bShutdown; // OK to terminate TRAYTEST
BOOL m_bShowTrayNotifications; // display info in main window
// Generated message map functions
 protected:
//{{AFX_MSG(CMainFrame)
afx_msg LRESULT OnTrayNotification(WPARAM wp, LPARAM lp);
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnToggleIcon();
afx_msg void OnViewClear();
afx_msg void OnViewNotifications();
afx_msg void OnUpdateViewClear(CCmdUI* pCmdUI);
afx_msg void OnUpdateViewNotifications(CCmdUI* pCmdUI);
afx_msg void OnClose();
afx_msg void OnAppOpen();
afx_msg void OnAppSuspend();
// NOTE - the ClassWizard will add and remove member functions here.
// DO NOT EDIT what you see in these blocks of generated code!
//}}AFX_MSG
 DECLARE_MESSAGE_MAP()
};

///////////////////////////////////////////////CMainFrm.cpp
#include "stdafx.h"
#include "TrayTest.h"
#include "MainFrm.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
LRESULT CTrayIcon::OnTrayNotification(WPARAM wID, LPARAM lEvent)
{
 if (wID!=m_nid.uID(lEvent!=WM_RBUTTONUP && lEvent!=WM_LBUTTONDBLCLK))
return 0;
 CMenu menu;//裝載上下文菜單;
 if (!menu.LoadMenu(m_nid.uID))
return 0;
 CMenu* pSubMenu = menu.GetSubMenu(0);
 if (!pSubMenu)
return 0;
 if (lEvent==WM_RBUTTONUP) {//設(shè)置第一個(gè)菜單項(xiàng)為默認(rèn)菜單項(xiàng)目
::SetMenuDefaultItem(pSubMenu->m_hMenu, 0, TRUE);
//將當(dāng)前菜單作為上下文菜單;
CPoint mouse;
GetCursorPos(&mouse);
::SetForegroundWindow(m_nid.hWnd);
::TrackPopupMenu(pSubMenu->m_hMenu, 0, mouse.x, mouse.y, 0,m_nid.hWnd, NULL);
 } else // double click: execute first menu item
::SendMessage(m_nid.hWnd, WM_COMMAND, pSubMenu->GetMenuItemID(0), 0);
 return 1;
}

///////////////////////////////// MainFrm.h : interface of the CMainFrame class
#if !defined(AFX_MAINFRM_H__9ED70A69_C975_4F20_9D4E_B2877E3575D0__INCLUDED_)
#define AFX_MAINFRM_H__9ED70A69_C975_4F20_9D4E_B2877E3575D0__INCLUDED_
#if _MSC_VER >1000
#pragma once
#endif // _MSC_VER >1000

#include "trayicon.h"
class CMainFrame : public CFrameWnd
{
 public:
CMainFrame();
 protected:
DECLARE_DYNAMIC(CMainFrame)
// Attributes
 public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CMainFrame)
//}}AFX_VIRTUAL
// Implementation
 public:
virtual ~CMainFrame();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
 protected: // control bar embedded members
CStatusBar m_wndStatusBar;
CTrayIcon m_trayIcon; // my tray icon
CEdit m_wndEdit; // to display tray notifications
int m_iWhichIcon; // which HICON to use
BOOL m_bShutdown; // OK to terminate TRAYTEST
BOOL m_bShowTrayNotifications; // display info in main window
// Generated message map functions
 protected:
//{{AFX_MSG(CMainFrame)
afx_msg LRESULT OnTrayNotification(WPARAM wp, LPARAM lp);
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnToggleIcon();
afx_msg void OnViewClear();
afx_msg void OnViewNotifications();
afx_msg void OnUpdateViewClear(CCmdUI* pCmdUI);
afx_msg void OnUpdateViewNotifications(CCmdUI* pCmdUI);
afx_msg void OnClose();
afx_msg void OnAppOpen();
afx_msg void OnAppSuspend();
// NOTE - the ClassWizard will add and remove member functions here.
// DO NOT EDIT what you see in these blocks of generated code!
//}}AFX_MSG
 DECLARE_MESSAGE_MAP()
};

///////////////////////////////////////////////CMainFrm.cpp
#include "stdafx.h"
#include "TrayTest.h"
#include "MainFrm.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif


/////////////////////////////////////////////////////////////////////////////
// CMainFrame diagnostics

#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
 CFrameWnd::AssertValid();
}

void CMainFrame::Dump(CDumpContext& dc) const
{
 CFrameWnd::Dump(dc);
}

#endif //_DEBUG
///////////////////////////////////////////////////////////////
BOOL CMyApp::InitInstance()
{
 //在應(yīng)用程序初始化函數(shù)中將程序的主框架隱藏起來(lái);
 #ifdef _AFXDLL
Enable3dControls(); // Call this when using MFC in a shared DLL
 #else
Enable3dControlsStatic(); // Call this when linking to MFC statically
 #endif
 SetRegistryKey(_T("Local AppWizard-Generated Applications"));
 CMainFrame* pFrame = new CMainFrame;
 m_pMainWnd = pFrame;
 pFrame->LoadFrame(IDR_MAINFRAME,
 WS_OVERLAPPEDWINDOWFWS_ADDTOTITLE, NULL, NULL);
 pFrame->ShowWindow(SW_HIDE);
 pFrame->UpdateWindow();
 return TRUE;
}

四、小結(jié)

托盤程序的信息提示通常是將鼠標(biāo)光標(biāo)移到托盤圖標(biāo)上之后,Windows會(huì)發(fā)送消息給托盤程序,從而顯示提示信息--Tooltip。但在Windows XP中我們還看到有些系統(tǒng)托盤程序是自動(dòng)顯示ToolTips信息的,也就是說不用將鼠標(biāo)光標(biāo)移到托盤圖標(biāo)上便可顯示ToolTips,此類新式的信息提示一般稱為氣球提示,它是由你的程序來(lái)控制顯示。氣球提示為托盤程序提供了一種非打擾式的方法通知用戶發(fā)生了某件事情。但是如何讓氣球提示顯示出來(lái)呢?其實(shí)所有的托盤圖標(biāo)行為都是通過一個(gè)單純的API函數(shù)Shell_NotifyIcon來(lái)操作的。你可以利用這個(gè)函數(shù)的參數(shù)NOTIFYICONDATA結(jié)構(gòu),這個(gè)結(jié)構(gòu)來(lái)告訴Windows你想要做什么。下面是這個(gè)結(jié)構(gòu)的定義的最新版本(For IE5.0+),其中已經(jīng)加入了新的成員:

typedef struct _NOTIFYICONDATA {
 DWORD cbSize;
 HWND hWnd;
 UINT uID;
 UINT uFlags;
 UINT uCallbackMessage;
 HICON hIcon;
 #if (_WIN32_IE < 0x0500)
WCHAR szTip[64];
 #else
WCHAR szTip[128];
 #endif
 #if (_WIN32_IE >= 0x0500)
DWORD dwState;
DWORD dwStateMask;
WCHAR szInfo[256];
union {
UINT uTimeout;
UINT uVersion;
} DUMMYUNIONNAME;
WCHAR szInfoTitle[64];
DWORD dwInfoFlags;
 #endif
} NOTIFYICONDATA, *PNOTIFYICONDATA;

在NOTIFYICONDATA.uFlags中的標(biāo)志之一是NIF_TIP,用它來(lái)設(shè)置傳統(tǒng)的信息提示,即鼠標(biāo)要移動(dòng)到圖標(biāo)上。新的標(biāo)志NIF_INFO(由于_WIN32_IE >= 0x0500條件定義,因此在編譯時(shí),請(qǐng)注意包含最新版本的頭文件shellapi.h,并保證鏈接最新版本的庫(kù)文件shell32.lib,分發(fā)程序時(shí)用最新版本的運(yùn)行時(shí)動(dòng)態(tài)鏈接庫(kù)shell32.dll)便是為顯示氣球提示所用的。也就是說,要顯示氣球提示,那么在調(diào)用Shell_NotifyIcon函數(shù)時(shí)必須用NIF_INFO標(biāo)志。提示文本填入szInfo域,標(biāo)題文本填入szInfoTitle。你甚至可以在NOTIFYICONDATA.uTimeout中設(shè)置一個(gè)超時(shí)時(shí)間,當(dāng)經(jīng)過指定的毫秒數(shù)之后,氣球提示自動(dòng)隱藏.

歡迎轉(zhuǎn)載,信息來(lái)自維庫(kù)電子市場(chǎng)網(wǎng)(www.dzsc.com)



來(lái)源:ks990次

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動(dòng)電源

在工業(yè)自動(dòng)化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動(dòng)力設(shè)備,其驅(qū)動(dòng)電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動(dòng)勢(shì)抑制與過流保護(hù)是驅(qū)動(dòng)電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動(dòng)性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動(dòng)電源

LED 驅(qū)動(dòng)電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動(dòng)電源易損壞的問題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動(dòng)電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動(dòng)電源的公式,電感內(nèi)電流波動(dòng)大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動(dòng)電源

電動(dòng)汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動(dòng)汽車的核心技術(shù)之一是電機(jī)驅(qū)動(dòng)控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動(dòng)系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動(dòng)汽車的動(dòng)力性能和...

關(guān)鍵字: 電動(dòng)汽車 新能源 驅(qū)動(dòng)電源

在現(xiàn)代城市建設(shè)中,街道及停車場(chǎng)照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢(shì)逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動(dòng)電源 LED

LED通用照明設(shè)計(jì)工程師會(huì)遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動(dòng)電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動(dòng)電源的電磁干擾(EMI)問題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會(huì)影響LED燈具的正常工作,還可能對(duì)周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來(lái)解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動(dòng)電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動(dòng)電源

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開關(guān)電源

LED驅(qū)動(dòng)電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動(dòng)LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動(dòng)電源
關(guān)閉