Win32API質問箱 Build19
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
NGNGただし、最新スレくらいは質問する前に検索してくれ。というかしろ。
過去スレなどのリンクはたぶん>>2-5くらい。
0002デフォルトの名無しさん
NGNGBuild18:http://pc5.2ch.net/test/read.cgi/tech/1081702990/
Build17:http://pc5.2ch.net/test/read.cgi/tech/1077470361/
Build16:http://pc2.2ch.net/test/read.cgi/tech/1073830065/ ★
Build15:http://pc2.2ch.net/test/read.cgi/tech/1069339866/ ★
Build14:http://pc5.2ch.net/tech/kako/1065/10653/1065328397.html
Build13:http://pc5.2ch.net/tech/kako/1059/10595/1059549320.html
Build12:http://pc5.2ch.net/tech/kako/1056/10560/1056033645.html
Build11:http://pc5.2ch.net/tech/kako/1052/10526/1052651750.html
Build10:http://pc5.2ch.net/tech/kako/1047/10478/1047819779.html
Build9:http://pc5.2ch.net/tech/kako/1044/10449/1044929160.html
Build8:http://pc5.2ch.net/tech/kako/1040/10409/1040964626.html
Build7:http://pc3.2ch.net/tech/kako/1036/10366/1036654893.html
Build6:http://pc3.2ch.net/tech/kako/1032/10325/1032548635.html
Build5:http://pc3.2ch.net/tech/kako/1028/10285/1028580373.html
Build4:http://pc3.2ch.net/tech/kako/1023/10233/1023361418.html
Build3:http://pc.2ch.net/tech/kako/1017/10170/1017072275.html
Build2:http://pc.2ch.net/tech/kako/1006/10067/1006783012.html
Build1:http://pc.2ch.net/tech/kako/991/991576947.html
(★は「いやー ごめんなさい。」に巻き込まれた模様)
- MSDN Online
http://www.microsoft.com/japan/msdn/default.asp
- 猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/index.html
- Platform SDK Update
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
http://www.google.com
0003デフォルトの名無しさん
NGNG0004デフォルトの名無しさん
NGNGhttp://black.sakura.ne.jp/~third/system/winapi/win.html
WIN32 Programming
http://www7.plala.or.jp/keny01/win32/
Win32 SDK Programming
http://usr_vogel.at.infoseek.co.jp/Win32SDK/index.html
WindowsSDK入門
http://kerochan.no-ip.com/vcsdk/letsprog/letsprog-index.htm
0005デフォルトの名無しさん
NGNG今下記のようにしてMCIでwavを開いてるんですが、これだと実行時にwavを読みます。
//hoge.c
static MCI_OPEN_PARMSgst_mop;
gst_mop.dwCallback = (DWORD)g_hWnd;
gst_mop.lpstrDeviceType = (LPCSTR)MCI_DEVTYPE_WAVEFORM_AUDIO;
gst_mop.lpstrElementName = "wav/sentaku.wav";
iErr = mciSendCommand(0 , MCI_OPEN , MCI_OPEN_TYPE |
MCI_OPEN_TYPE_ID | MCI_OPEN_ELEMENT , (DWORD)&gst_mop);
実行時読みじゃなくてリソースにしたいんですけど、どうやったらいいんでしょう?
試しに下記のようなことをしてみましたがだめでした。
//hoge.rc
WAV_SENTAKU WAVE "wav/sentaku.wav"
//hoge.c
gst_mop.lpstrElementName = "WAV_SENTAKU";
0006デフォルトの名無しさん
NGNG0007デフォルトの名無しさん
NGNGなるほど、どうりでぐぐっても見つからないわけだ。
ありがとうございました。
0008デフォルトの名無しさん
NGNGWin2kだと同じやり方では誤動作してしまうプログラムがあるので、GetCommandLineで
調べたときに9x系と同じ渡し方をする、橋渡し的なプログラムを作ってみたのですが
どうも失敗します。
実際に調べた結果、Windows98ではexeアイコンにファイルを落とすと、
二重引用符で囲ったexe名+半角スペース+8.3形式表記のファイル名
のようになると判断していますが、この認識ではまずいのでしょうか?
0009デフォルトの名無しさん
NGNGまずいです。
というか、DnDでの起動しか考慮に入れていない?
他のアプリケーションから起動されることもあるかも知れないし。
で、解決策としては、長いファイル名も短いファイル名も受け取れるようにしておく。
0010デフォルトの名無しさん
NGNG今は
; Ident=Value
とかやるとたまたまIdentで取得できなくなることを利用しているんですが。
0011デフォルトの名無しさん
NGNG多分有名だと思うので書きますが、そのプログラムはRarUtyです。
win98を使っていたときは「送る」にショートカットを置いていて、ファイルの
右クリックメニューから送るとそのファイルが選択されるのですが、
windows2000、xpだと必ずそのフォルダの最初のファイルが選択されてしまうので、
どうにかして回避しようと思いました。
そこで、SendToに置くショートカットをRarUty本体のものではなく、
今回自作したプログラムのものにして、自作プログラムで整形したコマンドライン
引数を与え、間接的に実行することでこの不具合を避けられると考えたのです。
すいません、説明が長くなりました。
あと、書きながら思いついたのですが、RarUtyの元であるVBに
NT系だとコマンドラインまわりがうまく動作しない、などという仕様があるような
気もしました。
0012デフォルトの名無しさん
NGNGたまたまじゃなくて、それが正しいコメント記述方法かと
GetPrivateProfileSection()の解説部分にも
「セミコロン(;)で始まるコメント行は〜」なんて書かれてるし
0013デフォルトの名無しさん
NGNGWin32APIってありますか?
0014デフォルトの名無しさん
NGNG0015デフォルトの名無しさん
NGNG0016デフォルトの名無しさん
NGNG0017デフォルトの名無しさん
NGNG0018デフォルトの名無しさん
NGNGどとねっとが、くぅるぜ
0019デフォルトの名無しさん
NGNG0020デフォルトの名無しさん
NGNG読み込んでいるDLLを知る方法はないでしょうか?。
0021デフォルトの名無しさん
NGNG0022デフォルトの名無しさん
NGNGありがとうございます。このプログラムのようなことを実現しようとすると
どんなAPIを使用すればいいのでしょうか?
0023デフォルトの名無しさん
NGNGms-help://MS.PSDK.1033/perfmon/base/enumerating_all_modules_for_a_process.htm
0024デフォルトの名無しさん
NGNG通常の項目のオーナードローには成功したのですが、
MF_OWNERDRAWとMF_POPUPを同時に指定した項目だけは、
WM_DRAWITEMが来ないようで描画に失敗します。
MF_POPUPのオーナードローは出来ないのでしょうか?
0025デフォルトの名無しさん
NGNGどうしたらいいんでしょうか。
0026デフォルトの名無しさん
NGNG少なくとも俺のところではできてます。
>>25
?
何をやりたいのやら?
0027デフォルトの名無しさん
NGNGWinXPだと、これはどこで設定されるんでしょうか?
APIから読んだり書いたりも出来ますか?
0028デフォルトの名無しさん
NGNG「"Default"フォント」なんてあるか?
Exploereなどに使われてるフォントと言う意味でなら、何かしら
指定されてるのがあると思うが、そんな名前のフォントは無いと思う。
少なくとも俺のマシンのfontsフォルダには無いな。
0029デフォルトの名無しさん
NGNGリッチテキストの処理を行ってるんですが、
Rtfコードを適応すると、スクロールもカレット位置も先頭に戻ってしまうので
入力するたびにテキスト内ががくがくになってしまうんです。
それを防ぎたいんですが、何か方法はないかなと。
0030デフォルトの名無しさん
NGNG配布可能なフォント使うか元から入ってるの使うしかない。
0031デフォルトの名無しさん
NGNGウィンドウの実体とのことですけど、構造体のようなインスタンスでしょうか
WNDCLASS構造体のウィンドウクラスとは全然違うものですよね?
0032デフォルトの名無しさん
NGNGウィンドウはWindowsが内部で管理しているが、その管理コードとでも思っておけ。
0033デフォルトの名無しさん
NGNGレスありがとうございます。
ちなみにウィンドウクラスとは、そのWindowsが内部で管理しているウィンドウに
初期設定の値を与えるための情報を詰め込んだ構造体と考えて間違いはありませんか?
0034デフォルトの名無しさん
NGNG試しにいろいろなとこに載ってるWin32APIを使ったソースをコンパイルしようとすると
必ずエラーが出る。コンパイラはBCCなんだけど、どうしてだろう?
みんな普通にコンパイルできてるん?
0035デフォルトの名無しさん
NGNG0036デフォルトの名無しさん
NGNG0037デフォルトの名無しさん
NGNGvc++でwindowsプログラミングをちょっとかじってみております。
質問なのですが、EditBoxを貼り付けたDialogBoxを作って、
EditBoxにフォーカスがあるときに打ち込まれたキーを取得したいのですがよくわかりません
DialogBoxのコールバック関数内でWM_COMMANDを拾うと、
LOWORD(wParam)にIDC_EDITBOXとかが入っていて
HIWORD(wParam)にWM_KEYDOWNが入ってるみたいなのですが、
どのキーが押下されたかっていう情報は取得できませんか?
EditBoxのコールバック関数を作ってWM取る、とかでしょうか
0038デフォルトの名無しさん
NGNG「ちなみに」という言葉の使い方はその場合、間違い。
0039デフォルトの名無しさん
NGNG>>34はウィンドウズアプリを作りたいのか、
それともwindowsAPIをちょこっと利用してるだけのコンソールアプリを作りたいのか。
つか、そういう使い方ってできるもんなん?やったことないからわからん。
0040デフォルトの名無しさん
NGNGつぅか、使えなかったらなにも出来んぞ。
0041デフォルトの名無しさん
NGNGstdio.h
があればコンソールでも何とかなる。
0042デフォルトの名無しさん
NGNG>HIWORD(wParam)にWM_KEYDOWNが入ってるみたいなのですが、
HIWORD(wParam)に入ってるのはEN_じゃないか?
>EditBoxのコールバック関数を作ってWM取る、とかでしょうか
これでいいと思うよ。
0043デフォルトの名無しさん
NGNGというのは、何かこまめにReleaseしているおかげか、
WaitForSingleObjectが効いてないみたい。
0044デフォルトの名無しさん
NGNGCRITICAL_SECTION に書き換えた方が読みやすいし誤動作し難い?
0045デフォルトの名無しさん
NGNGRelease しないと他のスレッドがその mutex を所有することが
できないんだから、Release しなくてもいい状況というのは
普通はない。
0046デフォルトの名無しさん
NGNGWinMain引数のhInstanceに相当するハンドルが得られる。
004737
NGNGレスサンクスです。調べたらEN_〜みたいですね。
あとリソースエディタで貼り付けたEditBoxのコールバック関数
(ウインドウプロシージャと言うべきか)はどう登録するのでしょう?
そのEditBoxだけCreateWindow/RegisterClassExで貼り付けるんでしょうか?
0048デフォルトの名無しさん
NGNGついでに、MutexとCryticalSectionとどちらか教えて下さい。
0049デフォルトの名無しさん
NGNG使えるが遅い
CriticalSectionはそうではないから同一プロセス内のスレッド間排他が
主な役目になるが軽量で高速
0050デフォルトの名無しさん
NGNGプロセス間同期は必要ないことも多いが。
0051デフォルトの名無しさん
NGNGサブクラス化で検索。
0052デフォルトの名無しさん
NGNGCランタイム他のスレッド間同期処理に実際に使われてるのは
CriticalSectionのほうですな。
0053デフォルトの名無しさん
NGNGセマフォのように使え、プロセス間同期も出来、それでいて高速。
ただしMSDNそのままの実装だと同一スレッドから複数回 Enter できない罠
005437
NGNGなんとかできそうッス
キーワードもらえて助かりました
0055デフォルトの名無しさん
NGNGスレッド間の排他制御にずっと名無しのミューテックス
使ってたんだけどやめたほうがいいかなぁ。
0056デフォルトの名無しさん
NGNGそれと、Set/GetDlgItemFloatって使えないの?
グローバルネームスペースには存在するんだけど、
実態が存在しないらしくエラー出るし、
なんかリンクする必要あるのかと思ってMSDN探してみたけど無いし
ぐぐっても0件だし・・・
0057デフォルトの名無しさん
NGNG0058デフォルトの名無しさん
NGNG短時間でできる汎用の同期オブジェクト
http://www.microsoft.com/japan/msdn/library/ja/jpdndllpro/htm/metrsect.asp?frame=true
↑のソースコード(元記事)
http://msdn.microsoft.com/library/en-us/dndllpro/html/msdn_metrsect.asp?frame=true
0059デフォルトの名無しさん
NGNG確かにInteliSenceで並んでるけど、どこにもないな。
VC6.0のInteliSenceには無い事から考えると…
実はその内追加される予定があった関数で、
InteliSenceの部隊が先行して入れてしまった
とかだったりして。
他のサーチエンジンで検索してみると、GetDlgItemTextを
使って自前で実装した例もあったんで、現状では使いたいなら
それしかなさそうだな。
0060デフォルトの名無しさん
NGNGコードレベルで調べる方法があれば教えてください。
そういうAPIがあるといいのですが、なければ
どこかのレジストリを調べることになるのでしょうか…。
0061デフォルトの名無しさん
NGNG2重起動防止のサンプルですな
0062デフォルトの名無しさん
NGNG0063デフォルトの名無しさん
NGNGこれって自分でアプリに組み込めってこと?
APIで提供されるんじゃないのか。
0064デフォルトの名無しさん
NGNGは?
0066デフォルトの名無しさん
NGNG>>58 をぱっとみて、メータード セクションってのがWin32で提供されているのかと思っただけっす。
0067デフォルトの名無しさん
NGNG0068デフォルトの名無しさん
NGNGマジで?
MSDNをCreateMeteredSectionで検索しても見つからないんだけど。
0069デフォルトの名無しさん
NGNGどんな抜け穴ですか?
0070デフォルトの名無しさん
NGNG0071デフォルトの名無しさん
NGNG0072デフォルトの名無しさん
NGNGPlatformSDK探したけど見当たらなかった。
もしあるならどこにあるか教えてくれ
0073デフォルトの名無しさん
NGNGそのくらいのことができないのはちょっとな。
0074デフォルトの名無しさん
NGNGそうじゃなくて、
英語版の MSDN の記事をコピペしてメータードセクションを作るのではなくて、
最初から PSDK に入ってるんじゃないの?
ってことだと思う。
>>67 の「提供されてるけど」は多分「ソースは提供されているけど?」ということじゃないのかな?
それを、>>68 や >>72 は、「Win32APIとして最初から提供されているの」って勘違いしたんじゃないかなあ。
0075デフォルトの名無しさん
NGNGOpenMutex使ってるヤツはペケ
0076デフォルトの名無しさん
NGNG比較を見るといいことずくめなんだが、結局
FileMappingを利用して実装してるんだね、フーン
で終わってしまったYo。
0077デフォルトの名無しさん
NGNGあれか。OpenされてなければCreateってやつね。
0078デフォルトの名無しさん
NGNGってのは弊害ありますか?
007978
NGNGコンストラクタでInitializeCriticalSection、
デストラクタでDeleteCriticalSectionするようにしたんですが、
これだと、クラスの生成破棄をマルチスレッドでやっちゃうと、
CriticalSectionが途中で無効になっちゃうかな、と思いまして。
で、クラスの中で初期化するのはやめて、
プログラムのはじめでInitializeCriticalSectionして、
あとはほっとこうかなー、と。
どうでしょう?
0080デフォルトの名無しさん
NGNG008178
NGNG79に書いたやり方だと、やっぱりCriticalSectionが途中で無効になりますか?
教えてえ○い人。
0082デフォルトの名無しさん
NGNGWin95上でIME を Disableにする方法無い?
クローズじゃなくってDisable.
BOOL WINAPI WINNLSEnableIME(HWND hWnd, BOOL bEnable)
があったんだけけど、これって、NT用だったり。
0083デフォルトの名無しさん
NGNGクリティカルセクションはそれぞれが独立してるから
何個作ろうが構わない。
そもそも、各スレッドから同時にアクセスされたくないときに
使う物だからプログラムの内容による。
ってことを>>80は言いたかったんだと思う。
0084デフォルトの名無しさん
NGNGImmなんとかってAPI群が有るが。
0085デフォルトの名無しさん
NGNGImmSetOpenStatus
とかでしょ。でも、クローズするのはあるが、
IMEを、ディセーブルにするのなんてあった?
0086デフォルトの名無しさん
NGNGImmDisableIMEは98以降か。
スマソ。
0087デフォルトの名無しさん
NGNGそのウインドウハンドルの取得って出来ますか?
0088デフォルトの名無しさん
NGNG0089デフォルトの名無しさん
NGNGWindows全体での
アクティブウインドウが変更になった瞬間を取得です。
0090デフォルトの名無しさん
NGNG009189
NGNG仕込んでみたんですけど、
0==GetParent(アクティブウインドウ)
なやつを引っ張ったとしても。
画面に出てないウインドウも取ってくるですよ。
spyとかで、調べても見つからないような
フック以外ないですかねー
0092デフォルトの名無しさん
NGNG存在しなかったような気がしますか、これと同じビープ音で演奏する
方法ってないんでしょうか?
ユーザー補助とかでピヨッとか鳴るから何か手段はあるはずなんだが。
0093デフォルトの名無しさん
NGNG0094デフォルトの名無しさん
NGNGBeep()の方なら周波数と鳴らす時間を指定できるっぽい。
0095デフォルトの名無しさん
NGNG別スレッドで…とかやればいいのだろうけど、まだスレッド意識したことないな。
0096デフォルトの名無しさん
NGNG関数があるなら教えてください。
Timerとかあると思うのですが、そんなたいそうなものではなく、
WndProc内でHappenMessage(NULL);みたいにやって
WndProcを抜けた後もう一度WndProcに入るみたいな事がしたいのです。
0097デフォルトの名無しさん
NGNG宍戸さんの所にあります。だが、めちゃめんどいです。
http://www.sm.rim.or.jp/~shishido/waved.html
後、Beep()は楽だけど、たしか95系だと動かないです。
0098デフォルトの名無しさん
NGNG適当なメッセージを自身のプロシージャに送れば?
WM_APP+96とか。
0099デフォルトの名無しさん
NGNGPostMessageでは期待にそえんか?
010196
NGNG0102デフォルトの名無しさん
NGNGEnterCriticalSectionを実行しましたが、
Leaveを待たずにEnter出来てしまいます。
クリティカルセクションって同一スレッドでは排他しないんでしたっけ?
0103デフォルトの名無しさん
NGNGすることなく、 繰り返しEnterCriticalSectionを呼び出すことができます。これにより、
スレッド自身が、 すでに所有しているクリティカル セクションを待つ間、 デッドロック
状態に陥らないようになります。スレッドの所有権を解除するには、 各EnterCriticalSection
呼び出しに対してLeaveCriticalSection関数を1回ずつ呼び出さなければなりません。
ってことでしょ多分
0104デフォルトの名無しさん
NGNG0105デフォルトの名無しさん
NGNG同一スレッドで排他したらデッドロックするじゃん。
0106デフォルトの名無しさん
NGNG0107デフォルトの名無しさん
NGNG音を鳴らすだけなら、sndPlaySoundで良いんじゃない?
もうちょっと、色々して鳴らすならMCI系で。
それ以上なら、waveOut系を使うしかないかな…。
0108デフォルトの名無しさん
NGNGたぶんダメポ
0109デフォルトの名無しさん
NGNGとりあえず、やってみた。
結果は、デッドロックや例外で止まるとかはないが、
CrticalSectionの機能を果たさなくなってる。
まぁ、普通はそんな回数やる前に設計見直せって
話になるだろうから、心配するなw
0110デフォルトの名無しさん
NGNGそんな事態を招くプログラマの頭のほうが深刻な問題だけどな。
0111デフォルトの名無しさん
NGNGがんばってレジストリ読むしかない?
0112デフォルトの名無しさん
NGNGWin32APIのExtTextOutW ( ExtTextOutのUnicode版 ) 使ったんだけど、
SetTextAlign( hDC, TA_UPDATECP ) とやっても X と Y が有効になっちゃうんだけど、
これって自分の環境だけなのか、他でもなっているのか教えてください。
他でもなってるなら(APIのバグなら)自分でカレントポジション持ってきて移動させますので。
#ちなみにANSI版はまだ試してないっス
自分の環境は
WinXP
VC++.NET 7.1
.NET FrameWork1.1 (APIだから関係なし?)
です。
0113デフォルトの名無しさん
NGNGFindExecutable
0114デフォルトの名無しさん
NGNGMoveToEx(hdc , 100 , 100 , NULL);
SetTextAlign(hdc, TA_UPDATECP);
ExtTextOut(hdc, 200, 200, 0, NULL, _T("0000"), 4, NULL);
ExtTextOut(hdc, 200, 200, 0, NULL, _T("1111"), 4, NULL);
ってな感じで追加して試してみたが、ドキュメントどおりの挙動だったぞ…
ちなみに、AでもWでも一緒。
0117デフォルトの名無しさん
NGNG開く方法を選択するダイアログが出てくるけど、
これを開くAPIってある?
ShellExecuteでは出てこないんだけど・・・
0118デフォルトの名無しさん
NGNG0119デフォルトの名無しさん
NGNGrundll32 shell32,OpenAs_RunDLL %1
0120デフォルトの名無しさん
NGNGどうしたらいい?
メモ帳とかでCtrl+Sで出てくるようなやつで表示されているパスを変更したいっ
てことなんだけどどうでしょう.
0121デフォルトの名無しさん
NGNGすでに開いているのを操作するのか?
そのパスで開きたいのか?
さあ、DOTCH?
0122デフォルトの名無しさん
NGNG0123デフォルトの名無しさん
NGNG前者です.
>>122
これだと「そのパスで開く」ということになるんですよね?
0124デフォルトの名無しさん
NGNG0125デフォルトの名無しさん
NGNG全部同じ操作でいけるのかな?
てか>>123は何がしたいんだ?
0127デフォルトの名無しさん
NGNGPlacebarをカスタマイズ汁。}
0128デフォルトの名無しさん
NGNGえらいな、自分で作るっていう考えが。
0129123
NGNGそれだとあらかじめ登録しておいたフォルダに保存するて感じで, 希望としては
もちっと柔軟性が欲しいところなんです.
というか, ある既存のアプリが作ったフォルダの名前を取得して, 別の既存のア
プリで何かのデータをそのフォルダに保存するということがやりたいというわけ
です.
0130デフォルトの名無しさん
NGNG0131デフォルトの名無しさん
NGNGヘッダを読む
0132デフォルトの名無しさん
NGNGいろいろ調べておっしゃるバイナリを調べる方法や、
キャストしたりオフセットを使ったりする方法はあったのですが、
GetBitmapInfo(bmpFileName, &bmpInfo);
こういう感じで簡単に得られるのはないでしょうか。
0133デフォルトの名無しさん
NGNG0134デフォルトの名無しさん
NGNGキャストしないでも、
#pragma pack(1)とかされてるはずだから、
1 ビットマップをオープン
2 BITMAPFILEHEADERを読む
3 bfOffBitsをみてBITMAPINFOのサイズを決定
4 BITMAPINFOを読む
とすれば問題なく読める。
別に要素ごとに一つ一つ読む必要は無い。
0136130
NGNG調べてみます。
>>135
分かりにくいですね。
以下のはDDBですよね?このような感じでDIBを得たいのです。
PAINTSTRUCT ps;
HDC hDC = NULL, hDCBitmap = NULL;
HBITMAP hBitmap = NULL;
hDC = BeginPaint(hWnd, &ps);
hDCBitmap = CreateCompatibleDC(hDC);
hBitmap = (HBITMAP)LoadImage(NULL, BMP_FILE, IMAGE_BITMAP,
16, 16, LR_LOADFROMFILE|LR_CREATEDIBSECTION);
SelectObject(hDCBitmap, hBitmap);
BitBlt(hDC, 0, 0, 16, 16, hDCBitmap, 0, 0, SRCCOPY);
DeleteDC(hDCBitmap);
DeleteObject(hBitmap);
EndPaint(hWnd, &ps);
0137デフォルトの名無しさん
NGNGGetObject
0139デフォルトの名無しさん
NGNGLR_CREATEDIBSECTIONつけてんだからDIBだろうが。
0140130
NGNGそうだと思うのですが、どこにパレットとピクセル配列があるのか
分からないのです。bitmap.bmBitsだと思うのですが。
SetPixelVで表示したいのでそこにアクセスする方法を探していました。
0141130
NGNGお答えいただきありがとうございました。
0142デフォルトの名無しさん
NGNGSetWindowsHookEx以外の方法ってありますか
0143デフォルトの名無しさん
NGNGスーパークラス化
0144142
NGNG0146デフォルトの名無しさん
NGNGSetDlgItemTextで文字を表示さしてるんですけれど、
ダイアログが呼び出されたときに何故か最初に表示されてる文字の一つが反転
(マウスでクリックして選択された状態)になってるんです。
これってどうゆう原因なんでしょうか。.netで開発してるんですけど、プロパティにはそれらしい
項目はないみたいだったんですけど。お願いします。
0147デフォルトの名無しさん
NGNGIDataObject::GetDataに渡すFORMATETC::cfFormatに設定する値を変えればいいと思うのですが、
どの定数を設定すればいいのかわかりません。
よろしくお願いいたします。
0148デフォルトの名無しさん
NGNGhttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/programmersguide/shell_basics/shell_basics_programming/transferring/clipboard.asp
0150デフォルトの名無しさん
NGNGもしくは、ツールバーのビットマップのうち、透過色を指定する方法でもかまいません。
Win9x と XP で、デフォルトの背景色が違うので、なんとかしたいのです。
0151146
NGNGTabstopがTrueになってたのが原因だったみたいです。
Falseにしたら治りました。
0152デフォルトの名無しさん
NGNGWin32Apiだけではないですが教えてください
インターネットをIEで複数開いて、それぞれのWindowに最新F5信号絶え間なくを送りたい
のですが可能でしょうか?
一つ一つのWindowを順番にアクティブにして最新信号を送る方法と
アクティブ、非アクティブのWindowに信号を送るのとが考えられますが
非アクティブのWindowに最新信号(F5)は遅れるのでしょうか?
あと、今のサーバーは最新信号だけでは落ちないようになっていると聞きますが
このプログラムで大量の数のWindowを起動し最新信号(F5)を送っても
効果はあまりなのでしょうか?
どうか教えてください、お願いします m(_;)m
0153デフォルトの名無しさん
NGNG韓国人かよ
0154デフォルトの名無しさん
NGNG0155152
NGNGありがとうございます
そういえばそのようなこと聞いたことがあったような気がします
では、作っても意味がないのでしょうか?
OS上の限界なのでしょうかね?
window一つでもwindow複数でもサーバーの負担は変わらないのかな
分かりました、別の方法を考えてみます
0156デフォルトの名無しさん
NGNG0158デフォルトの名無しさん
NGNG0159デフォルトの名無しさん
NGNG0160デフォルトの名無しさん
NGNG:A
CURL http://www.2ch.net/ > NUL
GOTO A
REM ---EOF---
0161デフォルトの名無しさん
NGNGRequirements
Routine Required header Compatibility
malloc <stdlib.h> and <malloc.h> ANSI, Win 98, Win Me, Win NT, Win 2000, Win XP
と書いてあるのですが、malloc は win95 で使えないんですか?
0162デフォルトの名無しさん
NGNG0163デフォルトの名無しさん
NGNG0164デフォルトの名無しさん
NGNGとして第8引数にもNULLを指定し、あとでSetParentとSetWindowLongPtr
で親のHWNDとWS_CHILDを追加しているのですがうまくいきません
DWORD button_style = GetWindowLongPtr(button,GWL_STYLE);
button_style |= WS_CHILD;
button_style ^= WS_POPUP;
SetWindowLongPtr(button,GWL_STYLE,button_style);
SetParent(button,window);
ボタンに指定したのと同じ位置,サイズ,キャプションでウィンドウが表示され、その中に
ボタンが表示されてしまいます
ボタンの親をあとから指定することは不可能なのでしょうか?
0165デフォルトの名無しさん
NGNG0166デフォルトの名無しさん
NGNGイ�`
0167デフォルトの名無しさん
NGNG0168デフォルトの名無しさん
NGNGまずハンドルを取得汁
0169デフォルトの名無しさん
NGNG養子縁組を申し込めばOK
0170デフォルトの名無しさん
NGNG0171デフォルトの名無しさん
NGNG(>>167).年齢() < (>>167).隣のおねいさん.年齢()
0172デフォルトの名無しさん
NGNGSHIFTキーが押されているかどうかをチェックするにはどうすればいいですか?
0173デフォルトの名無しさん
NGNG0174デフォルトの名無しさん
NGNG0175デフォルトの名無しさん
NGNG0176デフォルトの名無しさん
NGNG0177デフォルトの名無しさん
NGNGどうしたらいいですか?
背景色を GetSysColor(COLOR_BTNFACE) に置き換えたいのです。
0178デフォルトの名無しさん
NGNG0179デフォルトの名無しさん
NGNGつーかここで〜するAPIはなんですか?とか言ってるヤツでVC使いなら
インテリセンスでそれらしいの探せ
0180デフォルトの名無しさん
NGNGエクスプローラの左フォルダーツリーから呼び出された場合と
右のファイルリストから呼び出された場合で追加可能アイテム数がかなり違います。
(左約3万、右約140)
この差はどこから来るのでしょうか?
また右の場合の項目数を増やす事は出来ませんでしょうか?
0181デフォルトの名無しさん
NGNGmsdnの目次のほうがいいとおもいます
0182デフォルトの名無しさん
NGNG今は、SetDIBits()では?
0183デフォルトの名無しさん
NGNGCP_ACPとCP_OEMCPを使っている例が多いのですが、
どっちを使うべきなんでしょうか?差がわかりません。
0184デフォルトの名無しさん
NGNG0185デフォルトの名無しさん
NGNG0186デフォルトの名無しさん
NGNG0187デフォルトの名無しさん
NGNG932決め打ちだと日本語環境以外で(使うかはともかく)不具合出ませんか?
0188デフォルトの名無しさん
NGNGシステムのコードページを得て変換するのが正解のような。
0189デフォルトの名無しさん
NGNG0190デフォルトの名無しさん
NGNG0191デフォルトの名無しさん
NGNG数値とかの場合はどうしてるの?
0192デフォルトの名無しさん
NGNG文字列で取って、自分で扱ってる多倍長整数とかその他の形式に、自分で変換すればいいだけでは?
0193デフォルトの名無しさん
NGNG_WIN32_WINNT>=0x400でないと定義されないのはなぜじゃ!
0194デフォルトの名無しさん
NGNG0195デフォルトの名無しさん
NGNG0196デフォルトの名無しさん
NGNG文字列をdouble型に変換するのってどうするんでしたっけ?
0197196
NGNG0198デフォルトの名無しさん
NGNGstrtodだ
どっちにしろAPIではないがな
0199デフォルトの名無しさん
NGNG0200デフォルトの名無しさん
NGNG0201デフォルトの名無しさん
NGNGCreatePipeとか使って標準入出力を他のHANDLEにパイプすることには成功したんですが、
どうもリダイレクトとかパイプとか使用してると、挙動がかわるコマンドってあるじゃないですか?(lsとか)
この挙動がパイプつなげる前と変わらないようにしたいんですが、なんか方法ってありますかね?
正確にはわかりませんが、自分の憶測だと、そういうコマンドって、
内部で、出力先を調べて、結果を変えてると思うんですが、
その調べるときの出力先をダマして教えてしまうような方法がないかなーと思うんですが…
0202デフォルトの名無しさん
NGNGていうかANSI以前では引数だの戻り値だのにfloatだのcharだのといった
型は使えなかったんじゃないか確か
なんでもint, long, double, ポインタ
0203デフォルトの名無しさん
NGNGむり。
0204デフォルトの名無しさん
NGNGUnixなら、psuedo ttyを使ってそういう類の仕事をやることがある
はず
tclでかかれたexpectとかはそーゆー目的のツール
のはず
0205デフォルトの名無しさん
NGNG引数は、
float → double
char,short → int
というルールだけど、
戻り値はなんでもアリだった気が。
0206デフォルトの名無しさん
NGNG原理的にはできるとおもう
プロトタイプなんてモンも無かったし引数はとりあえずスタックに
プッシュするだけだから、ああなってただけだと思うから
でも、実際にfloatやchar戻してる例なんてみたことないよ
0207デフォルトの名無しさん
NGNGリダイレクトさせるんじゃなくて、
フッカ潜り込ませて、そのプロセスのコンソール入出力をぶん取る方が確実と思うが。
0208201
NGNGフッカというとHookerのことですか?
フックというとSetWindowsHookExぐらいしかしらないんですが
どんな感じでやるんでしょう?
0209デフォルトの名無しさん
NGNGそのITEMIDLISTの親のIShellFolderから完全なITEMIDLISTを得る方法はないでしょうか?
0210デフォルトの名無しさん
NGNG子ウィンドウだけを破棄する方法はありますか?
子ウィンドウはWS_EX_NOPARENTNOTIFYを指定してます.子ウィンドウを破棄する前に
SetParent(hChild,HWND_DESKTOP)として親を変えてもだめでした
0211デフォルトの名無しさん
NGNG0212210
NGNG子ウィンドウのWndProcのWM_DESTROYの中でも
PostQuitMessage(0)していました。。。。。。
0213デフォルトの名無しさん
NGNG自力で結合させる以外の方法はなかったはず
これの下の方
ttp://www.kab-studio.biz/Programing/Codian/ShellExtension/06.html
0214デフォルトの名無しさん
NGNGインデックスを取得するだけのAPIってないでしょうか?
シェル拡張でIExtractIconを利用してるんですが、そこで上書きする
アイコンのロードに失敗した時に、元の奴を表示したいのです。
ExtractAssociatedIconだと、その中でさらにIExtractIconのメンバ関数を
呼び出してStackOverFlowになってしまうみたいで、Explorerが落ちちゃいます。
やっぱり、レジストリを検索するしかないのでしょうか?
0215デフォルトの名無しさん
NGNGそうですね。
シェルエクステンションを使うということは、しごく当然ですが、シェルからの取得も
そのエクステンションを使用するわけなので、、、
もっとも、アイコンのロードに失敗するという状況自体がおかしいという考えもありますが。
0216デフォルトの名無しさん
NGNG漏れと同じ事をしようとしている希ガス・・・
0217デフォルトの名無しさん
NGNGレスありがとうございます。
> アイコンのロードに失敗するという(略
上書きするアイコンは、外部ファイルを利用してアイコンをロードするって
ことをやってるので、一応失敗する可能性もあるかな〜と思いまして。
前の書き込み後、色々調べてSHGetFileInfo()でSHGFI_ICONLOCATIONを
指定する方法も試してみたんですが、バグなのか呼び出し方に問題が
あるのか、どうやっても取得できませんでした。
他に方法もなさそうなので、レジストリ検索にしときます…(´・ω・`)
0218デフォルトの名無しさん
NGNG拡張子がLnkやUrlで判別するしかない?
0219デフォルトの名無しさん
NGNGIShellLink Interfaceを使う
0220デフォルトの名無しさん
NGNGC言語でWindowsを再起動させるプログラムを作りたいんですけどどうすればいいですか?
0221デフォルトの名無しさん
NGNGそのプロセスのコールバック関数から
ウィンドウの一番下にメモかリストボックスを追加して
その上にリサイズ用のバー(スプリッター)を追加したいのですが、
そのようなことは可能でしょうか。
また、それを行う場合どういった方法でやればいいのでしょうか。
0222デフォルトの名無しさん
NGNGExitWindowsEx
0223デフォルトの名無しさん
NGNGよくわからんのだが、既存のウィンドウの下部に外部のプログラムからそういうウィンドウをつけたい、ということかな。
0224デフォルトの名無しさん
NGNG>既存のウィンドウの下部にそういうウィンドウをつけたい
これはその通りです。
>外部のプログラムから
プラグインのようなものから、ということです。
プロセス・スレッド的にはウィンドウのメッセージループと(たぶん)同一です。
0225デフォルトの名無しさん
NGNG(数が状況によって変化するようなコントロール)
を作成するプロシージャがある場合に
また別のウィンドウのプロシージャで
任意のエディットに入力された文字列を受け取るには
どうしたらいいでしょうか?
外部のHWND型配列にそのエディットのハンドルを格納しておいて
そのハンドルを使ってGetWindowTextで呼び出すという
安っぽい方法なら思いつくのですが・・外部変数使ってるし・・
外部変数に頼らないまたは一般的な方法ありましたら教えてください
おねがいします。
0226デフォルトの名無しさん
NGNG俺なら共用データクラスを作るが。MFCならCDocumentにつっこむ。
HWNDではなく、文字列そのものを。
てか、スレ違い。
0227デフォルトの名無しさん
NGNG共有データクラスってなんですか?
ググッってみたのですがヒットしませんでした
ちなみにMFCもまだ
使えませんT T
Win32APIもCも猫やら本やらで勉強中の身で。
てかスレ違いですか!
このような問題に対処する方法は
Win32APIに限られたものじゃないから ってことですか?
0228デフォルトの名無しさん
NGNG文字列を受け取りたいエディットコントロールのIDがわかるなら
GetDlgItemText()を使えばHWNDの配列なんて必要ないよ。
0229225
NGNGなんだか前よりずっと綺麗にまとまりそうです
そこでまたまた初心者質問で申し訳ないのですが
親ウィンドウのWM_COMMAND以外にmenuIDが参照されるタイミングを
知らないので思ったのですが
兄弟ウィンドウの中でかぶらなければ
menuIDはどんな値にしてしまってもいいんでしょうか
多くのコントロールを必要とするプログラムの場合
その値を普通はどうやって決めるのでしょうか
0230デフォルトの名無しさん
NGNG0231225
NGNGありがとうございました
0232デフォルトの名無しさん
NGNG0233デフォルトの名無しさん
NGNG0234デフォルトの名無しさん
NGNG0235デフォルトの名無しさん
NGNG0236デフォルトの名無しさん
NGNG0237デフォルトの名無しさん
NGNG0238デフォルトの名無しさん
NGNG0239デフォルトの名無しさん
NGNG自分は進んでいると思っているキチガイの中の人か?
0240デフォルトの名無しさん
NGNG0241デフォルトの名無しさん
NGNG0242デフォルトの名無しさん
NGNGMFCを覚えてからは、こっちの方が楽で良いな。
でも旧来のやり方が好きな人もいるでしょうし、人それぞれで。
Win32API直PGを経験してる方が、MFCなどに移ってもなにかと有利だと思う。
0243236
NGNG0244デフォルトの名無しさん
NGNG0245236
NGNG0246デフォルトの名無しさん
NGNG0247デフォルトの名無しさん
NGNGウチの会社にも居るんだけど何とかして欲しい…
0248デフォルトの名無しさん
NGNG0249デフォルトの名無しさん
NGNGどうにもなりません。
無能なヤツは自分が無能であることに気づく能力も
自分の無能さを認める能力もありませんので。
0250デフォルトの名無しさん
NGNG任意のタイミングで、フォーカスされているコントロールの HWND を
取得したいのですが、これは可能でしょうか?
既存のプログラム(ソース無し)を外部から操作したいと考えているため、
フォーカスイベント発生時にそのコントロールの HWND をグローバル変数に
保存しておくという方法が使えません。
素人ながら調べているのですが解決策へたどりつけていません。
可能か/不可能か、可能ならば参考情報へのポインタを教えていただけ
ませんでしょうか。宜しくお願いいたします。
0251デフォルトの名無しさん
NGNG0252デフォルトの名無しさん
NGNG0253デフォルトの名無しさん
NGNGGetForegroundWindow()って違うかな?
今MSDNで調べて知ったばっかりだから自信ない。
0254デフォルトの名無しさん
NGNGいろいろ試したのですが、GetFocus だと「トップウィンドウ」レベルの
HWND しか取得することができませんでした。
なにか妙案がありますでしょうか?
もう少し書くと ListView/TreeView コントロールが複数あり、その中のどの
ListView/TreeView コントロールがフォーカスされているか、もしくは
いずれもフォーカスされていないかを調べたいと試行錯誤しています。
0255デフォルトの名無しさん
NGNGEnumChildWindowsで列挙してGetFocusと比較する。
ただし君の言っている仕様が曖昧なので、これだけでは満たしていない可能性もあるが...。
0256デフォルトの名無しさん
NGNGGetWindowThreadProccessIDでスレッドID取得して、
AttachThreadInput すれば、子WNDまで調べられる。
0257デフォルトの名無しさん
NGNGGetFocus と解をいただいたので、再度試行錯誤したところ、
GetFocus で目的の HWND を取得することができました。
今まで失敗していたのは、フォーカスのある HWND を調べようと
している手続きの中で、自分でフォーカスのある HWND を変更して
しまっていたためでした。。
こんな単純なことにお手を煩わせてしまい申し訳ございませんでした。
0258251=252
NGNG0259デフォルトの名無しさん
NGNG特定のアプリひとつ(電卓一個限定とか)に対するフックでもdll要りますか?
0260デフォルトの名無しさん
NGNG0261デフォルトの名無しさん
NGNGGetWindowText だと取れないことがあるのは仕様ですか?
0262デフォルトの名無しさん
NGNG0263デフォルトの名無しさん
NGNG0264デフォルトの名無しさん
NGNG0265デフォルトの名無しさん
NGNG同じプロセスで?
0266デフォルトの名無しさん
NGNGもし違うプロセスなら、>>256調べてみ。
0267261
NGNGEnumChildWindows、WindowFromPoint、spy++のプロパティのどれで取得したhWndでも
WM_GETTEXTだと取得できて、GetWindowTextだと取れませんでした。
ダイアログのEditコントロールで再現性が高いです。
0268デフォルトの名無しさん
NGNG>The GetWindowText function copies the text of the specified window's title bar (if it has one) into a buffer.
>If the specified window is a control, the text of the control is copied.
>However, GetWindowText cannot retrieve the text of a control in another application.
0269デフォルトの名無しさん
NGNGRemarks
>To retrieve the text of a control in another process,
>send a WM_GETTEXT message directly instead of calling GetWindowText.
0270デフォルトの名無しさん
NGNG0271216
NGNGRemarks
This function causes a WM_GETTEXT message to be sent to the specified window or control.
漏れのはここまでしか書いてない…
素直にmsdn最新版入れてきます…スマソ
0272デフォルトの名無しさん
NGNG> というか、なぜリファレンスを当たらないのか理解に苦しむ。
∵仕様だから
0273デフォルトの名無しさん
NGNGVC++をコンパイラに使って、簡単な実験プログラムをMFC使用せずに
ネットのソースや猫でもわかるを見て試行錯誤してるのですが。
現在作ろうとしてるのが初めてDialogをメインでCreateWindowなどを使わない方法なのですが、
どうもDialogリソースにクラス名を入れると起動後すぐに終了したり、
WM_KEYUPなどのウィンドウメッセージが反応しないなどの壁にぶつかってます。
特に後者はどのようにしたら解決出来るでしょうか?WM_COMMANDなどは正常に反応します。
Window生成したソースだとちゃんとWM_KEYUPなど動いてくれます。
いまいち生成されたWindowとリソースエディタで作ったDialogの違いが分かってないようです。
Dialogを、この生成されたWindowのようには扱えないのでしょうか。
どうかご教授よろしくお願いします。
0274デフォルトの名無しさん
NGNG0275デフォルトの名無しさん
NGNGフォーカス持たないのに。
0276デフォルトの名無しさん
NGNGhttp://www.amazon.co.jp/exec/obidos/ASIN/4797325453/
“ゲームプログラミング”と銘打っているが、実はれっきとした
Win32 API入門書。著者は↓の作者。
http://black.sakura.ne.jp/~third/system/winapi/win.html
0277デフォルトの名無しさん
NGNG0278デフォルトの名無しさん
NGNGできる。
0279277
NGNG0280デフォルトの名無しさん
NGNGSetWindowLong
0281273
NGNG確かに一旦Dialogから他のコントロールにフォーカスの移動(?)したらWM_KEYxxは働きませんでした。
>>276 にある「ダイアログウィンドウ」という項目の通りにウィンドウのようなクラス登録をしたら、
WM_KEYxxは初期状態では働きましたが、どれかのコントロールをクリックしてフォーカス移動(?)したら働きませんでした。
具体的には、ショートカットキーやEscで終了、、などをしたいんですが・・・。
0282デフォルトの名無しさん
NGNG2.メッセージループでコントロールのメッセージを横取り
0283273
NGNGWM_CREATEのところで、OLEの登録の後にサブクラス化をやったのですが、
どうも GetDlgItem 関数でのハンドルの取得が上手く行かないようです。(NULLが返って来る)
どのコントロールを指摘してもダメだったのですが、ダイアログウィンドウにすると、
別の関数でやるか、あるいは最初から一つずつCreateWindowでコントロールの生成しなければならないんでしょうか?
ダイアログウィンドウではなく、そのままにして WM_INITDIALOGのところでサブクラス化したら上手く行きました。
これで、コントロール一つずつサブクラス化すれば WM_KEYxx は拾えそうですが、結構長くなってしまいそうです。
0284273
NGNGresource.h を見て、for文で一つずつサブクラス化してみたりしたのですが、
どうもリストボックス以外をサブクラス化したり、その順序によっては、
それぞれのコントロールが消えたり無効状態になってしまいます。。。
例えばリストボックス→その他のコントロールにすると、リストボックスが灰色になります。
ただし、クリックしてWM_KEYxxメッセージはちゃんと受け取るようです。
0285デフォルトの名無しさん
NGNG0286デフォルトの名無しさん
NGNGはいっ! 曲げたスプーンを元に戻すことが出来ます。
0287デフォルトの名無しさん
NGNG何か根本的なコーディングミスを犯している気がする。
0288デフォルトの名無しさん
NGNGすげー さすがWin32APIスレ…
0289デフォルトの名無しさん
NGNGVBアプリだとみんな同じクラス名になってしまうようですが。
ちなみにVBはV6です。
0290デフォルトの名無しさん
NGNGみんなおなじクラスでも問題ないと思いますが?
0291デフォルトの名無しさん
NGNGどうしたらいいんですか?
おすぃえてー
0292デフォルトの名無しさん
NGNGオープンできたらファイル
0293デフォルトの名無しさん
NGNGAPIでやるなら、GetFileInformationByHandleだろうな
Cランタイムも入れると_statあたりが楽かと
0294デフォルトの名無しさん
NGNGそれダウト。
使う関数にもよるけど、CreateFileはディレクトリでもオープン可能。
0295デフォルトの名無しさん
NGNG0296デフォルトの名無しさん
NGNG0298デフォルトの名無しさん
NGNGみんなみんなサンキュー
0299デフォルトの名無しさん
NGNG0300デフォルトの名無しさん
NGNGCSIDL_DESKTOPDIRECTORY
CSIDL_STARTMENU
0301デフォルトの名無しさん
NGNG賢い俺ならPathIsDirectory()けどな
0302デフォルトの名無しさん
NGNGSHGetSpecialFolderPath()
0303デフォルトの名無しさん
NGNGあまり知られていないのな
0304デフォルトの名無しさん
NGNG使えないかもしれないとかいろいろ考える。
0305デフォルトの名無しさん
NGNGIE4とかが必要だから、敬遠しててそれっきりだな。
0306デフォルトの名無しさん
NGNG0307デフォルトの名無しさん
NGNG0308デフォルトの名無しさん
NGNG0309デフォルトの名無しさん
NGNG0310デフォルトの名無しさん
NGNG0311デフォルトの名無しさん
NGNG0312デフォルトの名無しさん
NGNG0313デフォルトの名無しさん
NGNGシステムロケール固定だけど。
0314デフォルトの名無しさん
NGNG0315314
NGNG0316デフォルトの名無しさん
NGNG0317デフォルトの名無しさん
NGNG画像を何十個と表示したい場合、初期化関数などを別に作って、WndProcの中
のWM_CREATEなどでは、初期化関数を呼び出すだけにしたいのですが、
初期化関数で作ったビットマップハンドルを、自作描画関数で使おうと思うと
するとうまくいきません。
みなさんはどうしてるのでしょうか?
やはりグローバル変数を使用するしかないのでしょうか。
いろいろなハンドルがごちゃごちゃになって、手に負えません。。。
C言語で質問に上がろうと思いましたが、一応ウインドウの話題だと思い
こちらに質問させていただきました。
0318デフォルトの名無しさん
NGNGうまくいかないとは、いったいどのような結果になり、
それがどのように問題なのかという、、
一番重要な部分を書かずに質問するのは何故ですか?
0319デフォルトの名無しさん
NGNG初心者だから。
知らない人間は何が悪いかさえわからないので
質問するときは、自分で判断せずにあらゆる情報を書き込むべきだと思う。
0320デフォルトの名無しさん
NGNG0321デフォルトの名無しさん
NGNG0322デフォルトの名無しさん
NGNGWndProcの中で同じ種類のハンドルだけを集めて配列または構造体として定義して、
各関数へはその配列または構造体へのポインタを渡すようにすればいいのでは?
この場合、ビットマップハンドルってことだから…
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
static HBITMAP hBitmap[N_BITMAPS];
…
switch (uMsg) {
case WM_CREATE:
InitMyBitmaps(hBitmap);
…
}
…
}
ってな具合。
質問の意図とは的外れの答えだったらスマソ。
0323デフォルトの名無しさん
NGNGウィンドウ内の全部のコントロールの描画が終わったことって
どうやったらわかりますか?
wm_createの時点だとまだ形が無くて、
wm_drawitemだと一つ一つかいてる状態で・・・
終わったときにおくられるメッセージとかあったら
教えてください
0324デフォルトの名無しさん
NGNGいや名前も要る
0325デフォルトの名無しさん
NGNG0326デフォルトの名無しさん
NGNG描画の終わりって何よ?
0327デフォルトの名無しさん
NGNG言ってるつもりなんですが
そういうのはメッセージで来ませんか?
0328デフォルトの名無しさん
NGNG0329デフォルトの名無しさん
NGNGどのタイミングで取り込めばいいんですか?
0330デフォルトの名無しさん
NGNG0331デフォルトの名無しさん
NGNGたぶん描画が終わってます。
0332デフォルトの名無しさん
NGNG残念な結果です。
0333デフォルトの名無しさん
NGNG0334デフォルトの名無しさん
NGNG0335デフォルトの名無しさん
NGNG自前でビットマップに描画してやればいいんじゃね?
自動でないのなら、キーボードの入力などをトリガーにすればいいと思うけど。
0336デフォルトの名無しさん
NGNGオーナードローで描画するってことですか?
それとも、createwindowでつくったやつらを
自前でビットマップに描画することとかできるんですか?
0337デフォルトの名無しさん
NGNGテキスト(またはアイコン)の左側にちょこっとスペースを空けることって
簡単にできないでしょうか?
何にもしないと、ツリービューの左端にくっついた感じになるんですが。
0338デフォルトの名無しさん
NGNGこいつで左端をずらしてやればいい。
0339デフォルトの名無しさん
NGNG0340デフォルトの名無しさん
NGNG付きの行ができますが、このチェックボックスをオン・オフしたときに
なんらかの反応をさせたい(コールバックなど)場合はどうすれば
よろしいでしょうか?
ご教授お願いします
0341デフォルトの名無しさん
NGNG0342デフォルトの名無しさん
NGNGWM_DRAWITEMが発行されてるのか見てみたら
createwindowしたのとは逆順だったんですが、
(最初にcreatewindowしたやつが最後にwm_drawitemメッセージ出されてた)
これって絶対そうなんですか?
それともたまたま?
0343デフォルトの名無しさん
NGNGたまたま
0344デフォルトの名無しさん
NGNGきんたま
0345デフォルトの名無しさん
NGNG0346デフォルトの名無しさん
NGNG0347デフォルトの名無しさん
NGNGユーザが「読み込み中止」ボタンを押したら、読み込み処理を中断する方法はあるでしょうか?
0348347
NGNG想定しています。
0349340
NGNGヒントありがとうございます
そのまわりを調べてテスト実装してみたのですが、
そもそもチェックボックスのオン、オフ操作でNotifyメッセージにも飛んでいないようです。
何か最初に設定しておくべきフラグとかあるのでしょうか?
0350デフォルトの名無しさん
NGNGXPでは返値が0で98seだと260になりました。
これってどういうことですか?
0351デフォルトの名無しさん
NGNGorz
0352デフォルトの名無しさん
NGNG1バイトはWM_CHARで、wParamに文字が入っているのでできるのですが。
0353デフォルトの名無しさん
NGNG0354352
NGNGそう意味ではないです。wParamはたぶん4バイトだと思います。
1バイト文字を押した時、WM_CHARメッセージが発行され、
wParamに文字が入りますが、
2バイト文字を押してもWM_CHARは発行されず、
当然wParamを調べる意味はありません。
WM_WIDECHARみたいなメッセージを探しても無いですし。
0355デフォルトの名無しさん
NGNG0356353
NGNG0357352
NGNGWM_IME_CHARは文字列?のですかね。
調べたのですが、難しくて分かりませんでした。
ただ、調べているとき、WM_KEYDOWN + VK_... で出来ることが分かりました。
お二方どうもありがとうございました。
0359347
NGNGINTERNET_STATUS_HANDLE_CREATED
Used by InternetConnect to indicate it has created the new handle.
This lets the application call InternetCloseHandle from another thread,
if the connect is taking too long. The lpvStatusInformation parameter
contains the address of an INTERNET_ASYNC_RESULT structure.
という記述があり、ハンドルを別スレッドからクローズしてしまえばいけるんじゃないかと予想。
ので、そこらへんを試してみます。でわ。
0360デフォルトの名無しさん
NGNGメッセージキューってスレッドセーフなのでしょうか?
複数のスレッドから特定のウィンドウにPostMessageするプログラムを書いてて思いました。
0361デフォルトの名無しさん
NGNGだからキューが一杯だと PostMessage は失敗する。
送る方はね。
受ける方はスレッド単位にキュー持ってるので、
そもそも他のスレッドのキューは見れない。
0362デフォルトの名無しさん
NGNGレスありがとうございます。
PostMessageの戻り値だけ意識すればよいので、楽でよかったです。
0363デフォルトの名無しさん
NGNGUNICODEが定義されていればWCHARで、
そうでなければcharでtypedefされていますが
ソースファイル上、windows.hより上には大抵何も記述していないし
何もインクルードしていないはずですが
コンパイル時にプリプロセス処理される時
このUNICODEというマクロはどこで定義されているんでしょうか?
0364デフォルトの名無しさん
NGNG0365362
NGNGぐぐったら自己解決しました
コンパイラの事前定義マクロだったんすね
0366デフォルトの名無しさん
NGNG0367デフォルトの名無しさん
NGNGヒントありがとうございます
そのまわりを調べてテスト実装してみたのですが、
そもそもチェックボックスのオン、オフ操作でNotifyメッセージにも飛んでいないようです。
何か最初に設定しておくべきフラグとかあるのでしょうか?
0368デフォルトの名無しさん
NGNGあるスレッド( たとえば、GetCurrentThread で取得したスレッドハンドル が指しているスレッド)が、プライマリスレッドかどうかを知るにはどの API を利用すればいいでしょう?
0369デフォルトの名無しさん
NGNG設定したりするにはどうすればいいのでしょうか?
SystemParametersInfo関数の、SPI_GETSERIALKEYSや、SPI_SETSERIALKEYSは、
WindowsNT/2000では未サポートとMSDNに書いてあったのですが、コントロールパネル
からシリアルキーデバイスの設定を行う事は可能なので、、何か別の手段があると思うん
ですが…
0370デフォルトの名無しさん
NGNGそのスレッドに結び付けられたWindowハンドルを取得してみれば判断できると思うが。
0371370
NGNGプロセスのスレッド一覧を調べて、1番最初のだったら、でも判断できるかな。
0372368
NGNGCreateToolhelp32Snapshot で、スレッドの一覧を取得し、
現在のプロセスで検索してみました。
確かに、先頭にプライマリスレッドがきます。
ありがとうございます。
ところで、実験していて気がついたのですが、
::GetCurrentThread() でスレッドのハンドルを取得すると、常に -2 が
帰ってきているようなのですが、これはなぜなのでしょう?
0373デフォルトの名無しさん
NGNGMSDN嫁ばわかるが、定数が返るそうだ。
0374デフォルトの名無しさん
NGNGあの文面を見ると、おそらくAPIとしては無くなってるんじゃない?
直接レジストリ操作しか無い気がする。
0375デフォルトの名無しさん
NGNGGetLastErrorをすると、8が返ってきて
で、8の意味が記憶領域が足りないってことみたいなのに
ちゃんと画像はうつるのは何で?
このエラーはどういうことなの?
0376デフォルトの名無しさん
NGNGなにー
コントロールパネルの[ユーザー補助]-[全般]-[シリアルキーデバイス]の
設定をちまちま弄って[適用]ボタンを押しても再起動を要求されないから
レジストリじゃないと思ったんだけどな(´・ω・`)
レジストリを比較してみるよ…(´・ω・`)
0377368
NGNG確かに書いてありますね。見落としていました。
擬似ハンドルを API に渡すと、ハンドルとして理解されるという部分は面白いですね。
ということは、プライマリスレッドで取得した擬似ハンドルをグローバル変数に保存しておいて、
ワーカースレッドからそれを参照すれば、その擬似ハンドルはワーカースレッドとして解釈されるわけか。
知らないとエライ目にあいそうだ。
0378デフォルトの名無しさん
NGNGMSDN引けば分かるが、"全てのAPIが成功時にSetLastError(0)を呼ぶわけではない"から。
基本的にAPIが失敗したときに情報を伝えるためなのがSetLastError/GetLastError。
0379デフォルトの名無しさん
NGNGじゃあ、あまり神経質に気にすることでもないってことですね
0380デフォルトの名無しさん
NGNG0381デフォルトの名無しさん
NGNG不審に思ってAPI呼び出し直前にSetLastError(0)を入れたら案の定エラーコードが0になって
結局そのAPIがエラーコードセットしてないだけじゃねぇか、ってのはあった気がするな。
あとまぁ、Win9xで16bit側に実体があるAPIはそもそもエラーコードをセットしないとか。
0382デフォルトの名無しさん
NGNG私はC言語を少しかじった程度で、Win32APIでダイヤログベースのアプリを勉強中です。
ダイヤログのテキストBOX(?)に、例えば、LANカードのデバイスマネージャーのリソースの
一つであるI/Oポートアドレスを表示させたいと思っています。
しかし、レジストリエディタで探してもI/Oポートアドレスが何処にあるのか分かりません。
RegOpenKeyEx等で取得出来るものでしょうか?
何かの本に、Win95・98系はiniファイルに格納され、NT・2000・XPはレジストリに
格納されるとか書いてあったような気がしますが自信がありません。
どなたか初心者の私でも分かるように、アドバイスをお願いします。
0383デフォルトの名無しさん
NGNGFTPに何個ファイルがあって、フォルダ構造もどうなっているか分からない
状態で、1ファイルずつすべてのファイルをダウンロードしていくことって
できますか?
0384デフォルトの名無しさん
NGNGそのようにプログラミングすればできます。
383じゃないが糞レスするくらいなら書き込むな。
0386デフォルトの名無しさん
NGNG384じゃないが可能か不可能かを聞いてるんだろ?
0387デフォルトの名無しさん
NGNG0388デフォルトの名無しさん
NGNGFtpFindFirstFile()とかまんまな名前のAPIがあるんでそれでいける。
0389デフォルトの名無しさん
NGNGとりあえずFTPについて勉強し直せ。
0390デフォルトの名無しさん
NGNG0391デフォルトの名無しさん
NGNGちなみに388の方法でも必ず出来るとは限らないわけだが、
出来ない場合にはどうやっても出来ないのでしょうがない。
0392デフォルトの名無しさん
NGNGここいろんなところで紹介されてるけど、なんかすごく読みにくいな。
プログラムソースを全部示して、そこにコメント文を挿入すればいいのに
余計な親切で、プログラムをぶちぎっていろいろ書き込んでるからプログラムの
全体構成とかつながりがわかりづらい。
0393デフォルトの名無しさん
NGNG0394デフォルトの名無しさん
NGNG0395デフォルトの名無しさん
NGNGこっちにすれば?
http://black.sakura.ne.jp/~third/system/winapi/win.html
0396デフォルトの名無しさん
NGNG黄色いポップアップヘルプ?(htmlでいうimg alt="hogehoge"のような)
を出すものがあるんですが、こういうの出すにはどうすればいいんでしょうか?
WinHelp()を使うよーなそうでもないようなことをちらほら見るのですがいまいちわからず…。
0397デフォルトの名無しさん
NGNG0398デフォルトの名無しさん
NGNG・メッセージを取得するまで内部でループ(待機)しつづけるのか
・メッセージが無ければ、終了してリターンするのか
どちらで実装されているんでしょうか?
0399デフォルトの名無しさん
NGNG0400デフォルトの名無しさん
NGNG要するに上のレスなら前者が近いということですね
0401デフォルトの名無しさん
NGNG寝てるのとループでアイドルしてるのとは大違い
0402デフォルトの名無しさん
NGNG困り果てているじゃないか
0403デフォルトの名無しさん
NGNG0404デフォルトの名無しさん
NGNGたとえば"ABCDE"という文字列の場合は奪ってしまい、それ以外の文字列は
本来のソフトに素直に渡すという動作です。
#1文字だけでの判断は問題ありませんが、前後数文字の組み合わせで
#比較しなければならない状況のことです
USBに付けた装置が、不定期に数種類のパターンをキー入力扱いで送ってくるので、
これを調べて上記動作をさせたかったのです。キーフックだと1文字ずつの処理に
なるため、'E'を受け取るまで"ABCD"の処理を遅延したいと考えましたが、
次に'E'が来ない場合は速やかに"ABCD"を本来のアプリに送らなければなりません。
WH_KEYBOARD意外に適切な方法がありますか?
かなりはまってます。どなたか指針だけでも示してもらえると大変助かります。
0405デフォルトの名無しさん
NGNGもれだったらさー,いろいろ文献漁るの面倒臭いんで
メッセージループの部分で
while (GetMessage(&msg) > 0) {
catch_message(&msg); // これな
DispatchMessage(&msg);
}
みてーな関数挟むんだよ。
この catch_message() の中では WM_MOUSEMOVE とか WM_NCHITTEST とか
眠てーメッセージは全部無視して,あんま見かけないメッセージだけを
リストアップするわけよ。
結構いいヒントが出てきたり,そうでなくてもマジ勉強になったりするからよー。
つーかもれもListViewの事あんまよく分かってねーです。スマソ。
0406デフォルトの名無しさん
NGNG0407デフォルトの名無しさん
NGNGその「USBに付けた装置が送ってくるキー」の間隔の最大時間を計って、
キーが入力されなかった時間が、その最大時間を超えた場合、タイムアウトとして
今まで横取りした文字を本来のアプリに送れば良いんじゃないの?
0408404
NGNGその方法だとアプリ起動中は、他のアプリへのキー入力も
微妙なタイムラグが生じるようになりますよね?
でも、装置からの受信はせいぜい1秒程度だと思う(未計測)ので
一応その方針で実装してみます。
# キー入力時にどのキーボードから入力されたかを知る方法って
# ないんですかね。。。もしあれば一発なんですが。
レスありがとうございました。
0409デフォルトの名無しさん
NGNGただでさえコモンコントロールって多機能なんだし。
0410デフォルトの名無しさん
NGNGCallNextHookExしないでreturn TRUEすることになるよな
ということは、他にKeyboardHookしているソフトが存在した場合
そのソフトへのHookを殺すことにならないか?
0411デフォルトの名無しさん
NGNGもまいSPY++の作者知ってて言ってるのか?
0412デフォルトの名無しさん
NGNG0413デフォルトの名無しさん
NGNG0414デフォルトの名無しさん
NGNGオフスクリーンサーフェイスのアドレスを取得し直接描画をしたいのですが
どのようにすればいいのでしょうか
0415デフォルトの名無しさん
NGNG特定の USB デバイスからのキー入力の処理だったら、
「Raw Input」の関数群を使えば出来そうな気がするが…
使ったこと無いけど、なんとなくそれっぽい関数があるよ。
GetRawInputDeviceInfo
GetRawInputDeviceList
GetRegisteredRawInputDevices
RegisterRawInputDevices
ただ…面倒くさそうだw
0416デフォルトの名無しさん
NGNGMSJにあったやつだな。あれはかなり参考になった。
0417デフォルトの名無しさん
NGNGSendDlgItemMessage(hWnd,IDC_COMBO,CB_ADDSTRING,0,(LPARAM)"+");
SendDlgItemMessage(hWnd,IDC_COMBO,CB_ADDSTRING,0,(LPARAM)"−");
SendDlgItemMessage(hWnd,IDC_COMBO,CB_ADDSTRING,0,(LPARAM)"×");
SendDlgItemMessage(hWnd,IDC_COMBO,CB_ADDSTRING,0,(LPARAM)"÷");
SendDlgItemMessage(hWnd,IDC_COMBO,CB_SETCURSEL,0,0);
という風に書いたんですが、うまく入りませんでした。
どうすればいいんでしょうか?
0418デフォルトの名無しさん
NGNG0419デフォルトの名無しさん
NGNG0420デフォルトの名無しさん
NGNGCreateDIBSection() のことかい?
0421デフォルトの名無しさん
NGNG>>418, >>419とは別の視点でいくと…
コンボボックスの高さのサイズを、小さく設定しすぎてる。
昔、これではまったことがある。
0422デフォルトの名無しさん
NGNG0423デフォルトの名無しさん
NGNGありがとうございます
調べて使ってみます
0424デフォルトの名無しさん
NGNGWinG を使ってみるとか。
0425デフォルトの名無しさん
NGNGググってもよく分かりませんでした
DIBSectionと同じものと考えてよいのでしょうか
0426デフォルトの名無しさん
NGNGWindowsXPでコントロールパネルから「ユーザー名の変更」を行っても、
変更前の名前が出てきます。
ログオン時に入力する名前や、スタートメニューに表示される名前は
変更後のものになっています。
しかし、環境変数 USERNAME も変更前の名前でした。
「ユーザー名の変更」に対応した名前を取得するにはどうすればいいんでしょうか?
0427デフォルトの名無しさん
NGNGアカウント名、フルネームって知ってるか?
GetUserName()で取得できるのは、アカウント名だろ。
ログオン時に入力する名前や、スタートメニューはフルネームを表示しているだけ。
0428デフォルトの名無しさん
NGNGGetUserNameExの方を使え
0430405
NGNGメッセージキューには溜まんねーんだよな?
じゃあ,405の方法はまったく中途半端じゃねーか。
spy++の方が*断然*いいなー。。。
0431デフォルトの名無しさん
NGNG0432405
NGNG0433デフォルトの名無しさん
NGNG0434405
NGNG言い訳させて言い訳。
もれの spy++ がなぜか起動しなくなちゃたわけよ。
再インスコしても,アタシ全然だめーみたいな。
だからもれいつも405みたいにやってたり
WndProcの中であんなことやこんなことしたりしてる。うへへ。
spy++の事はぜんぜん頭に無くなったね。
0435デフォルトの名無しさん
NGNGいっぺんレジストリ覗いてspi++関係の設定削除してみろ
0436426
NGNGありがとうございます。早速試してみました。
とりあえず、自分のマシン(Windows2000)で、
EXTENDED_NAME_FORMAT に列挙されている値全てに対して
GetUserNameEx()を呼び出し、結果を画面に出してみました。
すると、
SamCompatible - 'マシン名\ユーザー名'
DnsDomain - Error 87
あと全部 - Error 1332
となりました。
Error 1332 は ERROR_NONE_MAPPED らしいです。
問題のマシンでもテストするつもりですが、
ほとんどエラーになってしまったのが心配です。
テストしたソースを貼らせてもらいますんで、突っ込みあればお願いします。
0437426
NGNG#define _WIN32_WINNT 0x0500
#include <windows.h>
#include <Security.h>
struct named_format { EXTENDED_NAME_FORMAT id; char const* name; };
#define NAMED_FORMAT( Symbol ) { Name##Symbol , #Symbol }
struct named_format const formats[] = {
NAMED_FORMAT( Unknown ),NAMED_FORMAT( FullyQualifiedDN ),
NAMED_FORMAT( SamCompatible ),NAMED_FORMAT( Display ),
NAMED_FORMAT( UniqueId ),NAMED_FORMAT( Canonical ),
NAMED_FORMAT( UserPrincipal ),NAMED_FORMAT( CanonicalEx ),
NAMED_FORMAT( ServicePrincipal ),NAMED_FORMAT( DnsDomain ),
};
#define NUM_FORMATS ( sizeof( formats ) / sizeof( formats[0] ) )
#define NAME_BUFFER_SIZE 1024
int main()
{
int i;
for( i = 0 ; i < NUM_FORMATS ; ++i )
{
struct named_format const* const format = &formats[ i ];
TCHAR username[ NAME_BUFFER_SIZE ];
ULONG buffer_size = NAME_BUFFER_SIZE;
if( GetUserNameEx( format->id , username , &buffer_size ) )
printf( "%s - '%s'\n" , format->name , username );
else
printf( "%s - Error %d\n" , format->name , GetLastError() );
}
return 0;
}
0438デフォルトの名無しさん
NGNGどうやれば出来ますでしょうか?
レジストリとかから取得するんですかね?
0439デフォルトの名無しさん
NGNG0440438
NGNGえ〜と、ネットに繋いでいる時にタスクトレイのアイコンから
状態確認した時に「継続時間」と表示されているものが自分で取得したいんです。
取得できるAPI関数とかありますか?
0441デフォルトの名無しさん
NGNGてか、>>439の質問の答えがわかれば、どうすりゃいいか分かるんじゃねーか?
0443デフォルトの名無しさん
NGNGWin32_NetworkAdapterで検索してみな
0444デフォルトの名無しさん
NGNGチェック判断する方法を探しています。
とりあえず、ハンドルからキーのフルパスを取得して文字列を比較すれば
いいかなと思い RegXXX 系の API を調べてみたのですが、完全キー名を
取得できる API は見つかりませんでした。
何か良い方法は無いでしょうか?
0445デフォルトの名無しさん
NGNGハンドルを比較するという設計を見直すとか。
0446デフォルトの名無しさん
NGNG{
//LoadLibrary("user32.dll");
ATOM atom = GlobalAddAtom("null po");
if (atom != 0) GlobalDeleteAtom(atom);
return nAtom;
}
user32.dllをロードしないとGlobalAddAtomが成功しないのは仕様なのでしょうか?
0447446
NGNG○return atom;
0448デフォルトの名無しさん
NGNG0449デフォルトの名無しさん
NGNGそのコードでも行けるん??
0450デフォルトの名無しさん
NGNG亀レス、スマソ。
NetUserGetInfo()を使えばおけ。USER_INFO_10のusri10_full_nameあたり。
GetUserNameEx()だとドメイン認証していないとだめだったね。
0451デフォルトの名無しさん
NGNG一旦、半透明スタイルを設定していまうと
スタイルをもとに戻しても、重いままになってしまいます。
実際タスクマネージャーで見ると、設定前のCPU使用率より上がってしまったままになってます…
何か解決策はないでしょうか?
以下がコードです。
//半透明設定
SetWindowLong(hWnd, GWL_EXSTYLE, GetWindowLong(hWnd, GWL_EXSTYLE) | WS_EX_LAYERED);
SetLayeredWindowAttributes(hWnd, 0, 128, 2);
//半透明解除
SetLayeredWindowAttributes(hWnd, 0, 255, 2);
SetWindowLong(hWnd, GWL_EXSTYLE, GetWindowLong(hWnd, GWL_EXSTYLE) & ~WS_EX_LAYERED);
0452デフォルトの名無しさん
NGNGMSDNの例示では、解除の時にRedrawWindowを呼んでるけど、
それでもダメ?
0453デフォルトの名無しさん
NGNG0454デフォルトの名無しさん
NGNGCWnd::ModifyStyleとかでなくて?
0455デフォルトの名無しさん
NGNG0456デフォルトの名無しさん
NGNGzip圧縮のロジックを実装するだけ。
どこかからパチってきてもいいけど。
0458デフォルトの名無しさん
NGNGzlibにzip圧縮・伸張のサンプルが付いてる
0459デフォルトの名無しさん
NGNG0460デフォルトの名無しさん
NGNG0461デフォルトの名無しさん
NGNGライブラリ側でパスの分割とかするわけじゃないから問題ないんでないの?
とりあえず、トラブッたことないなあ。
心配なら「表」とかの\を含むファイル名でテストしてみればいい。
0463デフォルトの名無しさん
NGNG0464451
NGNG原因が分かりました。
裏DCバックバッファを使ってウィンドウにビットマップを描画してたのが原因らしいです。
どうやら、一旦裏DCに描画した後、表DCに転送する処理をして尚且つ、
半透明ウィンドウ設定をすると、いっきにCPU使用率が上がってしまうみたいです…
半透明設定をした場合でも、いきなり表DCに描画した場合は殆どCPU使用率は上がりませんでした。
裏画面使用時 :13〜16%
裏画面不使用時:0〜2%
みたいな感じになってました。
でも、処理の関係上どうしても裏DCを使って描画しないと
ちらついてしまうので、いきなり表には描画出来ないんですよね…
0465デフォルトの名無しさん
NGNG裏DC(DibSection)から転送かければいいと思うが。
まぁ、メインメモリの転送速度とかでいろいろ負荷はあるが。
0466デフォルトの名無しさん
NGNG現在のスレッドから、別のプロセスのスレッドに切り替わるのは
内部的にはプロセスの切り替えが行われているんですよね?
0467デフォルトの名無しさん
NGNGなんでそんなこと聞くんだろうと思ったけど、
もしかして「プロセスは切り替わるけどスレッドは切り替わらない」可
能性を考えてる?
0468デフォルトの名無しさん
NGNGいや、単純に
同一プロセス内のスレッドの切り替え⇒スレッドの切り替え(オーバーヘッド低い)
別プロセス間のスレッドの切り替え⇒プロセスの切り替え(オーバヘッド高い)
これで当ってますでしょうか?
0469デフォルトの名無しさん
NGNG同一プロセスかどうかにかかわりなく、オーバーヘッドは同じ。
0470デフォルトの名無しさん
NGNGマジっすか?
論理メモリ空間が変われば
いろいろとコンテキストに関わるデータを
レジスタに退避させたりして、忙しそうですが?
0471デフォルトの名無しさん
NGNGスレッドが切り替わる場合、スケジューラ(スレッド管理する人)というプロセスに
切り替わるわけだから、
スレッドA→スレッドB ではなく、
スレッドA→スケジューラ→スレッドB だから、
スレッドが切り替わる時にはプロセスの切り替えが常に2回発生している。
スレッドAとBのプロセスが同じかどうかなんて関係なしに、手間は一緒。
0472デフォルトの名無しさん
NGNG参考になりました。ありがとう
0473デフォルトの名無しさん
NGNGス切り替えも差はないかもね。
NetBSD や Solaris の N:M スレッドだと、同一プロセス間のスレッド
切り替えのほうが異プロセス間の切り替えより一般的に速くなります。
0474デフォルトの名無しさん
NGNGソースは以下のような感じです。
long no1,no2;
int com;
省略
GetDlgItemText(hWnd,IDC_EDIT1,(char*)no1,sizeof((char*)no1));
GetDlgItemText(hWnd,IDC_EDIT2,(char*)no2,sizeof((char*)no2));
com = SendDlgItemMessage(hWnd,IDC_COMBO,CB_GETCURSEL,0,0);
一応グーグルトかで調べてみたんですけど、大体のところはこれと同じような書き方でした。
どこがおかしいんでしょうか?
0475デフォルトの名無しさん
NGNGようソースとMSDN見ろ。
0476デフォルトの名無しさん
NGNG0477デフォルトの名無しさん
NGNG値を取得したいなら、GetDlgItemIntを使え
まぁ、それ以前の問題という説もありそうだが・・・
0478デフォルトの名無しさん
NGNG0479デフォルトの名無しさん
NGNG0480デフォルトの名無しさん
NGNG異なるアプリの論理空間のコードを読み込むには
OSがいろいろ動いて、実行環境をスイッチするわけなんですよね?
このOSが実行環境を整えるのに掛かるオーバーヘッドは、
同プロセスのスレッド切り替えと比較しても無視できるほどそんなに小さいものなんでしょうか?
>>469>>471のレスを読んでると、そう読み取れたんですが
0481デフォルトの名無しさん
NGNG0482デフォルトの名無しさん
NGNGまずプロセスにどうにかして終了してもらうようにお願いする。
(例えばGUIアプリならWM_ENDSESSIONとか)
それでもだめならTerminateProcess(素人にはオススメできない)
0483デフォルトの名無しさん
NGNGTerminateProcess()で思いっきり終了させて下さい
0484デフォルトの名無しさん
NGNG起動したプロセスのウィンドウハンドルを
つかまえてWM_CLOSE投げるとか。
0485446
NGNG動的、静的を問わず user32.dllがロードされていれば成功します。
2K SP4 と XP SP1 で試してみました。
それはさて置き
dll内で、グローバルオブジェクトのコンストラクタ中に
自身のリソースにアクセスしたいんですけど
そのdll名が変化する場合、GetModuleHandleでは無理ですよね。
VirtualQueryで取得したアドレスとかは保証されてないだろうし…
他に何か方法は無いでしょうか。
0486デフォルトの名無しさん
NGNG何を知りたいのか、何を心配してるのかようわからんが、
そもそもスレッドの切り替えに要する時間そのものが無視できるほど微々たるもの。
スレッドの切り替えを大げさに考えすぎじゃないか?
基本的には数十個のCPUレジスタのロード,ストアだけで実行環境は切り替わる。
0487デフォルトの名無しさん
NGNGNTではカーネルモードの高速スレッドスイッチングを実装してたような
0488デフォルトの名無しさん
NGNGいろいろ問題あったなぁ。
0489デフォルトの名無しさん
NGNGMFC環境か?なら↓だと思ふ。
http://www.microsoft.com/japan/msdn/library/ja/vccore/html/_core_exported_dll_function_entry_points.asp?frame=true
0490478
NGNG# ShellExecuteのハンドルでは駄目でしたが…
もうひとつの方はこんな流れでいいのでしょうか。
1. CreateProcessでプロセスを生成(hProcessを取得)
2. hProcessの持つウィンドウを検索(hWndを取得)
3. hWndに対してSendMessage(WM_ENDSESSION or WM_CLOSE)する
4. WaitForSingleObject(hProcess)で終了待ち。
それで2.はどうすればいいのでしょうか。
ウィンドウのキャプションで検索するのは不確実ですよね。
0491デフォルトの名無しさん
NGNG頻繁にスレッド切り替えが発生するような設計なら無視できなくなるかも。
というか、その設計自体に問題がありそうだが。
0492デフォルトの名無しさん
NGNGShellExecuteではなくShellExecuteExを使う
0493デフォルトの名無しさん
NGNGEnumWindows()とGetWindowThreadProcessId()の組み合わせでどうじゃろ
0494デフォルトの名無しさん
NGNGFiber を使いませう。
0496480
NGNGどうも、マルチプロセス環境のプロセス切り替えと
マルチスレッド環境のプロセス切り替えとを混同してたっぽい
0497デフォルトの名無しさん
NGNGお前がどうやって成功しないと判断したのかかけ
0498デフォルトの名無しさん
NGNGとりあえずGetLastErrorしてみたら?
0499デフォルトの名無しさん
NGNGDLLのリソース取得するのに自分自身のHMODULEが必要だってんなら
DllMainの引数にあるやつどっかにとっとけば?
0500446 & 485
NGNGGlobalAddAtomとGetLastErrorの戻り値を MessageBoxで表示したときと
OutputDebugStringで表示したときと違ったから。
確かに user32.dllと決めつるのはマズイですね。
>>499
グローバルなオブジェクトのコンストラクタは
DllMainより前に呼ばれるんですよ。
0501デフォルトの名無しさん
NGNGんじゃ素直に初期化をDllMainでやれ。
0502478
NGNGせっかくなのでソースを貼っておきます。
CreateProcessやShellExecuteで作成したプロセスを終了させるサンプル
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1086258254&res=2
0503デフォルトの名無しさん
NGNGAVI以外の形式の場合の取り出し方がわかりません。
OSにインストールされているコーデックを利用出来れば
取り出せるようになると思うのですが、
自作アプリからそれらのコーデックはどうやったら呼び出せるのでしょうか?
0504デフォルトの名無しさん
NGNGざっと見て気になったところ
・WM_CLOSEでメインウィンドウが閉じられたからといってプロセスが終了するとは限らない。
WM_QUERYENDSESSION/WM_ENDSESSION(Windows終了/ログオフ時のメッセージ)
のほうがより確実だと思う。
・対象プロセスが死んでると道連れになるからWaitForでINFINITE待機はやめれ
0505デフォルトの名無しさん
NGNGDirectShowでできるんでない?
0506デフォルトの名無しさん
NGNG>グローバルなオブジェクトのコンストラクタは
>DllMainより前に呼ばれるんですよ。
その DllMain は偽者ですよ。
リンカの設定で本物が指定してあるはずなんで、
それを書き換えるなりしてください。
0507デフォルトの名無しさん
NGNGttp://www.tech-archive.net/Archive/Development/microsoft.public.win32.programmer.kernel/2004-03/0851.html
0508デフォルトの名無しさん
NGNGThreadのHANDLEもCloseしておけよ。
0509503
NGNGレスありがとうございます。
DirectShowで検索してDXSDKのGrabBitmapsにたどり着きました。
これがやりたい事そのものみたいです。
しかしこのサンプルを実行してみると、
hr = pGraph->Connect( pSourcePin, pGrabPin );
の行で必ずVFW_S_PARTIAL_RENDERが戻ってきており、
またcallbackも呼ばれません。
どなたかこのエラーの回避法をご存じ有りませんでしょうか?
0510Earthquake
NGNGWindows2000サーバのActiveDirectoryを使用している環境でのフォルダリダイレクトの設定を出力したいのですが、Win32APIでそんな関数ないですか?
0511デフォルトの名無しさん
NGNG#include <wincrypt.h>
#include <stdio.h>
/*----------------------------------------------------------------------------*/
namespace hoge
{
AnsiString LonToStr(unsigned long x)
{
int r;
AnsiString tmp;
r = x % 16;
x = x / 16;
if (x > 0) {
tmp = tmp + uLongToStr(x);
}
switch (r){
case 0: tmp = tmp + "0"; break;
case 1: tmp = tmp + "1"; break;
case 2: tmp = tmp + "2"; break;
case 3: tmp = tmp + "3"; break;
case 4: tmp = tmp + "4"; break;
case 5: tmp = tmp + "5"; break;
case 6: tmp = tmp + "6"; break;
case 7: tmp = tmp + "7"; break;
case 8: tmp = tmp + "8"; break;
case 9: tmp = tmp + "9"; break;
case 10: tmp = tmp + "a"; break;
case 11: tmp = tmp + "b"; break;
0512デフォルトの名無しさん
NGNGcase 13: tmp = tmp + "d"; break;
case 14: tmp = tmp + "e"; break;
case 15: tmp = tmp + "f"; break;
}
return tmp;
}
}
int main()
{
HCRYPTPROV hProv;
HCRYPTHASH hHash;
HCRYPTKEY hKey;
BOOL bResult;
BYTE Buf[] = "今日は良い天気です";
BYTE Signature[100];
DWORD SignLen;
/* デフォルト鍵コンテナの取得 */
CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL, 0);
/* ハッシュ値の生成 */
CryptCreateHash(hProv, CALG_MD5, 0, 0, &hHash);
CryptHashData(hHash, Buf, lstrlen(Buf)+1, 0);
printf("%s\n", hoge::LonToStr(hHash));
0513デフォルトの名無しさん
NGNGCryptDestroyKey(hKey);
CryptDestroyHash(hHash);
CryptReleaseContext(hProv, 0);
}
これをコンパイルすると
C:\cpp>bcc32 hash.cpp
Borland C++ 5.6 for Win32 Copyright (c) 1993, 2002 Borland
hash.cpp:
エラー E2141 hash.cpp 8: 宣言の構文エラー
エラー E2190 hash.cpp 38: 不要な }
エラー E2316 hash.cpp 58: 'LonToStr' は 'TET_YAS' のメンバーではない(関数 main()
)
*** 3 errors in Compile ***
となっちゃうんですけど、原因がよくわかりません。教えてください。
0514デフォルトの名無しさん
NGNG単にAnsiStringが定義されていないだけでは・・・?
よくわからないけど
#include <vcl.h>
とかそれっぽいのをincludeすればいいんじゃない?
0515451
NGNGどうも、レス遅くなってすみません!
言われましたとうりに、UpdateLayeredWindow()を使う事で
描画効率が格段に良くなりました!!
どうやら、自分で色々調べてみた結果
更新頻度の多いアプリでは、SetLayeredWindowAttributes()より
UpdateLayeredWindow()を使う方が推奨されているようですね。
本当にありがとうございました!!
0516デフォルトの名無しさん
NGNGその中から C++ 例外を創出するような以下のコードは危険でしょうか?
// カスタム例外ハンドラ
void _OnW32SEH( UINT code, _EXCEPTION_POINTERS * ep )
{
_EXCEPTION_RECORD * er = ep->ExceptionRecord;
throw MyCppException( code, er->ExceptionInformation );
}
// カスタム例外ハンドラを有効にする
void EnableSEtoCPPException()
{
_set_se_translator( OnW32SEH );
}
0517516
NGNGMSDNみたら、OKって書いてありました。
0518デフォルトの名無しさん
NGNGMSDNまで漁ったけど漠然とし過ぎてるのか見付けられない…orz
0519デフォルトの名無しさん
NGNG0521デフォルトの名無しさん
NGNG0522デフォルトの名無しさん
NGNGしかし、2度目writeすると現在の表示されているものに追加されて表示されてしまいます。
そこで一旦HTMLを全消去したいのですが方法が分かりません。
clear()とかやってみましたが駄目でした。
0523デフォルトの名無しさん
NGNG0524デフォルトの名無しさん
NGNGIHTMLDocumentは使ったこと無い者だが、それ面白いな。
まさか、それがMS推奨の手順ではないよな??
0525デフォルトの名無しさん
NGNGとりあえず、MSDNのIHTMLDocument2::clearの項目を読め
全てはそこにある
0526デフォルトの名無しさん
NGNG特定の色:RGB(0,0,255)を指定した場合のみ変更されず困っています。
RGB(0,0,254)やRGB(0,1,255)の場合は問題ありません。
背景色の場合は問題ないようです。
どなたか原因または対処法をご存知ないでしょうか。
Win2000 VC6.0です。
0527デフォルトの名無しさん
NGNG見た目気づかないから(0,1,255)でいいんじゃね?
0528526
NGNG実行環境のみ他のPCへ移してテストしたところ
WinXP NT4では問題ありませんでしたが、
他のWin2000では再現しました。
>>527
最終的に解決しない場合はそうします。
0529デフォルトの名無しさん
NGNGウチじゃ問題ないよ。
0530デフォルトの名無しさん
NGNG0531デフォルトの名無しさん
NGNG>最終的に解決しない場合はそうします。
仕事でこの手の問題にぶつかったときに
あまり悩まずに >>527のような処置で
済ませてしまうオレはダメダメでしょうか・・・。
0532デフォルトの名無しさん
NGNGR/G/Bの原色が出ないカラーディスプレイは
たぶん存在しないだろう。
0533デフォルトの名無しさん
NGNG0534デフォルトの名無しさん
NGNG0535デフォルトの名無しさん
NGNGdamedame
0536531
NGNG0537デフォルトの名無しさん
NGNG0538デフォルトの名無しさん
NGNGttp://www.codeproject.com/atl/popupblocker2.asp
このページをCToolsMenuで検索。
でももっと簡単な方法があるような気がしないでもないが。
0539デフォルトの名無しさん
NGNG具体的にはreadfile関数などで読み込んだ文字列を
16進数で表示したいのです。
0540デフォルトの名無しさん
NGNG0541デフォルトの名無しさん
NGNG0542デフォルトの名無しさん
NGNGそれはここに書き込む前に使ってみたんですが
デバック画面出て強制終了してしまいます。他に方法ないですか?
0543デフォルトの名無しさん
NGNG0544デフォルトの名無しさん
NGNGお前のプログラムがへたれなだけ。
0545デフォルトの名無しさん
NGNGどうやらそれっぽいのでもっかいやってみます
0546デフォルトの名無しさん
NGNGちゃんとガッしとけ
0547デフォルトの名無しさん
NGNGとりあえず ガッ
0548デフォルトの名無しさん
NGNG0549545
NGNG0550デフォルトの名無しさん
NGNG0551デフォルトの名無しさん
NGNGNet系のAPI使え
0552デフォルトの名無しさん
NGNGBitBltじゃ遅くて...
0553デフォルトの名無しさん
NGNG0554デフォルトの名無しさん
NGNGWM_CLOSEなら終了するけど
WM_*ENDSESSIONは無視する奴も結構あるぞ
0555デフォルトの名無しさん
NGNGありがとうございます
やってみたところあまり変わりませんでした
逆に少し遅くなってしまいました
0556デフォルトの名無しさん
NGNGαブレンドとかしたいのなら標準関数でDDBのままやるのがいいと思う
0557デフォルトの名無しさん
NGNGまー、一応参考になるか?
0558デフォルトの名無しさん
NGNGその通りでαブレンドがしたいのですが
DDBだとどうやってピクセルデータを弄るのかが分かりません
>>557
ありがとうございます
参考にさせていただきます
0559デフォルトの名無しさん
NGNG0560デフォルトの名無しさん
NGNGありがとうございます
こんなAPIがあったとは!
αブレンドはこれで解決出来たと思います
0561デフォルトの名無しさん
NGNGウインドウプロシージャを取り替えた後、そのウインドウが
終了するときは元のプロシージャに戻す必要があるのでしょうか?
また、戻すタイミングはいつがいいのでしょうか?
WM_DESTROYに返事をするときかな
WM_CHARとかWM_KEYDOWNとかでちょっと横取りして
あとはオリジナルにまかせっぱなしをしてるくらいだから
別に元に戻さなくてもいいような…
0562デフォルトの名無しさん
NGNG0563デフォルトの名無しさん
NGNG0564デフォルトの名無しさん
NGNGOpenProcess
0565デフォルトの名無しさん
NGNGどうすればいいのかさっぱり分かりません。
プライマリスレッドの優先度を低くしても、タスクマネージャの表示は標準のままなのですが・・・
0566デフォルトの名無しさん
NGNGどういう計算になるのか知らんけど。
0567デフォルトの名無しさん
NGNG0568562
NGNGそれを使ってみたけどうまくいかないです。
タスクマネージャで表示されているプロセス(winhlp32.exe pid:3308)を指定して以下のコードを実行するとみると
for(;;){ printf("%d\n", OpenProcess(PROCESS_ALL_ACCESS, FALSE, 3308)); Sleep(1000); }
2024
2036
2012
2008
2004
2000
1996
...
こんな結果が返ってきてしまいます。使い方はこれしかないですよね。
でも、毎回結果が違うってありえないonz...
0569デフォルトの名無しさん
NGNG藻前の脳味噌のほうがありえない
ハンドルってどういうものだか分かってるのか
0570デフォルトの名無しさん
NGNG・・・とんでもないな。
OpenしたものはちゃんとCloseしろとかいう以前の問題。
0571デフォルトの名無しさん
NGNGやりとりのふいんきが昨日の>>539と似てるんだが
OpenProcessの返値を出力するために>>539の
質問をしたわけじゃないよな?
ちょっとお茶目すぎ
0572デフォルトの名無しさん
NGNGSleep(INFINITE)を実行したスレッドを復帰させるにはどうすればいいですか?
0573デフォルトの名無しさん
NGNGイベントなりセマフォと WaitForSingleObject を使え。
0574デフォルトの名無しさん
NGNGはは、ほんとくだらないねーw
やったことないけど、ResumeThread じゃ起きないかな?
0575デフォルトの名無しさん
NGNG0576デフォルトの名無しさん
NGNG0577デフォルトの名無しさん
NGNG0578デフォルトの名無しさん
NGNG0579デフォルトの名無しさん
NGNGありがとう、出来ました
0580デフォルトの名無しさん
NGNGどうやった回避できますか?
一応プロパティあたりは見たつもりなんですが、無かったようですし、、、。
0581デフォルトの名無しさん
NGNG何も無いときは真っ白なウィンドウを被せるとか
0582デフォルトの名無しさん
NGNG0583デフォルトの名無しさん
NGNG右クリックメニューを出すにはどうしたらいいですか?
0584デフォルトの名無しさん
NGNGあいにくと俺は超能力者ではないので喪前さんが言ってることが良く分からんのだが
ttp://black.sakura.ne.jp/~third/system/winapi/win78.html
ここに書いてあることで分かりそうかい?
ハズしてたらもうちょっと分かりやすく質問してくれ。
0585デフォルトの名無しさん
NGNGすいません、分かりにくいですよね。
一応、通常の右クリックメニューの出し方は分かるんですが、
MDIアプリケーションにしようとして、
クライアントウィンドウを作ると右クリックメニューが出なくなってしまうので、
どうしたらいいでしょうか? という質問です。
口下手で申し訳ない…_| ̄|○
0586デフォルトの名無しさん
NGNG0587デフォルトの名無しさん
NGNG0588デフォルトの名無しさん
NGNG0589デフォルトの名無しさん
NGNGMDICLIENTのウィンドウをサブクラス化したらできたような気がする。
0590デフォルトの名無しさん
NGNG0591デフォルトの名無しさん
NGNGKSASO
OSASK
0592デフォルトの名無しさん
NGNGH /::(/、^^, :゙i
(( (ヨb |::l,,・ ・,,{:K〉 ))
\`l:ト、(フ_ノ:」/ < ぉまぇら 全員 学習ルーム来いヤ!☆
゙、 ヾ〃 /
〉 ネヴァダ|
0593585
NGNGありがとうございます。出来ました。
ttp://black.sakura.ne.jp/~third/system/winapi/win64.html
で、ウィンドウプロシージャの切り替えが出来ることが分かったので、
"MDICLIENT"を指定したCreateWindowでhClientWindowを作った直後に、
SetWindowLong(hClientWindow, GWL_WNDPROC, (LONG)ClientWindowProc);
として、ウィンドウプロシージャを切り替えることでできました。
サンプルが必要な方は、アプロダ指定してくれれば、うpします。
それでは、本当にありがとうございました。
0594デフォルトの名無しさん
NGNG不謹慎!(@�u@ .:;)ノシ
0595デフォルトの名無しさん
NGNGWin2K+SP4で使ってたOutlook2000のデータ(メールデータ,振り分け,アカウント,他)を
別PCのWinXPでOutlook2002に移行したいんですが、どーやれば良いんでしょう?
Outlookのメニューからエクスポート/インポートを実行すれば大体は移行できるんですが...
コレをプログラム上で行いたいんです。
市販の移行ツールではこの様なコトが可能になっているので
何らかの手段はあると思うのですが自分にはさっぱり判りません。
移行する方法を知っていたらご教授をお願いします。
追加。
Outlook相談室とそこで紹介されたトコにも投げてしまったんで、
マルチになってしまいました。<(_ _)>
0596デフォルトの名無しさん
NGNGなによその顔文字は。ふざけてるの?
0597デフォルトの名無しさん
NGNG調べてもわかんねえやつがそういうツール作るなよ。
0598デフォルトの名無しさん
NGNGCOMのインターフェース調べてそういった機能があれば使う。
なければOutlookのバイナリ解析して自力でやる。
あるいはMSと契約してコンバートツールを作らせてもらう。
0599デフォルトの名無しさん
NGNG調べて判ったんなら、ココで聞かずに作ってますよ。
ヒントぐらい...くれ
0600デフォルトの名無しさん
NGNG0601デフォルトの名無しさん
NGNG0602デフォルトの名無しさん
NGNG移行するだけなら、それで良くね?
0603デフォルトの名無しさん
NGNG俺はOutlook使った事はないが Documents and Settings からファイル探して、
コピーすれば出来ると思うぞ。
0604デフォルトの名無しさん
NGNGあれば教えてください
0605デフォルトの名無しさん
NGNG普通にCreateProcessしてプロセス間通信するなりデバッグ系API使うなりするしかない。
0606デフォルトの名無しさん
NGNGそのあとの動作がなんかおかしくなるねん。
Outlook2000 → 2002だからかもしれんが
もちっと四苦八苦してみるか..._| ̄|○
0607デフォルトの名無しさん
NGNG>Win2K+SP4で使ってたOutlook2000のデータ(メールデータ,振り分け,アカウント,他)を
>別PCのWinXPでOutlook2002に移行したいんですが、どーやれば良いんでしょう?
>Outlookのメニューからエクスポート/インポートを実行すれば大体は移行できるんですが...
「大体」ってのがどの程度なのか分からないのであれだが、
大体でいいのであれば、インポートとエクスポートのマクロ書けば
いいんじゃないの? これが一番楽な気がするけど。
移行ツールなんだから、どちらのPCにもOutlookが入ってる訳でしょ?
0608デフォルトの名無しさん
NGNGありがとうございます。他の方法でがんばってみます。
0609デフォルトの名無しさん
NGNGプロファイルはMAPIで読み書きしてみるとか
0610デフォルトの名無しさん
NGNG子Windowの配置をGetDialogBaseUnit()でおこなっています。
親Windowのフォントの大きさを変える事ってできるのでしょうか?
子WindowにはSendMessage(chWnd,WM_SETFONT,(WPARAM)hFont,MAKELPARAM(TRUE,0));
でできるのですが、親にSendMessage(hWnd,WM_SETFONT,(WPARAM)hFont,MAKELPARAM(TRUE,0));
しても変わりません。何かよい方法があるのでしょうか?
宜しくお願いします。
0611デフォルトの名無しさん
NGNG何を期待してるのか知らないけど、親Windowのフォントの大きさを変えても
GetDialogBaseUnitの返す値は変わらないよ。「画面のプロパティー」で
設定されるシステムフォントのサイズを変えない限り
0612610
NGNGうう・・有難うございます。
期待していたのは、Borlandのリソースエディタで、親Dialogのフォント
の大きさを変えると、子コントロールの大きさや位置がそれなりに変わって
くれるから、同じことをやりたかったんです。
ああ・・・
0613デフォルトの名無しさん
NGNG親ウィンドウをダイアログで作るか、座標モードをキャラクタ単位にするとかどうよ。
0614デフォルトの名無しさん
NGNG0615デフォルトの名無しさん
NGNGこのマッピングファイルに変更があれば感知したいのです。
WaitForSingleObjectみたいな感じで、イベントを取るためには何を使えばいいのでしょうか?
0616デフォルトの名無しさん
NGNG別途イベントかなんかで通知するのが良いと思う。
0617610
NGNGなりがとうございます。
とりあえず、関数作りました。みてください。
void MoveChildWnd2(HWND handle,HFONT font,int x,int y,int w,int h)
{
HDC hdc = GetDC(handle);
::SelectObject(hdc,font);
int font_height;
int font_width;
TEXTMETRIC tm;
GetTextMetrics(hdc,&tm);
font_height = tm.tmHeight;
font_width = tm.tmAveCharWidth;
0618610
NGNGDeleteDC(handle,hdc);
::SendMessage(handle,WM_SETFONT,(WPARAM)font,MAKELPARAM(TRUE,0));
RECT r;
r.left = MulDiv(x,font_width,4);
r.top = MulDiv(y,font_height,8);
r.right = MulDiv(w,font_width,4);
r.bottom = MulDiv(h,font_height,8);
window_x = r.left; //ウィンドウのX位置
window_y = r.top; //ウィンドウのY位置
window_width = r.right - r.left; //ウィンドウの幅
window_height = r.bottom - r.top; //ウィンドウの高さ
::MoveWindow(handle,r.left,r.top,r.right,r.bottom,TRUE);
}
0619デフォルトの名無しさん
NGNGえーと。フォントのサイズでモニョモニョするっていうんじゃないんだ。
ダイアログは普通のウィンドウと違って、そのサイズはフォント文字のサイズを元に決められてるんだ。
試したことないからうまくいくか知らんけど、SetMapModeとかでウィンドウのサイズ単位を買えてやればいいんじゃないかと思ったのよ。
0620610
NGNG>>619
そうです。これだと解像度がかわっても子Windowの位置関係は保持されそうでしょ?
case WM_CREATE:
HWND hEdit1 = CreateWindow("EDIT",・・略
HWND hEdit2 = CreateWindow("EDIT",・・略
HWND hButton = CreateWindow("BUTTON",・・略
HFONT font = CreateFont(・・・略
MoveChildWnd2(hEdit1,font,10,20,60,30);
MoveChildWnd2(hEdit2,font,10,60,60,30);
MoveChildWnd2(hButton,font,10,100,60,30);
break;
0621デフォルトの名無しさん
NGNGうまくいきそうだけど、もし親ウィンドウのサイズも変えるのなら、
単純にそれにあわせて拡大・縮小すれば良いような気もしないでもない。
あとドロップダウンコンボボックスで不都合が出るので、もしあるなら対応すべし。
0622デフォルトの名無しさん
NGNGみんなわからないのかい?
0623デフォルトの名無しさん
NGNGじゃあね。
0624デフォルトの名無しさん
NGNG>>616 が答えてるだろ。
マップするファイルで Notify オブジェクトが作れるなら
WaitFor〜 で待てるかも知らんが、君やってみてくれる?
0625デフォルトの名無しさん
NGNG0626デフォルトの名無しさん
NGNG0627デフォルトの名無しさん
NGNG一つのウィンドウにWndProcを複数作る事は出来るのでしょうか。
ゲームを作っていて、今のやり方は
LRESULT CALLBACK WndProc(...)
{
static int gameRoutine = Title;
if(gameRoutine == Title) HandleTitle();
else if(gameRoutine == InputName) HandleInputName();
}
みたいにやっているのですが、
LRESULT CALLBACK HandleTitle(...)
LRESULT CALLBACK HandleInputName(...)
と複数作って、タイトルの処理をしている時は、
WinMainのGetMessage()でイベントを受けたときHandleTitle()に行くようにして、
名前入力のときはHandleInputName()に行くようにしたいのです。
0628デフォルトの名無しさん
NGNGそのゲーム用のWndProcで取りこぼしたメッセージを元のWndProcで処理する必要もあるだろうし。
0629デフォルトの名無しさん
NGNG無理。一つのWinProcとして登録できるのは一個だけ。
二種類扱いたいならWinProcを設定しなおすしかないが、
結局は今やってるのとあまり変わらんように思う。
if文を無くしたいだけなら関数テーブルを使ってみたら?
0630627
NGNGまったく触らずに処理できますが、そういう感じにしたいのです。
int HandleTitle()
{
while(1)
{if(oo) {afterRoutine = InputName;break;}}
}
HandleInputName()
{
while(1){}
}
>>628
PeekMessageInputという事ですか?
これはCPU率とかありますし、スレッドも難しくて分かりません。
取りこぼしについては、個々のゲームルーチンで全部書くようにします。
>>629
無理ですか。ChangeWndProc(hWnd, HandleInputName);
とかは考えてみたのですが。関数テーブルは調べて見ます。
0633デフォルトの名無しさん
NGNGWndProc変えるならSetWindowLongで
0635デフォルトの名無しさん
NGNGマウスポインタの位置ではなく(コントロールパネルの
マウスから設定できるポインタ速度に左右されず)
マウス自体の移動量を得る方法はないでしょうか?
APIでは無理なのでしょうか?
0636デフォルトの名無しさん
NGNG0637635
NGNGなるほど
レジストリの値は
同じ速度ならどのマウスデバイスも同じ値なのでしょうか?
またレジストリキーも名前はいっしょなのでしょうか?
0638デフォルトの名無しさん
NGNGマウスの設定アプレットをRegmonで監視すれば簡単に分かるはず
速度とマウス移動量の関係っつーのは一概に言えないね
経験上だけど普通のボール式PS2マウス・光学式PS2マウス・タブレットに付属してる電磁誘導マウス
同じくらい動かしても全部全く違う操作感だから。つまり、移動量を得られたところで環境に依存するから
あまり意味が無いんじゃないかと
0639デフォルトの名無しさん
NGNG0641デフォルトの名無しさん
NGNGGetMouseMovePointsEx で GMMP_USE_HIGH_RESOLUTION_POINTS 指定するのって、
マウスだと意味無いんだっけ?
0642デフォルトの名無しさん
NGNG0643デフォルトの名無しさん
NGNG2つ出現してしまうことがありますが、皆さんどうやって対策していますか?
0644デフォルトの名無しさん
NGNG0645デフォルトの名無しさん
NGNG0647デフォルトの名無しさん
NGNGダイアログを表示する
}
とかやれば?
0648デフォルトの名無しさん
NGNG呼ばれて二重呼び出しされるんじゃないかねー。こういう時はどうするもんなんだろ。
0649デフォルトの名無しさん
NGNG0650デフォルトの名無しさん
NGNGその場合は
まだ表示されてなかったら
の内容が単なるフラグチェックや何かではすまないだけ
で、別に同じでしょ
>>649
のようにmutex使うとかすればいいのであって
0651デフォルトの名無しさん
NGNGコピー/移動/削除/名前の変更はICopyHookで実装済みです。
FindFirstChangeNotificationで通知前と後の比較を考えたんですが、
これだとコピー/移動との区別ができません。
何か良い方法はないでしょうか。
0652デフォルトの名無しさん
NGNGものすごく基本的なことだが
ディレクトリは作成と削除しかできない、んじゃないか?
そういうはなしではない?
0653651
NGNG言葉足らずですみません。
現在シェル拡張DLLを作成しているんですが、ある特定のフォルダをエクスプローラで
コピー/移動/削除/名前の変更の操作を行った後にそれぞれ異なる処理を行っています。
上記4つはICopyHookのコールバック関数内で区別することができます。
さらに、新規にフォルダを作成した後にまた異なる処理を行いたいのです。
そのため、新規作成を検知する必要があるのです。
(フォルダの操作はエクスプローラで行われることが前提です)
0654デフォルトの名無しさん
NGNG移動できるよ
0655デフォルトの名無しさん
NGNGOPENFILENAME ofn;
と宣言したのですが、
「OPENFILENAMEは定義されていません。」とエラーが出ます。
何かincludeするヘッダがあるのでしょうか?
0656デフォルトの名無しさん
NGNG思いっきり載ってますが何か?
0657デフォルトの名無しさん
NGNG0658デフォルトの名無しさん
NGNG0659デフォルトの名無しさん
NGNG0660デフォルトの名無しさん
NGNG0661デフォルトの名無しさん
NGNG0662デフォルトの名無しさん
NGNGおお、新しい反撃パターンだ。
これでは、伝家の宝刀の「ググれ!!」が使えないでないか...。
まあ、君にはインターネットは向いてないから、早めに回線切って引きこもった方がいいよ。
0663デフォルトの名無しさん
NGNG0664デフォルトの名無しさん
NGNG0665デフォルトの名無しさん
NGNG0666デフォルトの名無しさん
NGNG0667デフォルトの名無しさん
NGNGいや「OSレベルでは」というか「ファイルシステムレベルでは」
ディレクトリは作成と削除しかないでしょ
フォルダ単位の移動やコピーを「アプリケーションレベルで」(shellapiも
ふくむ)実装はできるけど、OSレベルではフォルダごとの移動は
ディレクトリの作成→そこにファイル群を移動→元ディレクトリの削除
という形になるでしょ
>>653
という理由によってディレクトリだけ見ても「区別できない」んじゃないかと
思ったのだけど、見当違い?
0668デフォルトの名無しさん
NGNG判定したい場合どうすればいいでしょうか。お願いします。
0669デフォルトの名無しさん
NGNGただ単にディレクトリエントリの書き換えだけだろ。
0670デフォルトの名無しさん
NGNG0671デフォルトの名無しさん
NGNGごめんわたしがばかでした
逝ってくるよママン
0672デフォルトの名無しさん
NGNG0673デフォルトの名無しさん
NGNG0674デフォルトの名無しさん
NGNG知っているが「こんばんわ」が気に入らないので教えない
0675デフォルトの名無しさん
NGNG0676デフォルトの名無しさん
NGNG0677デフォルトの名無しさん
NGNG0678デフォルトの名無しさん
NGNG0679デフォルトの名無しさん
NGNG0680デフォルトの名無しさん
NGNGこの板ではどのスレッドもIDは表示されない。
0681デフォルトの名無しさん
NGNG>OSレベルではフォルダごとの移動は
>ディレクトリの作成→そこにファイル群を移動→元ディレクトリの削除
>という形になるでしょ
それはドライブが異なる場合だけだろ。普通は親ディレクトリのinodeの
書き換えだけ。
0682デフォルトの名無しさん
NGNG上手いな。ネタで>>677書いたのは俺だが
まさかそう返されるとは思わなかったぞ。
0683デフォルトの名無しさん
NGNG0684デフォルトの名無しさん
NGNGinode(に対応するWindowsでの概念)を書き換える必要あるの? 名前だけでしょ?
0685デフォルトの名無しさん
NGNGモニタの電源を切るまでの時間を、それぞれ
取得したり再設定したりするにはどうするのでしょうか?
0686デフォルトの名無しさん
NGNG画面のプロパティを開いて読んだり書き換えたりすればOK
0688デフォルトの名無しさん
NGNG>>686は、わかってて言ってるんだと思うぞ。
要は君に遠回しに 「 ぐ ぐ れ っ ! 」 と言いたいのではないかと。
もしググる気になったら、「スクリーンセーバー SystemParametersInfo」あたりで
ググってみると幸せになれるんじゃないかな。
0689685
NGNG少し幸せになりました
ありがとうございました
このAPIについてもっと調べてもっと幸せになります
0690デフォルトの名無しさん
NGNG0691デフォルトの名無しさん
NGNGWin32APIのスレだしなぁ。ここ。
0692デフォルトの名無しさん
NGNG0693デフォルトの名無しさん
NGNG0694デフォルトの名無しさん
NGNGこれは現在位置を取得するものですが、
逆に現在位置を変更するようなものは無いのでしょうか?
簡単に言えばwaveOut系で途中から再生をしたいのですが
解説しているサイトやヒント等ありましたら、おしえてください。
0695デフォルトの名無しさん
NGNGpngを読み込んで展開して、
デバイスコンテキストに描画したら、
GetPixelで色を取り出せるよ
0696デフォルトの名無しさん
NGNG0697デフォルトの名無しさん
NGNG0698デフォルトの名無しさん
NGNG0699デフォルトの名無しさん
NGNGそれが検索しろであったりマニュアル嫁であったりするのは、それが最適だと思っているからだ。
0700デフォルトの名無しさん
NGNG0701デフォルトの名無しさん
NGNG0702デフォルトの名無しさん
NGNGありません。自分で制御する必要があります。
0703デフォルトの名無しさん
NGNG偉そうなことは言えんが、ぱっとググってみた感じ、waveOutGetPositionも
結構色々と問題があるような感じなんで位置情報は自分でタイミング取って
見た方がよいのかも。
0704デフォルトの名無しさん
NGNG0705デフォルトの名無しさん
NGNG返答ありがとうございます。自前でやるしかないみたいですね。
そうなると、無圧縮なPCMであれば位置判定は簡単だと思いますが
圧縮されたデータ(MP3等)の場合、難しいですね。
一旦、無圧縮なPCMに展開する必要があるという事でしょうか?
0706初心者です
NGNG(visible? hide?)を切り替えることってできますか?
0707デフォルトの名無しさん
NGNG0708デフォルトの名無しさん
NGNG0709デフォルトの名無しさん
NGNG圧縮データ?
そうか、waveOut は 圧縮形式の WAVEFORMATEX ヘッダも
処理できたか。使ったこと無いから PCM 以外でどうなるか分
からないけど、少なくとも mp3 の場合は自分でヘッダ作らない
と(WAVE MP3)処理できないだろう。
俺は WAVE ファイルの場合はあらかじめ ACM の API
で無圧縮 PCM に変換してから waveOut API に渡してたからな。
mp3 は独自にデコーダ用意する必要がある。(APIは無い)
なんか、あなたの場合は DirectShow を
使った方が良いんじゃないかな?
手っ取り早くやりたいなら、そっちの方が早いよ。
0711デフォルトの名無しさん
NGNG0712デフォルトの名無しさん
NGNGlibpngとかImageMagickでも使ってロードして、後は適当に解析汁。
0713名無し@沢村
NGNGWindowsプログラムとは可愛いやっちゃ♪
こっちはメインウィンドウ完成間近だというのによ…♪もうすぐメインウィンドウできるよ〜♪
といってもCとかアセンブラとかでメインウィンドウ組むんじゃないぞ。それじゃまるでザコだ。
こっちは、メインウィンドウがつくれるプログラムつくってるのよ〜♪つまりVisual E++だ。
そうです、みなさんもうすぐVisual E++はメインウィンドウがつくれる本格的なプログラミングソフトに進化します♪
いまやっとVisual E++に補助的にバイナリエディタつかってメインウィンドウつくるのに成功したところ。
補助的にバイナリエディタつかわないで、Visual E++のみでメインウィンドウつくれるよになるには、あと修正個所が1、2個所…
みなさんもうすぐでっせ〜♪
0714名無し@沢村
NGNGWindowsプログラムとは可愛いやっちゃ♪
こっちはメインウィンドウ完成間近だというのによ…♪もうすぐメインウィンドウできるよ〜♪
といってもCとかアセンブラとかでメインウィンドウ組むんじゃないぞ。それじゃまるでザコだ。
こっちは、メインウィンドウがつくれるプログラムつくってるのよ〜♪つまりVisual E++だ。
そうです、みなさんもうすぐVisual E++はメインウィンドウがつくれる本格的なプログラミングソフトに進化します♪
いまやっとVisual E++に補助的にバイナリエディタつかってメインウィンドウつくるのに成功したところ。
補助的にバイナリエディタつかわないで、Visual E++のみでメインウィンドウつくれるよになるには、あと修正個所が1、2個所…
みなさんもうすぐでっせ〜♪
0715デフォルトの名無しさん
NGNGスレ違い。
http://pc5.2ch.net/test/read.cgi/tech/1085915001/
こっちでどうぞ。
0716デフォルトの名無しさん
NGNGところで、IEのお気に入りの中から一定期間アクセスがなかったら削除するツール作ろうと思ったんだけど、
最終アクセス日(ファイルアクセスにあらず)ってAPIがらみで取得できませんかねえ。
調べたところ「履歴」フォルダにしか残っていないので履歴削除したら無理ぽなんだよねえ。
0717デフォルトの名無しさん
NGNG返答ありがとうございます。
圧縮データとは、MP3(not *.mp3ファイル)とか
ADPCM等です。(*.wavファイル)
何も考えずに、waveOutOpen -> waveOutPrepareHeader
-> waveOutWriteで再生できるので、今はそのままですが
求めている事は
・メモリにあるデータから再生
・ボリュームコントロール
・シーク可能
・Win98(無印)の何も入れてない状態で動く
…という事なのです。DirectShowでの機能は
Win98(無印)に標準で入っているのでしょうか?
>ACM の API
とりあえず、この方向で展開して自前でシークしたいと
思います。ありがとうございました。
0718デフォルトの名無しさん
NGNG> ・メモリにあるデータから再生
あー DirectShow でメモリからだと自前でソースフィルター
かかないかんね。サンプルもあるけど、
この場合はフィルター書いてまでも DirectShow を
使う意味は無いね。
>>ACM の API
>とりあえず、この方向で展開して自前でシークしたいと
まあ、もっともオーソドックスな手法だけど、長年使われていた
手法でもあるし、頑張ってみるしか。
0719デフォルトの名無しさん
NGNGSetMapMode(hdc,MM_LOMETRIC);
rect.left=100;
rect.top=-300;
rect.right=500;
rect.bottom=-100;
DrawText(hdc,Text1,-1,&rect,DT_CALCRECT | DT_WORDBREAK);
DrawText(hdc,Text1,-1,&rect,DT_WORDBREAK);
DrawText(hdc,Text1,-1,&rect,DT_CALCRECT | DT_WORDBREAK);
DrawText(hdc,Text1,-1,&rect,DT_WORDBREAK);
としてプリンタで印刷したところ
一回目のText1と2回目のText1が続けて縦一列に印刷されたのですが
なぜなのでしょうか
ステップしてもrectの内容が変わる事はなかったので
同じ場所に二重に印刷される物だと思ってたのですが
DT_CALCRECTをちゃんと理解しないで使ってる気がするので
やはりこれのせいなのでしょうか
分かる方おねがいします
0720デフォルトの名無しさん
NGNGGDI+のBitmapクラス使ってPNG画像を読み込んで、GetPixcelメソッドを呼ぶ。
0721デフォルトの名無しさん
NGNGですか?
クラスとタイトルはそれぞれ必ず完全に一致する必要があるのでしょうか.
0722デフォルトの名無しさん
NGNG0723デフォルトの名無しさん
NGNG了解
0724デフォルトの名無しさん
NGNGRebarのIE式メニューを作ろうとしてるんですが
うまくいきません
ソースコードをUPしますので
http://www.geocities.co.jp/SiliconValley-Oakland/3559/rebar.txt
どこが間違ってるのか見ていただけるとありがたいです
よろしくお願いいたします
InitCommonControlsExは処理してあります
呼び出し順番は
hRebar=_createRebar(hWnd,hInst);
_createIEMenu(hRebarIEMenu,hRebar,tbIEMenu);
_sendTextToIEMenu(hRebarIEMenu,"File_desu",tbIEMenu,0);
_sendTextToIEMenu(hRebarIEMenu,"Edit_desu",tbIEMenu,1);
_sendButtonToIEMenu(hRebarIEMenu,2,tbIEMenu);
_attachIEMenuToRebar(hRebarIEMenu,hRebar);
0725デフォルトの名無しさん
NGNGすでに、追加したい項目のIDが追加されているかどうか
ってどうやって調べられますか?
AppendMenuつかうと、無節操に追加されるし
EnableMenuItemだと、見えなくならないし、で微妙なので、
助けてください。
0726デフォルトの名無しさん
NGNG0727デフォルトの名無しさん
NGNG10万くらいくれたらデバッグしてやらんでもない
0728デフォルトの名無しさん
NGNGGetMenuItemID
GetMenuPosFromID
この辺使えば自在だ。
0729デフォルトの名無しさん
NGNG何を表示すればよいかは簡単に取得できたのですが、これをいつメニューに反映させればよいのかが分かりません。
最初は WM_INITMENU か WM_INITMENUPOPUP で更新すればよいと考えていたのですが
このサブメニューの名前や位置が変化するので、親メニューと位置だけでは、
どのサブメニューが表示されようとしているのかが分かりません。
こういったメニューのアイテムを最新の状態に維持するにはどうすればよいのでしょうか?
あるいは、メニューバーの特定のサブメニューが表示されようとしていることを知る方法はあるでしょうか。
どうかよろしくお願いします。
0731デフォルトの名無しさん
NGNGメニューの位置が動的に変更しないようにする。
というのはアレなので、ちょうど>>728が書いてるAPIで位置から特定してやればいいんじゃないかと。
0732デフォルトの名無しさん
NGNG0733デフォルトの名無しさん
NGNGありがとうございます。
ただ、相手がサブメニューなので ID が無いのですが
そのような場合はどうすればよいのでしょう?
0734デフォルトの名無しさん
NGNGポップアップにもIDはつけられる。
0735デフォルトの名無しさん
NGNGありがとうございます。
今まで知りませんでした。
これで解決できそうです。
どうもありがとうございました。
0736デフォルトの名無しさん
NGNG0737デフォルトの名無しさん
NGNG0738デフォルトの名無しさん
NGNG0739デフォルトの名無しさん
NGNG0740デフォルトの名無しさん
NGNG0741デフォルトの名無しさん
NGNGバーモント
0742デフォルトの名無しさん
NGNGはウクレレか
0743デフォルトの名無しさん
NGNG0744デフォルトの名無しさん
NGNG質問していいかくらい、自分でググって調べろ。
0745デフォルトの名無しさん
NGNG0746デフォルトの名無しさん
NGNG>ポップアップにもIDはつけられる。
どうやればできるのでしょう。
方法を探したのですが見つかりませんでした。
0747デフォルトの名無しさん
NGNG0748デフォルトの名無しさん
NGNG嘘を嘘と見抜けないようだと・・・
メニューアイテム関連のAPIは、コマンドIDじゃなくてインデックスでも使えるから、
インデックスを覚えておくのが良いと思う。
0749デフォルトの名無しさん
NGNG0750デフォルトの名無しさん
NGNGってのは、たまにあるな。
0751デフォルトの名無しさん
NGNGMENUEX
0752デフォルトの名無しさん
NGNG> サブメニューの名前や位置が変化する
無理だ...
0753デフォルトの名無しさん
NGNGあれって全部自前でアイコンとかを取得したりしてるのでしょうか?
0754デフォルトの名無しさん
NGNGWindows上のC++(またはC言語)で、pdfファイルをいじる方法ってありますか?
帳票の代わりにpdfファイルを作るとかしてみたいのですが・・・。
宜しくお願いします。
0755デフォルトの名無しさん
NGNG面倒だったらWordをOLEで制御するなりunix系ツールで変換するなり
0756デフォルトの名無しさん
NGNGPrimoPDFとか入れて、印刷しろよ。
0757デフォルトの名無しさん
NGNG試してないがこれではムリか?
MENUITEMINFO mii = { sizeof(MENUITEMINFO), MIIM_SUBMENU | MIIM_TYPE | MIIM_ID,
MFT_STRING, 0, idCmd++, hSubMenu, 0, 0, 0, szMenuText };
InsertMenuItem(hMenu, indexMenu, TRUE, &mii);
0758デフォルトの名無しさん
NGNGシェブロンにカーソルを持って行ったら
自動的にスクロールするようにするには
どういう設定をすればいい?
0759デフォルトの名無しさん
NGNGPDFを操作するライブラリがいくつかあるぞ。
ClibPDFなんて使いやすい。
http://www.fastio.com/
0760デフォルトの名無しさん
NGNG探したのですが見つかりません。
0761デフォルトの名無しさん
NGNG逆に探してみて、目的の物が無いかどうかで確認するしかないんじゃないか?
それとも、俺が知らないだけで「電源が入って無くても、認識されている」
デバイスがあったりするか?
0762デフォルトの名無しさん
NGNGバスパワーで、回路だけ動いてれば
「電源が入って無くても、認識されている」
って状況は可能なんじゃないのか?
あるかどうかは、知らないけど。
0763デフォルトの名無しさん
NGNGバスパワーでかつ電源スイッチがあるようなデバイスでも、電源スイッ
チを切ると認識されなくなるんじゃないかい。
0764760
NGNGたとえば単純に、現在使用可能なデバイスのリストを返してくるようなAPIを探しているんですが。
=電源が切れて認識されなくなったらリストからデバイス名が消える
みたいなことをAPIに期待しています。
0765デフォルトの名無しさん
NGNG多分DDK方面?
0766デフォルトの名無しさん
NGNGDDKにusbviewというサンプルがあるから見れ
0767デフォルトの名無しさん
NGNG昔レジストリで確認してたことある
一覧で探してあったらGetDeviceDiscriptor投げ
この辺の操作もDDKサンプルみれば乗ってたはず
0768760
NGNGレジストリの線で探ってみます。ありがとうございました。
0769デフォルトの名無しさん
NGNGサブヒープの情報はどのように取得すればいいのでしょうか?
各ヒープエントリ情報は、
1.CreateToolhelp32Snapshotでプロセスのスナップショット取得
2.Process32First、Process32NextでPROCESSENTRY32取得
3.CreateToolhelp32Snapshotでヒープのスナップショット取得
4.Heap32ListFirst、Heap32ListNextでHEAPLIST32取得
5.HEAPLISTでHEAPENTRY32取得
という流れで取得できたのですが、サブヒープ情報は取得できません。
どのようにすればサブヒープの情報を取得できるのでしょうか?
よろしくお願いします
0771デフォルトの名無しさん
NGNGどうもうまくいきません。
PostMessage(WM_KEYDOWN,...), keybd_event, SendInput を使用したものは、
通常のアプリケーション(メモ帳とか)には正常に動作するのですが、
DirectInputを使ったゲームには作用しないようなのです。
(当然といえば当然かもしれませんが(><))
何かよい方法があったらご教授下さい。宜しくお願いします。
0772デフォルトの名無しさん
NGNGネトゲサロンへお帰りください( ゚,_ゝ゚)
0773デフォルトの名無しさん
NGNGTextOutで文字を書いたところ他のフォントに置き換わってしまい困っています。
0774デフォルトの名無しさん
NGNG結構しらべたけどない...orz
JAVAにはcanDisplay()という関数があるみたいだから何らかの
方法で実現はできるみたいだけど。。。
0775デフォルトの名無しさん
NGNGGetGlyphIndices かな
0776名無し@沢村
NGNGそれはリソースエディタでメニューをつくるとき、「ファイル(&F)」のように書くだろ?
すると「F」という字にショートカットキーが割り当てられるわけだ。
おみゃ〜らよ、おみゃ〜らは、いままでショートカットキーを割り当てるときの書式は、「ファイル(&F)」というふうでなくてはならないと思っていたはずだ。
どうだ?
だがおみゃ〜らよ、実は「&」の後の文字なら何でもショートカットキーが割り当てられるのよ。
「(&F)」のように「()」で囲む必要もない。
つまり「&ファイル」とすれば「フ」の字にショートカットキーが割り当てられるし、「フ&ァイル」とすれば「ァ」の字にショートカットキーが割り当てられるのよ。
これはおみゃ〜らが、いままで知らなかったことだ。
覚えておくといいぞ。おみゃ〜らよ♪
0777デフォルトの名無しさん
NGNGそれぐらい知っとるわ。
「E&xit」とか良く見るし。
0778デフォルトの名無しさん
NGNG元々、「&File」だったのが、日本語で「&ファイル」すると
ショートカットが「フ」になるから「ファイル(&F)」にしてんだろ。
そんくらい、誰でも知ってるぞ。
「自分が知らなかった=まわりも知らない」
この図式自体が間違ってる事に気付け>沢村
0779デフォルトの名無しさん
NGNG>>778
マジレス ハゲカッッコワルイ
0780デフォルトの名無しさん
NGNG前前から疑問に思っていたんだよね。
0781デフォルトの名無しさん
NGNG0783デフォルトの名無しさん
NGNGWlxLoggedOutSAS()のログオン認証まではMsGina.Dllに処理をスルーして、
WlxActivateUserShell()の呼び出し時にさらにある条件で認証を行い
認証できれば、MsGina.DllのWlxActivateUserShell()に処理を渡し、
認証できなければ、FALSEを返してログオンを打ち切るプログラムを
作ろうと思っています。
そこで、WlxActivateUserShell()上でWlxLoggedOutSAS()で認証された
User名を取得したいのですが、方法が分かりませんご存知の方が居られ
ましたらご教授いただきたくお願いいたします。
恐らく引数lpWlxContextに、その辺の情報が入っている構造体のポインタが
渡されているのではないかと思っているのですが、MsGina.Dllでこの部分が
何に使われているのかが調べきれませんでした。
つたない質問で申し訳ありませんが、よろしくお願いいたします。
0785デフォルトの名無しさん
NGNGTrackPopupMenuで表示させたポップアップメニューを閉じたタイミングを
検出したい場合、どうすればよいのでしょうか?
ご教授よろしくおねがいします
0786デフォルトの名無しさん
NGNG0787デフォルトの名無しさん
NGNG0788デフォルトの名無しさん
NGNGところで藻前、とてつもないバカ?
0789デフォルトの名無しさん
NGNG0790デフォルトの名無しさん
NGNG0791デフォルトの名無しさん
NGNG0792デフォルトの名無しさん
NGNG(名)スル
(1) (ア)児童・生徒に知識・技能を与え、そこからさらに知識への興味を呼び起こすこと。
(イ)専門的な学問・技芸を教えること。
(2) 大学などの高等教育機関において、専門の学問・技能を教え、また自らは研究に従事する人の職名。助教授・講師の上位。
人の名前?て聞くのはヴァカじゃね?
0793デフォルトの名無しさん
NGNGああ、本当にバカだ。底なし。
0794デフォルトの名無しさん
NGNGところで難しい質問が来るとしばらくスレが止まって、上げ足レスが付くっていうのは厨の十八番なのか?
判らなければスルーすればよいだけだと思うのだが
0795デフォルトの名無しさん
NGNG(゚Д゚)ハァ?、もしかして>>783の教えてクンのこと?
そんなの低レベル過ぎて答える気がしないだけだよ、あんなのがお前には難し過ぎる質問だったのかw
あんまり自分のレベルで判断するなよ、今回みたいに大恥かくよw
0796デフォルトの名無しさん
NGNG0797デフォルトの名無しさん
NGNG検索してSendMessageと、WM_SETFONTを使うべきと分かったのでやってみました。
SendMessage(hwndEdit, WM_SETFONT, (WPARAM)hFont, MAKELPARAM(TRUE, 0));
上のコードを親ウィンドウのプロシージャに埋め込んだのですが、フォント自体は変化せず。
文字高さを以前より大きくすると、カーソルが大きくなるだけです。
以前より小さくすると、フォント下部が欠けた状態で表示されるようになりました。
代わりにスタティックコントロールで試すと、この問題は生じません。
どこが間違っているのでしょう?、教えていただけないでしょうか。
環境は VC++.NET です。
0798デフォルトの名無しさん
NGNG0800デフォルトの名無しさん
NGNGまあ今回は許してやるから、勉強して今度はもうちょっとマシな質問しろやw
それと問題が解決したら情報をレスしろよ。それが礼儀だからな
0801デフォルトの名無しさん
NGNG全然面白くない。このスレから消えろ
0802デフォルトの名無しさん
NGNGそういうことは、住人が呆れるような低レベルな質問を、平気でする香具師に言うべきでは?
0803デフォルトの名無しさん
NGNG0804デフォルトの名無しさん
NGNG…そう捨て台詞を吐いて、結局>>783の解決方法を言わないのか。
もし、>>794に対して文句言いたいなら>>783の答えを示して
「低レベルすぎて回答する気もならなかった」と言えば
>>794は何も言えないと思うのだが…。
0805デフォルトの名無しさん
NGNG>>795にとって、>>783は低レベルだが
>>794は高レベルな書き込みだったのだろう。
何故なら、レスしてるから。(w
0806デフォルトの名無しさん
NGNG0807デフォルトの名無しさん
NGNG| ノ ヽ/⌒) あばばばばばば
/⌒) (゚) (゚) | .|
/ / ( _●_) ミ/ ∩―−、
.( ヽ |∪| / / (゚) 、_ `ヽ
\ ヽノ / / ( ● (゚) |つ
/ / | /(入__ノ ミ あばばっあびゃばびゃばば
| / 、 (_/ ノ
| /\ \ \___ ノ゙ ─ー
| / ) ) \ _
∪ ( \ \ \
\_)
0808デフォルトの名無しさん
NGNGエディットコントロールってフォント変えられるんだっけ?
MSDNで調べてみたら?
もしフォント変えられないっぽいならリッチエディットにする。
0809デフォルトの名無しさん
NGNGWM_SETFONTで変えろ
0810デフォルトの名無しさん
NGNG0811デフォルトの名無しさん
NGNGWM_SETFONTでフォントを適用したあと、HFONTをDeleteObjectしてないか?
WM_SETFONTで適用したフォントはそのフォントを使わなくなるまで
(コントロールを削除など)保持しとかないとダメだぞ。
もしそうならスタティックで成功してるってのも、再描画すると元に戻ってると思うんだが…。
0812デフォルトの名無しさん
NGNG直後にフォントを破棄していました。
エディットコントロールが既に存在しないフォントにアクセスしたんでしょうね。
スタティックは再描画後もOKでした、フォントをコピーして保持してるのでしょうか?
しくみが違うようです。
どうもありがとうございました。
0813デフォルトの名無しさん
NGNG失礼、ミスリードしました。
スタティックも再描画したら問題発生しました。
ではでは。w
0814デフォルトの名無しさん
NGNG0815デフォルトの名無しさん
NGNG時々処理がWaitForSingleObjectで固まってしまい困ってます。
何が悪いのでしょうか。
func()はマルチスレッドで山ほど同時に呼ばれます。
void func()
{
HANDLE hMutex = ::CreateMutex(NULL, FALSE, strMutex);
if (::WaitForSingleObject(hMutex, 2000) == WAIT_TIMEOUT)
TRACE("WAIT_TIMEOUT\n");
// ここで保護したい処理
::ReleaseMutex(hMutex);
::CloseHandle(hMutex);
}
0816デフォルトの名無しさん
NGNG0817デフォルトの名無しさん
NGNG0818デフォルトの名無しさん
NGNGどう違うのかかけ。
特に、毎回Createしてるのかどうか。
0819デフォルトの名無しさん
NGNGサーバにパケット送信したり受信したりしてます。
>毎回Create
Createとは何をCreateしてると言うことですか?
スレッドなら同時に何十も起動できるようにしてますが。
0820デフォルトの名無しさん
NGNG0821デフォルトの名無しさん
NGNGなー、実際に何を保護すんの〜?
0822デフォルトの名無しさん
NGNG違ってたらごめんなさい。
0823デフォルトの名無しさん
NGNGミューテックスなら上に書いたようにスレッドが作成されそのスレッドから
毎回関数が呼ばれた際に作成して関数が終わるときに破棄するようにしています。
>>821
ファイル相手じゃないですがデータを読み込みそれを変更してデータを格納してます。
要はカウンタと同じです。
>>822
駄目でした。
0824デフォルトの名無しさん
NGNGmain()
{
mutex を1つ作成
...
mutex を破棄
}
func()
{
mutex ウエイト
mutex リリース
}
じゃいかんのかえ?
0825デフォルトの名無しさん
NGNG0826デフォルトの名無しさん
NGNGそういやMutexってそのままグローバルに名前が見えちゃうんだっけ?
0827デフォルトの名無しさん
NGNGなるほど、大元で作成してそれを使いまわすみたいな感じですか。
ただ、このプログラムの場合、効率を上げるため幾つかmutexを作成してて
その辺変更するの時間かかりそうなのまた明日にでもやってみようと思います。
>>825
上にも書きましたが効率を上げる為です。
もう少し詳しく書くと以下のようにしてます。
void func(LPCSTR lpName)
{
CString strMutex;
strMutex.Format("ACCESS_%s", lpName);
HANDLE hMutex = ::CreateMutex(NULL, FALSE, strMutex);
...
lpNameはデータ名でこれは幾つか有ります。
AAAと言う名前のファイルにデータを書きこむ際は
BBBと言う名前のファイルは保護する必要は無いので。
0828デフォルトの名無しさん
NGNGこれ以上アホな質問する前にマルチスレッドと同期について書いてある"まともな本"を読んで来い。
0829デフォルトの名無しさん
NGNGどの辺がアホなのか指摘していただけると凄く助かります。
0831デフォルトの名無しさん
NGNGそれなら保護したいリソースにアクセスするクラスを構築するたびに
Mutexを生成する
struct FILEIO {
FILEIO { むーってっくす生成 }
~FILEIO { むーってっくす棄て }
HANDLE hmutex;
}
func(FILEIO& aaaaaaaa)
{
aaaaaaaa.hmutexをうえいと
aaaaaaaa.hmutexをりりーす
}
0832デフォルトの名無しさん
NGNG最初に全ての情報を書くと膨大なので必要だと思われるところだけを書いたつもりですが
いかせんアホなのでその辺の取捨選択が間違えてたようで、スミマセン。
0833デフォルトの名無しさん
NGNG答えを書いておきながら、ちょと同意してしまった。
0834デフォルトの名無しさん
NGNGまーその意見には同意するがこのスレでそんな身も蓋も無い事言うもんじゃない。
0835デフォルトの名無しさん
NGNGその方法を使わせていただきます。
有難うございました。
0836デフォルトの名無しさん
NGNGまー、頑張って。
Win32以前に同期のお勉強をしてね。もっといい方法が分かると思うよ。
0837デフォルトの名無しさん
NGNG0838デフォルトの名無しさん
NGNGだまってメーラースレにお戻りください。
0839837
NGNG0840デフォルトの名無しさん
NGNG0841デフォルトの名無しさん
NGNG0842デフォルトの名無しさん
NGNGspeed&power
0843デフォルトの名無しさん
NGNGlooks&money
0844デフォルトの名無しさん
NGNG0845デフォルトの名無しさん
NGNG処理の重さは、Mutex>クリティカルセクションだよね?
0846デフォルトの名無しさん
NGNG非NTだとクリティカルセクションはタイムアウトできない
0847783
NGNGなんか荒れる原因つくってしまったみたいで申し訳ありませんでした
0848デフォルトの名無しさん
NGNGテキストが右揃えなスタイルのコンボボックスを作成すると、ドロップダウンのボタンが左側に配置されてしてしまうのですが
普通のコンボボックスのようにボタンを右側に残したままテキストを右揃えにするにはどうすればよいのでしょうか?
ご存じの方どうか宜しくお願いします。
0849デフォルトの名無しさん
NGNG0850デフォルトの名無しさん
NGNGこの流れだと勘違いされそうなので...
0851デフォルトの名無しさん
NGNGそのスタイルは、右から左へ文章を表示する言語のためのもの。
自分で描画汁。
0852デフォルトの名無しさん
NGNG>>849
ヲイヲイ、「解決しまつた」だけじゃ何の意味もないだろうが
きちんとどうやって解決したのか報告しろ
そうじゃないと質問に答えてくれた人に失礼だろうが、お子様
じゃないんだから、それくらいの事は言われなくても分かって
くれよ…
0853デフォルトの名無しさん
NGNG0854デフォルトの名無しさん
NGNGねたにまj
0855デフォルトの名無しさん
NGNG0856デフォルトの名無しさん
NGNGスレの流れも悪くなるし、簡単でいいから内容を
書くべきだ。というか何も書かない椰子よりは
いいが。。。
0857デフォルトの名無しさん
NGNGそれぞれに異なった住人層(と表現しとく)があるんだから。なんかその辺を分かってない奴が最近あちこちの
板に激増してる気がする。空気が読めてないというか何と言うか。
0858デフォルトの名無しさん
NGNG0859デフォルトの名無しさん
NGNG0860デフォルトの名無しさん
NGNG遅そうとはいえ、>>815 で機能上は問題はないように見えるし。
0861デフォルトの名無しさん
NGNGそのようにさせていただきます。
既製の方法はありませんでしたか。
旧版が番号スタイルのエディットボックス(自動的に右揃え)を使っていたので
見た目を揃えたかっただけなのですが。
0862デフォルトの名無しさん
NGNGまあ、283=247は厨に絡まれまくっただけで技術的な支援はまったく
なかったしねえ、とてもレポート書く気にはならないと思われ
0863デフォルトの名無しさん
NGNG0864デフォルトの名無しさん
NGNGを入れるにはどうすればいいのですか?
例えば、初めにフォントサイズ40を設定しておいて次回開いたときに40が入っている
って事がしたいのです。
0865デフォルトの名無しさん
NGNG320×240のウインドウを表示したいのですが、タイトルバーが含まれてしまうので
うまく作れないのですが、どうすれば良いのでしょうか?
(320×240の画像を表示したいのです)
よろしくお願いします!
0866デフォルトの名無しさん
NGNGWM_NCCALCSIZE を拾うでつ
0867デフォルトの名無しさん
NGNG1 適当なサイズでウインドウを作る
2 320-クライアントの幅 を現在のウインドウ幅に足してリサイズ
3 240-クライアントの高 を現在のウインドウ高に足してリサイズ
の2ステップが必要。
ウインドウメニューが無い場合は、AdjustWindowRect(Ex)を使っても良い。
0868デフォルトの名無しさん
NGNGMacのDockをマネたのがWinにもあるけど、
あんな感じでアルファチャンネルを持った
画像を表示したいんです。
画像のアルファチャンネルでウィンドウを
透明にする方法を教えて下さい。
レイヤードウィンドウみたいに全体が
同じアルファ値じゃなくて、ピクセル
単位でアルファ値を変える方法が
しりたいです。
よろしくお願いします。
0869デフォルトの名無しさん
NGNG0870デフォルトの名無しさん
NGNGMSDN読み直したら、「ピクセル単位のアルファ情報を含むこともできます」
と書いてありました。恐縮です。
ありがとうございました。m( _ _ )m
0871デフォルトの名無しさん
NGNGNTだとできるの?
0872デフォルトの名無しさん
NGNGとりあえずエクスプローラのウィンドウはFindWindowでクラス名をCabinetWClassにすれば
取れるんですけどキャプションは設定によって変わりますからそこで判断は出来ませんし。
どこかからかそのフォルダのCLSIDでも取得出来るなら良いんですが。
0873デフォルトの名無しさん
NGNG0876デフォルトの名無しさん
NGNG流出ソースだろ、ヤバくないか?
0878デフォルトの名無しさん
NGNGこれAvesta作者だよね・・・。なんかやばそう。
0879デフォルトの名無しさん
NGNG処理を書いてみたのですが、ダイアログが完全に透明になってしまいます。
いったいどこがおかしいのでしょうか?
BLENDFUNCTION bl;
BOOL bb;
SetWindowLong(hDlgWnd, GWL_EXSTYLE, GetWindowLong(hDlgWnd, GWL_EXSTYLE) | WS_EX_LAYERED);
bl.BlendOp = AC_SRC_OVER;
bl.BlendFlags = 0;
bl.AlphaFormat = 0;
bl.SourceConstantAlpha = 200;
bb = UpdateLayeredWindow(hDlgWnd, NULL, NULL, NULL, NULL, NULL, NULL, &bl, ULW_ALPHA);
0880デフォルトの名無しさん
NGNG0881デフォルトの名無しさん
NGNG(メモリダイアログテンプレートのように)
コードで組み立てる(orコードに埋め込む)
にはどうすればよいのでしょう。
よろしくお願いします。
0882デフォルトの名無しさん
NGNG0883デフォルトの名無しさん
NGNG場合はどうすればいいのでしょうか。お願い申しage
0884デフォルトの名無しさん
NGNG0885デフォルトの名無しさん
NGNG0886デフォルトの名無しさん
NGNGこんな感じですか?
static char String[40];
char *p;
ReadFile(hFile,String, 40, &Read, NULL);
p = String;
w = atoi(p+0);
x= atoi(p+10);
y= atoi(p+20)
z atoi(p+30)
0887デフォルトの名無しさん
NGNG0888デフォルトの名無しさん
NGNG0889デフォルトの名無しさん
NGNG0890デフォルトの名無しさん
NGNG一般にはストリームから直接構造体に読み込むのは
移植性無さ過ぎるぞ
0891デフォルトの名無しさん
NGNGかるく例を書いてもらえるとありがたいんですが
0892デフォルトの名無しさん
NGNGfread(&f, sizeof f, 1, fp);
みたいなことだろ
0893デフォルトの名無しさん
NGNG0894デフォルトの名無しさん
NGNGhackyジャネーノ? と言われますた
http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&oe=UTF-8&q=hackey
0895デフォルトの名無しさん
NGNGマイコンピューターの、ドライブ名の一覧を取得するにはどうすればよいのでしょう。
デジカメなどのマスストレージなども含めて取得したいです。
OSで開いた場合の「マイコンピュータ」フォルダと同じ内容が得られれば目的を果たせるのですが。
OSはXP、言語はDelphiです。
0896デフォルトの名無しさん
NGNGIShellFolder::EnumObjects
0897デフォルトの名無しさん
NGNG文字飾りグループを全部消せるのは知っています。
0898デフォルトの名無しさん
NGNGその中で目的のコントロールを非表示でよいんじゃないのか?
0899デフォルトの名無しさん
NGNGShowWindow
0900デフォルトの名無しさん
NGNGできますたありがとうございます
0901デフォルトの名無しさん
NGNG元で取得するにはどうしたらよいでしょうか。
よろしくお願いします。
0902デフォルトの名無しさん
NGNGパイプ
0903デフォルトの名無しさん
NGNGttp://nhiro4.ld.infoseek.co.jp/program/windows/pipe.html
0904デフォルトの名無しさん
NGNG0905デフォルトの名無しさん
NGNGCreateProcessするんだからプロセスハンドルじゃだめか?
0907デフォルトの名無しさん
NGNG0908904
NGNGパフォーマンスとレスポンスのトレードオフになる。
てか、名前憑きは使えないんだっけ?
0909デフォルトの名無しさん
NGNG>ReadとWaitのループで待つわけだから、
ReadFile自体がブロックするからWaitは不要。
レスポンスも悪くないよ。
>>901
>190351 - HOWTO: Spawn Console Processes with Redirected Standard Handles
http://support.microsoft.com/?id=190351
0910デフォルトの名無しさん
NGNG知りたいんですがそんなAPIありませんでしょうか?
0911デフォルトの名無しさん
NGNG何かダイアログを操作するまでWM_TIMERがこないんですが、何故でしょうか?
設定したダイアログに対して何か操作をすると
それからは設定した時間ごとにWM_TIMERが飛んでくるんですが・・・
0912デフォルトの名無しさん
NGNG0913デフォルトの名無しさん
NGNGNetUserGetLocalGroups
0915デフォルトの名無しさん
NGNGモーダルとモードレスがわかっていない阿寒
0916911
NGNG何かミスってるぽいですね。
>>915
解決法をご存知でしたら教えていただきたいんですが、
モードレスダイアログの場合CreateWindow()で作ったWindowのように
PeekMessage()した後にIsDialogMessage()を呼ぶのではダメなんでしょうか?
0917デフォルトの名無しさん
NGNGどんなメッセージループを書いたのか、書いてみ?
0918911
NGNG/* ダイアログ作ったり */
while( hDlg || hMainWnd )
{
while ( ::PeekMessage( &msg, NULL, 0, 0, PM_REMOVE) )
{
if ( hDlg && ::IsDialogMessage( hDlg, &msg ) )
continue;
::TranslateMessage(&msg);
::DispatchMessage(&msg);
}
/* 毎回呼びたい関数とか */
}
こんな感じです。よろしくお願いします
0919911
NGNGGUIの部分だけ書き直したら正常に動作しました。
正直意味不明です。コード内容ほとんど変わってないのに・・・orz
お騒がせしました。
0920デフォルトの名無しさん
NGNG0921デフォルトの名無しさん
NGNG0922デフォルトの名無しさん
NGNGR:00 G:00 B:01ならボタンの色とかRGB値で直接指定できたりはしないの?
0923デフォルトの名無しさん
NGNGできません。それだと RGB=(0,0,1) の色が使えなくなっちゃうじゃん。
ブラシ (HBRUSH) を取る関数なら、 (HBRUSH) (COLOR_BACKGROUND+1) とかで
いけるんだけどね。
0924デフォルトの名無しさん
NGNG0925デフォルトの名無しさん
NGNGそれは本来GetSysColorBrush(COLOR_BACKGROUND)とするべきではないのか。
0926デフォルトの名無しさん
NGNG補足で蛇足。先方が OCX コントロールだったりして、OLE_COLOR 型で色指定する場合には、
OleTranslateColor の説明に出てくるいろんな方法 (0x80000000 | COLOR_BACKGROUND とか)が使えます。
0927デフォルトの名無しさん
NGNGパイプで解決しました。
ありがとうございます。
0928デフォルトの名無しさん
NGNG自分のウインドウのサイズを制限する場合はウインドウプロシージャで
WM_GETMINMAXINFOメッセージを処理すれば出来るらしいので、
DLL作ってフックプロシージャで制限したいウインドウのメッセージを
処理しようとしているのですがうまくいきません。
LRESULT CALLBACK MsgProc( int nCode, WPARAM wParam, LPARAM lParam )
{
CWPSTRUCT *pCWP;
MINMAXINFO *lpmmi;
if( nCode == HC_ACTION ) {
pCWP = (CWPSTRUCT *)lParam;
if( pCWP->hwnd == hWnd ) { //hWndはサイズ変更を制限したいウインドウのハンドル
switch( pCWP->message ) {
case WM_GETMINMAXINFO:
lpmmi = (MINMAXINFO *) pCWP->lParam;
lpmmi->ptMinTrackSize.x = 600;
lpmmi->ptMinTrackSize.y = 480;
lpmmi->ptMaxTrackSize.x = 1024;
lpmmi->ptMaxTrackSize.y = 768;
return 0;
}
}
}
return CallNextHookEx( Msg, nCode, wParam, lParam );
}
lpmmi = (MINMAXINFO *) pCWP->lParam;
のところを
lpmmi = (MINMAXINFO *) lParam;
に変えてみても出来ませんでした。
ご存知の方いらっしゃいましたらご教授下さい。
0929デフォルトの名無しさん
NGNG>return 0;
これじゃあ、ターゲットのウインドウまでWM_GETMINMAXINFOが届かない。
メッセージをいじった場合でも、メッセージをブロックする場合以外は
Call〜()を呼ぶ。
0930デフォルトの名無しさん
NGNGこの場合これでいいのか。929は忘れてくれ。
0931デフォルトの名無しさん
NGNG0932デフォルトの名無しさん
NGNGWM_GETMINMAXINFO以外にもメッセージをフックしていますが、
そちらは正常に動いていますのでグローバルフックにはなっていると思います。
念のためreturn 0;の前にメッセージボックスを入れて確認しましたが、
サイズを変更しようとするときちんと表示されています。
それなのに600*480よりも小さくなってしまうんです…。
0933デフォルトの名無しさん
NGNG> CallWndProc フックプロシージャはメッセージを調べることはできますが、
> 変更することはできません。
0934デフォルトの名無しさん
NGNGそういうことでしたか…
勉強不足でした。ありがとうございました。
0935デフォルトの名無しさん
NGNGフックで先方のプロセスに入り込んだ後でサブクラス化(Window Proc の付け替え)すればOKだと思うよ。
0936デフォルトの名無しさん
NGNG結構雑事が多いから整合取るの大変だけどね
0937デフォルトの名無しさん
NGNGフルパスのITEMIDLISTから、デスクトップのIShellFolderを使い
GetUIObjectOfをすればいいんですか?
それとも、やっぱりIDataObjectを実装しないとならないのでしょうか?
0938デフォルトの名無しさん
NGNGサブクラス化により無事制限出来ました。
どうもありがとうございました。
0939デフォルトの名無しさん
NGNG???
0940デフォルトの名無しさん
NGNGGetUIObjectOfでIID_IDataObjectを指定すればIDataObjectを得られるので、
自分で実装しなくてもいいです
0941デフォルトの名無しさん
NGNGc:\foo\text
d:\bar\text
...
のように、別々なフォルダにあるファイルを複数まとめたIDataObjectが欲しいんです。
IEnumIDListで得られるITEMIDLISTからIDataObjectを取得する場合、
複数フォルダにまたがったファイルからの取得は無理ですよね?
0942デフォルトの名無しさん
NGNGShowBitmap()なる自作関数があります。これはビットマップをメモリデバイスコンテキストにロードして
BitBltでウィンドウ送るだけのものです。これをWM_PAINTな時に実行させると、正しく表示されます。
次に、ボタンやメニューによるメッセージを使ってビットマップを表示させようと考えました。
プロシージャ内でメッセージはswitchで仕分けていますが、
case WM_PAINT:
break;
なる何もせぬコードの有無で振舞が違うのです(ある時にのみ表示されました。) この理由がわかりません。
原因として考えたのが、以下に示すswitch文最後の入門書通りの処理です。
return (DefWindowProc(hWnd, msg, wParam, lParam));
上記「何もしないコード」が無い時は、WM_PAINT時コレが呼び出されるのですが、その際に
何かビットマップが表示されない様な処理が施されるのでしょうか?
そうだとすると「何もしないコード」の挿入で、ビットマップが表示される様になる事は合点がゆきます。
しかし一方で、ShowBitmap()の代わりにメモリデバイスコンテキストでない、文字や線を描くコードを
入れると、「何もしないコード」がなくても描画できるのです。
この事は、一体どの様に理解したらよろしいのでしょうか?先生方、お知恵を拝借できませんでしょうか?
0943デフォルトの名無しさん
NGNG0945デフォルトの名無しさん
NGNG0946デフォルトの名無しさん
NGNG0947デフォルトの名無しさん
NGNG0948デフォルトの名無しさん
NGNG0949デフォルトの名無しさん
NGNGDLLからCreateWindowをするとき、HINSTANCEにはDLLのインスタンスハンドルを指定するのですか?
それともWinMainのHINSTANCEを指定すればいいのですか?
NT系だと無視されるようなので、どちらが正しいかってのがちょっと分からないのですが。
0950940
NGNGちょっと試してみたのですが、別ディレクトリのファイルでGetUIObjectOfして
エクスプローラにドロップしてみましたが、なぜかショートカットの作成しかできなくて
コピーなどができないのが謎です。
自前でIDataObjectを処理しないと無理なのか???
0951デフォルトの名無しさん
NGNGここまで低姿勢なんだからさ!
0952デフォルトの名無しさん
NGNG> case WM_PAINT: break; なる何もせぬコードの有無で振舞が違うのです
WM_PAINTな時に実行してないじゃん。
0953942
NGNGどうもお騒がせしました。二度と来ないので勘弁してください。
0954デフォルトの名無しさん
NGNG0955デフォルトの名無しさん
NGNG漏れはDefWindowProcよりも、switch後の振舞の方が気になる。
0956デフォルトの名無しさん
NGNGそこまで高圧的なんだからさ!
0957デフォルトの名無しさん
NGNGこれだと無効領域が有効にならないから
延々とWM_PAINTが飛び続けるんじゃないかな
0958942 ◆ltc18hDOM.
NGNGやはり該当コードを晒すことにします。hW、hIはグローバルなウィンドウ及びインスタンスハンドルです。
「何もしないコード」の有無でビットマップの振舞が変化します。文字表示に変化はありません。
以下プロシージャです。
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam){
switch (msg) {
case WM_DESTROY:
PostQuitMessage(0); break;
//case WM_PAINT: // 「何もしないコード」
//break;
case WM_COMMAND:
switch (LOWORD(wParam)) {
case ID_SHOWBITMAP:
ShowBitmap(); ShowText(); break;
default:
break;
}
default:
return(DefWindowProc(hWnd, msg, wParam, lParam));
}
return (0L);
}
0959942 ◆ltc18hDOM.
NGNGvoid ShowText(){
HDC hdc;char* str = "hello";
hdc = GetDC(hW);
TextOut(hdc, 10, 10, str, lstrlen(str));
ReleaseDC(hW, hdc);
return;
}
void ShowBitmap(){
HDC hmdc, hdc; HBITMAP hBitmap; PAINTSTRUCT ps;
hdc = BeginPaint(hW, &ps);
hBitmap = LoadBitmap(hI, MAKEINTRESOURCE(IDB_BITMAP1));
hmdc = CreateCompatibleDC(hdc);
SelectObject(hmdc, hBitmap);
BitBlt(hdc, 0, 0, 200, 200, hmdc, 0, 0, SRCCOPY);
DeleteDC(hmdc);
DeleteObject(hBitmap);
EndPaint(hW, &ps);
return;
}
0960946
NGNG0961デフォルトの名無しさん
NGNGここで質問する前に、猫でも読んでおけ。
読み終わるまでは戻ってくるな。
0962デフォルトの名無しさん
NGNG0963942
NGNGみなさんどうもありがとうございました。涅槃で待ちます。
0964デフォルトの名無しさん
NGNG0965942
NGNG0966デフォルトの名無しさん
NGNGDeleteObjectしなくていいの?
0967デフォルトの名無しさん
NGNGデバイスコンテキストを扱うときはWM_PAINT時とそれ以外で分けたほうがいいです。
具体的には
void DrawSomething(HDC hdc=NULL)
{
bool flag=false;
if(hdc==NULL){
hdc = ::GetDC(hWnd);
flag = true;
}
//いろいろ描画
if(flag){
::ReleaseDC(hdc);
}
return;
}
ってな感じ。DrawSomethingをWM_PAINT時に呼ぶなら
BeginPaintでデバイスコンテキストを取得してから引数に指定します。
それ以外はNULLを指定して内部でGetDC/ReleaseDCを呼び出すようにする。
理由はうまく説明できそうにないのでエロイ人にでも聞いてください。
0968デフォルトの名無しさん
NGNGそんなことするぐらいならDCは常に呼び出し側が用意、でいいだろ
0969942
NGNGさっさと寝ろ
0970デフォルトの名無しさん
NGNG本当の幸せ教えてよ。
0971デフォルトの名無しさん
NGNG0972デフォルトの名無しさん
NGNGどうしても気になるなら削除すればいいよ。
ただ、DCに選択されてるオブジェクトはDeleteObjectできないから、
別のビットマップを身代りとして選択しとかなくちゃいけない。
そいつは削除できずに残るけど、まあ目的のためには些細なことだ。
0973デフォルトの名無しさん
NGNG削除しなければいけないのかどうかを知りたいのですが。
ストックオブジェクトとはわけが違いますよね?違わないの?
0974デフォルトの名無しさん
NGNG送受信したファイルサイズなど表す方法があったら教えてください。
自分なりに調べてみたのですが、適当な物が見つかりません。
宜しくお願いします。
0975942 ◆ltc18hDOM.
NGNG荒らしてしまって申し訳ないです。BeginPaintをMSDNで見ると、確かに
WM_PAINT時以外使うなとありますね。すみませんでした。今後 >>967-968 さんの様にします。
>>963 は騙りですが、現在この通りの事を思っております。出直してきます。
ありがとうございました
0976デフォルトの名無しさん
NGNGまあ、がんがれ。変なのが多かったのは来たタイミングが悪かっただけさ。
0977デフォルトの名無しさん
NGNG0978デフォルトの名無しさん
NGNGどのスレでも言える事だが。
0979デフォルトの名無しさん
NGNG0980デフォルトの名無しさん
NGNGのSuper Tag Editorのように、リストビューにツリーを表示するには
どうしたらいいんでしょうか?
フックとオーナードローをするしかないのかな。
0981デフォルトの名無しさん
NGNG0982デフォルトの名無しさん
NGNG>フックとオーナードローをするしかないのかな。
から>>980をプロファイリングすると、恐らく内心では
「フックとオーナードロー('A`)マンドクセ もっとバカチョンな方法教えろゴルァ」
と思っている。間違いない。
0983デフォルトの名無しさん
NGNG0984デフォルトの名無しさん
NGNGまあGPLだから取扱注意だけど。
0985デフォルトの名無しさん
NGNG0986デフォルトの名無しさん
NGNG厨な質問するヤシは厨な解決手段をとりがちだから
0987デフォルトの名無しさん
NGNGいや、まあ図星なわけですけど。
フックていうか、サブクラス化ですね。
>>985
マジ・・・なのかな。
0988デフォルトの名無しさん
NGNGコードはGPLに縛られてもアルゴリズムは縛られないからね
0989デフォルトの名無しさん
NGNG0990デフォルトの名無しさん
NGNG0991デフォルトの名無しさん
NGNG0994デフォルトの名無しさん
NGNG0995デフォルトの名無しさん
NGNGhttp://pc5.2ch.net/test/read.cgi/tech/1088140233/
0996デフォルトの名無しさん
NGNG0997デフォルトの名無しさん
NGNG0998デフォルトの名無しさん
NGNG0999デフォルトの名無しさん
NGNGhttp://pc5.2ch.net/test/read.cgi/tech/1088140233/
1000⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
NGNGhttp://pc5.2ch.net/test/read.cgi/tech/1088140233/
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。