* * *    
Главная » Статьи » Код PB

Просмотров: 2640 | Дата: 23.04.2024 | Коментарии (0)

EditorGadget




Code

Procedure IsMouseOver(wnd) ; Определяем находится ли курсор мышки в пределах данного окна (гаджета)  
  GetWindowRect_(wnd,re.RECT)  
  GetCursorPos_(pt.POINT)  
ProcedureReturn PtInRect_(@re, pt\x|(pt\y<<32))  
EndProcedure  

If OpenWindow(0, 0, 0, 322, 150, "EditorGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)  
  EditorGadget(0, 8, 8, 306, 133)  
   
  If CreatePopupMenu(1)  
  MenuItem(1,"Отменить")  
  MenuItem(2,"Повторить")  
  MenuBar()  
  MenuItem(3,"Вырезать")  
  MenuItem(4,"Копировать")  
  MenuItem(5,"Вставить")  
  MenuBar()  
  MenuItem(6,"Выделить всё")  
  EndIf  
   
  Repeat  
  Event=WaitWindowEvent()  
   
  If Event=#WM_RBUTTONUP  
  If IsMouseOver(GadgetID(0))  
  DisplayPopupMenu(1,WindowID(0))  
  EndIf  
  EndIf  
   
  If Event=#PB_Event_Menu  
  Menu=EventMenu()  
  Select Menu  
  Case 1  
  SendMessage_(GadgetID(0), #EM_UNDO, #Null, #Null)  
  Case 2  
  SendMessage_(GadgetID(0), #EM_REDO, #Null, #Null)  
  Case 3, 4  
  SendMessage_(GadgetID(0), #EM_GETSEL, @Min,@Max)  
   
  If Min<>Max ;
  If Min<Max ;
  xx=Max-Min ;
  Else ;
  xx=Min-Max ;
  EndIf ;
   
  lpText.s=Space(xx)  
  SendMessage_(GadgetID(0), #EM_GETSELTEXT, #Null, @lpText)  
  SetClipboardText(lpText)  
   
  If Menu=3  
  SendMessage_(GadgetID(0),#EM_REPLACESEL,0,@"")  
  EndIf  
   
  EndIf  
   
  Case 5  
  Text.s=GetClipboardText()  
  SendMessage_(GadgetID(0),#EM_REPLACESEL,0,@Text)  
  Case 6  
  SendMessage_(GadgetID(0),#EM_SETSEL,0,-1)  
  EndSelect  
  EndIf  
   
  Until Event = #PB_Event_CloseWindow  
  EndIf










Сайт посвящён языку программирования PureBasic — коммерческий компилятор языка программирования, использующего синтаксис BASIC. Предназначен для создания кроссплатформенных приложений для AmigaOS, Linux, Microsoft Windows, Windows NT и Mac OS X. Разработан компанией Fantaisie Software.