VC 隱藏工作列,實現對話方塊的全屏顯示

2021-09-30 08:17:59 字數 1431 閱讀 5940

這裡我選用實現對話方塊的全屏的方案是:

1 隱藏工作列

2 將對話方塊最大化顯示並且去掉標題欄

一  單獨隱藏工作列,很容易實現

缺陷:隱藏後工作列所佔據的空間還是沒有騰出來

**如下:

hwnd hwnd;

hwnd = findwindow("shell_traywnd",null);

showwindow(hwnd,sw_hide);

設定工作列自動隱藏 ,自動隱藏後還讓視窗自動擴充套件而佔滿了任務原先所在區域,

缺陷:滑鼠接近桌面最下邊的時候,工作列又會自動恢復

**如下:

#ifndef abm_setstate

#define abm_setstate 0x0000000a

#endif

隱藏工作列設定工作列自動隱藏兩者結合就能解決問題:

void hidetaskbar(bool bhide)

else

showwindow(hwnd,ncmdshow);//隱藏工作列

#ifndef abm_setstate

#define abm_setstate 0x0000000a

#endif

二  隱藏了工作列然後將對話方塊最大化顯示並且去掉標題欄就能實現全屏了:

在oninitdialog()新增 如下**:

modifystyle(ws_caption,0,0);

sendmessage(wm_syscommand,sc_maximize,0);

當然這裡要注意這兩個步驟的順序,不能顛倒。

這裡還有乙個很簡單的方法:

獲得桌面的大小,將對話方塊大小設定為桌面大小並且去掉對話方塊標題欄。

在oninitdialog()中新增

1 獲得桌面大小

一種方法,先取得桌面視窗控制代碼hwnd hdesktopwnd=::getdesktopwindow();

接著取得

crect rect;

::getwindowrect(hdesktopwnd, &rect);

第二種方法 獲得螢幕當前畫素

int x= getsystemmetrics(sm_cxscreen);

int y= getsystemmetrics(sm_cyscreen);

2 modifystyle(ws_caption,0,0);//去掉標題欄

setwindowpos(&wndtopmost, rect.left, rect.top, rect.right-rect.left, rect.bottom-rect.top, swp_showwindow);

//setwindowpos(&wndtopmost, 0, 0, x, y, swp_showwindow);//這種應該是這樣,還沒試驗過^_^

以上都是簡單的實現,先要變換控制項位置和大小還要另外再做處理

全屏顯示對話方塊,(隱藏工作列)

在oninitdialog 中加入,如下code 如果在建立的對話方塊帶有標題欄使用 cwnd pwnd pwnd getdesktopwindow 得到桌面視窗指標 crect rt pwnd getwindowrect rt modifystyle ws caption,0,0 setwindo...

MFC對話方塊視窗全屏 並覆蓋工作列

因為專案要用到,網上也有很多資料。自己算是比較簡潔的實現了自己想要的功能而已,記錄下來。實現方法 void ctouchpadmfcdlg fullscreen 這樣全屏之後並不會覆蓋工作列。只需要將對話方塊屬性中的border改為dialog frame即可。另 更改對話方塊客戶區的顏色,在onp...

如何隱藏顯示在工作列中的對話方塊程式

用 ws ex toolwindow 可以建立乙個工具視窗,被作為浮動工具欄使用。工具視窗的標 題欄比常規標題欄短,並且使用的視窗字型更小。工具視窗不會出現在工作列裡 當使用者 按下 alt tab 健後,也不會出現在任務表中.hidedlg.cpp 宣告部分 include stdafx.h in...