PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » PureBasic для Windows » Календарь SysMonthCal32


Календарь SysMonthCal32

Сообщений 1 страница 5 из 5

1

Код:
Global hCalendar
InitCommonControls_()
;#MCN_FIRST  = -746
#MCN_SELCHANGE = #MCN_FIRST + 1

Procedure MyWindowCallback(hWin, Msg, wParam, lParam)
  Result = #PB_ProcessPureBasicEvents
  If Msg=#WM_NOTIFY
    CopyMemory(lParam,pnmh.NMSELCHANGE,SizeOf(NMSELCHANGE))
    If pnmh\nmhdr\code=#MCN_SELCHANGE
      ;https://learn.microsoft.com/en-us/windows/win32/controls/mcn-selchange
      If pnmh\nmhdr\hwndFrom=hCalendar
      y=pnmh\stSelStart\wYear
      m=pnmh\stSelStart\wMonth
      d=pnmh\stSelStart\wDay
      SetWindowTitle(0,Str(d)+"-"+Str(m)+"-"+Str(y))
    EndIf
    EndIf
  EndIf
    ProcedureReturn Result
  EndProcedure
  
If OpenWindow(0, 0, 0, 640, 480, "", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  hCalendar = CreateWindowEx_(#Null,@"SysMonthCal32",@"DateTime",#WS_CHILD|#WS_VISIBLE|#WS_BORDER,0,0,640,480,WindowID(0),0,GetModuleHandle_(0),0)
  
  SetWindowCallback(@MyWindowCallback())
  
  ;https://learn.microsoft.com/en-us/windows/win32/controls/mcm-getminreqrect
  ;Returns nonzero and lParam receives the applicable bounding information if successful. Otherwise, the message returns zero.
  ;SendMessage_(hCalendar,#MCM_GETMINREQRECT,0,crect.RECT)
  ;MoveWindow_(hCalendar,crect\left,crect\top,(crect\right-crect\left+30),(crect\bottom-crect\top+30),1)
  
  ;set date
  st.SYSTEMTIME
  st\wYear=2025
  st\wMonth=1
  st\wDay=1
  rr=SendMessage_(hCalendar,#MCM_SETCURSEL,0,@st)
  
  
  Repeat
    Event = WaitWindowEvent()
    If GetAsyncKeyState_(#VK_ESCAPE)&32768
      Break
    EndIf
    
  Until Event = #PB_Event_CloseWindow
EndIf

0

2

Чем же из PB не подошел?

Код:
OpenWindow(0, 0, 0, 640, 480, "Гаджет Календарь", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CalendarGadget(0, 10, 10, 640, 480)
Repeat
  Event = WaitWindowEvent()
  If Event = #PB_Event_Gadget
    SetWindowTitle(0,FormatDate("%dd-%mm-%yyyy", GetGadgetState(0)))
  EndIf
Until Event = #PB_Event_CloseWindow

0

3

Пётр написал(а):

Чем же из PB не подошел?

правильный вопрос, на сколько урезан в РВ

мне попалось
CreateWindowEx_()
зачем расширенный???, чистое любопытство

egons
на леарне есть русский пдф, машиной переведён, но таки русский, не русский тоже есть
искать в левом нижнем углу

с козочкой календарь интересней

https://forumupload.ru/uploads/0009/ae/28/416/t967734.png

0

4

newJS написал(а):

мне попалось
CreateWindowEx_()
зачем расширенный???, чистое любопытство

Вангую, что отличие параметров.

newJS написал(а):

на леарне есть русский пдф, машиной переведён, но таки русский, не русский тоже есть
искать в левом нижнем углу

Не, вечный календарь мы уже проходили(:

0

5

egons написал(а):

Не, вечный календарь мы уже проходили(:

почему вечный?, каждый день меняется, козы тоже разные, на каждой перезагрузке меняются, это не статика
правда чтобы календарь увидеть надо все окна закрыть

0


Вы здесь » PureBasic - форум » PureBasic для Windows » Календарь SysMonthCal32