固定到开始屏幕 Pin To StartScreen

win10的回归的开始菜单整合了xp的开始菜单与win8中的Metro磁贴,个人非常喜欢这种设计

下午老大发现我们的程序在win10开始菜单的磁贴处并没有磁贴生成,于是搜了一下这方面的资料

了解了一下win10的开始菜单中几个概念,

其中左半部分为"StartMenu"

右半部分为"StartScreen",而并非先前认为的Menu

将自己的App钉在这里的功能描述为”Pin App Tto StartScreen”,选中一个程序右键菜单中提供了“固定到开始屏幕”的功能

在UWP应用中,微软提供了丰富的操作API, Windows.UI.StartScreen.SecondaryTile

不过我们是win32程序,并没有相应的资料,在网上搜索排查后发现

ShellExecute(NULL, "pintostartscreen", szLnkPath, NULL, NULL, 0);

能够达到效果

### ESP32 使用 OLED 屏幕显示教程 为了使 ESP32 能够控制并显示信息到 0.96 寸的 OLED 显示屏上,需采用特定库来简化开发过程。这里推荐使用 `Adafruit_SSD1306` 和 `Adafruit_GFX` 这两个库[^1]。 #### 准备工作 确保已安装上述提及的库之后,在 Arduino IDE 中编写如下所示初始化代码: ```cpp #include <Wire.h> #include <Adafruit_GFX.h> // Core graphics library #include <Adafruit_SSD1306.h> // Hardware-specific library for SSD1306 displays #define SCREEN_WIDTH 128 // OLED display width, in pixels #define SCREEN_HEIGHT 64 // OLED display height, in pixels // Declaration for an SSD1306 display connected to I2C (SDA, SCL pins) #define OLED_RESET -1 if sharing Arduino reset pin) Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); ``` 这段代码包含了必要的头文件,并声明了一个用于操作 OLED 的实例对象 `display`,指定了宽度、高度以及重置引脚编号(如果不需要单独设置,则设为 `-1`)。同时通过 `&Wire` 参数告知该显示器将利用硬件I²C接口通信。 #### 初始化与基本配置 接下来是设备启动后的初始化部分,这一步骤非常重要因为它负责建立同外部组件之间的联系并准备就绪以接收指令: ```cpp void setup() { if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3C for 128x64 or 0x3D for 128x32 Serial.println(F("SSD1306 allocation failed")); for(;;); } delay(2000); // Clear the buffer. display.clearDisplay(); } ``` 此段程序尝试调用 `.begin()` 方法完成实际物理连接验证;一旦成功则继续执行清除屏幕缓冲区的动作以便于后续绘图或文字输出[^2]。 #### 数据展示逻辑实现 最后来看一段简单的循环体内部处理流程,它展示了如何更新屏幕固定位置的文字内容及其旁边动态变化的数据项: ```cpp void loop() { static int counter = 0; const char* fixedText = "Counter:"; display.setTextSize(1); // Normal 1:1 pixel scale display.setTextColor(SSD1306_WHITE); // Draw white text display.setCursor(0,0); // Start at top-left corner display.print(fixedText); // Print a message // Erase previous number by drawing black rectangle over it display.fillRect(strlen(fixedText)*6 + 5 , 0, 20, 8, SSD1306_BLACK); // Move cursor after label and print new value of 'counter' display.setCursor(strlen(fixedText)*6 + 5, 0); display.print(counter++); display.display(); // Send buffer to physical screen delay(1000); // Wait one second between updates } ``` 以上代码片段实现了每秒钟增加计数器数值并在指定区域刷新的功能,其中运用到了局部擦除旧数据再写入新值的方法来达到平滑过渡的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值