Вывод на экран текущего каталога в графическом режиме (со скроллингом)

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

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 с.