MCPcopy Create free account
hub / github.com/KangLin/RabbitRemoteControl / GetImage

Method GetImage

Service/ScreenWindows.cpp:124–303  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

122}
123
124int CScreenWindows::GetImage(bool bBuffer)
125{
126 int nRet = -1;
127
128 if(!m_Screen.isNull() && !bBuffer)
129 return 0;
130
131 HDC dc = NULL;
132 HDC memDc = NULL;
133 HBITMAP bitmap = NULL;
134
135 do{
136 //dc = = CreateDC( _T("DISPLAY"),NULL,NULL,NULL ); // Primary screen
137 dc = GetDC(GetDesktopWindow()); // Multi-screen
138 if(NULL == dc)
139 {
140 qCritical(logDW,
141 "GetDC fail: %d",
142 GetLastError());
143 break;
144 }
145
146 memDc = CreateCompatibleDC(dc);
147 if(NULL == memDc)
148 {
149 qCritical(logDW,
150 "CreateCompatibleDC fail: %d",
151 GetLastError());
152 break;
153 }
154
155 int ScreenWidth = GetDeviceCaps(dc, HORZRES); // pixel
156 int ScreenHeight = GetDeviceCaps(dc, VERTRES); // pixel
157 bitmap = CreateCompatibleBitmap(dc, ScreenWidth, ScreenHeight);
158 if(NULL == bitmap)
159 {
160 qCritical(logDW,
161 "CreateCompatibleBitmap fail: %d",
162 GetLastError());
163 break;
164 }
165 HGDIOBJ oldBitmap = SelectObject(memDc, bitmap);
166 if(NULL == oldBitmap)
167 {
168 qCritical(logDW,
169 "SelectObject fail: %d",
170 GetLastError());
171 break;
172 }
173 if(!BitBlt(memDc, 0, 0, ScreenWidth, ScreenHeight, dc, 0, 0, SRCCOPY))
174 {
175 qCritical(logDW,
176 "BitBlt fail: %d",
177 GetLastError());
178 break;
179 }
180
181 if(HasCursor())

Callers 1

RecordVideoMethod · 0.80

Calls 1

HasCursorFunction · 0.85

Tested by

no test coverage detected