亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 012.txt

?? 會變語言實現的一些程序
?? TXT
?? 第 1 頁 / 共 2 頁
字號:
第十二課 內存管理和文件輸入/輸出


--------------------------------------------------------------------------------
本課中我們將學習基本的內存管理和文件輸入/輸出操作方面的知識。另外我們還將用上課學的通用對話框作為我們的顯示“設備”。 
理論: 

從用戶的角度來看,WIN32的內存管理是非常簡單和明了的。每一個應用程序都有自己獨立的4G地址空間,這種內存模式叫做“平坦”型地址模式,所有的段寄存器或描述符都指向同樣的起始地址,所有的地址偏移都是32位的長度,這樣一個應用程序無須變換選擇符就可以存取自己的多達4G的地址空間。這種內存管理模式是非常簡潔而便于管理的,而且我們再不用和那些令人討厭的“near”和“far”指針打交道了。
在W16下有兩種主要類型的API:全局和局部?!叭帧钡腁PI 分配在其他的段中,這樣從內存角度來看他們是一些“far”(遠)函數或者叫遠過程調用,“局部”API只要和進程的堆打交道,所以把它們叫做“near”(近)函數或者近過程調用。而在WIN32中,這兩種內存模式是相同的,無論您調用GlobalAlloc還是LocalAlloc,結果都是一樣。
至于分配和使用內存的過程都是一樣的: 

調用GlobalAlloc函數分配一塊內存,該函數會返回分配的內存句柄。 
調用GlobalLock函數鎖定內存塊,該函數接受一個內存句柄作為參數,然后返回一個指向被鎖定的內存塊的指針。 
您可以用該指針來讀寫內存。 
調用GlobalUnlock函數來解鎖先前被鎖定的內存,該函數使得指向內存塊的指針無效。 
調用GlobalFree函數來釋放內存塊。您必須傳給該函數一個內存句柄。 
在WIN32中您也可以用“Local”替代內存分配API函數帶有“Global”字樣的函數中的“Global”,也即用LocalAlloc、LocalLock等。
在調用函數GlobalAlloc時使用GMEM_FIXED標志位可以更進一步簡化操作。使用了該標志后,Global/LocalAlloc返回的是指向已分配內存的指針而不是句柄,這樣也就不用調用Global/LocalLock來鎖定內存了,釋放內存時只要直接調用Global/LocalFree就可以了。不過在本課中我們只使用傳統的方法,因為其它地方有許多的源代碼是用這種方法寫的。

WIN32的文件輸入/輸出API和DOS下的從外表上看幾乎一樣(譯者注:也許不管內部實現多么不同,可以想象所有的文件系統暴露給應用程序編寫者的接口的功能應該基本相同),不同的只是把DOS下的中斷方式處理文件輸入/輸出變成了對API函數的調用。以下是基本的步驟: 
  

調用CreateFile函數生成一個文件,該函數可以應用在多方面,除了磁盤文件外,我們還可以用來打開通訊端口、管道、驅動程序或控制臺。如果成功的話,會返回指向文件或設備的句柄。然后可以使用該句柄去完成對文件或設備操作。
調用SetFilePointer來把文件指針移到想讀寫的地方。. 
然后調用ReadFile 或 WriteFile來完成實際的讀寫。這些函數會自己處理文件和內存之間的數據傳送,這樣免得您自己去做分配內存等繁雜的瑣事。 
調用CloseHandle來關閉文件。該函數接受一個先前打開的文件句柄。 
內容:

下面的代碼段演示了:打開一個“打開文件”對話框,用戶可以選擇打開一個文本文件,然后在一個編輯控件中打開該文本文件的內容,另外用戶還可以編輯該文本文件的內容并選擇保存。

.386 
.model flat,stdcall 
option casemap:none 
WinMain proto :DWORD,:DWORD,:DWORD,:DWORD 
include \masm32\include\windows.inc 
include \masm32\include\user32.inc 
include \masm32\include\kernel32.inc 
include \masm32\include\comdlg32.inc 
includelib \masm32\lib\user32.lib 
includelib \masm32\lib\kernel32.lib 
includelib \masm32\lib\comdlg32.lib 

.const 
IDM_OPEN equ 1 
IDM_SAVE equ 2 
IDM_EXIT equ 3 
MAXSIZE equ 260 
MEMSIZE equ 65535 

EditID equ 1                            ; ID of the edit control 

.data 
ClassName db "Win32ASMEditClass",0 
AppName  db "Win32 ASM Edit",0 
EditClass db "edit",0 
MenuName db "FirstMenu",0 
ofn   OPENFILENAME <> 
FilterString db "All Files",0,"*.*",0 
             db "Text Files",0,"*.txt",0,0 
buffer db MAXSIZE dup(0) 

.data? 
hInstance HINSTANCE ? 
CommandLine LPSTR ? 
hwndEdit HWND ?                               ; Handle to the edit control 
hFile HANDLE ?                                   ; File handle 
hMemory HANDLE ?                            ;handle to the allocated memory block 
pMemory DWORD ?                            ;pointer to the allocated memory block 
SizeReadWrite DWORD ?                   ; number of bytes actually read or write 

.code 
start: 
    invoke GetModuleHandle, NULL 
    mov    hInstance,eax 
    invoke GetCommandLine
    mov CommandLine,eax 
    invoke WinMain, hInstance,NULL,CommandLine, SW_SHOWDEFAULT 
    invoke ExitProcess,eax 

WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:SDWORD 
    LOCAL wc:WNDCLASSEX 
    LOCAL msg:MSG 
    LOCAL hwnd:HWND 
    mov   wc.cbSize,SIZEOF WNDCLASSEX 
    mov   wc.style, CS_HREDRAW or CS_VREDRAW 
    mov   wc.lpfnWndProc, OFFSET WndProc 
    mov   wc.cbClsExtra,NULL 
    mov   wc.cbWndExtra,NULL 
    push  hInst 
    pop   wc.hInstance 
    mov   wc.hbrBackground,COLOR_WINDOW+1 
    mov   wc.lpszMenuName,OFFSET MenuName 
    mov   wc.lpszClassName,OFFSET ClassName 
    invoke LoadIcon,NULL,IDI_APPLICATION 
    mov   wc.hIcon,eax 
    mov   wc.hIconSm,eax 
    invoke LoadCursor,NULL,IDC_ARROW 
    mov   wc.hCursor,eax 
    invoke RegisterClassEx, addr wc 
    invoke CreateWindowEx,WS_EX_CLIENTEDGE,ADDR ClassName,ADDR AppName,\ 
           WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,\ 
           CW_USEDEFAULT,300,200,NULL,NULL,\ 
           hInst,NULL 
    mov   hwnd,eax 
    invoke ShowWindow, hwnd,SW_SHOWNORMAL 
    invoke UpdateWindow, hwnd 
    .WHILE TRUE 
        invoke GetMessage, ADDR msg,NULL,0,0 
        .BREAK .IF (!eax) 
        invoke TranslateMessage, ADDR msg 
        invoke DispatchMessage, ADDR msg 
    .ENDW 
    mov     eax,msg.wParam 
    ret 
WinMain endp 

WndProc proc uses ebx hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM 
    .IF uMsg==WM_CREATE 
        invoke CreateWindowEx,NULL,ADDR EditClass,NULL,\ 
                   WS_VISIBLE or WS_CHILD or ES_LEFT or ES_MULTILINE or\ 
                   ES_AUTOHSCROLL or ES_AUTOVSCROLL,0,\ 
                   0,0,0,hWnd,EditID,\ 
                   hInstance,NULL 
        mov hwndEdit,eax 
        invoke SetFocus,hwndEdit 
;============================================== 
;        Initialize the members of OPENFILENAME structure 
;============================================== 
        mov ofn.lStructSize,SIZEOF ofn 
        push hWnd 
        pop  ofn.hWndOwner 
        push hInstance 
        pop  ofn.hInstance 
        mov  ofn.lpstrFilter, OFFSET FilterString 
        mov  ofn.lpstrFile, OFFSET buffer 
        mov  ofn.nMaxFile,MAXSIZE 
    .ELSEIF uMsg==WM_SIZE 
        mov eax,lParam 
        mov edx,eax 
        shr edx,16 
        and eax,0ffffh 
        invoke MoveWindow,hwndEdit,0,0,eax,edx,TRUE 
    .ELSEIF uMsg==WM_DESTROY 
        invoke PostQuitMessage,NULL 
    .ELSEIF uMsg==WM_COMMAND 
        mov eax,wParam 
        .if lParam==0 
            .if ax==IDM_OPEN 
                mov  ofn.Flags, OFN_FILEMUSTEXIST or \ 
                                OFN_PATHMUSTEXIST or OFN_LONGNAMES or\ 
                                OFN_EXPLORER or OFN_HIDEREADONLY 
                invoke GetOpenFileName, ADDR ofn 
                .if eax==TRUE 
                    invoke CreateFile,ADDR buffer,\ 
                                GENERIC_READ or GENERIC_WRITE ,\ 
                                FILE_SHARE_READ or FILE_SHARE_WRITE,\ 
                                NULL,OPEN_EXISTING,FILE_ATTRIBUTE_ARCHIVE,\ 
                                NULL 
                    mov hFile,eax 
                    invoke GlobalAlloc,GMEM_MOVEABLE or GMEM_ZEROINIT,MEMSIZE 
                    mov  hMemory,eax 
                    invoke GlobalLock,hMemory 
                    mov  pMemory,eax 
                    invoke ReadFile,hFile,pMemory,MEMSIZE-1,ADDR SizeReadWrite,NULL 
                    invoke SendMessage,hwndEdit,WM_SETTEXT,NULL,pMemory 
                    invoke CloseHandle,hFile 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美亚洲一区二区在线| 国产欧美日韩三级| 久久久久国产精品厨房| 亚洲精品国产一区二区三区四区在线| 美女被吸乳得到大胸91| 色婷婷久久99综合精品jk白丝| 久久影视一区二区| 日韩av一二三| 欧美在线观看视频在线| 日韩久久一区二区| 国产精品小仙女| 精品国产一二三| 日韩成人一区二区三区在线观看| 337p亚洲精品色噜噜| 亚洲激情六月丁香| 69堂成人精品免费视频| 国内偷窥港台综合视频在线播放| 56国语精品自产拍在线观看| 久久黄色级2电影| 欧美电影免费提供在线观看| 日产国产欧美视频一区精品| 日韩久久精品一区| 不卡一区二区中文字幕| 国产欧美日韩另类一区| 91国产福利在线| 亚洲图片欧美视频| 欧美日韩国产一二三| 亚洲精品国产无套在线观| 欧美一区二区日韩一区二区| 视频一区中文字幕国产| 91精品欧美综合在线观看最新 | 久久综合狠狠综合久久综合88| 国产成人8x视频一区二区| 久久久精品国产免大香伊| 在线日韩一区二区| 国产一区二区在线观看免费| 久久久久高清精品| 欧美精品在线观看一区二区| 蜜臀av在线播放一区二区三区| 中文字幕乱码日本亚洲一区二区| 成人久久18免费网站麻豆| 国产精品高潮久久久久无| 91亚洲资源网| 亚洲国产中文字幕| 国产精品女人毛片| 日本二三区不卡| 国产成人午夜精品5599| 亚洲欧洲精品天堂一级| 在线精品视频免费观看| 国产精品一卡二| 丝袜亚洲精品中文字幕一区| 亚洲欧洲精品一区二区三区不卡| 国产亚洲欧美激情| 色噜噜久久综合| 国产福利一区在线| 国产一区免费电影| 日产国产高清一区二区三区| 亚洲国产中文字幕| 亚洲精品免费在线播放| 国产精品美女久久久久aⅴ国产馆| 欧美videofree性高清杂交| 不卡电影免费在线播放一区| 久草热8精品视频在线观看| 中文字幕亚洲区| 国产欧美日韩麻豆91| 久久一留热品黄| 2022国产精品视频| 欧美xxxx老人做受| 日韩免费观看高清完整版| 91精品国产色综合久久| 欧美精品视频www在线观看| 精品视频在线看| 国产精品456| 国产精品911| 国产aⅴ精品一区二区三区色成熟| 黄色日韩三级电影| 国内精品视频666| 国产乱淫av一区二区三区| 国产在线观看一区二区| 国产毛片精品国产一区二区三区| 激情综合色播五月| 国产一区二区三区国产| 老汉av免费一区二区三区 | 亚洲影视在线观看| 国产亚洲精久久久久久| 国产午夜精品福利| 综合av第一页| 亚洲精品高清视频在线观看| 亚洲韩国精品一区| 日韩av一级片| 国产精品18久久久久久久久久久久| 国产精品1区2区3区在线观看| 成人国产电影网| 色成人在线视频| 欧美日韩一卡二卡三卡| 欧美电影免费观看高清完整版在 | 亚洲va韩国va欧美va精品| 综合av第一页| 天天射综合影视| 亚洲精品ww久久久久久p站| 亚洲一本大道在线| 久久成人免费电影| 不卡电影一区二区三区| 欧美日韩一区二区三区视频| 精品国内二区三区| 国产精品国产a级| 日产国产高清一区二区三区| 国产91对白在线观看九色| 色综合久久六月婷婷中文字幕| 欧美巨大另类极品videosbest| 精品国产区一区| 一个色在线综合| 亚洲电影视频在线| 国产一区二区91| 色www精品视频在线观看| 91精品国产综合久久精品app| 日本一区二区三区在线观看| 亚洲午夜av在线| 国产成人aaa| 91精品国产福利在线观看| 国产精品日日摸夜夜摸av| 日日嗨av一区二区三区四区| 成人午夜在线播放| 欧美一区二区三区在线| 亚洲视频在线一区| 国产一区二区电影| 4hu四虎永久在线影院成人| 国产农村妇女精品| 日本不卡的三区四区五区| 久久99精品久久久久| 色先锋aa成人| 国产亚洲欧美在线| 麻豆91免费看| 欧洲在线/亚洲| 亚洲欧美在线视频观看| 国产一区在线观看麻豆| 欧美老肥妇做.爰bbww| 亚洲色图欧美在线| 国产成人av网站| 欧美videossexotv100| 天天综合色天天| 在线亚洲精品福利网址导航| 日本一区二区三区在线观看| 麻豆91在线播放| 欧美一级搡bbbb搡bbbb| 亚洲线精品一区二区三区| av激情成人网| 3d动漫精品啪啪一区二区竹菊| 亚洲精品视频在线观看网站| 成人av在线影院| 国产日韩精品视频一区| 韩国视频一区二区| 欧美一区二区三区视频在线观看| 亚洲bt欧美bt精品777| 色婷婷香蕉在线一区二区| 国产精品美女久久久久久久| 国产精品白丝av| 久久蜜桃一区二区| 国产美女精品在线| 日韩一级成人av| 亚洲色图丝袜美腿| www.久久精品| 一区二区中文字幕在线| 成人午夜伦理影院| 国产精品久线在线观看| 成人高清av在线| 欧美国产国产综合| 成人国产电影网| 亚洲精品国产精品乱码不99| 日本精品一级二级| 一级日本不卡的影视| 欧美日高清视频| 人禽交欧美网站| 欧美电影免费观看高清完整版 | 中文字幕中文在线不卡住| 成人一道本在线| 亚洲午夜av在线| 91精品国产综合久久福利软件| 日本中文字幕一区| 337p粉嫩大胆噜噜噜噜噜91av| 国产一区二区不卡在线 | 18成人在线视频| 一本大道av伊人久久综合| 亚洲午夜视频在线观看| 欧美高清视频一二三区| 蜜臀精品一区二区三区在线观看| 精品国产一区二区在线观看| 成人久久久精品乱码一区二区三区| 日韩理论在线观看| 欧美日韩久久不卡| 九色综合狠狠综合久久| 中文字幕免费不卡在线| 91美女片黄在线观看91美女| 亚洲第一在线综合网站| 日韩美女视频在线| 99精品视频在线观看免费| 日韩欧美一级在线播放| 国产精品一区二区在线看| 亚洲天天做日日做天天谢日日欢| 欧美精选午夜久久久乱码6080|