【在windows下搭建汇编编程环境】教程文章相关的互联网学习教程文章

Windows 编程[15] - 菜单消息: WM_COMMAND【图】

Windows 编程[15] - 菜单消息: WM_COMMAND 本例效果图:点击任一个菜单项, 都会发出一个 WM_COMMAND 消息, 消息的 wParam 参数的低两位就是标识菜单项的那个整数!本例使用的资源文件(TestRes.rc):#define IDM_New 101 #define IDM_Open 102 #define IDM_Save 103 #define IDM_Exit 104 #define IDM_Cut 201 #define IDM_Copy 202 #define IDM_Paste 203 #define IDM_About 301MyMenu1 MENUEX DISCARDABLE BEGINPOPUP "&Fil...

Windows 编程[14] - 菜单与菜单资源(三)【图】

Windows 编程[14] - 菜单与菜单资源(三) 前面我们分别使用过 MENU 和 MENUEX 来指定菜单资源, 我发现用 MENU 不必注意大小写; 但 MENUEX 在使用参数时需要注意大小写! 另外, 指定相同的功能时, 它们使用的参数和格式也有很大的区别. 我想还是多了解 MENUEX 吧, 因为它的参数同时也是 Win32API 菜单函数们 需要的! MENUEX 有四个参数, 分别是: 菜单文本, 菜单标识(整数), 菜单格式(常数: MFT_*), 菜单样式(常数: MFS_*). 后两个参数...

Windows 编程[13] - 菜单与菜单资源(二)【图】

Windows 编程[13] - 菜单与菜单资源(二) 我们可以把上例中的资源文件修改成这样:MyMenu1 MENUEX BEGINPOPUP "&File" ,65535BEGINMENUITEM "&New" ,101MENUITEM "&Open" ,102MENUITEM "&Save" ,103MENUITEM SEPARATORMENUITEM "E&xit" ,104ENDPOPUP "&Edit" ,65535BEGINMENUITEM "Cu&t" ,201MENUITEM "&Copy" ,202MENUITEM "&Paste" ,203ENDPOPUP "&Help" ,65535BEGINMENUITEM "&About" ,301...

Windows 编程[12] - 菜单与菜单资源(一)【图】

Windows 编程[12] - 菜单与菜单资源(一) 假如我们用 TMainMenu 控件设计如下菜单: 该菜单在窗体源文件中是这样存储的: object MainMenu1: TMainMenu Left = 160 Top = 104 object File1: TMenuItemCaption = &Fileobject New1: TMenuItemCaption = &Newendobject Open1: TMenuItemCaption = &Openendobject Save1: TMenuItemCaption = &Saveendobject SaveAs1: TMenuItemCaption = Save &Asendobject N1: TMenuItemCaption = -end...

Windows 编程[11] - WM_SIZE 消息【图】

Windows 编程[11] - WM_SIZE 消息 本例效果图:program Project1;usesWindows, Messages;{供 WM_SIZE 消息调用的自定义过程} procedure OnSize(h: HWND); varRect: TRect;pt: TPoint;buf: array[0..255] of Char; beginGetWindowRect(h, Rect); {获取窗口矩形}pt.X := Rect.Right - Rect.Left; {提取宽度}pt.Y := Rect.Bottom - Rect.Top; {提取高度}wvsprintf(buf, 宽度:%d, 高度:%d, @pt); ...

Windows 编程[10] - WM_LBUTTONDOWN、WM_LBUTTONUP 和 WM_MOUSEMOVE 消息【图】

Windows 编程[10] - WM_LBUTTONDOWN、WM_LBUTTONUP 和 WM_MOUSEMOVE 消息 本例效果图:program Project1;usesWindows,Messages;{供 WM_LBUTTONDOWN 消息调用的自定义过程} procedure OnLButtonDown(h: HWND); varBrushHandle: HBRUSH;Rect: TRect; beginGetClientRect(h, Rect); {获取客户区矩形}BrushHandle := CreateSolidBrush(RGB(255,0,0)); {建立红色笔刷}FillRect(GetDC(h), Rect, BrushHandle); ...

Windows 编程[9] - WM_CLOSE 消息【图】

Windows 编程[9] - WM_CLOSE 消息 本例效果图:program Project1;usesWindows, Messages;{供 WM_CLOSE 消息调用的自定义过程} procedure OnClose(h: HWND); beginif IDOK = MessageBox(h, 确认关闭吗?, 提示, MB_OKCANCEL) thenDestroyWindow(h); end;function WndProc(wnd: HWND; msg: UINT; wParam: Integer; lParam: Integer): Integer; stdcall; beginResult := 0;case msg ofWM_CLOSE : OnClose(wnd); {在收到 WM_CLOSE 消息...

Windows 编程[8] - WM_PAINT 消息【图】

Windows 编程[8] - WM_PAINT 消息 本例效果图:program Project1;usesWindows, Messages;{供 WM_PAINT 消息调用的自定义过程} procedure OnPaint(h: HWND); conststr = CodeGear Delphi 2007; varDC: HDC;ps: PAINTSTRUCT;Rect: TRect; beginMessageBeep(0);DC := BeginPaint(h, ps);GetClientRect(h, Rect);DrawText(DC, PChar(str), -1, Rect, DT_SINGLELINE or DT_CENTER or DT_VCENTER);EndPaint(h, ps); end;function WndProc...

Windows 编程[7] - WM_CREATE 消息【图】

Windows 编程[7] - WM_CREATE 消息 本次我把生成窗口的过程做了简化, 以凸现新注入的代码; 本例效果图:program Project1;usesWindows, Messages;function WndProc(wnd: HWND; msg: UINT; wParam: Integer; lParam: Integer): Integer; stdcall; beginResult := 0;case msg ofWM_CREATE : MessageBeep(48); {在收到 WM_CREATE 消息时发出一个声音}WM_DESTROY: PostQuitMessage(0);elseResult := DefWindowProc(wnd, msg, wParam...

Windows 编程[6] - 学习窗体生成的过程六: 最终的代码!

Windows 编程[6] - 学习窗体生成的过程六: 最终的代码! program Project1;usesWindows, Messages;{回调函数; 其中要处理的消息很多, 最好用 case 语句} function WndProc(wnd: HWND; msg: UINT; wParam: Integer; lParam: Integer): Integer; stdcall; beginResult := 0;case msg ofWM_DESTROY: PostQuitMessage(0); {收到 WM_DESTROY 后, 发送 WM_QUIT 消息指示退出}else{其他消息交 DefWindowProc 处理; DefWindowProc 会返回回...

Windows 编程[5] - 学习窗体生成的过程五

Windows 编程[5] - 学习窗体生成的过程五 根据前面的介绍, 可以完成一个窗口的建立了:program Project1;usesWindows, Messages;{窗口回调函数, 必须声明在使用它的程序前面} function WndProc(wnd: HWND; msg: UINT; wParam: Integer; lParam: Integer): Integer; stdcall; beginResult := 0;if msg = WM_DESTROY then {当窗口销毁时}PostQuitMessage(0) {告诉 GetMessage: 退出吧!}elseResult := DefWindowProc(wnd, msg, wP...

Windows 编程[4] - 学习窗体生成的过程四

Windows 编程[4] - 学习窗体生成的过程四 现在需要复习一下系统与窗口的消息机制: 一个程序会有一个或多个线程, 系统有一个线程队列(就是个链表)管理所有这些线程, 并为每个线程建立一个消息队列. 当消息产生时(譬如点击了窗口), 系统会把该消息放到窗口所在的消息队列, 等待窗口处理. 窗口应该时刻待命, 准备从所在的线程队列中取出消息并处理! 从消息队列中取出消息, 一般用 GetMessage 函数; 要随时取出消息, 需要用个循环, 譬...

Windows 编程[3] - 学习窗体生成的过程三

Windows 编程[3] - 学习窗体生成的过程三 根据前面的理论, 一个窗口生成的框架应该是这个样子:program Project1;uses Windows; {前面提到的函数都来自 Windows 单元}varhWnd : THandle; {声明窗口句柄}MyWndClass: TWndClass; {声明一个窗口类型} begin//在这里设置 MyWndClass 的参数(譬如窗口图标、光标和画刷等等), 包括指定 "类名"{然后注册}RegisterClass(MyWndClass);{建立并返回句柄}hWnd := CreateWindow(类名, ...

Windows 编程[2] - 学习窗体生成的过程二

Windows 编程[2] - 学习窗体生成的过程二 曾经做过一个最简单的 Windows 程序: 新建一个 Delphi 控制台程序, 贴入以下代码, 即可运行. program Project1; uses Windows; beginMessageBox(0,PChar(Ok!),PChar(Title),0); end.代码分析: 系统函数 MessageBox 即可生成一个消息窗口; 因为这个函数来自 Windows 单元, 需要 uses Windows; 同样的道理, 我们也可以使用 ShellAPI 单元下的 ShellAbout 调用一个关于窗口:program Project1...

Windows 编程[1] - 窗体生成的过程一【图】

Windows 编程[1] - 窗体生成的过程一 本例效果图:新建一个控制台程序, 贴入下面代码即可运行:program Project1;usesWindows, Messages;{等待调用的过程, 用于在窗体上绘制文本} Procedure OnPaint(h: HDC); consts = CodeGear Delphi 2007; beginTextOut(h, 10, 10, PChar(s), Length(s)); end;{窗口回调过程} function WndProc(wnd: HWND; msg: UINT; wParam: Integer; lParam: Integer): Integer; stdcall; varHandle: HDC;ps: ...