I don't even get a frame where the calendar should be. The window just stays blank below the editor box.
Yes I am using Callback. Looks like this:
Code: Select all
Procedure WinCallback(hWnd,uMsg,wParam.l,lParam.l)
Static priorWin.i, prevGadget
Protected frickit.i
_wParam.w=wParam:_lParam.l=lParam
Result.i = #PB_ProcessPureBasicEvents
If AdminFlag.B
Debug "callback aborted"
ProcedureReturn Result
EndIf
;/////////
If uMsg = $16 ; End Session Message
If wParam
; the Session is ending
If lParam
;user is logging off.
;Probably do nothing.
Else
;user is shutting down the system.
;NEED TO SAVE DATA and close.
safeExit = #True ;forgo updste to server
preserveLog()
Vacate()
EndIf
EndIf
EndIf
;/////////
If GetAsyncKeyState_(#VK_MENU)
If GetAsyncKeyState_(#VK_TAB)
AltTab = #True
Delay(10)
EndIf
EndIf
If fullInit.i = #True
If uMsg = 13 ; Watch for Alt+Tab combo
If wParam = 510
AltTab = #True
EndIf
EndIf
If WindowID1.i = GdHdl.i
Select uMsg
Case #WM_ENDSESSION,#WM_QUERYENDSESSION
; whatcha going to do?
Case #WM_LBUTTONDBLCLK
mcht.MCHITTESTINFO\cbSize = SizeOf(MCHITTESTINFO)
mcht\pt\x = DesktopMouseX()
mcht\pt\y = DesktopMouseY()
ScreenToClient_(GadgetID(#RemindCalendar), @mcht\pt)
SendMessage_(GadgetID(#RemindCalendar),#MCM_HITTEST,0,mcht)
If mcht\uHIt = #MCHT_CALENDARDATE
;Debug "Date selected through double-click : " + FormatDate("%mm/%dd/%yyyy",GetGadgetState(#RemindCalendar))
ModEntry()
HideWindow(#Window_19,1)
SetActiveGadget(#RemindList)
DisableGadget(#RemindTrashAll,0)
EndIf
EndSelect
ProcedureReturn CallWindowProc_(lpPrevFunc,WindowID1.i,Message,wParam,lParam)
EndIf
Select TOPwh
Case HWND0
;Debug "Callback 'Message' value is: $" + Hex(Message,#PB_Long)
Select uMsg
Case #WM_NOTIFY ; Clipboard copy column on highlited lines
If GetAsyncKeyState_(#VK_SHIFT) ; Must use shift and click on header.
*nmh.NMHEADER = lParam
If GetParent_(*nmh\hdr\hwndFrom) = CustList0.i
If *nmh\hdr\code = #HDN_ITEMCLICK
;Debug "Column " + Str(*nmh\iitem)+ " clicked"
If *nmh\iItem > 2
If CountGadgetItems(#CustList_0) > 0
FselCount.i = SendMessage_(CustList0,#LVM_GETSELECTEDCOUNT,0,0)
If FselCount.i > 0
a1.i = -1
Repeat
a1.i = SendMessage_(CustList0, #LVM_GETNEXTITEM, a1.i, #LVNI_SELECTED)
If a1.i <> -1
s$ = s$ + GetGadgetItemText(#CustList_0,a1.i,2)
If Len(GetGadgetItemText(#CustList_0,a1.i,3)) > 1
s$ = s$ + " (" + GetGadgetItemText(#CustList_0,a1.i,*nmh\iItem) + ")"
EndIf
s$ = s$ + CRLF$
EndIf
Until a1.i = -1
SetClipboardText(s$)
Copied()
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
Case #WM_COMMAND
frickit.i = wParam >>16
Select frickit.i
Case #EN_CHANGE ; Need this to cue CypherListing() search in main window
Select lParam
Case CallBox0
oLnewInp = #True ; << Trigger flag
usrDelay.i = GetTickCount_()
Case GadgetID(#Date_To_3)
EndSelect
Case #CBN_EDITCHANGE
EndSelect
Case #WM_LBUTTONDBLCLK
If IsZoomed_(HWND0) = 0
Select wW0
Case 830
;wW0 = 598
SetWindowPos_(HWND0, 0, wpx, wpy, 598, wH0+1, #SWP_SHOWWINDOW)
ShowWindow_(HWND0,#SW_SHOWNA)
SetGadgetAttribute(#Width_0,#PB_Button_Image, ImageID(#ButtonRight))
Case 609
;wW0 = 814
SetWindowPos_(HWND0, 0, wpx, wpy, 814, wH0+1, #SWP_SHOWWINDOW)
ShowWindow_(HWND0,#SW_SHOWNA)
SetGadgetAttribute(#Width_0,#PB_Button_Image, ImageID(#ButtonLeft))
EndSelect
WindowSized = 1
EndIf
;Debug "doubleclick"
Case #PB_Event_CloseWindow, #WM_CLOSE
damnCallbackSaysClose.i = #PB_Event_CloseWindow
Case #WM_WINDOWPOSCHANGED
;Debug "moved"
GetWindowRect_(TOPwh,rw)
If rw\top > -10 ; Conditional added here to help align 'Reminder' window
wpy = rw\top
EndIf
;Debug rw\bottom - rw\top
GetClientRect_(TOPwh,rc)
cpy = rc\top
WindowSized = 1
Case #WM_SIZE ;, #WM_WINDOWPOSCHANGED
GetWindowRect_(TOPwh,rw)
If rw\top > -10 ; Conditional added here to help align 'Reminder' window
wpx = rw\left
wpy = rw\top
EndIf
wW0 = rw\right - wpx - 1
wH0 = rw\bottom - wpy - 1
GetClientRect_(TOPwh,rc)
cpx = rc\left
cpy = rc\top
chx = rc\right - cpx - 1
chy = rc\bottom - cpy - 6
WindowSized = 2
If wParam = SIZE_RESTORED
SetFocus_(prevGadget)
Debug "oneLook Restored"
ElseIf wParam = 1 ; Minimized just now
prevGadget = Focus
Debug "oneLook SHRUNKEN"
EndIf
EndSelect
Case HWND2
Select uMsg
Case #PB_Event_CloseWindow, #WM_CLOSE
_mess = #PB_Event_CloseWindow
EndSelect
Case HWND4, HWND5
Select uMsg
Case #WM_WINDOWPOSCHANGED
WindowSized = 3
Case #WM_SIZE ;, #WM_WINDOWPOSCHANGED
WindowSized = 3
Case #WM_NOTIFY
WindowSized = 3
EndSelect
Case HWND11
Result.i = 0
ProcedureReturn
Case HWND20
Select uMsg
Case #WM_SIZE
Select wParam
Case #SIZE_MINIMIZED
Debug "Window was minimized"
DoMinimizedSave = #True
EndSelect
EndSelect
EndSelect
Select uMsg ; used to catch remnant Window messages before proceding with new window
Case AttachSkype
;Debug "Attach_SkypeID Value: " + Str(AttachSkype)
;Debug "Status Return Value: " + Str(lParam)
SkypeLink.i = lParam
Select lParam
Case #Success ; 0
SkypeHandle = wParam
;Debug "oneLook Attached to Skype"
; SetGadgetText(3, "Disconnect")
Case #PendingAuthorizaion ; 1
;Debug "oneLook to Skype Authorization Pending"
Case #Refused ; 2
;Debug "Refused, so goto: Tools > Options > Advanced > Manage other programs' access to Skype"
Case #NotAvailable ; 3
;Debug "oneLook cannot launch Skype, so go start Skype."
Case #Available ; $8001
EndSelect
Case #WM_COPYDATA
If wParam = SkypeHandle
*cds.COPYDATASTRUCT = lParam
If *cds\lpData
;Debug PeekS(*cds\lpData)
EndIf
ProcedureReturn 1
EndIf
Case #WM_WINDOWPOSCHANGED
WindowChange.i = #True ; see GlobalTasking()
Case #WM_COMMAND
frickit.i = wParam >>16
Select frickit.i
Case #EN_SETFOCUS
activeGad.i = GetDlgCtrlID_(lParam) ;EventGadget()
Select activeGad.i
Case 0 To 16
If IsWindow(TOPwh.i)
AddKeyboardShortcut(TOPwh.i, #PB_Shortcut_Return, #KB_Return)
AddKeyboardShortcut(TOPwh.i, #PB_Shortcut_PageUp, #KB_Prior)
AddKeyboardShortcut(TOPwh.i, #PB_Shortcut_PageDown, #KB_Next)
AddKeyboardShortcut(TOPwh.i, #PB_Shortcut_End, #KB_End)
AddKeyboardShortcut(TOPwh.i, #PB_Shortcut_Home, #KB_Home)
AddKeyboardShortcut(TOPwh.i, #PB_Shortcut_Up, #KB_Up)
AddKeyboardShortcut(TOPwh.i, #PB_Shortcut_Down, #KB_Down)
AddKeyboardShortcut(TOPwh.i, #PB_Shortcut_Alt | #PB_Shortcut_Up, #KB_Alt_Up)
AddKeyboardShortcut(TOPwh.i, #PB_Shortcut_Alt | #PB_Shortcut_Down , #KB_Alt_Down)
EndIf
PrevFocus.i = activeGad.i
activeW.i = TOPwh
priorWin.i = TOPwh ; << Tracking "top window" in this application only.
Default
PrevFocus.i = activeGad.i
activeW.i = TOPwh
EndSelect
Case #EN_KILLFOCUS
If IsWindow(priorWin.i) ;DON'T KNOW HOW BUT THIS GYRATION GOT BROKEN
; and commenting line below seems to have fixed the new problem.
; RemoveKeyboardShortcut(priorWin.i, #PB_Shortcut_Return)
; RemoveKeyboardShortcut(priorWin.i, #PB_Shortcut_PageUp)
; RemoveKeyboardShortcut(priorWin.i, #PB_Shortcut_PageDown)
; RemoveKeyboardShortcut(priorWin.i, #PB_Shortcut_End)
; RemoveKeyboardShortcut(priorWin.i, #PB_Shortcut_Home)
; RemoveKeyboardShortcut(priorWin.i, #PB_Shortcut_Up)
; RemoveKeyboardShortcut(priorWin.i, #PB_Shortcut_Down)
; RemoveKeyboardShortcut(priorWin.i, #PB_Shortcut_Alt | #PB_Shortcut_Up)
; RemoveKeyboardShortcut(priorWin.i, #PB_Shortcut_Alt | #PB_Shortcut_Down)
EndIf
EndSelect
EndSelect
EndIf
ProcedureReturn Result
EndProcedure
I know there is some very goofy stuff in there but it was doing what I needed it to do. Mind you I absolutely HATE callbacks. Required to catch some #WM_ messages so i am forced to use it.