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

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

?? 012.txt

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


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

從用戶的角度來看,WIN32的內存管理是非常簡單和明了的。每一個應用程序都有自己獨立的4G地址空間,這種內存模式叫做“平坦”型地址模式,所有的段寄存器或描述符都指向同樣的起始地址,所有的地址偏移都是32位的長度,這樣一個應用程序無須變換選擇符就可以存取自己的多達4G的地址空間。這種內存管理模式是非常簡潔而便于管理的,而且我們再不用和那些令人討厭的“near”和“far”指針打交道了。
在W16下有兩種主要類型的API:全局和局部。“全局”的API 分配在其他的段中,這樣從內存角度來看他們是一些“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一区二区三区免费野_久草精品视频
亚洲福利国产精品| 国产欧美日韩综合精品一区二区| 亚洲色图另类专区| 99久久国产综合精品麻豆| 成人欧美一区二区三区小说| 99re66热这里只有精品3直播| 中文久久乱码一区二区| 99久久国产综合精品麻豆| 亚洲精品大片www| 欧美三级资源在线| 美女视频黄 久久| 久久久久久一二三区| 国产91清纯白嫩初高中在线观看 | 国产一区二区精品久久| 久久久久久**毛片大全| 99久久精品免费看| 五月天中文字幕一区二区| 日韩欧美电影一二三| 国产电影一区在线| 亚洲最色的网站| 日韩一级免费观看| 成人一区在线观看| 亚洲国产精品嫩草影院| 久久久欧美精品sm网站| 色视频一区二区| 奇米色777欧美一区二区| 久久久久久久久久美女| 91激情五月电影| 久久成人18免费观看| 国产精品日韩精品欧美在线| 欧美日韩精品一区二区三区| 精品系列免费在线观看| 亚洲精品美腿丝袜| 欧美成人官网二区| 在线精品视频免费播放| 精品一区二区三区免费| 亚洲猫色日本管| 精品欧美乱码久久久久久 | 亚洲精品久久嫩草网站秘色| 欧美一区二区三区性视频| aaa国产一区| 精品一区二区在线看| 夜色激情一区二区| 欧美国产欧美综合| 日韩精品一区二区三区视频| 91免费视频网址| 国产精品一区二区在线看| 天天影视涩香欲综合网 | 在线观看免费一区| 成人激情av网| 国产一区二区中文字幕| 午夜a成v人精品| 亚洲视频一区二区在线| 欧美激情一区三区| 欧美精品一区二区三区四区| 欧美日韩电影在线播放| 91视频com| 成人综合婷婷国产精品久久免费| 久久精品国产亚洲一区二区三区| 一级女性全黄久久生活片免费| 欧美一级免费大片| 在线观看一区二区视频| 99热这里都是精品| 床上的激情91.| 国产一区二区精品久久99| 美女脱光内衣内裤视频久久网站| 五月天精品一区二区三区| 亚洲资源中文字幕| 亚洲综合激情另类小说区| 亚洲色图视频网站| 亚洲色图在线看| 亚洲欧美色图小说| 尤物av一区二区| 亚洲激情图片一区| 亚洲一区二区欧美日韩| 一区二区三区国产豹纹内裤在线| 国产精品久线在线观看| 中文字幕制服丝袜成人av| 欧美经典三级视频一区二区三区| 久久久精品免费免费| 欧美激情综合在线| 中文字幕在线观看不卡视频| 国产精品乱码久久久久久| 国产精品乱人伦| 亚洲色图在线看| 亚洲精品乱码久久久久| 亚洲国产色一区| 午夜天堂影视香蕉久久| 日本美女视频一区二区| 美女精品自拍一二三四| 国产在线视频一区二区三区| 国产综合色在线| av亚洲精华国产精华| 在线观看日韩高清av| 91精品国产高清一区二区三区蜜臀| 欧美一区二区不卡视频| 久久久亚洲精品石原莉奈| 欧美韩国日本综合| 亚洲九九爱视频| 五月天精品一区二区三区| 国内一区二区视频| av成人动漫在线观看| 欧美日韩一卡二卡三卡| 日韩精品在线网站| 亚洲国产精品成人综合色在线婷婷 | 亚洲精品免费在线观看| 午夜精品视频在线观看| 狠狠色伊人亚洲综合成人| 成人做爰69片免费看网站| 欧美又粗又大又爽| 日韩女优毛片在线| 欧美激情一区二区三区不卡 | 东方欧美亚洲色图在线| 一本久道久久综合中文字幕| 欧美一级日韩免费不卡| 国产亚洲美州欧州综合国 | 秋霞av亚洲一区二区三| 国产91丝袜在线播放0| 欧美精品少妇一区二区三区| 久久综合九色综合欧美98| 亚洲精品日日夜夜| 精品一区二区免费视频| 色综合久久久久网| 欧美mv日韩mv国产网站| 一区二区三区在线观看欧美| 国内精品国产成人| 欧美中文字幕一区二区三区 | 成人一区二区在线观看| 欧美色偷偷大香| 中文字幕av一区二区三区免费看 | 亚洲免费毛片网站| 国内外成人在线| 欧美男同性恋视频网站| 中文字幕亚洲一区二区va在线| 日韩成人伦理电影在线观看| 99在线视频精品| 精品国产一区二区三区忘忧草 | 婷婷丁香久久五月婷婷| 99国产精品久| 久久久久久久久伊人| 青青青爽久久午夜综合久久午夜| 91免费视频网| 欧美激情资源网| 激情亚洲综合在线| 欧美老肥妇做.爰bbww| 亚洲欧洲日韩综合一区二区| 国产一区二区三区免费播放| 欧美丰满少妇xxxbbb| 亚洲自拍偷拍九九九| av不卡在线播放| 国产精品免费久久久久| 国产资源在线一区| 精品久久久久99| 日本欧美大码aⅴ在线播放| 精品视频在线视频| 有码一区二区三区| 91在线视频官网| 中文字幕一区二区不卡 | 蜜乳av一区二区| 欧美日韩国产123区| 亚洲图片有声小说| 在线观看视频一区二区| 亚洲综合小说图片| caoporm超碰国产精品| 国产精品欧美综合在线| 成人aa视频在线观看| 国产精品午夜在线| 国产成人综合精品三级| 国产精品丝袜在线| 成人在线视频首页| 亚洲欧洲日韩女同| 91丨九色丨黑人外教| 亚洲欧美电影院| 欧美亚洲一区三区| 日韩精品三区四区| 欧美一区二区女人| 国产做a爰片久久毛片| 久久久久久久久岛国免费| 国产成人在线视频网站| 国产精品不卡在线观看| 99这里只有久久精品视频| 亚洲人妖av一区二区| 欧美日韩在线三区| 日产国产高清一区二区三区| 日韩女优av电影在线观看| 国产一区二区三区免费观看| 中文字幕乱码日本亚洲一区二区| 成人h动漫精品一区二| 亚洲欧美偷拍三级| 91 com成人网| 国产综合色精品一区二区三区| 亚洲国产精品99久久久久久久久| 99国内精品久久| 天堂精品中文字幕在线| 欧美大尺度电影在线| 国产成人亚洲综合a∨猫咪| 中文字幕中文乱码欧美一区二区| 欧美亚洲综合久久| 国产在线看一区| 亚洲精品亚洲人成人网|