問題タブ [createwindow]

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.

0 投票する
3 に答える
53687 参照

windows - ウィンドウに画像を描く方法は?

WindowsVistaのC++でVS2005を使用してcreatewindow()apiでウィンドウを作成しました

私の要件は、そのウィンドウに(任意の形式の)画像を描画することです。このアプリケーションではMFCを使用していません。

0 投票する
5 に答える
4621 参照

winapi - Win32 CreateWindow() 呼び出しが子スレッドでハングしますか?

私は OpenGL の移植性レイヤーに取り組んでいます (Linux と Windows の glX と wgl のものを抽象化します)...とにかく、ウィンドウを作成する方法があります...親を渡さない場合は、フレーム付きの実際のウィンドウ...親を渡すと、ボーダーレス、フレームレスのウィンドウが得られます...

1 つのスレッドですべてを実行する限り、これは正常に機能します...別のスレッドが子ウィンドウを作成しようとするとすぐに、アプリは win32 呼び出し「CreateWindow()」でデッドロックします。何か案は?

0 投票する
2 に答える
2637 参照

windows - 英語のタイトル バーを持つ Win32 ウィンドウ アプリを作成しますが、タイトル バーがどこからともなく中国語になります。どうして?

Win32 Window アプリケーションのチュートリアルに従っています。上記のコードは、ウィンドウ画面のタイトル バーの名前を設定するために使用されます。コンパイラは私に怒鳴ります:「'const char [12]' から 'LPCWSTR' に変換できません」ただし、実行時に、ウィンドウ画面のタイトルが漢字になります。文字列を変えてみましたが、どういうわけか、漢字は常に文字列に応じて変化します。XP Visual C++ 2008 Express Edition を使用していますが、非 Unicode プログラムの設定として英語 (米国) を取得しました。理解できません。文字列が中国語になるのはなぜですか?

0 投票する
2 に答える
1578 参照

windows - (Windows API) WM_PAINT マウスの問題

d3d アプリケーションをオーバーレイするために、次のフラグを使用してウィンドウを作成しました。WS_EX_COMPOSITED | WS_EX_TRANSPARENT | WS_EX_LAYERED 透過性のためにウィンドウのカラーキー設定を進めましたが、すべてうまくいきました。しかし、GDI を使用して描画を開始すると、予期しない問題が発生しました。

何らかの理由で、WM_PAINT の実行中にマウス イベント (特に移動) がウィンドウを正しく通過しないため、マウスとキーボードが遅れているように見えます。FPS は問題ありません。これは API の問題です。何らかの理由で、WM_PAINT の進行中にキーボード/マウス メッセージが適切に処理されていないと思われます。

お力になれることがございましたら、どうぞよろしくお願いいたします。

0 投票する
3 に答える
435 参照

c++ - C ++ / Windowsでウィンドウの境界線を含まない画面のサイズのみに基づいてウィンドウを作成するにはどうすればよいですか?

ウィンドウの幅と高さが必要なを使用してウィンドウを作成する場合CreateWindow(...)、ウィンドウの境界を考慮して、640と480ではなく656と516の値を入力する必要があります。

境界線を含まないウィンドウの部分のみに基づいてウィンドウを作成する方法があるかどうか疑問に思っています。特に、異なるバージョンのウィンドウの境界線のサイズが異なる場合、プログラムを実行するとプログラムの表示が異なる可能性があることを考慮してください。上記の異なるバージョンで

(つまり、640を使用すると、ユーザーのバージョンのウィンドウの境界線のサイズが異なる場合、object.widthはオブジェクトを画面の端に配置しません)。

したがって、プログラムに関連する画面の部分のみに基づいてウィンドウを作成する方法、または少なくともGetVericalBorder()/の行に沿った関数を変更して、次のような任意のあいまいな値の代わりにGetHorizontalBorder()これらをのパラメータで使用する方法はありますか? CreateWindow()656と516?

0 投票する
1 に答える
827 参照

delphi - Delphi - DirectShow フィルタで作成されたフォームのメッセージ ループが機能しなくなる

Delphi Pro 6 と DSPACK ダイレクト ショー ライブラリで作成された DirectShow フィルタがあります。Windows XPで実行しています。DirectFilter のコンテナー クラスでコンストラクターが呼び出され、NIL を AOwner パラメーターとしてコンストラクターに渡し (TMyForm.Create(nil))、フォームの Show() メソッドを呼び出すときに、フォームを動的に作成しようとしました。フォームは表示されますしかし、それは決して再描画されず、入力に応答しないため、Windowsメッセージの受信を停止するように見えます.テストとして、私は自分のWndProc()を作成し、フォームのWndProc()をオーバーライドしようとしました.私のWndProc()は一度呼び出されましたが、二度と呼び出されませんでした. .

私は DLL であり、実行しているコンテキストがフォームのウィンドウ メッセージ ハンドラーに「友好的」ではないためだと思います。おそらく、それを呼び出すスレッドなどと関係があります。これを解決する方法や、DirectShow フィルターのコンテキストから永続的なウィンドウを作成する適切な方法について誰かが私にヒントを与えることができれば、私はそれを感謝します。前述したように、ウィンドウは永続的である必要があるため、フィルター プロパティ ページとして作成することはできません。

ありがとう、ロバート

0 投票する
4 に答える
2673 参照

winapi - 親を非アクティブ化しないサブウィンドウを作成することは可能ですか?

通常、サブウィンドウ(WS_POPUP)を作成すると、子ウィンドウがアクティブになり、親が非アクティブになります。ただし、メニューを使用すると、両方がアクティブなままになります。少なくとも私はメニューがアクティブであると仮定しています、それは少なくともフォーカスを持っています。

例:メモ帳のファイルメニューをクリックすると、メニューが表示されますが、メモ帳ウィンドウはアクティブに見えます。

この動作をウィンドウスタイルまたは特定のメッセージへの応答のいずれかでミラーリングすることは可能ですか?

ありがとう

別の例:コンボボックスにはサブウィンドウが表示されているように見えますが、ウィンドウを非アクティブ化しないでください。また、アクティブ化されたメインウィンドウを維持したまま、そのサブウィンドウをクリックできます。そのウィンドウのクラス/スタイルを取得する方法について何かアイデアはありますか?

0 投票する
1 に答える
999 参照

winapi - Windows API CreateWindow クライアント サイズ マウス位置

OpenGLで作業して、私は使用しました

ウィンドウを作成するには、クライアント (レンダリング) 領域上のマウスの位置を見つける必要があります。ただし、マウスの座標がタイトル/キャプション バーまで伸びているため、マウスから画面、ワールドへの座標が間違っていることに気付きました。試行錯誤で固定オフセットを見つけることができましたが、クライアントのマウス座標を取得するための適切なフラグ/トリックはありますか?

ありがとう!

0 投票する
1 に答える
2951 参照

windows - JNA でネイティブ Windows ウィンドウを作成し、GWL_WNDPROC を使用していくつかの GetWindowLong を作成します。

良い一日、

私はしばらく JNA を使用して Windows API とやり取りしていましたが、ウィンドウを作成するときに行き詰まりました。1. 既存のウィンドウの子ウィンドウを作成し、有効なハンドラーを取得しました。2. Windows のすべてのウィンドウには、ノンストップのメッセージ ディスパッチ ループがあることを理解しました。3. 自分のウィンドウをメッセージ ディスパッチ ループに含める最善の方法は、次のコードのようなものを使用することであることがわかりました (私のコードではありませんが、私もそうします)。

ただし、私の問題は、親ウィンドウ(コードの最初の行) に対して GetWindowLong() を呼び出すと、関数が正常に完了しなかったことを示すポインターに対して 0 を取得することです。その後、GetLastError() を呼び出し、エラー コードをすばやく確認すると、「アクセスが拒否されました」というエラーが表示されます。もちろん、これは論理的です。自分のスレッドから別のスレッドの WNDPROC のアドレスにアクセスしようとしているからです。

ポインタはありますか?(しゃれた意図)

0 投票する
4 に答える
9215 参照

c++ - クラス ウィンドウへのハンドルを取得しても、BringWindowToTop が機能しない

次の方法でクラスを登録しています。

InitInstance メソッドを呼び出して、クラスのコンストラクターでウィンドウを作成します。

現在、他のアプリケーションでウィンドウを見つけて、一番上に表示しようとしています:

以下のコードで新しく作成されたウィンドウを編集できます

pWndPrev NULL ではないため、ウィンドウを見つけることができますが、アプリケーションが前面に表示されません。CNDSClientDlg の代わりに他のクラスを登録する必要がありますか? MFC アプリケーションを一番上に表示したいと考えています。