2024年Web前端最新WPF 使用Win32API 让控件置于WebBrowser上方(4),字节跳动网上面试

Vue

  • 什么是MVVM?

  • mvvm和mvc区别?它和其它框架(jquery)的区别是什么?哪些场景适合?

  • 组件之间的传值?

  • Vue 双向绑定原理

  • 描述下 vue 从初始化页面–修改数据–刷新页面 UI 的过程?

  • 虚拟 DOM 实现原理

  • Vue 中 key 值的作用?

  • Vue 的生命周期

  • Vue 组件间通信有哪些方式?

  • vue 中怎么重置 data?

  • 组件中写 name 选项有什么作用?

  • Vue 的 nextTick 的原理是什么?

  • Vuex 有哪几种属性?

    开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

//合并选项:

//RGN_AND = 1;

//RGN_OR = 2;

//RGN_XOR = 3;

//RGN_DIFF = 4;

//RGN_COPY = 5; {复制第一个区域}

附加属性类:

class ATCH

{

public static readonly DependencyProperty PanelProperty = DependencyProperty.RegisterAttached(“Panel”, typeof(Panel), typeof(ATCH), new PropertyMetadata(null));

public static void SetPanel(DependencyObject d, Panel value) => d.SetValue(PanelProperty, value);

public static Panel GetPanel(DependencyObject d) => (Panel)d.GetValue(PanelProperty);

public static readonly DependencyProperty NameProperty = DependencyProperty.RegisterAttached(“Name”, typeof(FrameworkElement), typeof(ATCH), new PropertyMetadata(null, new PropertyChangedCallback(OnNamePropertyChanged)));

public static void SetName(DependencyObject d, FrameworkElement value) => d.SetValue(NameProperty, value);

public static FrameworkElement GetName(DependencyObject d) => (FrameworkElement)d.GetValue(NameProperty);

private static void OnNamePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)

{

var b = d.GetValue(PanelProperty);

if (b is null||! (b is Panel)||e.NewValue is null)

return;

var panel = b as Panel;

var web = d as WebBrowser;

var ui = e.NewValue as FrameworkElement;

SetRect(panel, web, ui);

panel.SizeChanged += (sender, args) =>

{

SetRect(panel, web, ui);

};

}

private static IntPtr C1;

private static void SetRect(Panel panel, WebBrowser web, FrameworkElement ui)

{

IntPtr handle = web.Handle;

Win32API.DeleteObject(C1);

Win32API.SetWindowRgn(handle, IntPtr.Zero, true);

Rect PanelRect = new Rect(new Size(panel.ActualWidth, panel.ActualHeight));

C1 = Win32API.CreateRectRgn((int)0, (int)0, (int)PanelRect.BottomRight.X, (int)PanelRect.BottomRight.Y);

Rect UIRect = new Rect(new Size(ui.ActualWidth, ui.ActualHeight));

var D1 = (int)ui.TransformToAncestor(panel).Transform(new Point(0, 0)).X;

var D2 = (int)ui.TransformToAncestor(panel).Transform(new Point(0, 0)).Y;

var D3 = (int)(D1 + UIRect.Width);

var D4 = (int)(D2 + UIRect.Height);

var C2 = Win32API.CreateRectRgn(D1, D2, D3, D4);

Win32API.CombineRgn(C1, C1, C2, 4);

Win32API.SetWindowRgn(handle, C1, true);

}

}

xaml代码

截图1:

截图2:

总结

为了帮助大家更好温习重点知识、更高效的准备面试,特别整理了《前端工程师面试手册》电子稿文件。

内容包括html,css,JavaScript,ES6,计算机网络,浏览器,工程化,模块化,Node.js,框架,数据结构,性能优化,项目等等。

包含了腾讯、字节跳动、小米、阿里、滴滴、美团、58、拼多多、360、新浪、搜狐等一线互联网公司面试被问到的题目,涵盖了初中级前端技术点。

前端面试题汇总

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

JavaScript

性能

linux

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值