Поиск:

Ответ в темуСоздание новой темы Создание опроса
> медленное обновние клиентской части окна, медленное вставка текста из буфера TASM3 
:(
    Опции темы
Lonley
Дата 29.8.2004, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 597
Регистрация: 7.10.2003
Где: северные ворота М урманск

Репутация: нет
Всего: 4



============
Привет!!! smile.gif
Вот написал небольшой редактор smile.gif после упорных трудов, но
есть небольшая промблема...
1. обновление экрана клиентской части окна
происходит медленно
2. и вставка текста из буффера обмена тоже медленно
особенно на медленных компьютеров
-------
но в других редакторов токое не происходит в чем промблема
-------
З.Ы.
сообщение WM_PAINT
обрабатывается по умолчанию

--------
взять можно тут smile.gif
http://pascal.net.ru/forum/index.php?act=ST&f=2&t=2585

Это сообщение отредактировал(а) Lonley - 29.8.2004, 20:32


--------------------
Земную жизнь пройдя до половины,
Я очутился в сумрачном лесу,
Утратив правый путь во тьме долины.
Каков он был, о, как произнесу,
Тот дикий лес, дремучий и грозящий,
PM MAIL ICQ   Вверх
_Chingachguk_
Дата 30.8.2004, 08:56 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











На твоем форуме нужно зарегистрироваться, чтобы скачать твой файл. Дай кусок кода, относящийся к делу. Можно использовать SendMessage для вставки буфера в текст ?
  Вверх
Lonley
Дата 30.8.2004, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 597
Регистрация: 7.10.2003
Где: северные ворота М урманск

Репутация: нет
Всего: 4



Код

WMSIZE:
     mov eax,0
     mov ebx,0
     mov ax,[ebp+014h];ðàçìåð Õ
     mov bx,[ebp+016h];ðàçìåð ïî Y
     sub bx,20  ;êîððåêòèðîâêà îò âåðõíåãî  êðàÿ ò.ê.
   
     push 1

     push ebx
     push eax
     push 20
     push 0
     push [HWNDSTAT]
     call MoveWindow
     
     jmp finish  
  ;  jmp DefWNDPROC
WMCOMMAND:
;---------------------------------Îáðàáîòêà êíîïêè
    mov eax,HWNDBUTT
    cmp DWORD ptr [ebp+14h],eax;ïî àäðåñó ebp+14h õðàíèòñÿ äåñêðèïòîð -=LPARAM=-
                               ;îòïðàâèòåëÿ ñîîòâåòñòâåííî âåäåòñÿ ïðîâåðêà
    je BUTTS
;---------------------------------Îáðàáîòêà ìåíþ îááîóò-------------------------------------    
    CMP WORD PTR  [ebp+10h],5; èíäåíòèôèêàòîð ïóíêòà ìåíþ WPARAM
    JE MenAbout
   
    CMP WORD ptr [ebp+10h],1;SAVE
    JE SaveFil
   
    CMP WORD PTR [ebp+10h],2;OPEN
    JE OpenFil
   
    jmp Finish
;=================================Îòêðûòü ôàéë äèàëîãîâîå îêíî    
OpenFil:  
     lea esi,NEWHWND
     mov ebx,[esi]
     mov lpofn_o.hwndOwner,ebx
     
     push offset lpofn_o
     call GetOpenFileNameA
     
     cmp eax,0
     je no_select_op
;===========================================Îòêðûòèå ôàéëà
     lea esi,lpofn.lpstrFile

     push 0
     push FILE_ATTRIBUTE_NORMAL;
     push OPEN_EXISTING   ;OPEN_ALWAYS
     push 0               ;
     push FILE_SHARE_READ   ; ñîâìåñòíîå èñïîëüçîâàíèå    
     push GENERIC_ALL     ; ðåæèì äîñòóïà
     push [esi]           ; Name File
     call CreateFileA
     mov [filedesk],eax
;----------------------------------ðàçìåð ôàéëà
     lea esi,lpFileSizeHigh
     push esi
     push eax
     call GetFileSize
     
     lea esi,lpFileSizeHigh
     mov ebx,[esi]
     add eax,ebx
     mov sizefile,eax
;--------------------------------âûäåëåíèå ïàìÿòè ïîä áóôôåð
     push eax
     push GMEM_ZEROINIT
     call GlobalAlloc
     mov HWNDBUFF,eax
;----------------------------------------
     lea  esi,filedesk           ;
     mov  eax,[esi]              ;
     lea  esi,HWNDBUFF           ;
     mov  ebx,[esi]              ;âñå ýòî äëÿ íàãëÿäíîñòè
     lea esi,SizeFile            ;
     mov edx,[esi]               ;
     lea esi,NuberByteRead       ;
     
     
     push 0
     push esi
     push edx
     push ebx
     push eax
     call ReadFile
;------------------------------
     lea esi,HWNDSTAT
     mov eax,[esi]
     lea esi,HWNDBUFF

     push [esi]
     push eax
     call SetWindowTextA            
;------------------------------Çàêðûâàåì äåñêðèïòîð ôàéëà      
     lea esi,filedesk
     mov eax,[esi]
     push eax
     call CloseHandle
;------------------------------îñâîáîæäàåì äèíàìè÷åñêóþ ïàìÿòü
     lea esi,HWNDBUFF
     mov eax,[esi]
     push eax
     call GlobalFree      
     
;------------------------------------------------


;===========================================================
no_select_op:      
     jmp DefWNDPROC
     
     
;=================================Ñîõðàíèòü ôàéë äèàëîãîâîå îêíî    
SaveFil:
     lea esi,NEWHWND
     mov ebx,[esi]
     mov lpofn.hwndOwner,ebx

     push offset lpofn
     call GetSaveFileNameA
     
     cmp eax,0
     je no_select_sa
     
     lea esi,lpofn.lpstrFile
     
     push 0
     push FILE_ATTRIBUTE_NORMAL
     push OPEN_ALWAYS
     push 0
     push FILE_SHARE_RW          
     push GENERIC_ALL
     push [esi]; Name File
     call CreateFileA
     mov [FileDesk],eax
     
     push [HWNDSTAT]
     call GetWindowTextLengthA
     mov [buffsize],eax
     
     push eax
     push GMEM_FIXED
     call GlobalAlloc
     mov [HWNDBUFF],eax

     lea esi,HWNDBUFF
     mov eax,[esi]
     
     push offset buffsize
     push eax;   offset HWNDBUFF
     push [HWNDSTAT]
     call GetWindowTextA
     
     lea esi,HWNDBUFF
     mov eax,[esi]

     push 0
     push offset FileBytWri
     push [buffsize]
     push [HWNDBUFF]
     push [FileDesk]
     call WriteFile
     

     lea esi,HWNDBUFF
     mov eax,[esi]

     push eax
     call GlobalFree
           
     push [FileDesk]
     call CloseHandle


;===========================================================
no_select_sa:
    jmp DefWNDPROC
MenAbout:
    lea esi,WC.clsHIcon; ãðóçèì àäðåñ äåñêð íàøåé èêîíêè
    push [esi]         ; ãðóçèì èç àäðåñà çíà÷åíèå äåñêðèï íàøåé èêíîêè
    push Offset progr;
    push Offset progs;
 push NEWHWND  ;ÒÓÒ íóæåí äåñêðèïòîð îêíà , à íå ðèëîåíèÿ
 call ShellAboutA
 
    jmp DefWNDPROC
;ShellAbout(Form1.Handle,'Lonley Raven','FreeLancer Programming',0);
BUTTS:
     push 0
     call GetDC
     push 18
     push offset MESS_BUT
     push 10
     push 10
     push eax
     call TextOutA
;=-=-=-SelStart
push [HWNDSTAT]
Call SetFocus
     push 8
     push 4
     push EM_SETSEL
     push [HWNDSTAT]
     Call SendMessageA
     jmp DefWNDProc
WMACTIVATE:
    jmp Finish
;      jmp DefWNDPROC
;===================================
;WMPAINT:
;      
;     jmp finish
;     jmp DefWNDPROC      
;===================================
WMCREATE:
     push offset richeditdll;çàãðóçêà áèáëèîòåêè ñ áîãàòûì ðåäàêòîðîì
     call LoadLibraryA      ;  
     mov hriched,eax        ;äåêðèïòîð îáúåêòà

     push 0
     push [HINST];Äåñêðèïòîð ýêçåïë ïðèëîæåíèÿ
     push 0
     push DWORD PTR [EBP+08h];Äåñêðèïòîð îêíà âëàäåëüöà
     push 250;y
     push 377;x
     push 1 ;y
     push 0  ;x
     push ClsEDIT
     push offset EDITTITLE
     push offset CLSSTATIC
     push WS_EX_CLIENTEDGE
     call CreateWindowExA;ñîçäàëè RICHEDIT
     mov [HWNDSTAT],eax
     
     push 0
     push -1
     push EM_LIMITTEXT
     push [HWNDSTAT]
     call SendMessageA;óñòàíàâëèâàåì íîâûé ðàçìåð áóôåðà òåêñòà ðåäàêòîðà
;---------------------------------------------
     push 0
     push [HINST];Äåñêðèïòîð ýêçåïë ïðèëîæåíèÿ
     push 0
     push DWORD PTR [EBP+08h];Äåñêðèïòîð îêíà âëàäåëüöà
     push 15;y2
     push 52;x2
     push 0;y1
     push 0 ;x1
     push ClsBUT
     push offset BUTTON
     push offset CLSBUTTON
     push 0
     call CreateWindowExA;ñîçäàåì êíîïêó
     mov [HWNDBUTT],eax
;----------------------------------------------
     push offset PMENU
     push [HINST]
     call LoadMenuA
;----------------------------------------------
     push eax
     push DWORD PTR [EBP+08h]
     CAll SetMenu
     
     lea esi,NEWHWND
     mov eax,[esi]
     
     push FALSE
     push eax
     call GetSystemMenu
     mov hSysMenu,eax
     jmp finish
     
;InsertMenuItem(p1: HMENU; p2: UINT; p3: BOOL; const p4: TMenuItemInfo)
DefWNDPROC: ;Îáðàáàòûâàåìûå ñîîáùåíèå ïî óìîë÷àíèþ ò.å. ïî DEFAULT-ó
    Push dword ptr [ebp+14h]
    Push dword ptr [ebp+10h]
    Push dword ptr [ebp+0ch]
    Push dword ptr [ebp+08h]
    call DefWindowProcA
    jmp Finish
WMDESTROY:
    push 0
    call PostQuitMessage
    Mov eax,0
     
FINISH:  ;âîñòàíàâëèâàåì ðåãèñòðû  
    pop edi
    pop esi
    pop ebx
    pop ebp
    ret 16
WNDPROC ENDP  
_TEXT ENDS
END START



--------------------
Земную жизнь пройдя до половины,
Я очутился в сумрачном лесу,
Утратив правый путь во тьме долины.
Каков он был, о, как произнесу,
Тот дикий лес, дремучий и грозящий,
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm: Общие вопросы"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0449 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.