|
|
|
|
|
|
|
|
|
![]() 本当は3月3日の合同OFFに間に合わせたかった… とか言いつつ当日会場でも作ってたやん(爆) で、今回は透明ウィンドウを使ってみましたので その話を。 って”任意”たんが頭にあったのでは? その可能性は否定できないな(笑) ともかくデスクトップマスコット風にしたかったので どうしても立ち上げ前の背景を残したかったわけです。 ただ普通にフォームを使うと、フォームクラスの最初に ClearWindow()関数にて真っ白にしてくれます。 それに関しては、ざうりすの際に経験済でしたので フォームエディタにてイベントタグにFormRedispを セットして、FormRedisp()関数内に FormDefRedisp(AplForm,0); (APIマニュアル138ページ) にて回避可能です。 (APIマニュアル166ページ) さて、後は透明ウィンドウを開くだけなのですが APIマニュアルを見ると、メインウインドウを 透明で立ち上げるにはリソースをいじらないといけない とあります。 (APIマニュアル164ページ) それは何か面倒くさそうなので、他の方法は無いかと あさってみましたら… SZABが生成するソースの 中にありました! PIMクラスメソッドが書かれる 「アプリケーション識別名main.c」内の PIMExecSetup()関数に、VGAとQVGAで ウィンドウを切替えている部分がありました! #ifdef VGA_140DPI_APL WIN_WORK_EXT WinWorkExt; /* PIMクラスのウィンドウオープンをやめる */ PIMExecWork->WhichWindow = PIM_WIN_NO_OPEN; /* VGAウィンドウを開き、PIMクラスがそのウィンドウを使用するように */ /* 設定する */ WinWorkExt.userID = APL_WIN; WinWorkExt.CrLocPoint.x = 0; WinWorkExt.CrLocPoint.y = 0; WinWorkExt.CrSize.x = 640 * 4 - 1; WinWorkExt.CrSize.y = 480 * 4 - 1; WinWorkExt.WinType = WN_NO_FRAME; WinWorkExt.PileMode = BOTTOM; WinWorkExt.DestWinNo = 0; WinWorkExt.OpenPosition = 0; WinWorkExt.AutoAdjMode = NONE; GetSystemColor(&(WinWorkExt.Color), SYS_BACK_COLOR); PIMExecWork->WnHandle = OpenNormWindowVGA(&WinWorkExt); #endif /* VGA_140DPI_APL */ でその部分を拝借して… WIN_WORK WinWorkExt; /* PIMクラスのウィンドウオープンをやめる */ PIMExecWork->WhichWindow = PIM_WIN_NO_OPEN; /* 透明ウィンドウを開き、PIMクラスがそのウィンドウを使用するように */ /* 設定する */ WinWorkExt.userID = APL_WIN; WinWorkExt.CrLocPoint.x = 0; WinWorkExt.CrLocPoint.y = 0; WinWorkExt.CrSize.x = 320 * 4 - 1; WinWorkExt.CrSize.y = 240 * 4 - 1; WinWorkExt.WinType = WN_TRANSPARENT; WinWorkExt.PileMode = TOP; WinWorkExt.DestWinNo = 0; WinWorkExt.OpenPosition = 0; WinWorkExt.AutoAdjMode = NONE; GetSystemColor(&(WinWorkExt.Color), SYS_BACK_COLOR); PIMExecWork->WnHandle = OpenNormWindow(&WinWorkExt); をPIMExecSetup()関数の最初にいれてみたら… うまくいきました! (パラメータに関してはAPIマニュアル164ページ) あとはフォームクラスにていつもの通りに アイコンを表示させると…最初のような画面が出ました! なんかメチャいいかげんやな(^^; いいんだよ!出来ちゃえばこっちのもんだから(笑) それから、透明ウィンドウのウインドウハンドルを使って PutPixMapToOffscreen()関数にて画面を取得しても ちゃんと下の画面が取得できました。 ただし、今回のソースではVGAには対応して おりませんのでご注意ください。 (正確に表示されないだけですが) 手抜きやな。 うっさい!! |
|
|
|
|
|
|
|