問題タブ [showwindow]
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++ - ShowWindow 無効なウィンドウ ハンドル
最近、C++ で Windows API を使用してウィンドウ クラスを作成しようとしています。ただし、ShowWindow を呼び出そうとすると、関数は最後のエラーを 1400 (ERROR_INVALID_WINDOW_HANDLE) に設定します。しばらく試した後、次の例を見つけました: http://blogs.msdn.com/b/oldnewthing/archive/2005/04/22/410773.aspx#comments
新しいプロジェクトを作成し (私は MSVC Express 2008 を使用しています)、コードを正確にコピーしても (これは私はやりたくないことです)、コードがウィンドウを正常に作成しているにもかかわらず、ShowWindow 関数が依然としてエラー 1400 を報告することを発見しました。上記のリンクにあるコード:
(完全なコードは上記のリンクにあります)
ShowWindow でエラー 1400 を受け取ることなく、ウィンドウ ハンドルをクラスのメンバー変数として持つ方法について誰かがアイデアを持っている場合は、助けていただければ幸いです。
c++ - 異なるスレッドの使用中に Win32 API がデッドロックする
追加のスレッドから WIN32 API を使用しようとすると、デッドロックが発生します。フレーム レートを改善するには、アプリケーションで追加のスレッドが必要です。実際には役に立ちますが、ほとんどすべてのシステム機能でデッドロックが発生します。
::ShowWindow ::MoveWindow ::UpdateWindow
たとえば、ShowWindow() を ShowWindowAsync() に置き換えることができ、それで問題が解決することはわかっていますが、MoveWindow() と UpdateWindow() にはそのような代替手段はありません。
誰かがそれらの問題を経験しましたか?解決策は何ですか?
ありがとう!
objective-c - 「showWindow」で呼び出されたウィンドウがフォーカスされていない
Xcode 4.6.2 を使用した単純な cocoa coredata ステータスバー アプリケーションがあります。これは状況です:
に名前を変更MainMenu.xib
しPreferencesWindow.xib
、メインメニューを削除し、ウィンドウ内の配列コントローラーとバインディングを使用して、シンプルで機能するコアデータ関数を作成しました。新しいファイル -> ユーザー インターフェイス -> メイン メニューを作成し、名前を付けましたStatusBarMenu.xib
。シンプルなメニューを追加し、メイン メニューを削除しました。新しい file->objective-c class->subclass を作成NSObject
し、名前を付けましたStatusBarController
。インターフェイスのコードは次のとおりです。
実装:
次に、別の新しいファイルを作成しました->objective-c クラス->NSWindowController のサブクラス、PreferencesWindowController という名前を付けて、そのままにしておきます。次に、PreferencesAppController という名前の新しいファイル -> objective-c クラス -> NSObjects のサブクラス。.h のコードは次のとおりです。
.m コード:
ファイルにはAppDelegate
コアデータのコードのみがあり、何も追加されていません。次に、いくつかのバインディングPreferencesWindow.xib
を追加しましたNSObject
(青い立方体) PreferencesAppController
: Outlets-> mainWindow は、単純な coredata 関数を使用してウィンドウにバインドされています。AppDelegate
同じウィンドウにバインドされたウィンドウ アウトレットを持ち、参照アウトレット -> ファイルの所有者デリゲート、いくつかsaveaction
のmanagedobjectcontext
. StatusBarMenu.xib
オブジェクトを作成してメニューにStatusBarController
バインドしました ( ) で、メニュー項目にバインドされたReceived でoutlets->statusMenu
呼び出される別の青いオブジェクトを作成しました。PreferencesAppController
Actions->showPreferences
次に、プログラムを実行すると、すべてがうまくいきます。アイコンがステータスバーに表示され、ドロップダウンメニューが機能し、「設定...」をクリックすると設定ウィンドウが表示されますが...フォーカスされていません! 他のウィンドウの上にありますが、クリックしてフォーカスを合わせる必要があります。コアデータの保存機能は、ボタンで手動で保存する必要があることを除いて正常に機能します。ステータスバー メニューからアプリケーションを終了しても保存されませんが、これはわずかな問題です。
ウィンドウがフォーカスされていないのはなぜですか?
windows - WIN32 アプリケーションの左を最大化、右を最大化
WIN32 アプリケーションを作成しています。win + 右矢印または win + 左矢印を押したかのように、ウィンドウを左または右に最大化できるようにウィンドウを変更する方法はありますか?
ShowWindow() メソッドを使用してみましたが、左または右の最大化を受け入れるパラメーターはありません。また、次のコードを使用して AdjustWindowRect() を使用してみました:
wr は RECT 型ですが、ウィンドウのサイズや位置は変更されないようです。
ありがとう!
objective-c - (Cocoa Mac) NSWindowController showWindow は新しい NSWindowController を割り当て/初期化しますか?
NSWindowController を拡張するクラス BrowserWindowController があります。私のアプリ デリゲートには、アプリの起動時にインスタンス変数を割り当て、初期化し、ポイントする BrowserWindowController があります。次に、そのウィンドウを表示します。目標は、NIB からのウィンドウを表示することです。
ただし、私が使用しているコードは、最終的に 2 つの BrowserWindowControllers を割り当て、両方を初期化します。BWC の initWithWindow メソッドが呼び出されるタイミングを追跡するために、デバッガーを使用しました。
showWindow は新しい BrowserWindowController を作成しています。それが作成する新しいオブジェクトを指すものはわかりません。それは私にとって大きな問題です。これを回避する方法、または別の方法を使用してウィンドウを表示する方法はありますか? または、何らかの理由で showWindow が作成するコントローラーへのポインターを少なくとも取得できますか?
c++ - 非アクティブな MFC SDI アプリを起動するには?
MFC SDI アプリケーションを非アクティブで起動する必要があります。オンスクリーンキーボードです。
ストレートな Win32 では、単純に呼び出すだけで簡単に実行できます。ShowWindow( hWnd, SW_SHOWNA );
これは MFC では機能しません。私はさまざまなことを試しました:
OnActivate()
、、、OnActivateApp()
のオーバーライド。OnCreate()
_ PreCreateWindow()
_CMainFrame
LoadWindowPlacement()
アプリクラスでのオーバーライドも試しました。
次のようなことも試しました:
運がない。
winapi - ウィンドウが最前面に表示されない原因は何ですか?
状況によっては、ダイアログがフォアグラウンドでモーダルに表示されない原因は何ですか?
プロセス (KeePass.exe) が隠しウィンドウを所有しています。グローバル ショートカット (CTRL+A) は、ダイアログをフォアグラウンドで表示します。これは、DoModal メソッドを使用して行われます。そして、それは機能します。
しかし、私が知らないいくつかの状況では、次のことが起こります: ウィンドウがタスクバーに表示され、それをクリックした後にのみ表示されます。WndProc を上書きし、特定の WM_COPYDATA メッセージを待機する KeePass 用のプラグインを作成しました。このメッセージが届いた場合、ダイアログは DoModal を使用して表示されます。ただし、この場合はタスクバーにのみ表示され、フォアグラウンドには表示されません。
WM_COPYDATA メッセージは別のプロセスから送信されますが、これは問題ではありませんか? その理由は何ですか?
私はこれに長い間苦労しています。問題を説明するのが難しいほど奇妙です。
ダイアログを表示する前に SetForegroundWindow(hKeePassWindow) を発行しようとしましたが、変更はありませんでした。