3 不規則視窗

2022-04-11 07:41:17 字數 1613 閱讀 6511

1.不規則視窗

原理:用乙個位圖畫刷繪製視窗背景,然後把想要透明的顏色設定為透明色,就可以使視窗變成任意形狀。

1

//視窗處理函式

2lresult callback bitmapwindowproc(hwnd hwnd, uint message, wparam wparam, lparam lparam)322

break

;

23case

wm_lbuttondown:

24//

當滑鼠左鍵點選時可以拖曳視窗

25 postmessage(hwnd, wm_syscommand, sc_move | htcaption, 0

);26

return0;

27case

wm_destroy:

28 postquitmessage(0

);29

return0;

30}31return

defwindowproc(hwnd, message, wparam, lparam);32}

3334

//初始化為位圖視窗(註冊視窗類、建立視窗、顯示視窗)

35 bool initbitmapwindow(hinstance hinstance, hbitmap hbitmap, int

ncmdshow)

3654

bitmap bmp;

55 getobject(hbitmap, sizeof(bmp), &bmp);

56//

建立視窗

57 hwnd hwnd = createwindowex(ws_ex_topmost, l"

hello

", l"

hellokitty

", ws_popup, cw_usedefault, cw_usedefault,

58bmp.bmwidth, bmp.bmheight, null, null, hinstance, null);

59if (null ==hwnd)

6063

//顯示視窗

64showwindow(hwnd, ncmdshow);

65updatewindow(hwnd);

66return

true;67}

6869

int apientry _twinmain(hinstance hinstance, hinstance hprevinstance, lptstr lpcmdline, int

ncmdshow)

7077

if (!initbitmapwindow(hinstance, hbitmap, ncmdshow))

78

81msg msg;

82while (getmessage(&msg, null, 0, 0

))83

87deleteobject(hbitmap);

88return0;

89 }

執行效果:

MFC不規則視窗

直接在onpaint 函式裡新增語句 setwindowlong m hwnd,gwl exstyle,getwindowlong m hwnd,gwl exstyle ws ex layered setlayeredwindowattributes rgb 255,255,255 0,lwa co...

如何建立不規則視窗

vc 中提供了crgn類和setwindowrgn函式來建立別具一格的視窗。建立乙個新視窗首先要定義乙個crgn物件,並用各種初始化函式建立crgn類的區域,然後呼叫cwnd setwindowrgn函式建立不規則視窗。crgn類是從cgdiobject類派生二來的子類,crgn類用來確定乙個多邊形...

如何設定不規則視窗GTK

為了體現高度的可制定性.對於gtk來說,肯定可以實現不規則的視窗.但是如何實現呢?在網上找到了一些資料.主要是用透明的來實現的.下面我們來分析一下實現的過程.pixbuf gdk pixbuf new from file 1.png null gdk pixbuf render pixmap and...