SDK第二天—菜单

unity中TopOn海外广告sdk接入 unity TopOn海外广告接入,以Admob为例 阅读详情

 

 

接着上一天的内容,添加一个菜单,并加入各项,用记事本打开resource.rc,可以找到如下内容

IDR_MENU1 MENU DISCARDABLE   //这里定义菜单名

BEGIN

    MENUITEM "Exit",                        IDM_EXIT  //添加菜单项EXIT

    POPUP "Edit"                //添加弹出菜单

    BEGIN

        MENUITEM "Copy(&C)/tCtrl+C",                        IDM_COPY

        MENUITEM "Paste",                       IDM_PASTE

        MENUITEM SEPARATOR

        MENUITEM "SeleceAll",                   IDM_SELECTALL

    END

    MENUITEM "About",                       IDM_ABOUT

END

 

 

同时在resource.h中可以找到IDM_EXIT等的定义

#define IDM_EXIT                        40001

#define IDM_COPY                        40002

#define IDM_PASTE                       40003

#define IDM_SELECTALL                   40004

#define IDM_ABOUT                       40005

#define IDM_ALIGNLEFT                                40006

#define IDM_ALIGNRIGHT                             40007

这样就把菜单资源和我们的主程序关联起来了。

 

 

接着就要把菜单在窗口中显示出来,我们可以在初始化窗口时指定菜单

wndclass.lpszMenuName=(LPCSTR)IDR_MENU1;

这样编译,运行就可以看到菜单出现在主窗口上部了

 

 

菜单项的消息响应:

菜单消息归类于WM_COMMAND,而对于特定的菜单项,有相应的消息值跟他对应,所以只要对WM_COMMAND消息进行进一步的分流,就可以添加各个菜单的消息响应。具体代码如下:

case WM_COMMAND:

              wparam=LOWORD(wParam);

              switch(wparam)

              {

              case IDM_EXIT:

                     PostQuitMessage(0);

                     return 0;

              case IDM_COPY:

                     MessageBox(hwnd,"Copy Content","Menu",MB_OK);

                     return 0;

              case IDM_PASTE:

                     MessageBox(hwnd,"Paste Content","Menu",MB_OK);

                     return 0;

              case IDM_SELECTALL:

                     MessageBox(hwnd,"Select All Content","Menu",MB_OK);

                     return 0;

              case IDM_ABOUT:

                     MessageBox(hwnd,"About: Designed by csenior","Menu",MB_OK);

                     return 0;

 

 

              }

              Break;

 

 

另外还有一种创建菜单的方式:利用CreateMenu,CreatePopupMenu,GetMenu,InsertMenu,AppendMenu函数,我们试着在WM_CREATE消息中添加如下代码:

case WM_CREATE:

              HMENU hMainMenu;

              HMENU hAddMenu;

              hMainMenu=GetMenu(hwnd);

              hAddMenu=CreatePopupMenu();

              InsertMenu(hMainMenu,2,MF_BYPOSITION | MF_STRING | MF_POPUP,(UINT)hAddMenu,"格式");

              AppendMenu(hAddMenu,MF_STRING,IDM_ALIGNLEFT,"Left Align");

              AppendMenu(hAddMenu,MF_STRING,IDM_ALIGNRIGHT,"Right Align");

编译运行,可以看到多了个菜单条。

这里GetMenu(hwnd)获得hwnd窗口的菜单。然后通过InsertMenu把之前创建的hAddMenu连接到hMainMenu上去。最后添加各子菜单项

 

 

之前在CreateWindow创建窗口时,倒数第三个参数就是HMENU结构,试着在这里给他赋一个值:

HMENU hMenu,hCMenu1,hCMenu2,hCMenu3;

       hMenu=CreateMenu();

       hCMenu1=CreatePopupMenu();

       hCMenu2=CreatePopupMenu();

       hCMenu3=CreatePopupMenu();

       InsertMenu(hMenu,0,MF_BYPOSITION | MF_STRING | MF_POPUP,(UINT)hCMenu1,"File");

       InsertMenu(hMenu,1,MF_BYPOSITION | MF_STRING | MF_POPUP,(UINT)hCMenu2,"View");

       InsertMenu(hMenu,2,MF_BYPOSITION | MF_STRING | MF_POPUP,(UINT)hCMenu3,"Edit");

       AppendMenu(hMenu,MF_STRING,(UINT)41001,"About");

       AppendMenu(hCMenu1,MF_STRING,(UINT)41002,"Open");

       AppendMenu(hCMenu1,MF_STRING,(UINT)41003,"Close");

       AppendMenu(hCMenu2,MF_STRING,(UINT)41004,"Big");

       AppendMenu(hCMenu2,MF_STRING,(UINT)41005,"Small");

       AppendMenu(hCMenu3,MF_STRING,(UINT)41006,"Copy");

       AppendMenu(hCMenu3,MF_STRING,(UINT)41007,"Paste");

       hWnd=CreateWindow("HelloWin",wintitle,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,

              CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,hMenu,hInstance,NULL);

运行,我们可以看到菜单变了,因此在此处也可以添加修改程序的菜单,但是这里不能用GetMenu,因为hWnd窗口句柄还没被实例化

 

 

 

 

关于菜单命令的消息参数说明下:

基本参数说明:

    wNotifyCode=HIWORD(wParam)1

    WID=LOWORD(wParam);

    hWndCtl=(HWND)1Param”;

    当WM_CoMMAND命令是由选择菜单命令产生时WNotifycode参数为0,wID参数

为菜单项的标识导,hwndctl参数为NULL。

    当WM_COMMAND命今是来自于快捷键时WNotifycode参数为1 WID是快捷键标

识号,hWndCtl参数为NULL。

    如果是因为控件向父窗口发出通知消息面产生WM—COMMAND消息时。

WNotifycode参数为通知代码,wID为控件标识号,hwndctl参数为控件句柄。

 

 

通过EnabaleMenuItem,EnableMenuRadioItem,可以设置菜单项的状态为有效,无效,灰色三种,同时可以调用CheckMenuItem,CheckMenuRadioItem来改变菜单项的选种状态具体如下代码:

              EnableMenuItem(hMainMenu,IDM_EXIT,MF_BYCOMMAND | MF_GRAYED);

              EnableMenuItem(hAddMenu,1,MF_BYPOSITION | MF_GRAYED);

              CheckMenuItem(hMainMenu,IDM_COPY,MF_BYCOMMAND |MF_CHECKED);          CheckMenuRadioItem(hAddMenu,IDM_ALIGNLEFT,IDM_ALIGNRIGHT,IDM_ALIGNLEFT,MF_BYCOMMAND);

Vibe Coding实战:用Tauri+Claude Agent SDK快速构建桌面AI助手 Vibe Coding是一种以直觉驱动、低摩擦启动、即时反馈为核心的现代开发范式,强调先让核心逻辑跑通再逐步完善。它并非放弃工程规范,而是将规范作为‘生长出来的皮肤’,而非预设的枷锁。在AI应用爆发背景下,Tauri凭借轻量包体、毫秒级热重载与默认安全模型,成为桌面Agent的理想运行时;Claude Agent SDK则作为MCP协议的轻量实现,支持OpenRouter等多源大模型接入,让工具调用逻辑高度复用。本文基于真实一周开发实践,详解如何用Vibe Coding节奏,从零构建一个可读文件、调用本地A 阅读详情

相关推荐

【论文+CAD图纸】光储充一体化微电网设计

近些年来,我国的经济发展迅速,对能源的需求不断增长,也加重了对环境的破坏,违背了我国的可持续发展战略。所以迫切需要寻找新型能源。由于太阳能在使用时不会产生污染,所以太阳能逐渐受到人们的重视。我国的太阳能资源丰富,具有的开发利用潜力。特别是近些年“光储充”一体化充电站为高科技绿色充电模式,“以光养桩”使光伏、储能、智能充电协同,智能微电网与公共电网互动,本设计对探索清洁可再生能源在民用场合的应用,有着重大的理论和工程价值。本文综述国内外相关光伏发电的成果和发展现状;

weixin_761237174的博客 926

菜单和加速键

1.菜单的定义 在资源

我多么希望明天有太阳,来灼烧我腐烂的梦想 768

解决ArcGIS-OpenStreetMap Toolbox-Load OSM File错误

在安装成功OpenStreetMap Toolbox后,首次运行Load OSM File工具,出现以下错误

Zjf的博客 8820

Windows菜单的三种创建方法

菜单是窗体上的重要构件,是人机交互的重要工具。菜单由菜单条、子菜单、菜单项三个要素构成。 菜单条可以理解为"横式"菜单条,子菜单可以理解为"纵式"菜单条。因为"纵式"菜单条常挂入到其他菜单条中,这种情况称为子菜单;如果作为独立的快捷菜单使用,这种情况称为快捷菜单。 创建Windows菜单有三种方法,即资源编辑、内存菜单模板和动态创建。这三种方法可以独立使用,也可以结合使用。下面分别介绍。

hzj58477的博客 3507

overleaf导入模板

本文介绍了如何在Overleaf平台导入Springer Nature模板。首先下载所需的模板压缩包,然后在Overleaf中选择"Upload project"上传该压缩包。上传后会显示模板文件,包括EPS格式图像文件、LaTeX源文件、BibTeX参考文献文件、PDF输出文件以及文档类文件。这些文件共同构成了完整的LaTeX模板,可用于学术论文写作和排版。

A2787960542的博客 1148

l0phtcrack 7(爆破管理员密码)使用教程

l0phtcrack7简称lc7,是爆破计算机管理员密码的软件,早期是网络安全管理员用来检测系统用户是否使用了不安全的密码,后被黑客用于用户口令破解 功能:该工具支持远程破解,理论上能破解所有密码,但对复杂度比较高的密码,破解时间很长 使用前提:1.登录了需要破解的计算机 2.知道需要破解的计算机的一个管理员的账户,密码 ** 也许你会疑惑,我都知道了一个管理员账户密码了,还要另外的管理员密码...

Xiongcanne的博客 2万+

win32:第一个窗口程序-窗口过程函数(Part.3)

在part.2注册窗口类中,我们通过对结构体对象中的各个成员进行赋值以对窗口的各项属性进行设置,而在设置的过程中有碰到这个结构体对象的成员变量,这个成员指向窗口过程函数的指针。在part.2中,我们将这个指针指向了WndProc这个模板中定义的窗口过程函数,part.3我们就根据模板中的窗口过程函数WndProc来说一下窗口过程函数这个概念。窗口过程函数是 Windows 应用程序的核心组成部分,用于处理与窗口相关的各种消息。

WolvenSec的博客 1367

全国30米分辨率逐年植被覆盖度(FVC)数据集

植被覆盖度是描述地表植被的重要参数与生态环境的基本指标,在大气圈、土壤圈、水圈和生物圈中都占据着重要的地位,区域及全球范围的植被覆盖度估算对植被及相关领域的研究具有重要意义。分别对LANDSAT 5/7/8系列数据计算FVC,其中Landsat5 和Landsat 7NDVI计算利用 B4和B3波段,Landsat8 和Landsat9 NDVI计算利用 B5和B4波段。算法从当年所有观测数据中,以低云、低探测角度和最高NDVI值为标准,选择最佳的可用像元值,并进行换算。(3) FVC的计算。

地球资源数据云的官方博客 1808

WIN32汇编: 10.把对话框作为主界面

第十课 以对话框为主要界面的应用程序现在我们开始学习一些有关GUI编程的有趣的部分, 即:以对话框为主要界面的应用程序。我们将分两课来讲述这一过程 理论:如果您仔细关注过前一个程序就会发现:您无法按TAB键从一个子窗口控件跳到另一个子窗口控件,要想转移的话只有 用鼠标一下一下地去点击。对用户来说这是不友好的。另一件事是如果您象前一课中那样把主窗口的背景色从白色改成 灰色,为了子窗口控件

GodDragon的专栏 1649

差分逻辑电平——LVDS、CML、LVPECL、HCSL互连

首先了解差分逻辑电平结构,也包括单端逻辑电平常见的逻辑电平_常用的逻辑电平-优快云博客注:ECL >> PECL >> LVPECL演变而来;QDR(Quad Data Rate):四倍数据倍率本文章只涉及差分逻辑电平:LVDS 、LVPECL、CML (高速)(最常用)在任何给定的系统设计中,必须设计驱动器侧和接收器侧之间的时钟逻辑转换。通过在它们之间增加衰减电阻和偏置电路来将一个差分时钟转换为其他类型的差分逻辑,来衰减摆幅电平并重新偏置共模输入接收器。

weixin_45365488的博客 4万+

vue3+ts+elementui-plus二次封装树形表格实现不同层级展开收起的功能

我只定义了三层数据,就只演示展开了三层,还可以多层,自己设置即可。

蜗牛~~ 2603

APP运行提示 Please select Android SDK

复制过来的项目,当时可以运行,第二天点运行提示Please select Android SDK。如下图原因: 从项目上拉取的项目build版本和本地不同。 解决办法1: (我出现的问题解决方案)Tools -> Android -> Sync Project with Gradle Files或者菜单栏中Gradle带个上下带箭头的图标(这个是上述步骤的快捷图标)解决办法2: Fil...

wl200881的博客 687

使用 Python 爬虫获取中国证券市场公司公告数据

本文详细介绍了如何使用 Python 爬虫技术从中国证券市场(如巨潮资讯网)爬取公司公告数据。通过分析网页结构,编写爬虫脚本,抓取并存储公告信息,我们实现了从网页抓取数据的全过程。此外,本文还展示了如何应对反爬虫机制,并介绍了数据分析与可视化的基本方法。未来,我们可以通过机器学习等技术进一步挖掘公告中的潜在信息,例如,通过情感分析对公告内容进行情绪分类,或者预测某些公告类型对股市走势的影响等。希望本文能帮助你理解如何使用 Python 爬虫技术获取和处理证券市场的数据,并为你的数据分析项目提供帮助。

2201_76125261的博客 1887

Android 2.2 SDK操作系统界面截屏抢先看

谷歌在旧金山Moscone会展中心举办Google I/O 2010大会第二天的会议之上如约正式发布了代号为“froyo 冻酸奶”的最新版Android 2.2操作系统。而紧接着网络中也开始提供SDK(开发者套件)安装包的下载,虽然仅凭SDK包尚无法让我们体验到诸如Flash10.1等应用,但至少我们也可以从截屏中抢先了解一下这一最新版本的Android平台。 以 下为Android2...

weixin_30394251的博客 117

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

转载:WIN32 SDK编程拾遗-系统托盘图标

WIN32 SDK编程拾遗-系统托盘图标像QQ一样,按打杈按钮,就最小化到系统托盘。代码片断: /*声明一个NOTIFYICONDATA结构的实体(成员很多,有用的不多)*/ NOTIFYICONDATA nti; /*指定一个系统托盘上显示的ICON*/ nti.hIcon = LoadIcon(gInstance, MAKEINTRESOURCE(IDI_ICON)); /*让

bbdg的专栏 1550

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

鸿蒙应用开发系列文章:第二天 - 开发工具与基础组件

HUAWEI DevEco Studio(以下简称DevEco Studio)是基于IntelliJ IDEA Community开源版本打造(Java开发者狂喜,与idea基本一样),为运行在HarmonyOS系统上的应用和服务(以下简称应用/服务)提供一站式的开发平台。

baisihonzhuang的博客 280

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

android开发环境搭建(ubuntu15.04+jdk8+eclipse+android sdk)

开始学习android开发,首先对其环境对搭建比较重要。平台可以选择window/linux/mac等,这里,我选择ubuntu系统,方法比较原始,当然也可以直接用google提供的android stutio。 软件平台工具(部分网址访问不了,可以FQ,自行检索): ubuntu 15.04:可以自己装一个,我装的64位的,所以下面我下载的都是对应64位版本对。 jdk8,我下载的Java...

weixin_30533797的博客 75

Qwen Code本地调用全流程:Node.js环境搭建与SDK精简集成

Qwen Code作为阿里推出的代码生成大模型服务,其本地调用并非简单安装Node.js,而是涉及运行时环境配置、API认证机制与调用链路设计的技术闭环。核心原理在于依托Node.js构建轻量HTTP客户端,通过标准签名协议(SHA256+UTC时间戳+X-Qwen-Signature)对接云API,实现安全可控的代码补全与函数生成。该方案兼顾开发效率与生产稳定性,技术价值体现在规避PowerShell执行策略冲突、消除npm全局权限风险、降低SDK依赖体积,并天然支持配额管控与错误可观测性。典型应用场景包

weixin_34319817的博客 414

学习微信公众号开发的第二天

微信公众号开发

qq_66579387的博客 337

Unity3d 开发Pico4应用打开工程卡在Importing(iteration xxx) busy for xx:xx)...问题记录

大致问题如题:步骤是参照了PICO官方给出的快速开始的步骤进行的,而这个我问题的出现是在导入 PICO Unity Integration SDK前往 SDK 下载中心,下载最新版本的 SDK。1.解压所下载的 SDK 压缩包。2.你将会得到一个包含 package.json 文件的文件夹。3.返回 Unity 编辑器页面。4.在上方菜单栏处,选择 Windows > Package Manager。

qq_33789001的博客 3243

js 获得明天0点时间戳_使用微信JS-SDK调用微信分享

概述对应公众号需开通微信认证,否则没有分享接口的调用权限网上有很多微信分享链接自定义标题图标的相关文章绝大多数都只是描述的前端JavaScript该怎么写本文介绍前端(Jquery)和后端(Java)一起配合编写代码由于微信不允许外部链接,你需要点击页尾左下角的“阅读原文”,才能访问文中的链接一、微信公众平台配置1. 在微信公众平台中获取如下两个值开发者ID(AppID)开发者密码(AppSecr...

weixin_39761822的博客 277

乐视体感摄像头小白学习笔记(vs2017社区版100%搭环境)

背景: 今天为了实现领导的隔空操作,200寸巨屏前,比划操作,就可以演讲的需求。我动之以情晓之以理,请求安装触摸屏,但领导不爽,因为没有“科技感”。我说用PPT指挥棒,领导也不爽,温和地给我否了。(没给我一个电话送去非洲我已经要跪了) 回来想半天,记得有激光投影的键盘, 结果这种技术就到此为止了。当不了鼠标。这特么咋整,还是TB万能,发现有小伙伴在卖LE视体感摄像头,一百多一个,超值。bug之。 ...

hongmei2k的博客 3372

Win7上React Native Android开发环境搭建

最近有时间来学习React Native,首先从搭建开发环境开始。由于没有Mac,只好在Windows上搭建开发环境,官方文档说Facebook的工程师并未特意针对Windows平台做兼容,看来即便不做iOS也还是有必要搞一台Mac了。主要参考资料 React Native官网 React Native中文网 如果英文好的话可以直接去看官网,喜欢看中文的可以看上面的中文站,翻译比较准确,内容也比较新

Battling against our own ignorance 2070
上一篇: SDK第一天
下一篇: 对话周鸿袆:从程序员创业谈起
baijunhui
博客等级 码龄22年 1粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值