flutter windows软件开发之设置窗体居中与窗口置顶

首先找到文件:/my_flutter_projrct/windows/runner/win32_windows.cpp 找不到windows文件夹的请去把flutter切换到dev分支,config配置加入windows,重新创建一个flutter项目。

第一个窗口置顶:

在CreateWindows下面加入以下代码即可

  HWND m_hwnd = window; // 将刚创建好的windows复制给m_hwnd变量,以便下面使用
  SetWindowPos(m_hwnd,HWND_TOPMOST,0,0,0,0,SWP_NOSIZE); // 设置窗体置顶,下面说明其它参数的含义

 

第一个参数:

  为上面刚创建好的HWND对象。

第二个参数:

  HWND_BOTTOM:值为1,将窗口置于Z序的底部。如果参数nWnd标识了一个顶层窗口,则窗口失去顶级位置,并且被置在其他窗口的底部。
  HWND_NOTOPMOST:值为-2,将窗口置于所有非顶层窗口之上(即在所有项层窗口之后)。如果窗口已经是非顶层窗口则该标志不起作用。
  HWND_TOP:值为0,将窗口置于Z序的顶部。
  HWND_TOPMOST:值为-1,将窗口置于所有非顶层窗口之上。即使窗口未被激活窗口也将保持顶级位置。

中间的四个参数:大概就是用来设置窗体的位置。

最后一个参数:   是窗口尺寸与定位标志。取值由以下列出:

  - SWP_ASYNCWINDoWPOS:如果调用进程不拥有窗口,系统会向拥有窗口的钱线程发出需求。这就防止调用钱线程在其他线程处理需求的时候发生死锁。

  - WP_DEFERERASE:防止产生WM_SYNCPAINT消息。
  - SWP_DRAWFRAME:在窗口周围画一个边框〈定义在窗口类描述中)。
  - SWP_FRAMECHANGED:给窗口发送WM_NCCALCSIZE消息,即使窗口尺寸没有改变也会发送该消息。如果未指定这个标志,只有在改变了窗口尺寸时才发送WM_NCCALCSIZE。
  - SWP_HIDEWINDOW;隐藏窗口。
  - SWP_NOACTIVATE:不激活窗口。如果未设置标志,则窗口被激活,并被设置到其他最高级窗口或非最高级组的顶部(根据参数hWndInsertAfter设置〉。
  - SWP_NOCOPYBITS:清除客户区的所有内容。如果未设置该标志,客户区的有效内容被保存并且在窗口尺寸更新和重定位后拷贝回客户区。
  - SWP_NOMOvE:维持当前位置(忽略x和Y参数〉。
  - SWP_NOOWNERZORDER:不改变z序中的所有者窗口的位置。
  - SWP_NOREDRAW:不重画改变的内容。如果设置了这个标志,则不发生任何重画动作。适用于客户区和非客户区〈包括标题栏和滚动条〉和任何由于窗回移动而露出的父窗口的所有部分。如果设置了这个标志,应用程序必须明确地使窗口无效并区重画窗口的任何部分和父窗口需要重画的部分。
  - SWP_NOREPOSITION:与SWP_NOOWNERZORDER标志相同。
  - SWP_NOSENDCHANGING:防止窗口接收WM_WINDOWPOSCHANGING消息。

  - SWP_NOSIZE:维持当前尺寸〈忽略cx和cy参数〉。

  - SWP_NOZORDER:维持当前Z序(忽略hWndInsertAfter参数)。

  - SWP_SHOWWINDOW:显示窗口。

 

二、窗口屏幕居中显示:

  默认情况下flutter是在左上角(10,10)这个坐标上,也就是距离左侧10px和上侧10px的地方,相对于左上角;要进行居中显示的话就需要对获取屏幕的尺寸及窗口大小进行计算这个中心点的坐标了。

  

int scrWidth, scrHeight, xShaft, yShaft; // 存储屏幕和窗体x轴y轴边距
RECT rect; // 定义一个RECT变量用于下面获取窗口大小

scrWidth = GetSystemMetrics(SM_CXSCREEN); // 获取屏幕X轴像素
scrHeight = GetSystemMetrics(SM_CYSCREEN);// 获取屏幕Y轴像素
//计算窗口x轴及y轴的边距 即左、上边距
xShaft = (scrWidth - rect.right) / 2;
yShaft =  (scrHeight - rect.bottom) / 2;
SetWindowPos(m_hwnd, HWND_TOPMOST, xShaft, yShaft,  rect.right - rect.left, rect.bottom - rect.top, SWP_SHOWWINDOW);// 窗口居中

 

 

 

 

 

posted @ 2020-12-25 09:51  Jarming  阅读(1854)  评论(0编辑  收藏  举报