모두.VB6 사이드 바 앱
vb6과 함께 '사이드 바'응용 프로그램을 개발하려고합니다. 다른 응용 프로그램에서는 윈도우 Vista의 가제트 사이드 바 또는 Google 데스크톱 사이드 바처럼 행동하고 싶습니다. 나는 이런 일이 발생할 가능성은 거의 없다는 것을 알고 있지만, 만약을 대비하여 묻고 있습니다.
현재 여러 컨트롤이있는 폼이 있는데로드 자체가 화면 높이에서 작업 표시 줄을 뺀로드를 실행하고 '왼쪽'위치는 타이머로 설정됩니다. 'screen.width - me.width'이므로 화면 맨 오른쪽의 전체 높이에서 시작하여 이동할 수 없습니다. 필요한 경우 높이 코드는 다음과 같습니다.
Declare Function GetUserNameA Lib "advapi32.dll" (ByVal lpBuffer As String, nSize As Long) As Long
Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (_
ByVal hwnd As Long, _
ByVal nIndex As Long) As Long
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (_
ByVal hwnd As Long, _
ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Public Declare Function SetLayeredWindowAttributes Lib "user32" (_
ByVal hwnd As Long, _
ByVal crKey As Long, _
ByVal bAlpha As Byte, _
ByVal dwFlags As Long) As Long
Public Const GWL_STYLE = (-16)
Public Const GWL_EXSTYLE = (-20)
Public Const WS_EX_LAYERED = &H80000
Public Const LWA_COLORKEY = &H1
Public Const LWA_ALPHA = &H2
Private Const ABM_GETTASKBARPOS = &H5
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Type APPBARDATA
cbSize As Long
hwnd As Long
uCallbackMessage As Long
uEdge As Long
rc As RECT
lParam As Long
End Type
Private Declare Function SHAppBarMessage Lib "shell32.dll" (ByVal dwMessage As Long, pData As APPBARDATA) As Long
Function Fixheight()
Dim ABD As APPBARDATA
SHAppBarMessage ABM_GETTASKBARPOS, ABD
Form1.Height = Screen.Height - ((ABD.rc.Bottom - ABD.rc.Top) * 12)
If Form1.Height <= 600 Then
Form1.Height = Screen.Height
End If
End Function
분명히 말해서, 나는 '맨 위'기능을 원하지 않습니다. 나는 그것을 가지고 있으며, 양식이 최대화하기 위해 양식을 닫히거나 최소화해야하므로 미친 듯이 몰아 넣고 그 뒤에있는 다른 프로그램 (예 : 크롬, 단어 등)을 최소화합니다. 예를 들어 사용자가 Chrome을 최대화하면 chrome은 form1.width가 아닌 최대 값을 갖도록이 양식이 대신 다른 프로그램을 최대화 할 수 있도록 허용해야합니다. 나는 이것이 가능한 한 의심 스럽다. 왜냐하면 내가 염려하는 한, 그것은 크롬을 통제한다는 의미 일 것이고, 본질적으로 기능을 최대화하는 것을 의미 할 것이다. me.height = screen.height - ((ABD.rc.Bottom - ABD. rc.Top) * 12) me.width = screen.width - form1.width 불가능합니다.
어쨌든 누군가가 도움을 줄 수 있기를 바랍니다. 내가 말했듯이, 나는이 일을 할 가능성을 심각하게 의심하지만 그렇다면 모든 것이 더 좋다.
미리 감사드립니다.
이 코드는 직접 구현하지 않아도됩니다. 이를위한 API가 있습니다. [SHAppBarMessage] (https://msdn.microsoft.com/en-us/library/windows/desktop/bb762108(v=vs.85).aspx)에 대한 MSDN의 문서를 참조하십시오. –
오른쪽 ... [ABM_NEW] (https://msdn.microsoft.com/en-us/library/windows/desktop/bb787959(v=vs.85) .aspx)로 AppBar를 등록한 다음 [APPBARDATA]에 'ABE_RIGHT'를 지정하면 [ABM_SETPOS] (https://msdn.microsoft.com/en-us/library/windows/desktop/bb787959(v=vs.85) .aspx)로 표시됩니다 (https : //msdn.microsoft.com/en-us/library/windows/desktop/bb773184 (v = vs.85) .aspx) 구조를 전달했습니다. –