ab.com コミュニティ https://www.activebasic.com/forum/ |
|
RADで作ったボタンの再描画・・・・ https://www.activebasic.com/forum/viewtopic.php?t=2586 |
ページ 1 / 1 |
作成者: | rikaeigo2 [ 2009年7月30日(木) 21:25 ] |
記事の件名: | RADで作ったボタンの再描画・・・・ |
RADで作ったWNDにボタンがたくさんあります。そこにhMemDCを貼ると、ボタンが消えます。どうやって再描画するんですか?WNDのサイズを変えると再描画されますが・・・。 また、この方法(再描画しまくるところにボタンを設置する)は効率が悪いですか?やり方を変えようかとも思っています。 XP、ActiveBasic4.23.00p よろしくおねがいしまするm(__)m。 知恵コイン500枚 |
作成者: | tak [ 2009年8月01日(土) 00:26 ] |
記事の件名: | Re: RADで作ったボタンの再描画・・・・ |
> RADで作ったWNDにボタンがたくさんあります。そこにhMemDCを貼ると、ボタンが消えます。 まずは一応確認ですが、「hMemDCを貼る」とは、hMemDC を ウィンドウの hDC に BitBlt() するということですね? > どうやって再描画するんですか?WNDのサイズを変えると再描画されますが・・・。 一般的に、個別の子ウィンドウ(ボタン等)に関する処理は、子ウィンドウに直接メッセージを送りつけて解決します。 が、今回の問題(再描画)の管轄である WM_PAINT メッセージは専用の UpdateWindow 関数が用意されているので、そちらを使いましょう。 詳しくは⇒UpdateWindow 関数(MSDN ライブラリ) コード: Dim hWndBtn As HWND 'ボタンのウィンドウハンドル hWndBtn = GetDlgItem(hMainWnd, CommandButton1) InvalidateRect(hWndBtn, ByVal NULL, TRUE) ' 更新リージョンを追加して UpdateWindow(hWndBtn) ' 再描画!しかし、わざわざ再描画などしなくてももっと簡単な方法があります。 RAD ツールで「子ウィンドウをクリップ」にチェックを入れるだけです。 これで Windows が自動的にボタン等の子ウィンドウを避けて描画してくれます。 > また、この方法(再描画しまくるところにボタンを設置する)は効率が悪いですか?やり方を変えようかとも思っています。 効率がどのくらい悪いのかは知りません。 これは必要に応じて実測してみるしか・・・。 ただ、余程レスポンスが悪いだとかの問題がなければ、たとえ多少効率悪かろうが気にする必要はないと思います。 |
作成者: | rikaeigo2 [ 2009年8月01日(土) 01:12 ] |
記事の件名: | |
takさん ご親切にありがとうございます!!!^^ とてもよくわかりました!!! |
ページ 1 / 1 | 全ての表示時間は UTC+09:00 です |
Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |