WIN32系统开发
文章平均质量分 61
deepfuture
这个作者很懒,什么都没留下…
展开
-
MFC对消息处理的封装
1`、采用MFC的宏将消息映射到C++成员函数的方式中以避免产生宏大的虚拟函数分配表2、MFC应用程序框架含有一个从CWINAPP派生的应用程序类对象,成员函数RUN()被隐含调用(1)这个CWINAPP派生的应用程序类类对象调用的CWINTRHEAD类成员函数RUN()方法完成同WINMAIN()类似的消息循环处理(2)CWINTRHEAD类成员函数RUN()的RUN方法调用了Get...2009-12-22 19:32:00 · 217 阅读 · 0 评论 -
按指定大小显示图片
CBitmap bmp;CClientDC dc(this);if(bmp.LoadBitmap(IDB_BITMAP_dw)){BITMAP bmpInfo;bmp.GetBitmap(&bmpInfo);CDC dcMemory;dcMemory.CreateCompatibleDC(&dc);CBitmap* pOldBitmap =dcMemory.Select...2009-12-22 20:27:00 · 111 阅读 · 0 评论 -
vc学习笔记--2
1、cdocument调用onclosedocument成员函数,当应用程序要关闭文档时。2、文档类将调用onopendocument和onsavedocumnet函数,以分别从磁盘上读取文档,或者向磁盘写入文档。3、onfilesendmail把文档对象作为邮件的一个附件发送。4、消息映射BEGIN_MESSAGE_MAP(CAboutDlg,CDialog)ON_BN_...2009-12-22 20:29:00 · 115 阅读 · 0 评论 -
vc学习笔记---1
框架窗口是一个包含视图的窗口,是通过这个CMAINFRAME类由APPWIZARD生成的SDI应用程序实现的。CMAINFRAME类从CFRAMEWND基类中派生了大多数功能。CDOCUMENT类为应用程序的文档对象提供了基本功能,文档与视图处于一对多的关系。...2009-12-22 20:31:00 · 91 阅读 · 0 评论 -
取得控件的区域
CRectrect;(GetDlgItem(IDC_SHOWNAME))->GetClientRect(&rect);InvalidateRect(&rect);2010-01-15 17:28:00 · 121 阅读 · 0 评论 -
在windows下安装和使用gcc for win
1、下载cygwin,地址:http://cygwin.com/setup.exe2、安装时,选择从互联网安装3、在安装时,有个界面提示选择安装可选包,此步将gcc和glibc相关都选中,cygwin默认是不安装这些的,此步很重要,如果忘选择了,可以在安装完毕后,再次运行setup,然后选择gcc和glibc相关安装。4、编辑以下文件#include <stdio.h&g...原创 2010-01-20 08:24:52 · 160 阅读 · 0 评论 -
WINDOWS实现精确定时程序
一.原理及相关APIWINDOWS正确定时,不同的CPU频率可以指定同一时间间隔。使用QueryPerformanceFrequency的API,指定每秒的频率。QueryPerformanceFrequencyFunction查询每秒的行为频率,这个频率在整个系统运行过程中不被改变。 The QueryPerformanceFrequency function retr...原创 2010-01-20 08:25:58 · 164 阅读 · 0 评论 -
WIN32汇编-开发记事本语音阅读工具
WIN32汇编开发记事本语音阅读工具一、 引言Windows系统具有风格一致的华丽图形用户界面、丰富的API函数、设备无关性、多任务等特点而广泛流行。Win32汇编支持32位Windows API函数的调用,拥有很多高级语言的语法和运算符,编译后的程序执行效率高,占微量系统资源,短小精练,因此WIN32汇编语言非常适合记事本语音阅读工具这类软件的开发。二、设计思路汇编...原创 2010-01-27 20:24:06 · 277 阅读 · 0 评论 -
用WIN汇编开发桌面报时工具
用WIN汇编开发桌面报时工具用WIN32汇编语言开发出来的WINDOWS程序具有执行效率高、占用空间小等特点。一、 软件简介及相应开发工具桌面报时工具主要完成以下两个功能:1、 F12热键语音报时、语音整点报时。2、 在屏幕中上方直接显示时间,并不被任何窗口挡住。3、 程序运行后最小化为任务栏图标。笔者以WIN汇编为开发语言,以MASM32为开发工具,因为...原创 2010-02-08 17:25:58 · 393 阅读 · 0 评论 -
图形设备接口
1、CPaintDC:windows的通常绘图过程。2、CClientDC:对窗口的客户区进行操作。3、CMetaFileDC:将信息输出至一个元文件。4、CWindoDC :用于整个窗口区域。2009-12-22 20:25:00 · 85 阅读 · 0 评论 -
GDI对象
1、CBitmap类:对GDI的位图进行封装并用于管理windows的位图。2、CBrush类:用于管理画刷,按其填充类型分为全色填充、预定义填充、自定义填充。3、CFont类:用于管理输出文本的字体。4、CPalette类:用于管理WINDOWS的调色板。5、CPen类:用于管理画笔6、CRgn类:用于操作WINDOWS的区域。...2009-12-22 20:20:00 · 127 阅读 · 0 评论 -
关于比例可变映射
MM_ISOTROPIC,MM_ANISOTROPIC:可变比例映射MM_ISOTROPIC:X:Y=1:1MM_ANISOTROPIC:X:Y=任意值需要用户给出一个矩形区域,根据该区域和窗口区域进行比较以确定逻辑坐标和设备坐标X向和Y向的比例因子。要设置矩形区域,可以调用setwindowext如:CRect mRect;pDC->SetMapMode(MM_...2009-12-22 20:15:00 · 165 阅读 · 0 评论 -
MFC对消息处理的封装
1`、采用MFC的宏将消息映射到C++成员函数的方式中以避免产生宏大的虚拟函数分配表2、MFC应用程序框架含有一个从CWINAPP派生的应用程序类对象,成员函数RUN()被隐含调用(1)这个CWINAPP派生的应用程序类类对象调用的CWINTRHEAD类成员函数RUN()方法完成同WINMAIN()类似的消息循环处理(2)CWINTRHEAD类成员函数RUN()的RUN方法调用了Get...2009-12-22 19:33:00 · 135 阅读 · 0 评论 -
MFC消息映射宏说明
1、DECLARE_MESSAGE_MAP:在头文件中声明源文件中所含有的消息映射2, BEGIN_MESSAGE_MAP:标记源文件消息映射的开始3,END_MESSAGE_MA:标记源文件消息映射的结束4,ON_COMMAND:将特定命令的处理委派给类的一个成员函数5,ON_CONTROL:映射一个函数到一个定制控制通知消息,该定制消息是从一个控制发送父窗口的消息6...2009-12-22 19:38:00 · 107 阅读 · 0 评论 -
VC中的对话框
1、有模式对话框通过先构造一个对话框对象,再设置对话框控件的初值,最后调用对话框类的DOMODAL方法显示,调用EndDialog函数销毁。2、无模式对话框:先构造一个对话框对象,再调用cdialog类的CREATE方法截入对话框资源,无模式的对话框通常由一个父窗口创建和拥有,调用DestroyWindow函数销毁,但DestroyWindow函数只销毁对话框窗口,并不销毁对话...2009-12-22 19:41:00 · 111 阅读 · 0 评论 -
通用对话框类的数据成员
cfontdialog: CHOOSEFONT m_cfcfiledialog:OPENFILENAME m_ofccolordialog:CHOOSECOLOR m_cccprintdialog:PRINTDLG &m_pdcfindreplacedialog:FINDREPLACE m_fr2009-12-22 19:55:00 · 84 阅读 · 0 评论 -
设备无关位图DIB的显示
下面是以自定义的WINAPI方式的函数HGLOBAL WINAPI ReadDIBFile(CFile &file){BITMAPFILEHEADER header;DWORD dwbitsize;HGLOBAL hdib;LPSTR pdib;dwbitsize=file.getlength();file.read(&header,sizeof...2009-12-22 19:56:00 · 120 阅读 · 0 评论 -
在视区显示标识符为IDR_HELLO的位图
void CMyView::OnDraw(CDC *pDC){CDC *pMemDC=new CDC;CBitmap *pBitmap=new pBitmap;pBitmap->LoadBitmap(IDR_HELLO);//将资源DIB转化为设备有关位图资源pMemDc->createcompatibledc(pdc);//创建一个与PDC兼容的设备p...2009-12-22 20:00:00 · 94 阅读 · 0 评论 -
displayable对象
1、允许用户增加多个COMMAND软键对象,可以调用者SETCOMMANDLISTENER方法绑定一个软键事件监听器2、displayable是一个虙类,有2个直接子类:CANVAS:底级界面APISCREEN:高级界面API3、以下情况下,ISSHOW方法返回为TRUE(1)此对象所在的MIDLET必须运行在前台(2)此对象必须是些DISPLAY实例的当前屏幕(3...2009-12-22 20:03:00 · 105 阅读 · 0 评论 -
高级用户界面主要用的类和接口
displayable包括:choicegraphicsscreencommand//screen包括:alert,form,list,textbox,ticker2009-12-22 20:14:00 · 120 阅读 · 0 评论 -
对程序的静态解码
mov si,offset word word_0_114;要解码的数量lodsw;将数量移到axxchg ax,cx;将数量移到cxpush si;将解码起始地址保存loc_0_10c: xor byte prt[si],66h;解码 inc si;取一下需要解码的数据loop loc_0_10cjmp si;解码完毕,转到si...原创 2010-02-08 17:26:43 · 117 阅读 · 0 评论 -
ret/retn人为改变执行地址
1、CALL和RET/RETN是一对指令,CALL把返回地址压入堆栈,RET/RETN把返回地址从堆栈取出,然后将IP寄存器改为该返回地址。 2、不使用CALL,而是人为地把地址放入堆栈即可实现。如: push edi retn 从edi处开始执行3、加壳利用这个特点,在启动源文件文件前,将代码解密还原至原始位置 ...原创 2010-02-08 17:27:20 · 735 阅读 · 0 评论 -
汇编中通用寄存器的目的
1、EAX和AX:累加器,所有的I/O指令用它来与外部设备传送信息2、EBX和BX:在计算存储单元地址时常用作基地址寄存器3、ECX和CX:保存计数值4、EDX和DX:做四字或二字运算时,可以把EDX(DX)和EAX(AX)组合在一起存放一个四字或二字长的数据,在对某些I/O操作时,DX可以放I/O的端口地址5、ESP和SP:堆栈栈顶指针。6、EBP和BP:基址寄存器7...原创 2010-02-20 16:24:36 · 362 阅读 · 0 评论 -
一个WIN32汇编的完整窗口入门程序的理解与注释
;WIN32汇编的注释是;,其实WIN32汇编和VC有很多地方是相通的,为了加深印象,亲自打完这段长长的代码并;加上注释和个人理解.386.model flat,stdcalloption casemap:none;以下定义INCLUDE文件include winows.incinclude gdi32.incincludelib gdi32.libinclude user32.incincl...原创 2010-02-20 16:28:52 · 276 阅读 · 0 评论 -
WIN32汇编语言学习应用之消息获取
MSG结构:MSG STURCTHwnd DWORD ?Message DWORD ?WParam DWORD ?LParam DWORD ?Time DWORD ?Pt POINT <>MSG ENDS:em21:hwnd:消息要发向的窗口句柄Message:消息标识符Wparam:消息的参数之一Lparam:消息的参数之二Time:消息放入消息队列的时间。pt:消息放入消息队列时的...原创 2010-02-20 16:31:39 · 129 阅读 · 0 评论 -
WIN32汇编获取应用程序句柄
getmodulehandle使用方法invoke getmodulehandle,lpmodulenamelpmodulename 是一个字符串指针,它指向的字符含有模块名称。如想得到USER32.dll句柄可以szuserdll db 'user32.dll',0invoke getmodulehandle,addr szuserdll.if eaxmov huserdllhandle,ea...原创 2010-02-20 16:32:21 · 345 阅读 · 0 评论 -
windows中WM_CLOSE消息和WM_DESTORY消息的不同之处
1、WM_CLOSE仅代表用户发出了关闭的指令,但窗口过程可以不理睬该消息,因为怎么处理这个消息完全由自己决定。.elseif meax==WM_CLOSEinvoke DestroyWindow,hwinmain ;销毁窗口invoke PostQuitMessage,Null ;向消息循环中发出退出消息如果在这里不调用DestroyWindow,窗口是不会自动销毁的但如果把这个消息交给Dest...原创 2010-02-20 16:33:35 · 315 阅读 · 0 评论 -
WIN32汇编学习应用之defwindowproc
defwindowproc窗口过程对一些消息的默认处理方式WM_PAINT 发送WM_ERASEBKGND消息来擦除背景WM_ERASEBKGND 用窗口类结构中的HBRBACKGROUND刷子来绘画窗口背景WM_CLOSE 调用destroywindow来摧毁窗口WM_NCLBUTTONDBLCLK这是非客户区(如标题栏)鼠标双击消息,DefWindowProc测试鼠标的位置,然后再采取相应的措...原创 2010-02-20 16:36:27 · 275 阅读 · 0 评论 -
WIN32汇编之菜单、加速键、快捷键
(一)Invoke checkmenuitem,hmenu,ebx,eax.elseif eax>=IDM_BIG&&eax<=DM_DETAILinvokecheckmenuradioitem,hmenu,IDM_BIG,IDM_DETAIL,eax,MF_BYCOMMAND.endif重点与难点:1、关于checkmenuitemThe CheckMen...原创 2010-02-20 16:38:40 · 425 阅读 · 0 评论 -
win32汇编-送消息给其它应用程序
2个函数invoke postmessage,hwnd,msg,wparam,lparaminvoke sendmessage,hwnd,msg,wparam,lparam对于不同的MSG,WPARAM和LPARAM所代表的信息是不同的1、postmessageMSDNThe PostMessage function places (posts) a message in the messageq...原创 2010-02-20 16:42:45 · 186 阅读 · 0 评论 -
汇编几个段
反汇编后几个段的含义预定义段 一个WindowsNT的应用程序典型地拥有9个预定义段,它们是.text、.bss、.rdata、.data、.rsrc、.edata、.idata、.pdata和.debug。一些应用程序不需要所有的这些段,同样还有一些应用程序为了自己特殊的需要而定义了更多的段。这种做法与MS-DOS和Windows3.1中的代码段和数据段相似。事实上,应用程序定义一个独...原创 2010-02-17 16:39:06 · 369 阅读 · 0 评论 -
WIN32汇编语言解析
win32汇编中的sizeofwin32汇编中的sizeof不同于其它语言的sizeof ,这个是真正的sizeof,以字节为单位的。看下例szhello db 'hello,world!',0mov eax,sizeof szhelloeax=?答案是eax=13因为hello,world!为13个字节,然后0占一个,所以是13变量命名风格 前缀 含义b bytew w...原创 2010-02-17 16:36:56 · 228 阅读 · 0 评论 -
设置与获取窗口标题文本
获得:CString xx="";CTestView::GetActiveWindow()->GetWindowText(xx);MessageBox(xx,xx,MB_OK);设置:CString xxx="aaaa";if(GetActiveWindow()==m_hWnd)SetWindowText(str);//CTestView::GetActiveWin...原创 2010-02-17 16:32:59 · 267 阅读 · 0 评论 -
取IP寄存器的当前值
call $+3POP CX把IP寄存器的当前值放入cx原创 2010-02-08 17:27:41 · 631 阅读 · 0 评论 -
LISTBOX和LIST CONTROL的项目增加方法
1、LIST CONTROL(report方式):(1)类的方式A.增加列 LVCOLUMN lv; lv. mask=LVCF_TEXT|LVCF_FMT|LVCF_WIDTH ; lv. fmt=LVCFMT_CENTER ; lv.cx=100; lv.pszText="编号"; lv.cchTextMax=sizeof(lv.pszText); lv.iSubItem =0; ...原创 2010-02-08 17:28:37 · 682 阅读 · 0 评论 -
二进制资源和自定义资源使用定义
1、二进制资源(1)定义格式: 资源IDRCDATA [DISCARDABLE] BEGIN 数据定义 END(2)装入资源的例子(MASM32) invokeFindResource,hInstance,ID_MYRES,RT_RCDATA ;寻找资源 .if eax mov hres,eax;返回资源句柄 in...原创 2010-02-08 17:29:07 · 223 阅读 · 0 评论 -
玩转菜单-菜单资源
菜单资源 WINDOWS程序的菜单通常编译前定义在资源文件中,程序员可使用VC自带的资源编辑器可视化地编辑菜单资源,在资源文件中自动生成相关脚本,对于WIN32汇编程序员,最好能看懂这些自动生成的脚本,VC程序员在完成一些特殊程序时也需要亲自看看这些脚本文件。笔者用VC向导生成一个空的单文档程序,下面是VC自动生成的脚本文件中,我们一起对其中的菜单资源进行分析: //////////...原创 2010-02-08 17:31:03 · 292 阅读 · 0 评论 -
WIN32汇编-反汇编
学好WIN32汇编,平时需要多阅读编译器生成的汇编代码,因为编译器生成的代码是最规范和最优化的,从中可以学到汇编编程和语句优化的技巧。 如何得到一个程序的反汇编代码呢?使用反汇编软件,不是使用DOS的DEBUG,WINIODWS平台上已经有多反汇编软件,读者可以从下面的地址中下载反汇编软件http://www.pediy.com/tools/Disassemblers/W32Das...原创 2010-02-17 14:33:37 · 532 阅读 · 0 评论 -
保护模式下段寄存器的作用
1、保护模式一,虽然在寻址上没有分段的限制问题,但对要对一个地址空间定义一些安全上的属性,段寄存器就可以发挥作用,叫做段描述符2、段描述符表保存了段落描述符,段寄存器中的16位用来做段描述表的索引信息3、段描述表保存在两个特有的寄存器中(1)GDTR寄存器,指向全局描述表(GDT),为系统中的所有任务共用的,通常是操作系统自己用的。指向内存地址(2)LDTR寄存器,指向LDT,每个...原创 2010-02-17 14:39:53 · 713 阅读 · 0 评论 -
WIN32汇编-HELLO,WORLD!
我们用WIN32汇编构建第一个WINODWS程序,这个程序完成显示一个带问号的对话框,对话框的内容是现在系统时间。 首先,打开MASM32Editor(在桌面上可以找到图标),在里面输入以下代码: .386 .model flat, stdcall option casemap :none ;##############################...原创 2010-02-17 16:29:55 · 330 阅读 · 0 评论