HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2013
0803
ぴよこSetParentを使うと黒が透過する0未解決


ぴよこ

リンク

2013/8/3(Sat) 21:17:02|NO.56112

壁紙を一時的に変えるようなソフトウェアを作っています。
http://www.orangemaker.sakura.ne.jp/labo/memo/sdk-mfc/win7Desktop.html
http://www.placeark.com/program_hsp_sample.htmlのウィンドウの上に他のウィンドウが重なっていないかを判定するのプログラム
を参考にWindows7でAeroを有効にしていてもSetParentでデスクトップウィンドウの子ウィンドウにすることで常に最背面にするプログラムを作りました。
ですがこれを実行すると黒色の部分が透過してしまいました。
何がいけないのでしょうか


#include "user32.as" #include "kernel32.as" #module // 全てのトップレベルウィンドウのハンドルのリストを取得 #deffunc getHwndList array hwndarray,local prm dim codeenumwnd, 10 codeenumwnd( 0) = $0824448b, $3b08488b, $067c0448, $08488941, $108b0eeb, $24748b56 codeenumwnd( 6) = $8a348908, $5e0840ff, $c240c033, $00000008 VirtualProtect varptr(codeenumwnd), 40, $40, AZSD prm = 0, 0, 0 EnumWindows varptr(codeenumwnd), varptr(prm) dim hwndarray, prm(2) prm = varptr(hwndarray), prm(2), 0 EnumWindows varptr(codeenumwnd), varptr(prm) return(hwndarray) //ウィンドウがデスクトップウィンドウか判別する //myhWnd:判別するハンドル //返り値1:違う //返り値0:デスクトップウィンドウ #deffunc IsDesktopWindow int myhWnd sdim className, 260 GetClassName myhWnd, varptr(className), 260 s=className if((s=="Progman")|(s=="WorkerW")){ FindWindowEx myhWnd, 0, "SHELLDLL_DefView", "" hDt=stat if (hDt == 0){ return 1 }else{ return 0 } } return 1 //ウィンドウを最背面に #deffunc windowBackground flg=0 getHwndList hwndarray foreach hwndarray IsDesktopWindow hwndarray(cnt) if (stat == 0){ SetParent hwnd, hwndarray(cnt) flg=1 break } loop if (flg=0):dialog"最背面にできませんでした":end return #global dialog "jpg|png|bmp|gif|ico",16 if stat==0:end buffer 1:picload refstr picX=ginfo_winx:picY=ginfo_winy bgscr 0,ginfo_dispx,ginfo_dispy,screen_hide,0,0,ginfo_dispx,ginfo_dispy //枠なしメインウィンドウ作成 pos (ginfo_dispx/2)-(picX/2),(ginfo_dispy/2)-(picY/2) color:boxf 0,0,ginfo_dispx,ginfo_dispy gcopy 1,0,0,picX,picY //右クリック&左クリックで終了 gsel 0,1:windowBackground:onclick gosub *rightExit //ウィンドウを最背面にする stop *rightExit getkey rkey,2 getkey lkey,1 if ((rkey==1)&(lkey==1)){ repeat getkey rkey,2 getkey lkey,1 if ((rkey==0)&(lkey==0)):end await loop } return



この記事に返信する


ONION software Copyright 1997-2023(c) All rights reserved.