どこら辺がwin32apiなのやら
質問ですが、 GetDC(m_hWnd) したあと、必ずReleaseDCをしなければならないと決まりがありますが、 特にReleaseDCをしなくても、エラーは出ません。 これはGetDCをするたびに、メモリ領域が作成され、 終了後、すぐにReleaseで削除しないといけないということなのでしょうか? GetDCを呼び出す回数が多いので、いちいちReleaseDCを呼び出すのが難です。
>>950 「getcharが表示される」とはどういう意味?
それから、スレ違い。
>>953 WTLについてるCDCとかCPaintDCがお勧め
>>953 文字列表示関数、ビットマップ表示関数などを作って、引数の指定によっては、
関数の中で、Get〜Releaseを行うみたいな事をすればいい。
WM_CREATEでGetDCしてWM_DESTROYでReleaseDCすりゃいいよ。
959 :
デフォルトの名無しさん :05/03/07 16:50:38
CreateProcessして出来たプログラムから、 呼び出し元のウィンドウハンドルを得る方法を教えてください。 呼び出し先への引数で、ウィンドウクラス名、ウィンドウタイトル名を渡して、 呼び出し先でFindWindowという方法は思いついたのですが、 ウィンドウクラスが渡せない状況の時はどうすればいいでしょうか。
>>959 ウィンドウクラス名、ウィンドウタイトル名が渡せるのなら
ウィンドウハンドルを直接渡せばいいじゃない。
>>960 すいません。ウィンドウハンドルも渡せません。
例えば、一般のテキストエディタからプログラムを呼び出し、
その引数にテキストエディタ名(.exe)、編集中の.txtを渡して、
呼び出し元の方でなんかやる見たいな事がしたいんです。
>>961 間違えました。呼び出し先でなんかやるです。
編集中の.txtは、ファイル名の事です。
>>961 ウィンドウハンドル渡せない理由が無いが?
>>963 JmEditor2というテキストエディタからプログラムを呼び出したくて、
ツール実行という機能があるので、それで呼び出します。
ファイル名は、当然知っているので簡単に渡せますが、
ウィンドウクラス名、ウィンドウハンドル名は、
JmEditor2の中にアクセスできない状況(ユーザーとして使う状況)では、
分からないと思うのですが。
ウィンドウクラス名、ウィンドウタイトルのみっでは同名クラス同タイトルの別ウィンドウが存在しうるので一意の同定は不可能。
JmEditor2側にそういう仕組みが無いならFindWindow等で調べるしかない。
>>965 >>966 そうですよね。%fとかで、ファイル名は簡単に分かるんですが、
ウィンドウクラス名、ウィンドウハンドルも渡す機能が欲しいです。
所で、テキストエディタから、別のテキストエディタを呼び出して、
その引数に現在編集している.txtのファイル名を渡すと、
(EcoNote.exe(フルパス一時ファイル名) → JmEditor.exe)
呼び出し先で編集して、呼び出し元の.txtも変わる見たいな事が
出来る事が分かったんですけど、これはどういう感じで行っているのでしょうか。
ファイル名しか渡していなく、僕の状況と同じだと思うんですが、
こちらはアクセスして処理できています。
>>967 FindFirstChangeNotificationで監視していて
変更されたら再読み込みしてるとか?
>>968 そのキーワードで調べてみます。
お答えくださった皆様、どうもありがとうございました。
うまくやるやり方が分かった時は、ご報告させていただきます。
970 :
デフォルトの名無しさん :05/03/07 23:07:22
あ、それから「socketライブラリ使えばできるじゃないか」ってツッコミはなしの方向でw
それはWin32APIの質問じゃなくてRubyの質問なんじゃないのか
リストビューコントロールについて2つ質問させてください。 一つ目はカラムの数を知ることができるマクロ(メッセージ)についてです。 ListView_GetColumnCountみたいなマクロがあれば一番なんですが、ないみたいなので 今のところListView_GetColumnでカラムのインデックスを0から増やしていって FALSEが返るまで呼び出すことで数えています。 ただ、このやり方でホントに常に正しく数えられるのかどうか分からないし、 いまいちスマートさに欠けるやり方なのでよりよい取得方法があれば教えてください。 二つ目はListView_GetColumnWidthについてです。MSDNを見ると・・・ If you use the returned string width as the column width in a call to the ListView_SetColumnWidth macro, the string will be truncated. To retrieve the column width that can contain the string without truncating it, you must add padding to the returned string width. となっていて、カラム幅を適切に設定したいならpaddingを足せとのことですが、このpaddingの値を適切に 取得する方法が分かりません。 以上です。どなたかご存知の方がいればよろしくお願いします。
すみません。二つ目の質問のマクロは ListView_GetColumnWidth じゃなくて ListView_GetStringWidth でした。 英文もこっちのマクロの説明です。 あ、あとあげ忘れてた。
>>974 一つ目はListView_GetHeaderしてHeader_GetItemCountかな。
>>977 どうもです。一個目のほうはうまくいきました。
二つ目は今のところ適当に10pixelほど足してごまかしています。
カラム間の境界部分をダブルクリックするのをエミュレートすれば勝手に幅を整えてくれるとも
考えたのですが、なんか余計に泥臭くなってしまいそうでいまいちです。
Windows内部ではこの幅の調整の処理をうまく行えているということは
何か方法があるとは思うのですが・・・
単純にカラム幅をアイテム幅に合わせたいなら ListView_SetColumnWidthをLVSCW_AUTOSIZEでかな。
>>979 ガ━━(゚Д゚;)━━━ン!!
・・・今までの苦労はいったいorz
何はともあれ、どうもありがとうございました。
982 :
デフォルトの名無しさん :05/03/08 09:40:48
WMIでワークグループ取得ってどこでやるんでしょうか? Win32_NetworkAdapter Win32_NetworkAdapterConfiguration Win32_NetworkAdapterSetting を使ってみたのですが、該当項目が見当たらなくて。 取得不可能??
>>982 Win32_ComputerSystemのDomainじゃダメ?
984 :
デフォルトの名無しさん :05/03/08 10:59:30
>>983 とれました!
ネットワークと違うところに格納されているとは盲点でした。
ありがとうございました。
WNDClASSで決まっているスタイルを変更する方法を教えてください。
>>985 SetClassLongPtr 関数を使え。
できました、ありがとうございました。
window messageをアプリケーションに送るツールありませんか?
SendMessage(otherAppHWnd, WM_APP, wParam, lParam);
次スレまだー?
【AdvancedWindows】Win32API質問箱 39【読め】
39かよっ!
【AdvancedWindows】Win32API質問箱 29【読め】
梅
梅
(( ) ) ノ /^l'"'"~/^i'ツ'ッ., (( (( ヾ ヾ モフー・・・ ) ) 丿 ミ ´ ∀ ` 彡 (( ( ノノ ッ _ ミ ∴∵ >> (´彡,. (,,_,ノ _,,.ヽ //》||ヾミ\ "'"'゙''""''''゙""´
ume-
このスレ終了。続きは次スレ。
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。