問題タブ [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 投票する
2 に答える
2639 参照

windows - リソース ファイル (*.rc) を使用してダイアログ ベースのアプリケーションのスタイルを設定する方法

リソース ファイル (*.rc) を使用して、ダイアログ ベースのアプリケーションのスタイルを設定するにはどうすればよいですか?

CreateWindowまたはを使用CreateWindowExして、アプリケーションのメイン ウィンドウを作成できます。また、いくつかの引数は、ダイアログ ボックスのスタイルを定義しCreateWindowたり定義したりします。CreateWindowExしかし、スタイル引数を関数に渡す方法ではなく、リソース ファイル (*.rc) を使用してスタイルを設定したいと考えています。

誰かが私にいくつかのスニペットをくれますか?

を呼び出しDialogBoxて、2 番目の引数にスタイル テンプレートを指定できると誰かが言っていました。CreateWindowこれにより、と *.rc ファイルの間で競合が発生しますか? それとも両方同時に使えますか?

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

c++ - CreateWindowでのHWNDの設定が失敗したように見える

私はC#から来ており、これは非常に新しいので、ご容赦ください。

MainWindowいくつかのプライベートHWND変数を持つクラスがあります。1つはウィンドウ自体用で、もう1つは各コントロール用です。私はそれらを追跡する必要があると思いますか、それとも後で物事が簡単になると思いますか?

とにかく、私は持っています:

initialise(HWND hWnd)呼び出されるプライベートメソッドがWM_CREATEあり、すべてのコントロールがウィンドウに追加されます。

ただし、これはウィンドウにボタンを配置していないようです。実際、デバッグすると、最初の行を超えていないことがわかります。奇妙なのは、これに変更すると、次のようになります。

うまくいくようです。

HWNDロジックは、プライベート変数にCreateWindow関数returnの値を割り当てることが問題を引き起こしていることを示唆しているように見えますが、私は以前にこれを行ったことがあり、問題はありませんでしたか?

以前のコードとこのコードの唯一の違いは、現在はクラスを使用しているのに対し、以前(学習中)はすべてをWinMainとに入れていたということWndProcです。

WinMain: http: //pastebin.com/j54vW9gc
ヘッダーファイル: http: //pastebin.com/cUs4vVJ6
CPPファイル:http://pastebin.com/B5KUXTvx

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

c++ - Win32 C++ SetLayeredWindowAttributes は、完全に不透明または完全に透明です。間に何もない

だから私は自分のプログラム内に次のような2番目のウィンドウを作成しました:

今私の問題は、私が適用するかどうかです

255 は 1 ~ 255 の間の任意の値です

ウィンドウは完全に不透明で、後ろに何も見えません

これは完全に透過的です。

どうすれば入手することができますか

作業するには - つまり、ウィンドウが部分的に上に見えるようにします。その後ろの窓が部分的に見えます。ここで MSDN の doco を確認しましたが、明らかに不足しているものがあります Microsoft ライブラリを参照してください

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

createwindow - CreateWindow 座標は 32767 に制限されていますか?

32767 より大きい座標を持つ子ウィンドウを作成するにはどうすればよいですか? 例えば:

このコードは、座標 10;32767 のボタンを作成します。MoveWindow または SetWindowPos 関数を使用しても同じ結果が得られます。

スクロール コントロールと子コントロールを含むウィンドウを作成する必要があります (単純なフォーム)。

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

c++ - 別のスレッド(メインスレッドではない)でウィンドウを作成する

私は機能を持っています:

そして、これは私のプログラムの主要部分です:

プログラムの主要部分で関数 createMainWindow() を呼び出すと、正常に機能しますが、スレッド (ClientThread) で実行すると機能しません。メインスレッドでのみウィンドウを作成する必要があることを読みました。本当ですか?それが本当なら、この関数を別のスレッドから呼び出してメインスレッドで実行する最も簡単な方法は何ですか?


みんな、ありがとう。今、私は問題を知っていますが、解決策にこだわっています。私のクライアントスレッドコードは次のとおりです。

関数 receiveMsgByUdp() は、メッセージを受信するまでこのスレッドを停止します。知識不足で申し訳ありませんが、これを解決するためにどの機能を使用できるか、または別のものを使用できます。メソッド receiveMsgByUdp() を非同期に書き直す必要がありますか、それとも関数 createMainWindow() を呼び出してメイン スレッドで実行するにはどうすればよいですか?最後のバリアントについて: 純粋な winapi でこれを行うにはどうすればよいですか? 誰かコードスニペットを教えてください。もう一度ありがとう)

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

windows - Windows で小さなウィンドウ (32x32) を作成するには?

ウィンドウの作成方法は次のとおりです。しかし、GetClientRect を実行すると、rcClient は 32x32 よりもはるかに大きくなります。

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

c++ - createwindow(...) の後、ウィンドウに色を付ける方法は?

ハンドルが handle_parent であるウィンドウを作成しました。次に、次のように子ウィンドウを作成しました。

子ウィンドウ「子」の色を設定したいと思います。何もしない場合、色はデフォルトで灰色です。どうすればその色を設定できますか? 色を黒のパーマネントのままにしておきたいのですが、とにかく変更してください。

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

c++ - WM_CREATEに子ウィンドウを作成します。同じスレッドの関連性ですか?

典型的なパターンは、メッセージコールバック(WndProc)のメッセージで子ウィンドウを作成することWM_CREATEです。

これは良い機会だと完全に理解していますが、後でそれを行うのは問題ですか?その理由の1つは、子ウィンドウが同じスレッド内に作成されることです。しかし、他に理由はありますか?

そして、(親と)同じスレッドで子ウィンドウを作成することはどれほど重要ですか?「親GUIダイアログスレッドの子スレッドは子ウィンドウを作成できますか?」の時点では、これは一般的な問題ではないようです。

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

c++ - 正確なウィンドウ領域サイズを取得する - CreateWindow ウィンドウ サイズがウィンドウの正しいサイズではありません

C++ でウィンドウを作成し、ウィンドウ サイズが設定したサイズと一致しない Rectangle を描画しようとしているときに、非常に厄介なことに気付きました。

たとえば、480x240 ウィンドウを設定し、GetWindowRect(hwnd, &rect) を取得して上から下、左から右に四角形を描画し、幅と高さを計算しようとすると、次のようになります。

amountRectangleX = 2 および Y = 2 の場合、4 つの長方形が描画されますが、幅と高さが「オフ」であるため、画面全体に表示されないか、その上にレンダリングされます。これが発生する唯一の方法は (私は他の多くの言語でこれを行ったので、それが機能することを知っています)、 Window Size = 480x240 を設定した場合、それを「描画」する領域にしたいということです。ウィンドウのサイズに境界線が含まれている場合、ウィンドウスタイルなどが異なる別のコンピューターでは異なるためです。そして、これを自分のコンピューターで手動で「変更」することはできません。

ウィンドウ サイズ = 480x240 に設定してスクリーンショットを撮ると、紛らわしいウィンドウ スペース = 452x232 が表示されます。ウィンドウ サイズ = 480x240 に設定しても問題ありませんが、GetWindowRect() を実行すると、480x240 ではなく 452x232 が取得されます。これは、描画するスペースが少ないため無効です。これは、なぜ私の Rectangles がウィンドウ空間を超えてレンダリングされるのかを説明し、私はそれを望んでいません。しかし、サイズ = 480x240 またはその他のものを設定できるようにしたいのですが、まだ境界線があります。

なぜこのように機能し、この問題の解決策はありますか? ウィンドウの解像度を設定できるようにしたいのは私だけではありません。使用するコンピューターに関係なく、設定したサイズは、描画できる描画領域です。

0 投票する
0 に答える
679 参照

windows - rundll32を介してdllで完全なWindowsアプリを実行する

完全なWIN32Windowsアプリをdllとして構築する例はありますか?

関数をエクスポートし、rundll32を介して呼び出し、装飾、メニュー、アクセラレータ、およびすべてがポップアップする完全なWindowsアプリを作成したいと思います。

rundll32の呼び出し規約について知っています。

次のコマンドを使用して、その関数からMessageBoxをプルアップできます。rundll32.exe test3.dll,TestEntry other params and args

DLLのハンドルを取得し、それを呼び出しのように使用することで、DLLからリソースをロードできGetModuleHandle("test3.dll")ます。それはうまくいっているようですが、私はまだ働いていません(ベイビーステップ..)。hInstLoadStringLoadIconLoadAccelerators

RegisterClassExこれらの文字列とアイコンを使用してWindowsクラスを登録できますが、親を使用する必要があります。そうしないと、を呼び出すときhInstに取得します。それは予想されることだと思います。ERROR_CANNOT_FIND_WND_CLASSCreateWindow

ただし、でそのクラスを使用しようとするとCreateWindow、NULLが返され、。も返されますGetLastError

を使用して、rundll32から渡されたhInstのウィンドウクラスを取得できますGetWindowsLong(hWnd, GWL_ATOM)。これをlpClassNameに使用すると、メニューとアクセラレータを除いた装飾ウィンドウを表示できますが、rundllのウィンドウクラスは通常、メッセージキューにのみ使用されるため、少しファンキーです。dllの代わりにを使用SetWindowsLongしてウィンドウをサブクラス化し、WndProcを呼び出してみました。CallWindowProcDefWindowProcWndProc

MSVC ++2010Expressでデバッグできないために妨げられています。プロジェクトのコマンドとコマンド引数を適切なエントリに置き換えて、正しく起動するようにしましたが、rundll32.exeのデバッグ情報がなく、ブレークポイントなどが機能しないというメッセージが表示されます。

何か案は?私は正しい方向に進んでいますか?