Windows 2000/XP中对窗口进行透明化

MFC窗口透明与穿透技术:从分层窗口到消息处理的完整实现 在Windows桌面应用开发中,窗口特效是提升用户体验的关键技术之一。其核心原理基于Windows图形子系统(GDI/GDI+)的分层窗口机制,通过设置WS_EX_LAYERED扩展样式,使窗口支持Alpha通道和像素混合。这项技术的价值在于能够创建视觉上透明或半透明的界面,同时通过修改窗口的命中测试区域,实现鼠标与键盘消息的穿透,从而不影响底层应用的操作。典型的应用场景包括屏幕取色工具、全局快捷键提示层、非矩形异形窗口以及演示辅助工具等。本文聚焦于MFC框架,深入解析如何利用SetLayeredWindo 阅读详情

Windows 2000/XP中对窗口进行透明化
作者:abhinaba 翻译:南京中萃食品有限公司 肖进



来源:http://www.codeproject.com/dialog/WinTrans1.asp

前言

很多文章示范了使用Windows 2000/XP的层次特性来实现窗口的透明化。本文可以通过该特性使任意窗口透明化,即使你没有该程序的源代码。

使用 "WinTrans" 程序你可以选择任意正在运行的程序,用鼠标左键拖拽左上角框内的棒并将它压在该程序的标题栏上,然后放开,则该程序就可以变成透明。你可以调整滑动条的位置来控制透明度。"WinTrans" 有一个非常象 SPY 的界面,还可以示范Win32 APIs的如下用法:用鼠标指针定位窗口,获取例如类名、标题等窗口信息。

用法

在Windows 2000/XP中,User32.dll增加了一个新函数SetLayeredWindowAttributes。要使用该函数,我们必须在生成窗口或使用SetWindowLong函数中设置窗口风格WS_EX_LAYERED (0x00080000)。该风格一旦被设置,我们就可以调用该函数来透明化窗口。该函数所需参数如下:

  • HWND hWnd: 窗口句柄
  • COLORREF col: 透明化颜色
  • BYTE bAlpha: =0:整个窗口透明, =255 完全不透明
  • DWORD dwFlags: =1:仅颜色 col 透明, =2 :窗口按照bAlpha变量进行透明处理。

代码

首先定义对话框的成员变量(WinTransDlg.h)。

bool m_bTracking;   // 当鼠标被捕捉时设置为TRUE
HWND m_hCurrWnd;    // 鼠标所在窗口的句柄
HCURSOR m_hCursor;  // 棒型光标句柄

同时定义一个指向SetLayeredWindowAttributes函数的指针。该函数在User32.dll中定义。

// 全局变量
typedef BOOL (WINAPI *lpfn) (HWND hWnd, COLORREF cr, 
              BYTE bAlpha, DWORD dwFlags);
lpfn g_pSetLayeredWindowAttributes;

在OnInitDialog事件中获取SetLayeredWindowAttributes函数的指针并且保存在全局变量g_pSetLayeredWindowAttributes中。

BOOL CWinTransDlg::OnInitDialog()
{
    ....
    //  获取函数 SetLayeredWindowAttributes 在User32.dll中的指针
    HMODULE hUser32 = GetModuleHandle(_T("USER32.DLL"));
    g_pSetLayeredWindowAttributes = (lpfn)GetProcAddress(hUser32,
               "SetLayeredWindowAttributes");
    if (g_pSetLayeredWindowAttributes == NULL)
        AfxMessageBox (
            "Layering is not supported in this version of Windows",
             MB_ICONEXCLAMATION);
 
    // 装入棒形光标
    HINSTANCE hInstResource = AfxFindResourceHandle(
         MAKEINTRESOURCE(IDC_WAND), RT_GROUP_CURSOR);
    m_hCursor = ::LoadCursor( hInstResource, MAKEINTRESOURCE(IDC_WAND) );
    ...
}

然后定义事件 WM_LBUTTONDOWN, WM_LBUTTONUP 和 WM_MOUSEMOVE 的触发函数. M_LBUTTONDOWN 事件代码如下:

void CWinTransDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
    ...
    SetCapture();      //鼠标捕获设置到指定的窗口。在鼠标按钮按下的时候,这个窗口会为//当前应用程序或整个系统接收所有鼠标输入
    m_hCurrWnd = NULL; //现在还没有窗口透明
    m_bTracking = true;     // 设置track标志
    ::SetCursor(m_hCursor); // 将光标改为棒形    
}

WM_MOUSEMOVE事件处理函数:

void CWinTransDlg::OnMouseMove(UINT nFlags, CPoint point)
{
    ...
    if (m_bTracking)
    {
        ...
        //  获取鼠标位置
        ClientToScreen(&point);
        ...
        // 获取鼠标下面所在的窗口句柄
        m_hCurrWnd = ::WindowFromPoint(point);
        ...
        // 显示该窗口的类、标题等信息…
        ...
    }
    ...
}

一旦用鼠标左键在窗口内点击并且不释放,鼠标的指针将变为棒形,并且该窗口的信息将显示在WinTrans窗口上。 当鼠标左键被释放后,事件WM_LBUTTONUP处理函数就被调用。

void CWinTransDlg::OnLButtonUp(UINT nFlags, CPoint point)
{
    ...
    //释放鼠标捕获
    ReleaseCapture();
    m_bTracking = false;
     //如果鼠标下面的窗口不是本程序WinTrans,我们就要设置层次样式并且通过设置滑动条来实现透明化。
    
    if (g_pSetLayeredWindowAttributes && m_hCurrWnd != m_hWnd)
    {
        ::SetWindowLong(m_hCurrWnd, GWL_EXSTYLE,
                        GetWindowLong(m_hCurrWnd, 
                        GWL_EXSTYLE) ^ WS_EX_LAYERED);
        g_pSetLayeredWindowAttributes(m_hCurrWnd, 0,
                        (BYTE)m_slider.GetPos(), LWA_ALPHA);
 
        ::RedrawWindow(m_hCurrWnd, NULL, NULL,
                       RDW_ERASE | RDW_INVALIDATE | 
                       RDW_FRAME | RDW_ALLCHILDREN);
    }
    ...
}
MC9S08嵌入式开发实战:USBSPYDER08在线调试器原理与应用指南 在嵌入式系统开发中,在线调试器是实现高效代码调试与硬件交互的核心工具。其工作原理基于芯片内置的调试接口,通过专用硬件与上位机软件协同工作,实现对目标微控制器的实时监控与控制。这种技术能够显著提升开发效率,避免传统的“烧录-测试”循环,广泛应用于嵌入式系统、物联网设备、工业控制等领域。本文以飞思卡尔MC9S08系列微控制器为例,深入解析基于BDM接口的在线调试技术,重点介绍USBSPYDER08调试器的硬件设计、软件配置与实战调试技巧。通过理解调试器架构、掌握断点设置与内存监控等核心功能,开发者能够快速定位代 阅读详情

相关推荐

Win32 API实现半透明窗口技术详解

通过本章内容,我们详细学习了如何使用样式创建透明窗口,并掌握了和等关键函数的使用方式。同时,我们也分析了在设置透明窗口过程中可能出现的问题及其解决策略。在下一章《第四章:SetLayeredWindowAttributes函数应用》中,我们将进一步深入函数的使用,探讨如何结合颜色键和 Alpha 通道实现更灵活的透明控制,并实现透明度的动态调整和交互优化。如需继续生成下一章节内容,请告诉我。

weixin_36328210的博客 945

WinAPI透明窗体SetLayeredWindowAttributes(转载)

【代码】WinAPI透明窗体SetLayeredWindowAttributes(转载)

m0_37346206的博客 1146

ClocX v1.6.0桌面时钟——高颜值与实用功能兼具的Windows个性化工具

说到个性化,ClocX 的自由度远超大多数同类工具。你可以换皮肤、调透明度、改位置,甚至联动其他桌面增强软件构建统一风格的信息中心。但问题来了:怎么做一个合格的主题?别以为随便拖张图进去就行。很多人做的主题一运行就“指针乱飞”、“秒针抖动”,根本原因就是忽略了几个关键的技术细节。ClocX v1.6.0 看似只是一个小小的桌面时钟,但它背后体现的设计哲学值得深思:极简而不简陋:功能不多,但每一项都做到极致;美观与实用并重:不只是好看,更要好用;兼容与创新兼顾。

weixin_36151775的博客 1111

【无标题】VC++ SetLayeredWindowAttributes 部分窗口透明鼠标穿透

那么问题来了,当这样透明后,鼠标无法穿透透明区域,怎么才能做到鼠标穿透呢?很简单,将填充颜色改为RGB(0, 255, 0),也就是说设置纯色透明可以达到鼠标穿透,混合色不穿透。//填充指定透明的颜色。然后在OnEraseBkgnd或者OnPaint中。在初始化中使用下面两行代码。

m0_37346206的博客 1116

手把手教你用ObjectCRX进行Caxa二次开发:从零开始的环境搭建教程

本文是一份面向零基础初学者的Caxa二次开发实战指南,重点讲解如何使用ObjectCRX框架从零开始搭建开发环境。内容涵盖Visual Studio 2015版本锁定、ObjectCRX向导集成、项目创建、典型错误解决,并最终实现一个可在Caxa中运行的HelloWorld程序,帮助开发者快速入门并避开常见陷阱。

w3x4y的博客 514

Win11/Win10系统下,Proe5.0 M280终极版保姆级安装与激活指南(含SSQ补丁避坑)

本文提供Win11/Win10系统下Pro/E 5.0 M280终极版的详细安装与激活指南,涵盖环境配置、SSQ补丁应用及常见问题解决方案。通过系统调整、分步安装和性能优化,确保软件在现代操作系统上的稳定运行,特别适合机械设计用户参考。

weixin_30895059的博客 446

Layered Window 透明窗体的实现总结

vc中各种分层、透明、不规则窗口的实现

U18802218523的博客 1091

ZYNQ千兆网UDP通信实战:从Vivado配置到LWIP优化全流程(附避坑指南)

本文详细介绍了在ZYNQ平台上实现千兆以太网UDP通信的全流程,包括Vivado硬件配置、LWIP协议栈优化及实战代码示例。通过关键参数调整和性能优化,系统吞吐量可提升至850Mbps以上,适用于高速网络通信场景。

weixin_29161785的博客 231

MFC窗口透明化以及透明穿透

MFC编程时,有时候我们需要实现窗口透明化,可以通过SetLayeredWindowAttributes设置窗口透明色和透明度来实现窗口透明化。SetLayeredWindowAttributes可以实现MFC界面的透明不穿透、透明穿透以及半透明效果。

hzl2323406的博客 6296

小样本学习概述

目录 前言 小样本学习存在的意义? 什么是小样本学习? 小样本学习的方法有哪些? 结语 前言 小样本学习(Few-Shot Learning)是近几年兴起的一个研究领域,小样本学习旨在解决在数据有限的机器学习任务。 小样本学习存在的意义? 近些年,以深度卷积神经网络为代表的深度学习方法在各类机器学习任务上取得了优异的成绩——很多任务上已经超越了人类表现。狂欢背后,危机四伏。因为这些深度学习方法work的关键之一是海量标注数据的支持。 但是在工业界,很多时候难以获得海量的训练数据,更.

DwD-的博客 3万+

Android AI Agent集成实战:架构设计与自动化技能开发

AI Agent(人工智能代理)是一种能够感知环境、自主规划并执行任务以达成目标的软件实体。其核心原理在于结合大语言模型的推理能力与工具调用(Tool Calling)技术,使应用从被动响应转向主动服务。在移动开发领域,这项技术的价值在于为应用注入“智能大脑”,实现跨应用自动化与个性化交互,从而显著提升用户体验和操作效率。具体到Android平台,其应用场景广泛,例如自动填写表单、智能聊天辅助、个性化工作流优化等。本文聚焦于Android AI Agent的工程化落地,深入探讨了如何利用Accessibil

weixin_42636895的博客 665

SetLayeredWindowAttributes 函数的使用方法,对话框透明的方法

这片文章来介绍一下使对话框透明的方法,使用下面的API函数,当然MFC中的CWnd类中也有该函数的(注意:我用的环境为VS2008,可以直接使用该函数,VC6.0不同的使用方法不同,网上有介绍): 函数的原型为 BOOL SetLayeredWindowAttributes( HWND hwnd, // handle to the layered window COLORR

CreatedSign的专栏 8389

Multisim14.3主数据库访问冲突:Windows更新KB5065426卸载与系统兼容性修复指南

本文针对Multisim14.3在Windows更新KB5065426后出现的主数据库访问冲突问题,提供了详细的解决方案。通过卸载问题更新、修复系统兼容性及调整权限设置,帮助用户快速恢复元器件库的正常访问,确保电路仿真设计的连续性。

lstm7chronicler的博客 514

透明化窗口SetLayeredWindowAttributes

本文示例工程 前言 很多文章示范了使用Windows 2000/XP的层次特性来实现窗口的透明化。本文可以通过该特性使任意窗口透明化,即使你没有该程序的源代码。     使用 "WinTrans" 程序你可以选择任意正在运行的程序,用鼠标左键拖拽左上角框内的棒并将它压在该程序的标题栏上,然后放开,则该程序就可以变成透明。你可以调整滑动条的位置来控制透明度。"WinTrans" 有一个非常象

熊小屁的专栏 910

抖音a_bogus参数逆向避坑指南:从环境检测到XHR请求的全流程解析

本文详细解析了抖音a_bogus参数在v1.0.1.19版本下的逆向工程全流程,重点介绍了如何通过PyV8Env框架进行有效的补环境操作,以绕过严格的环境检测。内容涵盖从环境初始化、关键事件触发到模拟XHR请求获取签名的完整步骤,并提供了可运行的Python代码示例和常见检测点的避坑指南,帮助开发者稳定生成有效的a_bogus参数。

tech5的博客 603

大疆航线文件解析指南:5分钟搞懂KMZ里的template.kml和waylines.wpml区别

本文深入解析大疆无人机航线文件KMZ中template.kml与waylines.wpml的核心区别。template.kml是定义任务框架和全局参数的可编辑模板,而waylines.wpml是包含精确执行指令的最终文件。理解两者差异对于高效规划航线、批量生成任务及进行二次开发至关重要。

sun99的博客 867

透明化窗口SetLayeredWindowAttributes[转]

透明化窗口SetLayeredWindowAttributes 本文示例工程 前言 很多文章示范了使用Windows 2000/XP的层次特性来实现窗口的透明化。本文可以通过该特性使任意窗口透明化,即使你没有该程序的源代码。 使用 "WinTrans" 程序你可以选择任意正在运行的程序,用鼠标左键拖拽左上角框内的棒并将它压在该程序的标题栏上,然后放开,则该程序就可以变成透

笨笨D幸福 - 后花园 1284

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

使窗体拥有透明效果的API

一、背景 FlashGet的透明效果大家羡慕吧.传统的Windows应用程序想实现半透明效果,一般来说需要处理自己的窗口的WM_Paint消息窗口,很麻烦.现在好了,SetLayeredWindowAttributes是windows的新api,win2000以上才支持,它能使

_Witch__的专栏 1516

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

RetroBar高级功能探索:自动隐藏、多行显示与屏幕边缘定位

RetroBar是一款能在现代Windows系统上重现经典Windows 95、98、XP等系统任务栏风格的工具,让用户在享受现代系统功能的同时,回味经典操作系统的视觉体验。本文将深入探讨RetroBar的三大高级功能:自动隐藏、多行显示与屏幕边缘定位,帮助用户充分发挥这款工具的个性化潜力。 ## 一、智能自动隐藏:释放桌面空间的终极方案 RetroBar的自动隐藏功能让任务栏在不使用时自动隐

gitblog_00279的博客 901

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

[Wiki].NET框架

.NET框架 建议将.NET Framework 3.0并入本条目或章节。(讨论) .NET框架 .NET框架的组件堆栈 开发者 Microsoft 初始版本 2002...

weixin_30267785的博客 499

编成技术9

类别名:编成技术 第1页 第2页 第3页 第4页 第5页 第6页 第7页 第8页 第9页 第10页 第11页 第12页 第13页 第14页 第15页 第16页 第17页 第18页 第19页 第20页 第21页 第22页 第23页 第24页 第25页 第26页 第27页 第28页 第29页 第30页 第31

q1q2q3q4ln的专栏-随我一起研究程序 410
上一篇: 实现标题条的显示与隐藏
下一篇: 用线程实现动态改变图标
普通网友
博客等级 码龄22年 1万+粉丝 3156原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值