FreeRDP
wf_client.h
1 
22 #ifndef FREERDP_CLIENT_WIN_INTERFACE_H
23 #define FREERDP_CLIENT_WIN_INTERFACE_H
24 
25 #include <winpr/windows.h>
26 
27 #include <winpr/collections.h>
28 
29 #ifdef WITH_PROGRESS_BAR
30 #include <shobjidl.h>
31 #endif
32 
33 #include <freerdp/api.h>
34 #include <freerdp/freerdp.h>
35 #include <freerdp/gdi/gdi.h>
36 #include <freerdp/gdi/dc.h>
37 #include <freerdp/gdi/region.h>
38 #include <freerdp/codec/color.h>
39 
40 #include <freerdp/client/rail.h>
41 #include <freerdp/channels/channels.h>
42 #include <freerdp/codec/rfx.h>
43 #include <freerdp/codec/nsc.h>
44 #include <freerdp/client/file.h>
45 
46 #include "wf_channels.h"
47 #include "wf_floatbar.h"
48 #include "wf_event.h"
49 #include "wf_cliprdr.h"
50 
51 #ifdef __cplusplus
52 extern "C"
53 {
54 #endif
55 
56 // System menu constants
57 #define SYSCOMMAND_ID_SMARTSIZING 1000
58 #define SYSCOMMAND_ID_REQUEST_CONTROL 1001
59 
60  typedef struct
61  {
62  rdpBitmap _bitmap;
63  HDC hdc;
64  HBITMAP bitmap;
65  HBITMAP org_bitmap;
66  BYTE* pdata;
67  } wfBitmap;
68 
69  typedef struct
70  {
71  rdpPointer pointer;
72  HCURSOR cursor;
73  } wfPointer;
74 
75  struct wf_context
76  {
77  rdpClientContext common;
78 
79  int offset_x;
80  int offset_y;
81  int fullscreen_toggle;
82  int fullscreen;
83  int percentscreen;
84  WCHAR* window_title;
85  int client_x;
86  int client_y;
87  int client_width;
88  int client_height;
89 
90  HANDLE keyboardThread;
91 
92  HICON icon;
93  HWND hWndParent;
94  HINSTANCE hInstance;
95  WNDCLASSEX wndClass;
96  LPCTSTR wndClassName;
97  HCURSOR hDefaultCursor;
98 
99  UINT systemMenuInsertPosition;
100 
101  HWND hwnd;
102  BOOL is_shown;
103  ITaskbarList3* taskBarList;
104  POINT diff;
105 
106  wfBitmap* primary;
107  wfBitmap* drawing;
108  HCURSOR cursor;
109  HBRUSH brush;
110  HBRUSH org_brush;
111  RECT update_rect;
112  RECT scale_update_rect;
113 
114  DWORD mainThreadId;
115  DWORD keyboardThreadId;
116 
117  rdpFile* connectionRdpFile;
118 
119  BOOL disablewindowtracking;
120 
121  BOOL updating_scrollbars;
122  BOOL xScrollVisible;
123  int xMinScroll;
124  int xCurrentScroll;
125  int xMaxScroll;
126 
127  BOOL yScrollVisible;
128  int yMinScroll;
129  int yCurrentScroll;
130  int yMaxScroll;
131 
132  void* clipboard;
133  CliprdrClientContext* cliprdr;
134 
135  wfFloatBar* floatbar;
136 
137  RailClientContext* rail;
138  wHashTable* railWindows;
139  BOOL isConsole;
140 
141  DispClientContext* disp;
142  UINT64 lastSentDate;
143  BOOL wasMaximized;
144  };
145 
150  FREERDP_API int RdpClientEntry(RDP_CLIENT_ENTRY_POINTS* pEntryPoints);
151  FREERDP_API int freerdp_client_set_window_size(wfContext* wfc, int width, int height);
152  FREERDP_API void wf_size_scrollbars(wfContext* wfc, UINT32 client_width, UINT32 client_height);
153 
154 #ifdef __cplusplus
155 }
156 #endif
157 
158 #endif /* FREERDP_CLIENT_WIN_INTERFACE_H */