喫茶XRAYトップページ
[
スレッド全体
]
[8062]
Re:勇気のある人いませんか?
返信
削除
2014/10/4 (土) 21:08:26
Mr.XRAY
清水の舞台から飛び降りるつもりでダウンロードしてみました.
特に問題は発生していません(^^;
Delphi 7 以前のコードのようです.
質問の文章にあった MenuChanged を使用してる部分が分かりました.
Timer1 イベントのコードを書きかえれは,チラつかなくなるようです.
動作確認は Windows 7 U64(SP1) + Delhpi XE(UP1) Pro です.
procedure TformMain.Timer1Timer(Sender: TObject);
var
...
...
hPopupWnd : HWND; //追加
Flags : Cardinal; //追加
begin
...
...
// mi.MenuChanged(True); //削除.本人も激しくチラつくと書いている
hPopupWnd := FindWindow(PChar(#32768), nil); //追加
Flags := RDW_INVALIDATE or RDW_UPDATENOW; //追加
RedrawWindow(hPopupWnd, nil, 0, Flags); //追加
end;
end;
「超高校生級」でも難問だったようですが
問題が発生したら,いろいろ調べてみることですね.
MenuChanged は構造の変更があった場合なので,ウィンドウの更新ではなく,
全て再作成ということでしょう.
[Vcl.Menus.TMenu.MenuChanged - RAD Studio API Documentation]
http://
docwiki.
embarcad
ero.
com/
Librarie
s/
XE7/
ja/
Vcl.
Menus.
TMenu.
MenuChan
ged
こんなやつです.
TPanel 上の TPaintBox に描画している画像を TPopupMenu に表示するようです.
というか,TPanel のイメージを TMenuItem の Canvas に描画しています.
[8063]
RedrawWindowの効果
返信
削除
2014/10/5 (日) 13:00:12
Mr.XRAY
プロジェクトをダウンロードして,Delphi を起動して確認するのは面倒だ.
という方に,MenuChanged と RedrawWindow による違いを確認できるように,
実行ファイル (EXE) だけを UP しておきました.
興味のある方はどうぞ.
Windows 7 U64(SP1) + Delphi XE(UP1) Pro で作成しています.
http://
mrxray.
on.
coocan.
jp/
Delphi/
zip/
PopupMen
u_ImageI
tem_Qand
A.
zip
[8064]
FindWindow の引数を修正
返信
削除
2014/10/5 (日) 20:02:49
Mr.XRAY
> hPopupWnd := FindWindow(PChar(#32768), nil); //追加
まずい!!
引数で PChar の使用方法には要注意ですね.
一応期待通り動作はしますが...
既に UP しているファイルも以下に修正しました.
ついでに,少しコードの一部も修正・変更しています.
hPopupWnd := FindWindow('#32768', nil); //追加
[
▼次のスレッド
]
INCM/CMT
Cyclamen v3.82