Unfortunately , same results , 'no focus for Window_1' .
Below is code followed by DebugTraceLog.txt .
I put sequence #s for all debug lines , easier to follow , I hope .
Code: Select all
;Ported from 'hbClipLog.bas'To 'pimClip.pb' PureBasic With Help from by DrGolf - 07/2016
;Original program 'hbClipLog.bas' Author: vmars , vmars316 08/10/2012
;
;EnableExplicit
;{- Enumerations / DataSections
;{ Windows
Enumeration
EndEnumeration
;}
;{ Gadgets
;}
Global Window_0 = 0
Global ClipboardViewerNext.i, showTopicsCkBox, RestartPgm = #False, SaveClipText$
Global clipstring$, d$, getdatecnt, dttime$, showTopicsCkBoxState = #False, LogThis = #False
Global ClipLogName$="****",OpenClipLogName$="00000000", selectedTopic$, Event, WindowID, Result
Global TrayIcon = 1, IconName$ = "myFavs48x48.ico"
Global sendToBtn, findBtn, exitBtn, helpBtn, restartBtn, DebugCount.l = 0
;
Global Window_1 = 1
Global TopicsListFile$ = "TopicsBtnList.txt", TopicBtnName$, TopicBtnCount.l = 1, LogThisString$
Global TopicContainer, NewTopic, EditListBtn, Btn_1, Btn_2, Btn_3
Global SelectedTopicText$, Window_1_Width.l = 250, Window_1_Height.l = 640, Window_1_Xpos,
Window_1_Ypos, MaxBtnCount.l = 3
;
Declare OpenWindow_0()
Declare OpenWindow_1()
Declare LogSomething()
Declare GetDate()
Declare CallBack(hWnd, Msg, wParam, lParam)
Declare CloseWindow_window_0()
Declare LogSelectedTopic()
Declare SetupTopicButtons()
;
Procedure OpenWindow_0()
OpenWindow(Window_0, 0, 0, 448, 110, "pimClip 2.0", #PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_TitleBar) ; |#PB_Window_ScreenCentered)
SetWindowColor(Window_0, RGB(192,192,192))
SetWindowPos_(WindowID(Window_0),#HWND_TOPMOST,0,0,0,0,#SWP_NOMOVE|#SWP_NOSIZE)
exitBtn = ButtonGadget(#PB_Any, 260, 20, 80, 28, "EXIT", #PB_Button_Default)
showTopicsCkBox = CheckBoxGadget(#PB_Any, 260, 63, 168, 30, "Prompt for Topics List", #PB_CheckBox_Center | #PB_Checkbox_Unchecked)
EndProcedure ; OpenWindow_0()
;
Procedure OpenWindow_1()
Window_1_Xpos = (GetSystemMetrics_(#SM_CXSCREEN) - Window_1_Width) ; horizontal width.
Window_1_Ypos = (GetSystemMetrics_(#SM_CYSCREEN) - Window_1_Height) ; vertical height.
If OpenWindow(Window_1, Window_1_Xpos, 0, Window_1_Width, Window_1_Height, "Enter or Select Topic", #PB_Window_SystemMenu| #PB_Window_TitleBar | #PB_Window_SizeGadget)
SetWindowColor(Window_1, RGB(192,192,192))
SetWindowPos_(WindowID(Window_1),#HWND_TOPMOST,0,0,0,0,#SWP_NOMOVE|#SWP_NOSIZE)
TopicContainer = ContainerGadget(#PB_Any, 12, 10, 222, 584)
NewTopic = StringGadget(#PB_Any, 10, 10, 100, 24, " ")
EditListBtn = ButtonGadget(#PB_Any, 10, 42, 100, 24, "Edit Topic List")
Btn_1 = ButtonGadget(1, 10, 96, 100, 24, "")
Btn_2 = ButtonGadget(2, 10, 120, 100, 24, "")
Btn_3 = ButtonGadget(3, 10, 144, 100, 24, "")
CloseGadgetList()
EndIf ; If OpenWindow(Window_1
HideWindow(Window_1, #True)
EndProcedure
;
Procedure TopicBtn_clicked()
SelectedTopicText$ = GetGadgetText(EventGadget())
MessageRequester("BtnGadgetText$","BtnGadgetText$ " + SelectedTopicText$)
LogThis = #True
LogSelectedTopic()
LogThis = #False
HideWindow(Window_1, #True)
EndProcedure ; TopicBtn_clicked()
;
Procedure GetDate()
GetDateCnt+1
d$=FormatDate("%yyyy-%mm-%dd",Date())
dttime$=FormatDate("%hh:%ii:%ss",Date())
; SetWindowTitle(Window_0, "pimLog 1.0 "+d$+".txt")
EndProcedure ; GetDate()
;
Procedure LogSelectedTopic()
GetDate()
If d$ <> OpenClipLogName$ ; file could have been closed but Exists
ClipLogName$ = (d$ + ".txt")
OpenClipLogName$ = ClipLogName$
Debug "81: IF d$ <> OpenClipLogName$"
EndIf ; IF d$ <> OpenClipLogName$
;
If OpenFile(0,cliplogname$,#PB_File_Append |#PB_Ascii)
WriteStringN(0,(dttime$ + " " + SelectedTopicText$ + ": " + SaveClipText$), #PB_Ascii) ; no showTopicsCkBox checked
; MessageRequester("WriteStringN(0,","Logging = " + dttime$ + " " + SelectedTopicText$ + " " + SaveClipText$)
LogThis = #False
HideWindow(Window_1, #True)
Debug "89: OpenFile(0,cliplogname$ & WriteStringN(0,(dttime$"
CloseFile(0)
EndIf
EndProcedure ; LogSelectedTopic()
;
Procedure LogSomething()
GetDate()
If d$ <> OpenClipLogName$ ; file could have been closed but Exists
ClipLogName$ = (d$ + ".txt")
OpenClipLogName$ = ClipLogName$
Debug "99: Procedure LogSomething() & GetDate() & If d$ <> OpenClipLogName$ "
EndIf ; IF d$ <> OpenClipLogName$
;
If OpenFile(0,cliplogname$,#PB_File_Append |#PB_Ascii)
LogThisString$ = (dttime$ + " " + "NoTopic: " + clipstring$)
SaveClipText$ = clipstring$ ; Wait til SelectTopic Window_1 clicks then use SaveClipText$
If showTopicsCkBoxState
Debug "106: If OpenFile(0,cliplogname$, & If showTopicsCkBoxState"
HideWindow(Window_1, #False) ; show Window_1
SetActiveWindow(Window_1) ; focus has been put on this window
SetWindowPos_(WindowID(Windomw_1),#HWND_TOPMOST,0,0,0,0,#SWP_NOMOVE|#SWP_NOSIZE) ; Make Window_1 OnTop
Else
WriteStringN(0,(LogThisString$), #PB_Ascii) ; no showTopicsCkBox checked
Debug "112: If OpenFile(0,cliplogname$, & WriteStringN(0,(LogThisString$)"
EndIf ; If showTopicsCkBoxState
CloseFile(0)
EndIf ;If OpenFile(0,cliplogname$
EndProcedure ; LogSomething() stickywindow
;
Procedure CallBack(hWnd, Msg, wParam, lParam)
Protected result
Result = #PB_ProcessPureBasicEvents
Select Msg
Case #WM_DRAWCLIPBOARD
If IsClipboardFormatAvailable_(#CF_TEXT)
Debug "124: Procedure CallBack( & If IsClipboardFormatAvailable_(#CF_TEXT)"
clipstring$=GetClipboardText()
LogSomething() ; ============================================== LogSomething()
clipString$=""
EndIf
SendMessage_(ClipboardViewerNext, Msg, wParam, lParam)
Case #WM_CHANGECBCHAIN
If wParam = ClipboardViewerNext
ClipboardViewerNext = lParam
Else
SendMessage_(ClipboardViewerNext, Msg, wParam, lParam)
EndIf
EndSelect
ProcedureReturn Result
EndProcedure ; CallBack(hWnd, Msg, wParam, lParam)
Procedure CloseWindow_window_0()
RemoveSysTrayIcon(TrayIcon)
ChangeClipboardChain_(WindowID(Window_0), ClipboardViewerNext)
If RestartPgm
RunProgram("pimClip.exe")
EndIf
CloseWindow(Window_0)
EndProcedure ; CloseWindow_window_0()
;
Procedure SetupTopicButtons() ; Run once at beginning ==========
If ReadFile(0, TopicsListFile$)
TopicBtnCount = 1
Repeat
TopicBtnName$ = ReadString(0)
SetGadgetText(TopicBtnCount,TopicBtnName$)
TopicBtnCount = TopicBtnCount + 1
Until Eof(0) | TopicBtnCount > MaxBtnCount
CloseFile(0)
EndIf
EndProcedure ; SetupTopicButtons() ==============================
;-begin
OpenWindow_0()
If IsClipboardFormatAvailable_(#CF_TEXT)
ClearClipboard()
clipString$=""
EndIf
SetWindowCallback(@callback())
ClipboardViewerNext = SetClipboardViewer_(WindowID(Window_0))
AddSysTrayIcon(TrayIcon, WindowID(0), LoadImage(0, IconName$))
SysTrayIconToolTip(TrayIcon, "LeftDouble_Click to Open pimClip WIndow")
;
OpenWindow_1()
SetActiveGadget(NewTopic)
AddKeyboardShortcut(Window_1, #PB_Shortcut_Return, 1)
SetupTopicButtons()
; =====================================
;{- Event loop
Repeat
Event = WaitWindowEvent()
WindowID = EventWindow()
; ///////////////////
If WindowID = Window_0
; Debug "Window_0 Event" + "#PB_Event_Gadget = " + Str(#PB_Event_Gadget)
Select Event
Case #PB_Event_Gadget
Select EventGadget()
Case exitBtn
CloseWindow_window_0()
Break
Case showTopicsCkBox
Result = GetGadgetState(showTopicsCkBox)
showTopicsCkBoxState = Result
; MessageRequester( "Case showTopicsCkBox" , "Case showTopicsCkBox = " + Str(Result) )
Debug "194: Case showTopicsCkBox" + Str(Result)
EndSelect ; EventGadget()
; ////////////////////////
Case #PB_Event_SysTray
If EventType() = #PB_EventType_LeftDoubleClick
HideWindow(Window_0, #False)
EndIf
Case #PB_Event_CloseWindow
CloseWindow(Window_0)
CloseWindow(Window_1)
EndSelect ; Window_0 Event
EndIf ; If WindowID = Window_0
If WindowID = Window_1
Select Event
Case #PB_Event_Gadget
Select EventGadget()
Case 1 To MaxBtnCount
Debug "212: Case 1 To MaxBtnCount"
TopicBtn_clicked()
Case NewTopic
Debug "215: Case NewTopic"
Select EventType()
Case #PB_EventType_Focus
SetActiveWindow(Window_1)
AddKeyboardShortcut(Window_1, #PB_Shortcut_Return, 1)
Debug "220: Case #PB_EventType_Focus"
Case #PB_EventType_LostFocus
RemoveKeyboardShortcut(Window_1, #PB_Shortcut_Return)
Debug "223: Case #PB_EventType_LostFocus"
EndSelect ; Select EventType()
Case EditListBtn
RunProgram("TopicsBtnList.txt")
EndSelect ; Select EventGadget()
Case #PB_Event_Menu
Debug "230: Case #PB_Event_Menu"
; MessageRequester("Select EventMenu()","Select EventMenu()= "+Str(EventMenu()))
Select EventMenu()
Case 1
Debug "234: Select EventMenu() & Case 1"
SelectedTopicText$ = GetGadgetText(NewTopic)
; MessageRequester("NewTopicText$ = ",SelectedTopicText$ )
SetActiveGadget(NewTopic)
LogSelectedTopic()
EndSelect ; Select EventMenu()
Case #PB_Event_CloseWindow
CloseWindow(Window_0)
CloseWindow(Window_1)
EndSelect ; Select Event
EndIf ; WindowID = #Window_0
ForEver ; OpenWindow_0()
End