Вывод на экран текущего каталога в графическом режиме (со скроллингом)
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
e:;для перерисовки нового размера окна
;значение старшего слова означает высоту
; клиентской части
174. moveax,[lparam]
175. movcl,16
176. rcreax,cl
177. andeax,0ffffh
178. movdx,0
179. movcx,word ptr [charht]
180. divcx
181. movzxecx,ax
182. moveax,101
183. sbbeax,ecx
184. cmpeax,0
185. jawww1
186. moveax,0
187. www1:mov[cyMax],ecx
188. callFindFirstFileA,offset fn,offset w32fd
189. mov[hFindFile],eax
190. movesi,1
191. s_m4:
192. callFindNextFileA,[hFindFile],offset w32fd
193. cmpeax,0
194. jes_m5
195. incesi
196. jmps_m4
197. s_m5:mov[nLast],esi
198. moveax,[cyMax]
199. cmpeax,[cyPos]
200. jawww2
201. mov[cyPos],eax
202. www2: pushFALSE
203. pushesi
204. pushL 0
205. pushSB_VERT
206. push[hwnd]
207. callSetScrollRange
208. pushTRUE
209. push[cyPos]
210. pushSB_VERT
211. push[hwnd]
212. callSetScrollPos
213. mov eax, 0
214. jmp finish
215. wmpaint:
216. call BeginPaint,[hwnd],offset lppaint;получили контекст
; устройства
217. mov [hDC],eax
218. moveax,[cyPos]; начальная позиция бегунка
219. movecx,[charht];получили координату вывода в пикселях
220. movdx,0
221. mulcx
222. movzxecx,ax
223. mov[cory],5; занесли по у -5
224. movecx,1; занесли по x -1
225. callFindFirstFileA,offset fn,offset w32fd ;отыскиваем
;первый
; файл
226. mov[hFindFile],eax
227. cmpecx,[cyPos]
228. jneqqq1
229. movesi,0
230. m3:movdl,w32fd.cFileName[esi];отрисовка первой строки
231. cmpdl,0
232. jem2
233. movbuf_v[esi],dl
234. incesi
235. jmpm3
236. cmp[cyPos],0; если не ноль, то переход на метку
; qqql
237. jneqqq1
238. m2:
239. mov[num],esi
240. callTextOutA,[hDC],5,[cory],offset buf_v,[num]; вывод
;первого
;найденного
; файла
241. qqq1:movebx,1
242. m6:
243. callFindNextFileA,[hFindFile],offset w32fd; следующий файл
244. cmpeax,0; проверка для
; последнего файла
245. jekon
246. movesi,0
247. movedi,0
248. m4:movdl,w32fd.cFileName[edi]; получили имя
;файла
249. cmpdl,0
250. jem5
251. movbuf_v[esi],dl
252. incedi
253. incesi
254. jmpm4
255. m5:cmpebx,[cyPos]
256. jbqqq2
257. moveax,[charht]
258. add[cory],eax
259. callTextOutA,[hDC],5,[cory],offset buf_v,esi;вывод
;новой строки
260. qqq2:incebx;счетчик строк
261. jmpm6
262. kon: call EndPaint,[hwnd],offset lppaint;отдали
;контекст
; устройства и
;перешли в цикл
;обработки сообщений
263. moveax,0
264. jmpfinish
265. finish:
266. ret
267. WndProc endp
268. public WndProc
269. end start; конец программы.
Заключение.
Моя задача состояла в создании учебной программы, демонстрирующей вывод на экран в графическом режиме заданный каталог со скролингом. С полосами прокрутки связан единственный недостаток, который заключается в том, что приложениями невозможно управлять без мыши. Но так как большинство приложений Windows поддерживают работу с мышью, это вряд ли стоит считать серьезным недостатком. Необходимо было выполнить целый ряд действий, прежде чем приложение смогло адекватно реагировать на сообщения, посылаемые полосами прокрутки.
Библиографический список.
Windows 98: руководство разработчика: Пер.с англ. К.: Издательская группа BHV, 1999. T.1. 672 c.
Зубков С.В. Asstmbler. Для DOC, Windows Unix. M.: ДМК, 1999. 640 с.