問題タブ [common-controls]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - GetThemeFont 関数が機能しない
私はCMyHeaderCtrl
、MFC クラスから派生したカスタム ヘッダー コントロールに取り組んでおりCHeaderCtrl
、メソッドをオーバーライドしてDrawItem
、アプリケーションがテーマになっているときにカスタム描画を行います。最初に、ヘッダー項目のテーマ フォントを決定しようとしますが、失敗しGetThemeFont
て結果が返されます'element not found' (0x80070490)
。
このコントロールを使用するアプリケーションは、Common Controls 6 に対してリンクされています。サンプル コードを次に示します。
TMT_CAPTIONFONT
like以外のプロパティも既に試しTMT_SMALLCAPTIONFONT
ましTMT_BODYFONT
た。ここで何が問題なのですか?
c++ - ListView でグループ化を有効にします - ハンドルが無効ですか?
次の状況がわかりません。
だから私は何が欠けています;D? ハンドルがすぐ上にあり、他のもの (列、行/項目) で作業しているときにこのエラーが発生するのは面白いです
Edit_1 - 7:27(GMT): はい、列/アイテム/グループとあらゆる種類の組み合わせを作成した後に配置すると、常にエラー 6 になります。コードは次のとおりです。
c++ - 関数内に C++ #pragma プリプロセッサを配置できる/配置する必要がある
ComCtl32.lib
要するに、ビジュアル スタイル マニフェストを埋め込み、利用可能な場合はバージョン 6 へのリンクを作成する関数を作成したいと考えています。これが基本的に私がやりたいことです:
これはおそらく良い習慣ではないことはわかっていますが、有効ですか?
c++ - TVM_SETBKCOLOR と TreeView_SetBkColor がこのスコープで宣言されていませんか?
奇妙なスコープエラーが発生しています:'TVM_SETBKCOLOR' was not declared in this scope
および同様の'TreeView_SetBkColor' was not declared in this scope
. なぜこれが起こっているのかわかりません:
- 含めました
commctrl.h
- 他のツリービュー マクロは正常に動作します (のように
TreeView_DeleteItem
) - オートコンプリートは認識して終了
TreeView_SetBkColor
するので、スペルの問題ではありません - ドキュメントをよく読んでいる
該当するウィンドウのスニペットを次に示します。tvw_filelist_
変数の背景を変更しようとするまで、すべてが正常に機能しています。
私も試してみました
しかし、同じエラーが発生します。どうしたの?
(環境: Code::Blocks、MinGW、Win7 x64)
c++ - 文字列を保存するTVITEMLPARAM
ドロップされたファイルを一覧表示するツリービューがあります。
新しいツリービューアイテムを作成するときに、ファイルのアドレスをそのアイテムに文字列として保存し、後でさまざまな悪意のある目的で取得したいと思います。
MicrosoftドキュメントのTVITEM構造を見ると、明らかLPARAM
に値を格納する場所です。
lParam
だから、私は先に進んでそれをしました:
次に、自分の値を取得しようとすると...
...ゴミが出て、ポインタがスコープから外れたか、仮眠を取っていることを示しています。そのポインタのサイズは常に4です。
これは私がやろうとしていることをする正しい方法ですか?もしそうなら、何が起こっているのですか?
javascript - 共通コントロールチェックボックスの値をjavascriptフラグに渡す
次のようにテーブルに編集可能なチェックボックスが定義されている場合:
チェックボックスの値をjavascriptで定義したブール値に渡すにはどうすればよいですか?つまり、「setFlag()」関数はどのように見えるべきですか?
よろしくお願いします。
c# - WindowsServer2008にバルーンツールチップの閉じるボタンはありません
私のプログラムは、アプリ内でバルーン通知バブルを使用してユーザーをガイドします。WindowsXPでは、バルーンウィンドウの右上隅に小さな「X」があり、クリックするとウィンドウが閉じます。また、ウィンドウ内のどこかをクリックすると、ウィンドウが閉じます。 「X」をクリックしないでください。
ただし、プログラムがWindows Server 2008で実行されている場合、バルーンは表示されますが、「X」ボタンがなく、クリックしても閉じません。
誤って、次の内容を含む.MANIFESTファイルを削除して、WindowsXPでの動作を再現することができました。
このマニフェストを削除してWindowsXPでプログラムを実行すると、バルーンはWindows Server 2008の場合と同じように動作します。これは、WindowsServer2008のCommonControlsv6との何らかの非互換性を意味する可能性があると思います。
クリック時にバルーンが閉じず、「X」閉じるボタンがない原因を誰かが知っていますか?
更新:バルーン作成コードは次のとおりです。
およびWindowsビルド情報:Windows Server Standard、SP2、32ビット
winapi - SysDateTimePick32のキー押下のシミュレーション
SysDateTimePick32共通コントロールにキープレスを送信したいと思います。
次のシナリオを想像してみてください。ユーザーが作成した、多くの行と多くの列を持つテーブルがあります。これらの列の1つで「Enter」を押すと、SysDateTimePick32コントロールが作成されて現在のセルに配置されるため、このセルの実際のコンテンツの時間を選択できます。これは問題なく機能しますが、ユーザーが最初にEnterキーを押さなくても時刻の編集を開始できるようにしたいと思います。
つまり、テーブルは「表示」モードであり、セルが選択されています。SysDateTimePick32コントロールはまだありません。Enterキーを押す(したがって、SysDateTimePick32を作成して表示する)代わりに、ユーザーは「3」などと入力します。これで、SysDateTimePick32が作成されて表示され、ユーザーが「Enter」を押してから「3」を押したのと同じように、以前に入力した「3」が送信されます。
私はしようとしています
SendMessage(sysDateTimePick32Handle, WM_KEYDOWN, '3', MAKELPARAM (1, 0));
ただし、これは機能していないようです。Win32コントロール、特にSysDateTimePick32に特定のキーストロークを送信する「クリーンな」方法は何ですか?
header - MS ヘッダー コントロールは、カスタム描画項目の境界線を引き続き描画します
VB6 でカスタム グリッド コントロールを開発しています (従来の VB を使用する必要があります - 申し訳ありません :)。これには、CreateWindowEx への対応する WinAPI 呼び出しを使用して作成された ComCtl の標準 OS MS ヘッダー コントロールに基づくカスタム ヘッダーがあります。ヘッダー アイテムはオーナー描画 (HDF_OWNERDRAW フラグ) であり、完全に最初から描画する必要がありますが、MS ヘッダーは依然として、すべてのアイテムの周りにこの奇妙な 3D 境界線を描画します。
これは、WM_PAINT が処理されるときに WindowProc の標準機能の一部として発生するようです。ただし、WM_PAINT をまったく抑制することはできません。この場合、WM_DRAWITEM メッセージが送信されず、ヘッダー項目を描画する場所がないためです。
サブクラス化された API ヘッダーのこの標準的な 3D 境界線の描画を取り除くにはどうすればよいですか?
winapi - ListViewコントロールの親を変更するWinAPI
タブコントロールを備えたアプリケーションを開発しています。タブ内のアイコンをクリックすると、ポップアップウィンドウが開き、タブの内容がポップアップウィンドウに移動します。
私がすることは簡単です-タブ内の各コントロールの親をポップアップウィンドウに変更します(SetParent()を使用)。リストビューコントロール(仮想リストビュー)を除いて、すべてがうまく機能します。
親を変更した後、リストビューはWM_NOTIFY通知を送信しなくなりました。
非仮想リストビューでもテストしましたが、同じことが起こります。
私はグーグル中を検索して何も思いつかなかったので、どんなアイデアでもいただければ幸いです。
アップデート
親を変更した後、リストビューはWM_NOTIFY通知を前の親に送信し続けます。これは一般的なコントロールのバグですか?