win32汇编弹出对话框

之前书上有一个win32 asm 的odbc例子,它有一个窗体,可以执行sql;下面看一下弹出一个录入数据的对话框;

之前它在.code段包含2个单独的asm文件,增加第三个,增加的这个里面是弹出对话框的窗口过程,

    include        _ListView.asm
    include        _RecordSet.asm
    include         input.asm

input.asm,

_InputDlg	proc	uses ebx edi esi,hWnd,uMsg,wParam,lParam

		mov	eax,uMsg

		.if	eax ==	WM_INITDIALOG

		.elseif	eax ==	WM_CLOSE

			invoke	EndDialog,hWnd,NULL

		.else
			mov	eax,FALSE
			ret
		.endif
		mov	eax,TRUE
		ret

_InputDlg	endp

资源文件odbc.rc里面增加一段,

//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
#include	<resource.h>
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
#define	ICO_MAIN		1000
#define	DLG_MAIN		2000
#define IDC_CONN_STR	2001
#define	IDC_CONN		2002
#define	IDC_DISCONN		2003
#define	IDC_SQL			2004
#define	IDC_EXEC		2005
#define	IDC_LIST		2006
#define	IDC_INFO		2007
#define IDC_COMMIT		2008
#define IDC_ROLLBACK	2009
#define IDC_INPUT       2010
#define	DLG_INPUT		3000

#define	IDC_GRPID    3000
#define	IDC_NAME    3001
#define	IDC_MOBILE    3002
#define	IDC_SEX    3003
#define	IDC_COMPANY    3004
#define	IDC_ADDR    3005
#define	IDC_PHONE    3006
#define	IDC_POST    3007
#define	IDC_MEMO    3008
#define IDC_INPUTOK 3009


//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
ICO_MAIN	icon	"Main.ico"
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
DLG_MAIN DIALOG 51, 78, 465, 237
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
CAPTION "ODBC数据库操作例子"
FONT 9, "宋体"
{
 EDITTEXT IDC_CONN_STR, 65, 5, 290, 12, ES_AUTOHSCROLL | WS_BORDER | WS_TABSTOP
 PUSHBUTTON "连接(&C)", IDC_CONN, 359, 4, 50, 14
 PUSHBUTTON "断开(&D)", IDC_DISCONN, 412, 4, 50, 14, WS_DISABLED | WS_TABSTOP
 EDITTEXT IDC_SQL, 40, 22, 261, 12, ES_AUTOHSCROLL | WS_DISABLED | WS_BORDER | WS_TABSTOP
 DEFPUSHBUTTON "执行(&E)", IDC_EXEC, 306, 21, 50, 14, BS_DEFPUSHBUTTON | WS_DISABLED | WS_TABSTOP
 PUSHBUTTON "提交(&M)", IDC_COMMIT, 359, 21, 50, 14, WS_DISABLED | WS_TABSTOP
 PUSHBUTTON "回滚(&R)", IDC_ROLLBACK, 412, 21, 50, 14, WS_DISABLED | WS_TABSTOP
 PUSHBUTTON "录入(&I)", IDC_INPUT, 412, 51, 50, 14, WS_TABSTOP
 CONTROL "", IDC_LIST, "SysListView32", 13 | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 2, 56, 460, 179
 LTEXT "SQL语句", -1, 5, 24, 34, 8
 LTEXT "ODBC连接字符串", -1, 5, 8, 60, 8
 LTEXT "", IDC_INFO, 5, 38, 455, 18
}

DLG_INPUT DIALOG 51, 78, 465, 237
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
CAPTION "录入数据"
FONT 9, "宋体"
{
 LTEXT "组id", -1, 5, 5, 34, 8
 LTEXT "姓名:", -1, 5, 35, 34, 8
 LTEXT "手机:", -1, 5, 65, 34, 8
 LTEXT "性别:", -1, 5, 95, 34, 8
 LTEXT "单位:", -1, 5, 125, 34, 8
 LTEXT "地址:", -1, 5, 155, 34, 18
 LTEXT "座机:", -1, 5, 185, 34, 8
 LTEXT "邮编:", -1, 5, 215, 34, 8
 LTEXT "备注:", -1, 5, 245, 34, 18

 EDITTEXT IDC_GRPID, 65, 5, 290, 12, WS_BORDER | WS_TABSTOP
 EDITTEXT IDC_NAME, 65, 35, 290, 12, WS_BORDER | WS_TABSTOP
 EDITTEXT IDC_MOBILE, 65, 65, 261, 12, WS_BORDER | WS_TABSTOP
 EDITTEXT IDC_SEX, 65, 95, 290, 12, WS_BORDER | WS_TABSTOP
 EDITTEXT IDC_COMPANY, 65, 125, 290, 12, WS_BORDER | WS_TABSTOP
 EDITTEXT IDC_ADDR, 65, 155, 261, 12, WS_BORDER | WS_TABSTOP
 EDITTEXT IDC_PHONE, 65, 185, 290, 12, WS_BORDER | WS_TABSTOP
 EDITTEXT IDC_POST, 65, 215, 290, 12, WS_BORDER | WS_TABSTOP
 EDITTEXT IDC_MEMO, 65, 245, 261, 12, ES_AUTOHSCROLL | WS_BORDER | WS_TABSTOP


 PUSHBUTTON "确定(&Q)", IDC_INPUTOK, 412, 21, 50, 14, WS_TABSTOP

}

//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

DLG_MAIN DIALOG 51, 78, 465, 237,这是原来的主对话框的资源描述;DLG_INPUT DIALOG 51, 78, 465, 237,这是弹出的对话框的资源描述,这是新加的;

主对话框上增加一个按钮,

     PUSHBUTTON "录入(&I)", IDC_INPUT, 412, 51, 50, 14, WS_TABSTOP

 点击时弹出input对话框;

资源文件里增加,

    #define IDC_INPUT       2010
    #define    DLG_INPUT        3000

odbc.asm的等值定义里增加,

    DLG_INPUT       equ     3000
    IDC_INPUT       equ     2010

这是之前程序的弹出主对话框的语句,

    invoke    DialogBoxParam,eax,DLG_MAIN,NULL,offset _ProcDlgMain,0

    DLG_MAIN,是对话框资源标识,_ProcDlgMain是对话框的窗口过程;
 

在之前的主对话框窗口过程的消息处理分支的WM_COMMAND处理分支下面增加IDC_INPUT按钮的处理,

.if    eax ==    WM_COMMAND
            mov    eax,wParam

            .if    ax ==    IDC_CONN_STR
。。。。。。
            .elseif    ax ==    IDC_SQL
。。。。。。
            .elseif    ax ==    IDC_CONN
。。。。。。
            .elseif    ax ==    IDC_DISCONN
。。。。。。
            .elseif    ax ==    IDC_INPUT
                invoke    DialogBoxParam,hInstance,DLG_INPUT,NULL,offset _InputDlg,NULL
            .endif

当点击IDC_INPUT按钮时,执行

    invoke    DialogBoxParam,hInstance,DLG_INPUT,NULL,offset _InputDlg,NULL

    _InputDlg是弹出对话框的窗口过程;

如果不小心加或写错.endif,如下图有2个.endif, 就会出现下图错误,

odbc.asm(286) : fatal error A1011: directive must be in control block

    指令必须在控制块中; .if ...... .endif ,是一个控制块;

点击新加的按钮后弹出如下界面,

有时间继续; 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/466970.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

01初识Python

一、Python 简介 二、为什么要学Python&#xff1f; 三、Python 安装 四、输出第一条指令 五、总结 一、Python 简介 Python是一种高级编程语言&#xff0c;由Guido van Rossum于1991年创建。它具有简单易学的语法结构&#xff0c;被广泛应用于Web开发、数据科学、人工智…

LeetCode刷题记录:(11)组合(初识回溯算法)

leetcode传送通道 暂时记录&#xff0c;这篇没啥营养&#xff0c;不用看了 class Solution {List<List<Integer>> result new ArrayList<>(); // 存所有组合List<Integer> path new LinkedList<>(); //存每一个组合public List<List<Int…

高效使用git流程分享

准备 假设你已经 clone 了当前仓库&#xff0c;并且你的终端位置已经位于仓库目录中。 查询状态 查询状态常用的命令有 git status 和 git branch。 前者用于查询更改文件情况&#xff0c;后者用于展示所有分支。 chatbot-system$ git status On branch develop Your bran…

基于SpringBoot和Vue的图书个性化推荐系统的设计与实现

今天要和大家聊的是一款基于SpringBoot和Vue的图书个性化推荐系统。 &#x1f495;&#x1f495;作者&#xff1a;李同学 &#x1f495;&#x1f495;个人简介&#xff1a;混迹在java圈十年有余&#xff0c;擅长Java、微信小程序、Python、Android等&#xff0c;大家有这一块的…

Spring-3

目录 Spring AOP和AspectJ AOP 在Spring AOP 中&#xff0c;关注点和横切关注的区别 Spring 框架中的单例 Bean 是线程安全的吗 Spring 是怎么解决循环依赖的&#xff1f; 事务隔离级别 事务的传播级别 Spring 事务实现方式 Spring框架的事务管理有哪些优点 事务注解的…

【鸿蒙HarmonyOS开发笔记】如何使用图片插帧将低像素图片清晰放大

开发UI时&#xff0c;当我们的原图分辨率较低并且需要放大显示时&#xff0c;图片会模糊并出现锯齿。如下图所示 这时可以使用interpolation()方法对图片进行插值&#xff0c;使图片显示得更清晰。该方法的参数为ImageInterpolation枚举类型&#xff0c;可选的值有: ImageInte…

Git 仓库瘦身与 LFS 大文件存储

熟悉 Git 的小伙伴应该都知道随着 Git 仓库维护的时间越来越久&#xff0c;追踪的文件越来越多&#xff0c;git 存储的 objects 数量会极其庞大&#xff0c;每次从远程仓库 git clone 的时候都会墨迹很久。如果我们不小心 git add 了一个体积很大的文件&#xff0c;且 git push…

从历年315曝光案例,看APP隐私合规安全

更多网络安全干货内容&#xff1a;点此获取 ——————— 随着移动互联网新兴技术的发展与普及&#xff0c;移动APP的应用渗透到人们的衣食住行方方面面&#xff0c;衍生出各类消费场景的同时&#xff0c;也带来了无数的个人隐私数据泄露、网络诈骗事件。 历年来&#xff…

python 调用redis创建查询key

部署redis apiVersion: apps/v1 # 描述api版本&#xff0c;默认都用这个 kind: Deployment # 资源类型&#xff0c;可以配置为pod&#xff0c;deployment&#xff0c;service&#xff0c;statefulset等等 metadata: # deployment相关的元数据&#xff0c;用于描述deployment的…

分享一个不错的three.js开源项目

项目将three.js相关内容封装为相应库 很值得学习&#xff0c;可以模仿项目学习three.js vue-vite-three.js threejs-park: 基于vue3&#xff0c;threeJS智慧园区 threejs-park

Java八股文(XXL-JOB)

Java八股文のXXL-JOB XXL-JOB XXL-JOB xxl-job 是什么&#xff1f;它的主要作用是什么&#xff1f; xxl-job 是一款分布式任务调度平台&#xff0c;用于解决分布式系统中的定时任务和异步任务调度问题。 它提供了任务的注册、调度、执行和监控等功能&#xff0c;能够帮助开发者…

测试进阶必备,这5款http接口自动化测试工具不要太香~

现在市场上能做接口自动化测试的工具有很多&#xff0c;一搜一大把&#xff0c;让人眼花缭乱。我们去选择对应实现方式时&#xff0c;不管是框架体系还是成熟稳定的工具&#xff0c;核心目的都是期望引入的技术能在最低投入的情况下达到最优效果。 那么我们选择依据出来了&…

08|记忆:通过Memory记住客户上次买花时的对话细节

无论是LLM还是代理都是无状态的&#xff0c;每次模型的调用都是独立于其他交互的。也就是说&#xff0c;我们每次通过API开始和大语言模型展开一次新的对话&#xff0c;它都不知道你其实昨天或者前天曾经和它聊过天了。 使用ConversationChain from langchain import OpenAI…

数据分析-Pandas的Andrews曲线可视化解读

数据分析-Pandas的Andrews曲线可视化解读 数据分析和处理中&#xff0c;难免会遇到各种数据&#xff0c;那么数据呈现怎样的规律呢&#xff1f;不管金融数据&#xff0c;风控数据&#xff0c;营销数据等等&#xff0c;莫不如此。如何通过图示展示数据的规律&#xff1f; 数据…

在浏览器中使用websocket协议

在浏览器中使用websocket协议 浏览器中提供了 WebSocket 类&#xff0c;我们可以直接使用&#xff1a; new WebSocket((url: string | URL, protocols?: string | string[] | undefined))url&#xff1a;指定连接的 URL&#xff0c;只支持 ws、wss 协议&#xff0c;否则会提…

Transformer总结

1.Transform背景介绍 1.1Transform的优势 相比于之前占领市场的LSTM和GRU模型&#xff0c;Transformer有两个显著的优势&#xff1a; &#xff08;1&#xff09;Transform能够使用分布式GPU进行并行训练&#xff0c;提升模型训练效率 &#xff08;2&#xff09; 在分析预测…

springboot280基于WEB的旅游推荐系统设计与实现

旅游推荐系统设计与实现 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装旅游推荐系统软件来发挥其高效地信息处理…

Tensorflow2.0 - 链式法则例子

本笔记简单记录链式法则的原理&#xff0c;关于链式法则&#xff0c;本身和高等数学中的链式求导法则是一样的&#xff0c;深度学习中相关资料可以参考这里&#xff1a; 【深度学习之美22】BP算法详解之链式法则 - 知乎10.5 什么是计算图&#xff1f;我们知道&#xff0c; 神经…

SpringBoot(拦截器+文件上传)

文章目录 1.拦截器1.基本介绍2.应用实例1.去掉Thymeleaf案例中使用session进行权限验证的部分2.编写自定义拦截器 LoginInterceptor.java 实现HandlerInterceptor接口的三个方法3.注册拦截器1.第一种方式 配置类直接实现WebMvcConfigurer接口&#xff0c;重写addInterceptors方…

RBAC用户权限控制

用资源和操作绑定角色&#xff0c;角色绑定用户和操作 对应 两两绑定需要中间表来绑定 RestController public class UserAuthApi {Autowiredprivate UserSupport userSupport;Autowiredprivate UserAuthService userAuthService;GetMapping("/user-authorities")pu…