問題タブ [subclassing]
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# - C#:NativeWindowオブジェクトを破棄する理由とその理由を教えてください。
メッセージをインターセプトする目的で、オブジェクトを使用してNativeWindow
、管理されていないウィンドウのメッセージポンプをサブクラス化します。
コード構造は次のようになります(その疑似C#、マイナーな構文の問題を許してください):
さて、 GCが原因でオブジェクトが停止している場合は、イベントリスナーを設定するだけで、ガベージコレクターを寄せ付けないようにすることができると思いました。そうでない場合、その方法と理由を追跡することは可能ですか?私は.Netがコードのバグ(例外と時折のサイレント障害が一般的な要点のようです)のためにオブジェクトを強制終了することを知らなかったし、ホストアプリ(私のアプリはCOMサーバーです)の方法や理由がわかりませんアンマネージコード)は、私のオブジェクトを殺すのに十分な知識を持っているでしょう。
オブジェクトが一見ランダムに死ぬことを考えると(特定のイベントのセットを特定することはできませんでしたが、StartMonitoring()が呼び出されてから1秒未満から数分で死ぬだけです。
私の悩みを解決するかもしれないように見えHandleRef
ますが、このコンテキストでそれを使用する方法が不明であり、コードにどのように適合させるかを考えることができません(AppSubclassレベルで宣言してから割り当てる以外は) SpecialAppWndProcオブジェクト。
では、オブジェクトが死ぬ準備ができる前に、オブジェクトが死ぬのを防ぐにはどうすればよいですか?
c# - C#:SendMessage()lParamからの「int配列へのポインター」のマーシャリング
NativeWindowから継承したクラスを使用して、マネージドCOMサーバーからアンマネージドステータスバーウィンドウをサブクラス化しようとしていますが、lParamのコンテンツを適切にマーシャリングする方法を理解しようとして壁にぶつかっています。
http://msdn.microsoft.com/en-us/library/bb760757%28VS.85%29.aspxによると、このlParamの内容はタイプ(LPARAM)(LPINT) aWidths
であり、この変数の内容は実際には「整数配列。」
これを正しくマーシャリングする方法がわかりません。目標は、lParamを読み取り、値を配列に追加してから、を介して新しいメッセージを送信することbase.wndProc(ref m)
です。
できればいいのですint[] array = (int[])m.*lParam
が、人生はそれほど単純ではありません(そして、安全でないコードを使用することはできません)。私は不器用にマーシャラーに何かを介して私に何かを与えるように強制しようとしましたMarshal.PtrToStructure()
が、C配列は構造体ではなく、私が作成しようとした構造体は明らかにブリット可能ではないため、これは最初から運命づけられていることを知っていました。
現在、元の呼び出しを通過させてから、追加のWinAPI呼び出しを行って配列を取得し、フォーマットしてから、ステータスバーを再描画する前に再送信しています。これはうまく機能していますが、十分ではありません。
何か案は?
ありがとう!
トム
PS-私はlParamsがC#でどのように使用されているかを理解するのに多くの問題を抱えていました、ドキュメントはかなり混乱しています:-/
actionscript-3 - AS3でサブクラス化する場合、新しいコンストラクター関数が必要ですか?
基本的なOOPの質問...
Arrayクラスにいくつかの関数を追加して、私のプログラムが素晴らしく、一夜にして金持ちで有名になるようにしたいと思います。
そこで、Arrayを拡張する新しいサブクラスNewArrayを作成します。NewArrayのコンストラクターメソッドを作成する必要がありますか?空白のままにすると、親(配列)のコンストラクターメソッドが使用されますか?
ありがとう
python - Pythonでの10進数のサブクラス化
財務計算を行うためにPythonプログラムでDecimalクラスを使用したいと思います。floatで機能しない小数-最初に文字列に明示的に変換する必要があります。そこで、明示的な変換なしでfloatを操作できるように、Decimalをサブクラス化することにしました。
m_Decimal.py:
だから今、書く代わりに、私は例外を発生させることなくD(5000000)*D(2.2)
書くことができるはずです。D(5000000)*2.2
いくつか質問があります。
私の決定は私に何か問題を引き起こしますか?
他の引数はタイプであるため、の場合、再実装
__mul__
は機能しませんが、10進モジュールで次のことを確認できます。D(5000000)*D(2.2)
class '__main__.m_Decimal'
decimal.py、行5292:
10進モジュールは、引数がDecimalまたはintであることを想定しています。これは、m_Decimalオブジェクトを最初に文字列に変換してからDecimalに変換する必要があることを意味します。しかし、これは多くの無駄です-m_DecimalはDecimalの子孫です-これを使用してクラスを高速化するにはどうすればよいですか(Decimalはすでに非常に遅いです)。
- cDecimalが表示されるとき、このサブクラス化は機能しますか?
python - Python: プログラマ定義の属性を持つファイル
Python 2.5 を使用して、一時ファイルを作成したいのですが、独自の属性を追加 (および変更) します。私は次のことを試しました:
ただし、次のエラー メッセージが表示されます。
サブクラス化も試しましfile
たが、それもうまくいきませんでした。
助言がありますか?
objective-c - NSCoder のサンプル (できれば単純な) サブクラス?
NSCoder のサブクラスを作成しようとしていますが、どこから始めればよいかわかりません。Apple のドキュメントには、必要なメソッドがリストされていますが、それ以外はあまりありません。私のGoogle-fuが弱いのかもしれませんが、どこにも実装例が見つかりませんencodeValueOfObjCType:at:
。(ただし、多くのケースが含まれると思います。)
私が見ることができる NSCoder のサンプル サブクラスを知っている人はいencodeValueOfObjCType:at:
ますdecodeValueOfObjCType:at:
か?
c++ - ウィンドウのサブクラス化を安全に削除しますか?
グローバルCBTフックを使用して、現在フォーカスされているウィンドウをWindowsシステムでサブクラス化しようとしています。これはこの質問で何が起こるかに関連していますが、バグは異なります。
このサブクラス化が有効な場合は、Opera(バージョン10.50)のメインウィンドウが表示されなくなります。Operaには「スプラッシュ画面」があり、メインウィンドウの[開始]をクリックして、Operaが正しくシャットダウンしなかった後に表示されるようにする必要があります。このウィンドウがポップアップするたびに、Operaのメインウィンドウは表示されません。Operaが適切にシャットダウンされ、このスプラッシュ画面が表示されない場合、メインウィンドウは正常に表示されます。
私の疑惑は、Operaのメインウィンドウがどういうわけかすでにサブクラス化されているということです。私は次のことが起こっていると想像します:
- ウィンドウは独自の基本的なWndProcで作成され、フォーカスが与えられます
- 私のアプリケーションはウィンドウをサブクラス化し、元のWndProcを保存します
- Operaは独自のウィンドウをサブクラス化します
- ウィンドウのフォーカスが失われると、元のWndProcを復元し、2番目のWndProcを無視します。
これは本当にそうなのだろうか?他に説明はありますか?
c# - c# でスレッドからウィンドウをサブクラス化する
ウィンドウを探すスレッドを作成しています。ウィンドウが見つかると、windowproc をオーバーライドし、WM_COMMAND と WM_CLOSE を処理します。
ウィンドウを探してサブクラス化するコードは次のとおりです。
そしてwindowproc:
これはすべて、通常の条件下ではうまく機能します。しかし、悪い動作の 2 つのインスタンスが、悪い順に見られます。
1 分ほどでダイアログを閉じないと、アプリがクラッシュします。これは、スレッドがガベージ コレクションを取得しているためですか? スレッドが完了したことを GC が判断できる限り、これは理にかなっていますか? これが事実である場合 (そして、私はそうであるとは知りません)、ダイアログが存在する限りスレッドを存続させるにはどうすればよいですか?
「X」ボタン (WM_CLOSE) でダイアログをすぐに閉じると、アプリがクラッシュします。windowprocでクラッシュすると思いますが、そこにブレークポイントを取得できません。AccessViolationException が発生しました。この例外には、「保護されたメモリを読み書きしようとしました。これは、多くの場合、他のメモリが破損していることを示しています。」それは競合状態ですが、私にはわかりません。参考までに、コマンドを処理したら古いwindowprocをリセットしていましたが、それはさらに頻繁にクラッシュしていました!
これらの問題をどのように解決できるかについてのアイデアはありますか?
javascript - 特定のjqueryuiウィジェットメソッドをサブクラス化する方法は?
jQueryUIを1.8に更新してから、実装にいくつかの問題が見つかりました。datepickerウィジェットの特定のメソッドをサブクラス化する方法がわかれば、修正を待たずに自分で修正できるので、親コードを呼び出します。次に、コードを実行します。
私は$.widgetを読んでいましたが、それがどのように機能するかについて頭を悩ませることはできません。
私はこのようなことを試みました:
そして、他のあらゆる種類のバリエーションや、jQueryUIの「拡張性」を理解していないか、それができないと思ってしまいます。
誰かが私がこれを達成する方法を知っていますか?
どうも