版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、RadASM编写拾色器配置RadASM编译器,选masm,在RadASM中新建-> Win32 App >DialogAsMain.tpl ,取名Dlg_Test,再打开 Dlg_Test.dlg中编辑资源,如下图:对话框控件属性设置:Name :IDD_DIALOG ; Caption:拾色器 ; MaxButton:False ; SizeBorder:False ; TopMost:True ;打开project -> Resourcee添加一个图标资源,取名IDI_APP_MAIN。在Dlg_Test.Rc中编辑,添加图标:#defineIDI_WIN_MAIN100
2、IDI_WIN_MAINICON"Res/main2.ico"#include "Res/Dlg_TestMnu.rc"#include "Res/Dlg_TestRes.rc"#include "Res/Dlg_TestDlg.rc"头文件:Dlg_Test.incinclude windows.incinclude user32.incinclude kernel32.incinclude shell32.incinclude comctl32.incinclude comdlg32.incinclude gd
3、i32.incincludelib user32.libincludelib kernel32.libincludelib shell32.libincludelib comctl32.libincludelib comdlg32.libincludelib gdi32.libWinMainPROTO :DWORD,:DWORD,:DWORD,:DWORDWndProcPROTO :DWORD,:DWORD,:DWORD,:DWORDIDD_DIALOGequ 1000IDM_MENUequ 10000IDM_FILE_EXITequ 10001IDM_HELP_ABOUTequ 10101I
4、DI_APP_MAINEQU 0IDI_WIN_MAINEQU 100IDC_IMG_SHOWPICequ 1001IDC_STC_POS_Xequ 1002IDC_STC_POS_Yequ 1003IDC_EDT_POS_Xequ 1004IDC_EDT_POS_Yequ 1005IDC_IMG_COLORequ 1006IDC_EDT_REDequ 1010IDC_EDT_GREENequ 1011IDC_EDT_BLUEequ 1012.constClassNamedb 'DLGCLASS',0AppNamedb 'Dialog as main',0Abo
5、utMsgdb 'MASM32 RadASM Dialog as main',13,10,'Copyright ?MASM32 2001',0.data?hInstancedd ?CommandLinedd ?hWnddd ?源文件:Dlg_Test.asm.386.model flat,stdcalloption casemap:noneinclude Dlg_Test.inc.codestart:invoke GetModuleHandle,NULLmov hInstance,eaxinvoke GetCommandLineinvoke InitCommon
6、ControlsmovCommandLine,eaxinvoke WinMain,hInstance,NULL,CommandLine,SW_SHOWDEFAULTinvoke ExitProcess,eaxWinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORDLOCALwc:WNDCLASSEXLOCALmsg:MSGmovwc.cbSize,sizeof WNDCLASSEXmovwc.style,CS_HREDRAW or CS_VREDRAWmovwc.lpfnWndProc,offset
7、 WndProcmovwc.cbClsExtra,NULLmovwc.cbWndExtra,DLGWINDOWEXTRApushhInstpopwc.hInstancemovwc.hbrBackground,COLOR_BTNFACE+1movwc.lpszMenuName,IDM_MENUmovwc.lpszClassName,offset ClassNameinvoke LoadIcon,NULL,IDI_APPLICATIONmovwc.hIcon,eaxmovwc.hIconSm,eaxinvoke LoadCursor,NULL,IDC_ARROWmovwc.hCursor,eaxi
8、nvoke RegisterClassEx,addr wcinvoke CreateDialogParam,hInstance,IDD_DIALOG,NULL,addr WndProc,NULLinvoke ShowWindow,hWnd,SW_SHOWNORMALinvoke UpdateWindow,hWnd.while TRUEinvoke GetMessage,addr msg,NULL,0,0 .BREAK .if !eaxinvoke TranslateMessage,addr msginvoke DispatchMessage,addr msg.endwmoveax,msg.wP
9、aramretWinMain endpWndProc proc hWin:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM;保存光标的坐标值LOCAL stPoint:POINTLOCAL hDcShowPic:HDCLOCAL hDcScreen:HDCLOCAL hDcShowColor:HDCLOCAL dwDx:DWORDLOCAL dwDy:DWORDLOCAL colorRect:RECTLOCAL hColorWin:HWNDLOCAL dwColor:DWORDLOCAL hBrush:HBRUSHLOCAL hBrushOld:HBRUSH
10、LOCAL colorRed:byteLOCAL colorGreen:byteLOCAL colorBlue:bytemoveax,uMsg.if eax=WM_INITDIALOG;保存对话框的窗口句柄pushhWinpophWnd;设置主窗口的图标invoke LoadIcon,hInstance,IDI_WIN_MAINinvoke SendMessage,hWnd,WM_SETICON,ICON_BIG,eax;使得窗口总在最前显示invoke SetWindowPos,hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE or SWP_NOSIZE;设置定时器i
11、nvoke SetTimer,hWnd,NULL,100,NULL.elseif eax= WM_TIMER;响应定时器的消息;获取当前光标的坐标值invoke GetCursorPos,addr stPoint;将x,y的坐标显示到对话框invoke SetDlgItemInt,hWnd,IDC_EDT_POS_X,stPoint.x,FALSEinvoke SetDlgItemInt,hWnd,IDC_EDT_POS_Y,stPoint.y,FALSE;向XY坐标靠前一点mov eax,stPoint.xsub eax,12mov dwDx,eaxmov eax,stPoint.ysub
12、eax,12mov dwDy,eax;获取整个屏幕的DCinvoke GetDC,NULLmov hDcScreen,eax;获取显示屏幕制定区域的窗口DCinvoke GetDlgItem,hWnd,IDC_IMG_SHOWPIC ;获取图片框控件的句柄invoke GetDC,eaxmov hDcShowPic,eax;将屏幕指定区域绘制到指定的窗口DC中invoke StretchBlt,hDcShowPic,0,0,160,160,hDcScreen,dwDx,dwDy,24,24,SRCCOPY;向图片屏幕指定区域绘制到指定的窗口DC中;创建一个黑色的实心画笔invoke Creat
13、ePen,PS_SOLID,1,0;这里可以设置画笔的类型、宽度、颜色mov hBrush,eaxinvoke MoveToEx,hDcShowPic,0,80,NULL;将始点移到点(0,80)invoke LineTo,hDcShowPic,160,80;画水平线,从点(0,80)画到(160,80)invoke MoveToEx,hDcShowPic,80,0,NULL;将始点移到点(80,0)invoke LineTo,hDcShowPic,80,160;画垂直线,从点(80,0)画到(80,160);显示当前鼠标指向的颜色值invoke GetDlgItem,hWnd,IDC_IMG
14、_COLOR ;获取控件的句柄mov hColorWin,eaxinvoke GetDC,eax;由控件的句柄获取这个图片框控件的DCmov hDcShowColor,eax;构造显示颜色值的图片框的坐标mov colorRect.left,0mov colorRect.top,0mov colorRect.right,118mov colorRect.bottom,22;获取屏幕上鼠标所指向的点的颜色值invoke GetPixel,hDcScreen,stPoint.x,stPoint.ymov dwColor,eax;为当前获取的颜色值创建一个实心画刷invoke CreateSolid
15、Brush,dwColormov hBrush,eax;在显示颜色的图片框中填充画刷指定的颜色值;即把在指定的区域用这个画刷(hBrush)在指定的DC(hDcShowColor)上填充颜色invoke FillRect,hDcShowColor,addr colorRect,hBrush;拆解32位的颜色值到三个字节类型的变量中,然后显示mov eax,dwColormov colorRed,almov colorGreen,ahror eax,16;将eax中的值循环右移16位mov colorBlue,alinvoke SetDlgItemInt,hWnd,IDC_EDT_RED,col
16、orRed,FALSEinvoke SetDlgItemInt,hWnd,IDC_EDT_GREEN,colorGreen,FALSEinvoke SetDlgItemInt,hWnd,IDC_EDT_BLUE,colorBlue,FALSE.elseif eax=WM_COMMANDmoveax,wParamandeax,0FFFFh.if eax=IDM_FILE_EXITinvoke SendMessage,hWin,WM_CLOSE,0,0.elseif eax=IDM_HELP_ABOUTinvoke ShellAbout,hWin,addr AppName,addr AboutMs
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理质量敏感指标:质量改进的评估与反馈
- 眼底荧光造影术后观察与护理
- 英华某中学英语课外阅读活动实施方案
- 湖南省衡阳市2026年中考第二次模拟考试数学试题附答案
- 2026年交通运输企业范围3排放核算:上下游运输与分销
- 2026北师大版数学八年级下册第6章平行四边形2 平行四边形的判定第2课时 平行四边形的判定定理3教案
- 2025年前台服务考核训练卷
- 2025年前台服务技巧考核卷
- 2026年AI手机对原有App生态影响产业生态从封闭向开放重构
- 2026年能源及电力行业碳核算软件平台选型与应用案例
- 现场施工防尘降噪方案
- 2026年阜阳幼儿师范高等专科学校单招职业适应性测试题库带答案详解(夺分金卷)
- 2026年内蒙古自治区公务员考试《行测》文化旅游主题卷
- 2026河南周口市川汇区招聘城管队员30人笔试模拟试题及答案解析
- 2026年村文书招聘考试笔试试题(含答案)
- 《急性上消化道出血急诊诊治流程专家共识(2020版)》解读课件
- 海南保安行业现状分析报告
- 【《年产8万吨的异丙醇生产项目设计》19000字】
- 自救器维修保养制度规范
- 2026年湖南安全技术职业学院单招职业适应性测试模拟测试卷新版
- 2026年及未来5年中国光谱仪市场运行态势及行业发展前景预测报告
评论
0/150
提交评论