■過去ログ置き場に戻る■ 1- 次250 最新50


[memo] "9999999999_00.html#R20" という感じで、URLの最後に "#RレスNo" を追加すると幸せになれます。

Win32API質問箱 Build19
1 名前:デフォルトの名無しさん :04/05/16 17:52
スレ立てるまでもない、Win32APIについての質問はこちらへどうぞ。
ただし、最新スレくらいは質問する前に検索してくれ。というかしろ。

過去スレなどのリンクはたぶん>>2-5くらい。


2 名前:デフォルトの名無しさん :04/05/16 17:53
- 過去スレ
Build18: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/
- Google
http://www.google.com

3 名前:デフォルトの名無しさん :04/05/16 18:15


4 名前:デフォルトの名無しさん :04/05/16 18:44
Win32 API入門
http://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

5 名前:デフォルトの名無しさん :04/05/16 21:58
すんません、質問。
今下記のようにして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";

6 名前:デフォルトの名無しさん :04/05/17 02:23
MCIはファイルから読み込む仕様です

7 名前:デフォルトの名無しさん :04/05/17 02:39
>>6
なるほど、どうりでぐぐっても見つからないわけだ。
ありがとうございました。

8 名前:デフォルトの名無しさん :04/05/17 12:50
Win9xでexeのアイコンにファイルを吸わせた場合はちゃんと動作するのに
Win2kだと同じやり方では誤動作してしまうプログラムがあるので、GetCommandLineで
調べたときに9x系と同じ渡し方をする、橋渡し的なプログラムを作ってみたのですが
どうも失敗します。

実際に調べた結果、Windows98ではexeアイコンにファイルを落とすと、

    二重引用符で囲ったexe名+半角スペース+8.3形式表記のファイル名

のようになると判断していますが、この認識ではまずいのでしょうか?

9 名前:デフォルトの名無しさん :04/05/17 13:02
>>8
まずいです。
というか、DnDでの起動しか考慮に入れていない?
他のアプリケーションから起動されることもあるかも知れないし。

で、解決策としては、長いファイル名も短いファイル名も受け取れるようにしておく。


10 名前:デフォルトの名無しさん :04/05/17 13:03
INIファイル内で正式なコメントの書き方ってありますか?
今は
; Ident=Value
とかやるとたまたまIdentで取得できなくなることを利用しているんですが。

11 名前:デフォルトの名無しさん :04/05/17 13:43
>>9
多分有名だと思うので書きますが、そのプログラムはRarUtyです。
win98を使っていたときは「送る」にショートカットを置いていて、ファイルの
右クリックメニューから送るとそのファイルが選択されるのですが、
windows2000、xpだと必ずそのフォルダの最初のファイルが選択されてしまうので、
どうにかして回避しようと思いました。
そこで、SendToに置くショートカットをRarUty本体のものではなく、
今回自作したプログラムのものにして、自作プログラムで整形したコマンドライン
引数を与え、間接的に実行することでこの不具合を避けられると考えたのです。

すいません、説明が長くなりました。
あと、書きながら思いついたのですが、RarUtyの元であるVBに
NT系だとコマンドラインまわりがうまく動作しない、などという仕様があるような
気もしました。

12 名前:デフォルトの名無しさん :04/05/17 14:24
>>10
たまたまじゃなくて、それが正しいコメント記述方法かと

GetPrivateProfileSection()の解説部分にも
「セミコロン(;)で始まるコメント行は〜」なんて書かれてるし

13 名前:デフォルトの名無しさん :04/05/18 00:28
.NET FrameworkクラスライブラリのControlPaint.DrawButtonに相当する
Win32APIってありますか?

14 名前:デフォルトの名無しさん :04/05/18 00:44
DrawFrameControl

15 名前:デフォルトの名無しさん :04/05/18 00:56
質問の仕方になんかジェネレーションギャップを感じたよ・・・

16 名前:デフォルトの名無しさん :04/05/18 00:57
.NETの足音が聞こえてくるよ

17 名前:デフォルトの名無しさん :04/05/18 01:04
longhornが出たらな。

18 名前:デフォルトの名無しさん :04/05/18 01:07
したばったするぅなよぉ
どとねっとが、くぅるぜ

19 名前:デフォルトの名無しさん :04/05/18 08:10
nainai16.NET

20 名前:デフォルトの名無しさん :04/05/18 09:31
OSは、WIN2000で、現在起動している他のプロセスの
読み込んでいるDLLを知る方法はないでしょうか?。


21 名前:デフォルトの名無しさん :04/05/18 09:38
Dependency Walker

22 名前:デフォルトの名無しさん :04/05/18 09:46
>21
ありがとうございます。このプログラムのようなことを実現しようとすると
どんなAPIを使用すればいいのでしょうか?

23 名前:デフォルトの名無しさん :04/05/18 09:53
>>20
ms-help://MS.PSDK.1033/perfmon/base/enumerating_all_modules_for_a_process.htm

24 名前:デフォルトの名無しさん :04/05/18 11:10
メニューのオーナードローに挑戦しています。
通常の項目のオーナードローには成功したのですが、
MF_OWNERDRAWとMF_POPUPを同時に指定した項目だけは、
WM_DRAWITEMが来ないようで描画に失敗します。
MF_POPUPのオーナードローは出来ないのでしょうか?


25 名前:デフォルトの名無しさん :04/05/18 14:45
カレットかスクロールバーを移動させないようにするには
どうしたらいいんでしょうか。



26 名前:デフォルトの名無しさん :04/05/18 15:04
>>24
少なくとも俺のところではできてます。
>>25

何をやりたいのやら?

27 名前:デフォルトの名無しさん :04/05/18 15:05
"Default"フォントというフォントがありますが、
WinXPだと、これはどこで設定されるんでしょうか?
APIから読んだり書いたりも出来ますか?

28 名前:デフォルトの名無しさん :04/05/18 15:38
>>27
「"Default"フォント」なんてあるか?
Exploereなどに使われてるフォントと言う意味でなら、何かしら
指定されてるのがあると思うが、そんな名前のフォントは無いと思う。

少なくとも俺のマシンのfontsフォルダには無いな。

29 名前:デフォルトの名無しさん :04/05/18 16:40
>>26
リッチテキストの処理を行ってるんですが、
Rtfコードを適応すると、スクロールもカレット位置も先頭に戻ってしまうので
入力するたびにテキスト内ががくがくになってしまうんです。
それを防ぎたいんですが、何か方法はないかなと。



30 名前:デフォルトの名無しさん :04/05/18 17:54
MSゴシックとかはまず入ってる。
配布可能なフォント使うか元から入ってるの使うしかない。


31 名前:デフォルトの名無しさん :04/05/18 19:43
hwndの参照先であるウィンドウオブジェクトとは何ですか?
ウィンドウの実体とのことですけど、構造体のようなインスタンスでしょうか
WNDCLASS構造体のウィンドウクラスとは全然違うものですよね?

32 名前:デフォルトの名無しさん :04/05/18 19:48
>>31
ウィンドウはWindowsが内部で管理しているが、その管理コードとでも思っておけ。

33 名前:デフォルトの名無しさん :04/05/18 20:11
>>32
レスありがとうございます。
ちなみにウィンドウクラスとは、そのWindowsが内部で管理しているウィンドウに
初期設定の値を与えるための情報を詰め込んだ構造体と考えて間違いはありませんか?

34 名前:デフォルトの名無しさん :04/05/18 21:07
漏れのレベルはコンソール用のちゃっちいプログラムを書ける程度なんだけど、
試しにいろいろなとこに載ってるWin32APIを使ったソースをコンパイルしようとすると
必ずエラーが出る。コンパイラはBCCなんだけど、どうしてだろう?
みんな普通にコンパイルできてるん?

35 名前:デフォルトの名無しさん :04/05/18 21:09
できてるよ!

36 名前:デフォルトの名無しさん :04/05/18 21:18
おおかたコンパイルオプションの -W を忘れているんだろ。

37 名前:デフォルトの名無しさん :04/05/18 22:44
誘導されてきました。

vc++でwindowsプログラミングをちょっとかじってみております。
質問なのですが、EditBoxを貼り付けたDialogBoxを作って、
EditBoxにフォーカスがあるときに打ち込まれたキーを取得したいのですがよくわかりません
DialogBoxのコールバック関数内でWM_COMMANDを拾うと、
LOWORD(wParam)にIDC_EDITBOXとかが入っていて
HIWORD(wParam)にWM_KEYDOWNが入ってるみたいなのですが、
どのキーが押下されたかっていう情報は取得できませんか?
EditBoxのコールバック関数を作ってWM取る、とかでしょうか

38 名前:デフォルトの名無しさん :04/05/18 22:51
>>33
「ちなみに」という言葉の使い方はその場合、間違い。

39 名前:デフォルトの名無しさん :04/05/18 23:32
ん?-Wってウィンドウズアプリのとき(WinMainあるとき)だろ?
>>34はウィンドウズアプリを作りたいのか、
それともwindowsAPIをちょこっと利用してるだけのコンソールアプリを作りたいのか。

つか、そういう使い方ってできるもんなん?やったことないからわからん。


40 名前:デフォルトの名無しさん :04/05/18 23:44
ちゃんとインポートライブラリリンクするなりしてればコンソールアプリでも普通にAPI使える。
つぅか、使えなかったらなにも出来んぞ。

41 名前:デフォルトの名無しさん :04/05/19 00:03
>>40
stdio.h
があればコンソールでも何とかなる。


42 名前:デフォルトの名無しさん :04/05/19 04:15
>>37
>HIWORD(wParam)にWM_KEYDOWNが入ってるみたいなのですが、
HIWORD(wParam)に入ってるのはEN_じゃないか?

>EditBoxのコールバック関数を作ってWM取る、とかでしょうか
これでいいと思うよ。

43 名前:デフォルトの名無しさん :04/05/19 11:07
CreateしたMutexって別にReleaseしなくても良いんでしたっけ。

というのは、何かこまめにReleaseしているおかげか、
WaitForSingleObjectが効いてないみたい。

44 名前:デフォルトの名無しさん :04/05/19 11:38
Mutexってなんか動作分かり難いというかデバッグし難いな。

CRITICAL_SECTION に書き換えた方が読みやすいし誤動作し難い?

45 名前:デフォルトの名無しさん :04/05/19 11:39
Release するかしないかは君のプログラムが決めることだけども、
Release しないと他のスレッドがその mutex を所有することが
できないんだから、Release しなくてもいい状況というのは
普通はない。


46 名前:デフォルトの名無しさん :04/05/19 11:47
consoleアプリでWin32APIを使うには、GetModuleHandleで
WinMain引数のhInstanceに相当するハンドルが得られる。


47 名前:37 :04/05/19 12:41
>>42
レスサンクスです。調べたらEN_〜みたいですね。

あとリソースエディタで貼り付けたEditBoxのコールバック関数
(ウインドウプロシージャと言うべきか)はどう登録するのでしょう?
そのEditBoxだけCreateWindow/RegisterClassExで貼り付けるんでしょうか?

48 名前:デフォルトの名無しさん :04/05/19 12:53
サンクスでつ>>45

ついでに、MutexとCryticalSectionとどちらか教えて下さい。

49 名前:デフォルトの名無しさん :04/05/19 12:59
Mutexはグローバルなカーネルオブジェクトだからプロセス間での排他に
使えるが遅い
CriticalSectionはそうではないから同一プロセス内のスレッド間排他が
主な役目になるが軽量で高速


50 名前:デフォルトの名無しさん :04/05/19 13:00
CriticalSectionはWin9xを視野に入れてしまうとタイムアウトができないのがつらいな。
プロセス間同期は必要ないことも多いが。

51 名前:デフォルトの名無しさん :04/05/19 13:03
>>47
サブクラス化で検索。

52 名前:デフォルトの名無しさん :04/05/19 13:14
実はMutexの一番良く見る例の一つが多重起動防止だったり
Cランタイム他のスレッド間同期処理に実際に使われてるのは
CriticalSectionのほうですな。

53 名前:デフォルトの名無しさん :04/05/19 16:04
そこで、メータードセクション

セマフォのように使え、プロセス間同期も出来、それでいて高速。
ただしMSDNそのままの実装だと同一スレッドから複数回 Enter できない罠

54 名前:37 :04/05/19 16:12
>>51
なんとかできそうッス
キーワードもらえて助かりました

55 名前:デフォルトの名無しさん :04/05/19 20:37
>>49 ミューテックスって遅かったんデスカ!

スレッド間の排他制御にずっと名無しのミューテックス
使ってたんだけどやめたほうがいいかなぁ。

56 名前:デフォルトの名無しさん :04/05/19 22:18
俺はWaitFor〜Objectが使いやすくて好きだな。
それと、Set/GetDlgItemFloatって使えないの?
グローバルネームスペースには存在するんだけど、
実態が存在しないらしくエラー出るし、
なんかリンクする必要あるのかと思ってMSDN探してみたけど無いし
ぐぐっても0件だし・・・

57 名前:デフォルトの名無しさん :04/05/19 23:45
Web上に転がっているMutexのサンプルはしばしば間違っていて抜け穴が存在する。

58 名前:デフォルトの名無しさん :04/05/20 08:56
まぁ、ここでも読んで同期オブジェクトに関する知識を深めろ

短時間でできる汎用の同期オブジェクト
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

59 名前:デフォルトの名無しさん :04/05/20 11:34
>>56
確かにInteliSenceで並んでるけど、どこにもないな。

VC6.0のInteliSenceには無い事から考えると…
 実はその内追加される予定があった関数で、
 InteliSenceの部隊が先行して入れてしまった
とかだったりして。

他のサーチエンジンで検索してみると、GetDlgItemTextを
使って自前で実装した例もあったんで、現状では使いたいなら
それしかなさそうだな。

60 名前:デフォルトの名無しさん :04/05/20 13:05
DirectXがインストールされているかどうかを、
コードレベルで調べる方法があれば教えてください。
そういうAPIがあるといいのですが、なければ
どこかのレジストリを調べることになるのでしょうか…。

61 名前:デフォルトの名無しさん :04/05/20 13:17
>>57
2重起動防止のサンプルですな

62 名前:デフォルトの名無しさん :04/05/20 13:27
DirectXSetupGetVersion

63 名前:デフォルトの名無しさん :04/05/20 13:45
>>58
これって自分でアプリに組み込めってこと?
APIで提供されるんじゃないのか。

64 名前:デフォルトの名無しさん :04/05/20 13:47
>>63
は?

65 名前:60 :04/05/20 14:04
>>62
どうもありがとうございます。試してみます。

66 名前:デフォルトの名無しさん :04/05/20 14:13
>>64
>>58 をぱっとみて、メータード セクションってのがWin32で提供されているのかと思っただけっす。

67 名前:デフォルトの名無しさん :04/05/20 14:27
提供されてるけど?


68 名前:デフォルトの名無しさん :04/05/20 17:07
>>67
マジで?
MSDNをCreateMeteredSectionで検索しても見つからないんだけど。

69 名前:デフォルトの名無しさん :04/05/20 17:07
>>57
どんな抜け穴ですか?

70 名前:デフォルトの名無しさん :04/05/20 17:13
高橋名人なら突破できるということだ

71 名前:デフォルトの名無しさん :04/05/20 17:15
ワロタ

72 名前:デフォルトの名無しさん :04/05/20 18:33
>>67
PlatformSDK探したけど見当たらなかった。
もしあるならどこにあるか教えてくれ


73 名前:デフォルトの名無しさん :04/05/20 18:41
誰も英語版の記事を読んでないの?
そのくらいのことができないのはちょっとな。

74 名前:デフォルトの名無しさん :04/05/20 18:58
>>73
そうじゃなくて、
英語版の MSDN の記事をコピペしてメータードセクションを作るのではなくて、
最初から PSDK に入ってるんじゃないの?
ってことだと思う。

>>67 の「提供されてるけど」は多分「ソースは提供されているけど?」ということじゃないのかな?
それを、>>68>>72 は、「Win32APIとして最初から提供されているの」って勘違いしたんじゃないかなあ。

75 名前:デフォルトの名無しさん :04/05/20 19:09
>>69
OpenMutex使ってるヤツはペケ

76 名前:デフォルトの名無しさん :04/05/20 19:11
ぐぐったらたったの二件。片方は↑で引用されてるMSDNの記事だった。
比較を見るといいことずくめなんだが、結局
FileMappingを利用して実装してるんだね、フーン
で終わってしまったYo。

77 名前:デフォルトの名無しさん :04/05/20 19:15
>>75
あれか。OpenされてなければCreateってやつね。

78 名前:デフォルトの名無しさん :04/05/20 19:23
InitializeCriticalSectionしといて、DeleteCriticalSectionしない、
ってのは弊害ありますか?

79 名前:78 :04/05/20 19:37
実は、クラスの
コンストラクタでInitializeCriticalSection、
デストラクタでDeleteCriticalSectionするようにしたんですが、
これだと、クラスの生成破棄をマルチスレッドでやっちゃうと、
CriticalSectionが途中で無効になっちゃうかな、と思いまして。

で、クラスの中で初期化するのはやめて、
プログラムのはじめでInitializeCriticalSectionして、
あとはほっとこうかなー、と。

どうでしょう?

80 名前:デフォルトの名無しさん :04/05/20 19:39
それはプログラムの作り方の問題じゃねーのか?

81 名前:78 :04/05/20 19:56
プログラムの作り方を質問させて頂いてまつ。

79に書いたやり方だと、やっぱりCriticalSectionが途中で無効になりますか?
教えてえ○い人。

82 名前:デフォルトの名無しさん :04/05/20 20:34
がいしゅつだったわるいけど、
Win95上でIME を Disableにする方法無い?
クローズじゃなくってDisable.
BOOL WINAPI WINNLSEnableIME(HWND hWnd, BOOL bEnable)
があったんだけけど、これって、NT用だったり。

83 名前:デフォルトの名無しさん :04/05/20 20:37
>>81
クリティカルセクションはそれぞれが独立してるから
何個作ろうが構わない。

そもそも、各スレッドから同時にアクセスされたくないときに
使う物だからプログラムの内容による。

ってことを>>80は言いたかったんだと思う。

84 名前:デフォルトの名無しさん :04/05/20 21:16
>>82
ImmなんとかってAPI群が有るが。

85 名前:デフォルトの名無しさん :04/05/20 21:18
>84
ImmSetOpenStatus
とかでしょ。でも、クローズするのはあるが、
IMEを、ディセーブルにするのなんてあった?

86 名前:デフォルトの名無しさん :04/05/20 21:53
>>85
ImmDisableIMEは98以降か。
スマソ。

87 名前:デフォルトの名無しさん :04/05/20 22:23
アクティブなウインドウが変更された時の
そのウインドウハンドルの取得って出来ますか?

88 名前:デフォルトの名無しさん :04/05/20 22:31
GetActiveWindow()

89 名前:デフォルトの名無しさん :04/05/20 22:42
書き方ちょっと間違えました。
Windows全体での
アクティブウインドウが変更になった瞬間を取得です。

90 名前:デフォルトの名無しさん :04/05/20 22:43
フックでもしこんどけ

91 名前:89 :04/05/21 00:10
>>90
仕込んでみたんですけど、
0==GetParent(アクティブウインドウ)
なやつを引っ張ったとしても。
画面に出てないウインドウも取ってくるですよ。
spyとかで、調べても見つからないような

フック以外ないですかねー

92 名前:デフォルトの名無しさん :04/05/21 00:39
OpenSoundとかはとっくに廃止されたというかWin32にはそもそも
存在しなかったような気がしますか、これと同じビープ音で演奏する
方法ってないんでしょうか?
ユーザー補助とかでピヨッとか鳴るから何か手段はあるはずなんだが。

93 名前:デフォルトの名無しさん :04/05/21 00:41
MessageBeep()で鳴らない?

94 名前:デフォルトの名無しさん :04/05/21 00:46
あ、演奏したいのだったらBeep()の方だな。MessageBeep()だと一種類しかないけど、
Beep()の方なら周波数と鳴らす時間を指定できるっぽい。

95 名前:デフォルトの名無しさん :04/05/21 01:06
Beep使ったことあるけど、うるさいしへぼいし、なってる間プログラムはとまるし。
別スレッドで…とかやればいいのだろうけど、まだスレッド意識したことないな。

96 名前:デフォルトの名無しさん :04/05/21 01:18
WndProcを呼び出す為にメッセージがあった事にできる
関数があるなら教えてください。

Timerとかあると思うのですが、そんなたいそうなものではなく、
WndProc内でHappenMessage(NULL);みたいにやって
WndProcを抜けた後もう一度WndProcに入るみたいな事がしたいのです。

97 名前:デフォルトの名無しさん :04/05/21 01:24
>>92
宍戸さんの所にあります。だが、めちゃめんどいです。
http://www.sm.rim.or.jp/~shishido/waved.html

後、Beep()は楽だけど、たしか95系だと動かないです。

98 名前:デフォルトの名無しさん :04/05/21 01:26
>>96
適当なメッセージを自身のプロシージャに送れば?
WM_APP+96とか。

99 名前:デフォルトの名無しさん :04/05/21 01:30
>>96
PostMessageでは期待にそえんか?

100 名前:96 :04/05/21 01:47
>>98>>99
ありがとうございます。やってみます。

101 名前:96 :04/05/21 02:17
できました。ありがとうございました。

102 名前:デフォルトの名無しさん :04/05/21 08:59
テストプログラムを作って、
EnterCriticalSectionを実行しましたが、
Leaveを待たずにEnter出来てしまいます。
クリティカルセクションって同一スレッドでは排他しないんでしたっけ?

103 名前:デフォルトの名無しさん :04/05/21 09:13
いったんクリティカル セクションの所有権を獲得したスレッドは、 その実行をブロック
することなく、 繰り返しEnterCriticalSectionを呼び出すことができます。これにより、
スレッド自身が、 すでに所有しているクリティカル セクションを待つ間、 デッドロック
状態に陥らないようになります。スレッドの所有権を解除するには、 各EnterCriticalSection
呼び出しに対してLeaveCriticalSection関数を1回ずつ呼び出さなければなりません。

ってことでしょ多分

104 名前:デフォルトの名無しさん :04/05/21 09:17
そういうことですか、納得。>>103

105 名前:デフォルトの名無しさん :04/05/21 09:18
>>102
同一スレッドで排他したらデッドロックするじゃん。

106 名前:デフォルトの名無しさん :04/05/21 09:58
2^32 + 1回連続Enterしても大丈夫なんだろうかね?

107 名前:デフォルトの名無しさん :04/05/21 10:03
>>92
音を鳴らすだけなら、sndPlaySoundで良いんじゃない?
もうちょっと、色々して鳴らすならMCI系で。
それ以上なら、waveOut系を使うしかないかな…。

108 名前:デフォルトの名無しさん :04/05/21 10:19
>>106
たぶんダメポ

109 名前:デフォルトの名無しさん :04/05/21 10:47
>>106
とりあえず、やってみた。
結果は、デッドロックや例外で止まるとかはないが、
CrticalSectionの機能を果たさなくなってる。

まぁ、普通はそんな回数やる前に設計見直せって
話になるだろうから、心配するなw

110 名前:デフォルトの名無しさん :04/05/21 10:54
>>106
そんな事態を招くプログラマの頭のほうが深刻な問題だけどな。

111 名前:デフォルトの名無しさん :04/05/21 18:01
ファイルの関連づけ取得を楽にするAPIってないですかね?
がんばってレジストリ読むしかない?


112 名前:デフォルトの名無しさん :04/05/21 18:27
質問。

Win32APIのExtTextOutW ( ExtTextOutのUnicode版 ) 使ったんだけど、
SetTextAlign( hDC, TA_UPDATECP ) とやっても X と Y が有効になっちゃうんだけど、
これって自分の環境だけなのか、他でもなっているのか教えてください。

他でもなってるなら(APIのバグなら)自分でカレントポジション持ってきて移動させますので。

#ちなみにANSI版はまだ試してないっス

自分の環境は
WinXP
VC++.NET 7.1
.NET FrameWork1.1 (APIだから関係なし?)
です。


113 名前:デフォルトの名無しさん :04/05/21 18:48
>>111
FindExecutable

114 名前:デフォルトの名無しさん :04/05/21 18:48
とりあえず、Wizardで作られたソースに
 MoveToEx(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でも一緒。

115 名前:111 :04/05/21 18:50
>>113
サンクス

116 名前:112 :04/05/21 19:27
>>114
ありがとう。
じゃぁなんか自分のコードにバグあるっぽいね。
早速探してみるよ。


117 名前:デフォルトの名無しさん :04/05/21 22:13
関連づけられていないファイルをダブルクリックした場合、
開く方法を選択するダイアログが出てくるけど、
これを開くAPIってある?
ShellExecuteでは出てこないんだけど・・・


118 名前:デフォルトの名無しさん :04/05/21 22:49
KBにあったけど番号忘れた。

119 名前:デフォルトの名無しさん :04/05/21 23:18
>>117
rundll32 shell32,OpenAs_RunDLL %1

120 名前:デフォルトの名無しさん :04/05/21 23:33
「ファイルを保存するダイアログ」を外部からパスを与えて操作したいんだけど
どうしたらいい?
メモ帳とかでCtrl+Sで出てくるようなやつで表示されているパスを変更したいっ
てことなんだけどどうでしょう.

121 名前:デフォルトの名無しさん :04/05/21 23:37
>>120
すでに開いているのを操作するのか?
そのパスで開きたいのか?
さあ、DOTCH?

122 名前:デフォルトの名無しさん :04/05/21 23:38
SetCurrentDirectory

123 名前:デフォルトの名無しさん :04/05/21 23:55
>>121
前者です.
>>122
これだと「そのパスで開く」ということになるんですよね?

124 名前:デフォルトの名無しさん :04/05/21 23:59
フックするしかないかな。

125 名前:デフォルトの名無しさん :04/05/22 00:03
あれってダイアログの種類二、三ない?
全部同じ操作でいけるのかな?
てか>>123は何がしたいんだ?

126 名前:123 :04/05/22 00:17
>>125
親が仕事でPCを使っていて, いくつかの保存先を行ったり来たりするんだけどそ
れを省力化あるいは自動化できたらいいなと.

127 名前:デフォルトの名無しさん :04/05/22 00:18
>>126
Placebarをカスタマイズ汁。}

128 名前:デフォルトの名無しさん :04/05/22 00:22
>>126
えらいな、自分で作るっていう考えが。

129 名前:123 :04/05/22 00:28
>>127
それだとあらかじめ登録しておいたフォルダに保存するて感じで, 希望としては
もちっと柔軟性が欲しいところなんです.
というか, ある既存のアプリが作ったフォルダの名前を取得して, 別の既存のア
プリで何かのデータをそのフォルダに保存するということがやりたいというわけ
です.

130 名前:デフォルトの名無しさん :04/05/22 03:30
.bmpファイルを開いてBMPINFOを得る方法を教えてください。

131 名前:デフォルトの名無しさん :04/05/22 03:31
>>130
ヘッダを読む

132 名前:デフォルトの名無しさん :04/05/22 03:37
>>131
いろいろ調べておっしゃるバイナリを調べる方法や、
キャストしたりオフセットを使ったりする方法はあったのですが、
GetBitmapInfo(bmpFileName, &bmpInfo);
こういう感じで簡単に得られるのはないでしょうか。

133 名前:デフォルトの名無しさん :04/05/22 03:42
無い

134 名前:デフォルトの名無しさん :04/05/22 03:47
>>132
キャストしないでも、
#pragma pack(1)とかされてるはずだから、
 1 ビットマップをオープン
 2 BITMAPFILEHEADERを読む
 3 bfOffBitsをみてBITMAPINFOのサイズを決定
 4 BITMAPINFOを読む
とすれば問題なく読める。
別に要素ごとに一つ一つ読む必要は無い。

135 名前:130 :04/05/22 03:48
>>133
なら、LoadImage→SelectObject→SetDIBitsで得られますか。

136 名前:130 :04/05/22 03:52
>>134
調べてみます。

>>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);

137 名前:デフォルトの名無しさん :04/05/22 03:53
>>136
GetObject

138 名前:130 :04/05/22 03:57
>>137
GetObject(hBitmap, sizeof(BITMAPINFO), &bmpInfo);
ですか?

139 名前:デフォルトの名無しさん :04/05/22 03:58
>>136
LR_CREATEDIBSECTIONつけてんだからDIBだろうが。

140 名前:130 :04/05/22 04:00
>>139
そうだと思うのですが、どこにパレットとピクセル配列があるのか
分からないのです。bitmap.bmBitsだと思うのですが。
SetPixelVで表示したいのでそこにアクセスする方法を探していました。

141 名前:130 :04/05/22 04:29
まだ自分のLVでは無理なようなのでもう少し勉強してからにします。
お答えいただきありがとうございました。

142 名前:デフォルトの名無しさん :04/05/22 04:35
システムクラス(BUTTONとか)のWM_NCCREATEをうけとりたいのですが
SetWindowsHookEx以外の方法ってありますか

143 名前:デフォルトの名無しさん :04/05/22 04:37
>>142
スーパークラス化

144 名前:142 :04/05/22 06:56
ありがとうございます

145 名前:117 :04/05/22 09:02
>>118-119
できました。
ありがとうございました。


146 名前:デフォルトの名無しさん :04/05/22 13:31
モードレスダイアログのエディットコントロールに最初に表示されるように。
SetDlgItemTextで文字を表示さしてるんですけれど、
ダイアログが呼び出されたときに何故か最初に表示されてる文字の一つが反転
(マウスでクリックして選択された状態)になってるんです。
これってどうゆう原因なんでしょうか。.netで開発してるんですけど、プロパティにはそれらしい
項目はないみたいだったんですけど。お願いします。

147 名前:デフォルトの名無しさん :04/05/22 17:15
ドラッグドロップでマイコンピュータなどの特殊フォルダはどうやって受け取れば良いんでしょうか?
IDataObject::GetDataに渡すFORMATETC::cfFormatに設定する値を変えればいいと思うのですが、
どの定数を設定すればいいのかわかりません。
よろしくお願いいたします。


148 名前:デフォルトの名無しさん :04/05/22 17:27
>>147
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/programmersguide/shell_basics/shell_basics_programming/transferring/clipboard.asp

149 名前:147 :04/05/22 19:08
>>148
ありがとうございました。


150 名前:デフォルトの名無しさん :04/05/22 20:18
CreateWindowEx で、作ったツールバーの背景色を変えるにはどうしたらいいですか?
もしくは、ツールバーのビットマップのうち、透過色を指定する方法でもかまいません。

Win9x と XP で、デフォルトの背景色が違うので、なんとかしたいのです。


151 名前:146 :04/05/22 20:54
モードレスダイアログのエディットコントールのプロパティの
TabstopがTrueになってたのが原因だったみたいです。
Falseにしたら治りました。

152 名前:デフォルトの名無しさん :04/05/22 21:32
質問があります
Win32Apiだけではないですが教えてください

インターネットをIEで複数開いて、それぞれのWindowに最新F5信号絶え間なくを送りたい
のですが可能でしょうか?

一つ一つのWindowを順番にアクティブにして最新信号を送る方法と
アクティブ、非アクティブのWindowに信号を送るのとが考えられますが
非アクティブのWindowに最新信号(F5)は遅れるのでしょうか?

あと、今のサーバーは最新信号だけでは落ちないようになっていると聞きますが
このプログラムで大量の数のWindowを起動し最新信号(F5)を送っても
効果はあまりなのでしょうか?

どうか教えてください、お願いします m(_;)m

153 名前:デフォルトの名無しさん :04/05/22 21:34
>>152
韓国人かよ

154 名前:デフォルトの名無しさん :04/05/22 21:45
一台からやってもDOS攻撃は意味がない。

155 名前:152 :04/05/22 22:09
>>154
ありがとうございます
そういえばそのようなこと聞いたことがあったような気がします
では、作っても意味がないのでしょうか?
OS上の限界なのでしょうかね?

window一つでもwindow複数でもサーバーの負担は変わらないのかな

分かりました、別の方法を考えてみます

156 名前:デフォルトの名無しさん :04/05/22 22:09
DDoS推奨。てかなんのスレだここは

157 名前:152 :04/05/22 22:18
>>156
DDosと言う方法があるんですね
さっそく調べてみます

158 名前:デフォルトの名無しさん :04/05/22 22:18
最近の朝鮮人は2ch派生の顔文字使うらしいよ。NAVERでフレームやってた奴らが広めたらしい。

159 名前:デフォルトの名無しさん :04/05/22 22:26
スレが違う方向に逝ってしまう予感・・・

160 名前:デフォルトの名無しさん :04/05/22 23:03
REM ---DDOS.BAT---
:A
CURL http://www.2ch.net/ > NUL
GOTO A
REM ---EOF---

161 名前:デフォルトの名無しさん :04/05/23 02:00
msdn に、

Requirements
Routine Required header Compatibility
malloc <stdlib.h> and <malloc.h> ANSI, Win 98, Win Me, Win NT, Win 2000, Win XP

と書いてあるのですが、malloc は win95 で使えないんですか?

162 名前:デフォルトの名無しさん :04/05/23 02:03
んなーこたぁない。

163 名前:デフォルトの名無しさん :04/05/23 02:05
VC++7.1とかだとそもそもWin95が対象外。

164 名前:デフォルトの名無しさん :04/05/23 04:30
HWND button = CreateWindow("BUTTON","Hello",WS_VISIBLE | BS_PUSHBUTTON, ... )
として第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);

ボタンに指定したのと同じ位置,サイズ,キャプションでウィンドウが表示され、その中に
ボタンが表示されてしまいます
ボタンの親をあとから指定することは不可能なのでしょうか?

165 名前:デフォルトの名無しさん :04/05/23 08:56
俺もSetParentしてえ

166 名前:デフォルトの名無しさん :04/05/23 10:10
>>165
イ`

167 名前:デフォルトの名無しさん :04/05/23 10:29
SetParent(俺, 隣のおねいさん);

168 名前:デフォルトの名無しさん :04/05/23 10:48
>>167
まずハンドルを取得汁

169 名前:デフォルトの名無しさん :04/05/23 11:02
>>167
養子縁組を申し込めばOK

170 名前:デフォルトの名無しさん :04/05/23 11:48
養子縁組に必要な書類==ハンドル

171 名前:デフォルトの名無しさん :04/05/23 12:09
養子縁組に必要な条件
(>>167).年齢() < (>>167).隣のおねいさん.年齢()

172 名前:デフォルトの名無しさん :04/05/23 14:35
メッセージ等を使わずに
SHIFTキーが押されているかどうかをチェックするにはどうすればいいですか?

173 名前:デフォルトの名無しさん :04/05/23 14:39
GetKeyboardStateとか

174 名前:デフォルトの名無しさん :04/05/23 14:41
GetKeyState

175 名前:デフォルトの名無しさん :04/05/23 15:09
GetShiftKeyState

176 名前:デフォルトの名無しさん :04/05/23 15:47
GetAsyncKeyState

177 名前:デフォルトの名無しさん :04/05/23 17:23
LoadBitmap で読み込んだビットマップのピクセルに直接アクセスするには、
どうしたらいいですか?
背景色を GetSysColor(COLOR_BTNFACE) に置き換えたいのです。

178 名前:デフォルトの名無しさん :04/05/23 18:51
GetPixelVとかSetPixelVとかで出来るのでない?


179 名前:デフォルトの名無しさん :04/05/23 18:55
Get/SetBitmapBits()
つーかここで〜するAPIはなんですか?とか言ってるヤツでVC使いなら
インテリセンスでそれらしいの探せ

180 名前:デフォルトの名無しさん :04/05/23 19:10
FolderのContext Menu Handlersに自作アプリを追加したのですが、
エクスプローラの左フォルダーツリーから呼び出された場合と
右のファイルリストから呼び出された場合で追加可能アイテム数がかなり違います。
(左約3万、右約140)
この差はどこから来るのでしょうか?
また右の場合の項目数を増やす事は出来ませんでしょうか?


181 名前:デフォルトの名無しさん :04/05/23 19:11
>>179
msdnの目次のほうがいいとおもいます

182 名前:デフォルトの名無しさん :04/05/24 09:48
>>179
今は、SetDIBits()では?

183 名前:デフォルトの名無しさん :04/05/24 12:10
MultibyteToWideCharのコードページ、
CP_ACPとCP_OEMCPを使っている例が多いのですが、
どっちを使うべきなんでしょうか?差がわかりません。

184 名前:デフォルトの名無しさん :04/05/24 12:19
日本語環境ならCP_ACPでおげ

185 名前:デフォルトの名無しさん :04/05/24 12:35
thx!

186 名前:デフォルトの名無しさん :04/05/24 12:38
明示的にSJISから変換したいなら932が正解な気がするが。

187 名前:デフォルトの名無しさん :04/05/24 13:06
Find*Fileのファイル名から変換するのに使用してるんです
932決め打ちだと日本語環境以外で(使うかはともかく)不具合出ませんか?

188 名前:デフォルトの名無しさん :04/05/24 13:32
>>187
システムのコードページを得て変換するのが正解のような。

189 名前:デフォルトの名無しさん :04/05/24 13:46
それなら、CP_ACP で正解。


190 名前:デフォルトの名無しさん :04/05/24 16:48
OEM変換する必要がある環境って触ったこと無い人多そう。

191 名前:デフォルトの名無しさん :04/05/24 21:01
GetDlgItemIntってint型しか使えないんだけど、int型の範囲超えちゃうような
数値とかの場合はどうしてるの?

192 名前:デフォルトの名無しさん :04/05/24 21:08
>>191
文字列で取って、自分で扱ってる多倍長整数とかその他の形式に、自分で変換すればいいだけでは?

193 名前:デフォルトの名無しさん :04/05/24 21:08
WM_MOUSEWHEELはwin98でも使えるのにWHEEL_DELTAとかは
_WIN32_WINNT>=0x400でないと定義されないのはなぜじゃ!

194 名前:デフォルトの名無しさん :04/05/24 21:09
もじれつ

195 名前:デフォルトの名無しさん :04/05/24 21:19
もりぜつ

196 名前:デフォルトの名無しさん :04/05/24 21:23
>>192
文字列をdouble型に変換するのってどうするんでしたっけ?

197 名前:196 :04/05/24 21:25
atof関数だったかも

198 名前:デフォルトの名無しさん :04/05/24 22:46
atofはfloatだべ
strtodだ
どっちにしろAPIではないがな

199 名前:デフォルトの名無しさん :04/05/24 22:52
VCではdoubleだが > atof

200 名前:デフォルトの名無しさん :04/05/24 22:56
atoi64 は、VC独自仕様?

201 名前:デフォルトの名無しさん :04/05/24 22:59
コマンドの標準入出力をゲットしてなにかしらこねくり回そうかなーと思っているんですが、
CreatePipeとか使って標準入出力を他のHANDLEにパイプすることには成功したんですが、
どうもリダイレクトとかパイプとか使用してると、挙動がかわるコマンドってあるじゃないですか?(lsとか)

この挙動がパイプつなげる前と変わらないようにしたいんですが、なんか方法ってありますかね?
正確にはわかりませんが、自分の憶測だと、そういうコマンドって、
内部で、出力先を調べて、結果を変えてると思うんですが、
その調べるときの出力先をダマして教えてしまうような方法がないかなーと思うんですが…

202 名前:デフォルトの名無しさん :04/05/24 23:00
atof()はひょーじゅんでdoubleだろ

ていうかANSI以前では引数だの戻り値だのにfloatだのcharだのといった
型は使えなかったんじゃないか確か
なんでもint, long, double, ポインタ


203 名前:デフォルトの名無しさん :04/05/24 23:01
>>201
むり。

204 名前:デフォルトの名無しさん :04/05/24 23:03
>>201
Unixなら、psuedo ttyを使ってそういう類の仕事をやることがある
はず
tclでかかれたexpectとかはそーゆー目的のツール
のはず


205 名前:デフォルトの名無しさん :04/05/24 23:04
>>202
引数は、
float → double
char,short → int
というルールだけど、
戻り値はなんでもアリだった気が。

206 名前:デフォルトの名無しさん :04/05/24 23:07
>>205
原理的にはできるとおもう
プロトタイプなんてモンも無かったし引数はとりあえずスタックに
プッシュするだけだから、ああなってただけだと思うから

でも、実際にfloatやchar戻してる例なんてみたことないよ


207 名前:デフォルトの名無しさん :04/05/24 23:46
>>201
リダイレクトさせるんじゃなくて、
フッカ潜り込ませて、そのプロセスのコンソール入出力をぶん取る方が確実と思うが。


208 名前:201 :04/05/25 00:07
>>207
フッカというとHookerのことですか?
フックというとSetWindowsHookExぐらいしかしらないんですが
どんな感じでやるんでしょう?

209 名前:デフォルトの名無しさん :04/05/25 05:41
部分的なITEMIDLIST(IEnumIDList::Next()で列挙した奴)と
そのITEMIDLISTの親のIShellFolderから完全なITEMIDLISTを得る方法はないでしょうか?

210 名前:デフォルトの名無しさん :04/05/25 06:09
子ウィンドウにDestroyWindowすると親ウィンドウも破棄されてしまうのですが
子ウィンドウだけを破棄する方法はありますか?
子ウィンドウはWS_EX_NOPARENTNOTIFYを指定してます.子ウィンドウを破棄する前に
SetParent(hChild,HWND_DESKTOP)として親を変えてもだめでした

211 名前:デフォルトの名無しさん :04/05/25 06:24
破棄されないよ

212 名前:210 :04/05/25 07:01
すいませんあほでした
子ウィンドウのWndProcのWM_DESTROYの中でも
PostQuitMessage(0)していました。。。。。。

213 名前:デフォルトの名無しさん :04/05/25 08:05
>>209
自力で結合させる以外の方法はなかったはず
これの下の方
ttp://www.kab-studio.biz/Programing/Codian/ShellExtension/06.html


214 名前:デフォルトの名無しさん :04/05/25 13:05
とある拡張子に関連付けられたアイコンがあるファイル名と
インデックスを取得するだけのAPIってないでしょうか?

シェル拡張でIExtractIconを利用してるんですが、そこで上書きする
アイコンのロードに失敗した時に、元の奴を表示したいのです。
ExtractAssociatedIconだと、その中でさらにIExtractIconのメンバ関数を
呼び出してStackOverFlowになってしまうみたいで、Explorerが落ちちゃいます。

やっぱり、レジストリを検索するしかないのでしょうか?

215 名前:デフォルトの名無しさん :04/05/25 13:17
>>214
そうですね。
シェルエクステンションを使うということは、しごく当然ですが、シェルからの取得も
そのエクステンションを使用するわけなので、、、

もっとも、アイコンのロードに失敗するという状況自体がおかしいという考えもありますが。

216 名前:デフォルトの名無しさん :04/05/25 13:58
>>214
漏れと同じ事をしようとしている希ガス・・・


217 名前:デフォルトの名無しさん :04/05/25 18:32
>>215
レスありがとうございます。

> アイコンのロードに失敗するという(略
上書きするアイコンは、外部ファイルを利用してアイコンをロードするって
ことをやってるので、一応失敗する可能性もあるかな〜と思いまして。

前の書き込み後、色々調べてSHGetFileInfo()でSHGFI_ICONLOCATIONを
指定する方法も試してみたんですが、バグなのか呼び出し方に問題が
あるのか、どうやっても取得できませんでした。

他に方法もなさそうなので、レジストリ検索にしときます…(´・ω・`)

218 名前:デフォルトの名無しさん :04/05/25 22:35
ファイルがショートカットかどうか判別するAPIはありますか?
拡張子がLnkやUrlで判別するしかない?


219 名前:デフォルトの名無しさん :04/05/25 23:29
>>218
IShellLink Interfaceを使う

220 名前:デフォルトの名無しさん :04/05/25 23:37
C言語なら俺に聞けのスレでおなじ質問をしたんですがスレ違いとのことでこのスレを紹介されてきました

C言語でWindowsを再起動させるプログラムを作りたいんですけどどうすればいいですか?


221 名前:デフォルトの名無しさん :04/05/25 23:45
とあるウィンドウのハンドルを取得できたとして、
そのプロセスのコールバック関数から
ウィンドウの一番下にメモかリストボックスを追加して
その上にリサイズ用のバー(スプリッター)を追加したいのですが、
そのようなことは可能でしょうか。
また、それを行う場合どういった方法でやればいいのでしょうか。

222 名前:デフォルトの名無しさん :04/05/25 23:47
>>220
ExitWindowsEx

223 名前:デフォルトの名無しさん :04/05/26 00:21
>>221
よくわからんのだが、既存のウィンドウの下部に外部のプログラムからそういうウィンドウをつけたい、ということかな。


224 名前:デフォルトの名無しさん :04/05/26 00:25
>>223
>既存のウィンドウの下部にそういうウィンドウをつけたい
これはその通りです。

>外部のプログラムから
プラグインのようなものから、ということです。
プロセス・スレッド的にはウィンドウのメッセージループと(たぶん)同一です。

225 名前:デフォルトの名無しさん :04/05/26 00:58
不特定多数のエディット
(数が状況によって変化するようなコントロール)
を作成するプロシージャがある場合に
また別のウィンドウのプロシージャで
任意のエディットに入力された文字列を受け取るには
どうしたらいいでしょうか?
外部のHWND型配列にそのエディットのハンドルを格納しておいて
そのハンドルを使ってGetWindowTextで呼び出すという
安っぽい方法なら思いつくのですが・・外部変数使ってるし・・
外部変数に頼らないまたは一般的な方法ありましたら教えてください
おねがいします。


226 名前:デフォルトの名無しさん :04/05/26 01:06
>>225
俺なら共用データクラスを作るが。MFCならCDocumentにつっこむ。
HWNDではなく、文字列そのものを。
てか、スレ違い。

227 名前:デフォルトの名無しさん :04/05/26 01:22
即レスどもです

共有データクラスってなんですか?
ググッってみたのですがヒットしませんでした
ちなみにMFCもまだ
使えませんT T
Win32APIもCも猫やら本やらで勉強中の身で。

てかスレ違いですか!
このような問題に対処する方法は
Win32APIに限られたものじゃないから ってことですか?

228 名前:デフォルトの名無しさん :04/05/26 01:40
>>225
文字列を受け取りたいエディットコントロールのIDがわかるなら
GetDlgItemText()を使えばHWNDの配列なんて必要ないよ。

229 名前:225 :04/05/26 12:25
>>228さん ありがとうございます
なんだか前よりずっと綺麗にまとまりそうです

そこでまたまた初心者質問で申し訳ないのですが
親ウィンドウのWM_COMMAND以外にmenuIDが参照されるタイミングを
知らないので思ったのですが
兄弟ウィンドウの中でかぶらなければ
menuIDはどんな値にしてしまってもいいんでしょうか
多くのコントロールを必要とするプログラムの場合
その値を普通はどうやって決めるのでしょうか

230 名前:デフォルトの名無しさん :04/05/26 12:38
兄弟ウィンドウでかぶらなければ適当に決めてよい

231 名前:225 :04/05/26 12:53
そうですか!
ありがとうございました

232 名前:デフォルトの名無しさん :04/05/26 13:04
Win32API 直でPG組んでる人って、まだ多いん?


233 名前:デフォルトの名無しさん :04/05/26 13:16
もうとかまだとかいう話じゃねーと思うんだが。

234 名前:デフォルトの名無しさん :04/05/26 13:44
あながち多いん?

235 名前:デフォルトの名無しさん :04/05/26 13:58
ぞんがい多いよ

236 名前:デフォルトの名無しさん :04/05/26 14:01
オブジェクト思考とか、イベント駆動型についていけない人達と思っていいか?

237 名前:デフォルトの名無しさん :04/05/26 14:03
Win32APIの窓プログラミングを非イベント駆動で組む方法を教えてください。

238 名前:デフォルトの名無しさん :04/05/26 14:04
そうやって優越感に浸っているのがいいよ。

239 名前:デフォルトの名無しさん :04/05/26 14:05
オブジェクト指向と何の関係が...
自分は進んでいると思っているキチガイの中の人か?

240 名前:デフォルトの名無しさん :04/05/26 14:12
イベント駆動ってメッセージ処理そのものなんじゃ…

241 名前:デフォルトの名無しさん :04/05/26 14:14
236は無知でド低脳な人だと思っていいか?

242 名前:デフォルトの名無しさん :04/05/26 14:14
直の方がプログラムの流れが一目瞭然で良いが、
MFCを覚えてからは、こっちの方が楽で良いな。
でも旧来のやり方が好きな人もいるでしょうし、人それぞれで。
Win32API直PGを経験してる方が、MFCなどに移ってもなにかと有利だと思う。

243 名前:236 :04/05/26 14:15
大量(プゲラ

244 名前:デフォルトの名無しさん :04/05/26 14:17
大漁ね

245 名前:236 :04/05/26 14:18
また釣れた(プゲラッチョ

246 名前:デフォルトの名無しさん :04/05/26 14:21
釣りって事にしないとやってられないよな

247 名前:デフォルトの名無しさん :04/05/26 14:46
無能な奴にかぎって変なプライド持ってたりするからな。
ウチの会社にも居るんだけど何とかして欲しい…

248 名前:デフォルトの名無しさん :04/05/26 14:55
こういう馬鹿話はマ板でやってくれんか

249 名前:デフォルトの名無しさん :04/05/26 14:56
>>247
どうにもなりません。
無能なヤツは自分が無能であることに気づく能力も
自分の無能さを認める能力もありませんので。

250 名前:デフォルトの名無しさん :04/05/26 16:13
質問させてください。

任意のタイミングで、フォーカスされているコントロールの HWND を
取得したいのですが、これは可能でしょうか?

既存のプログラム(ソース無し)を外部から操作したいと考えているため、
フォーカスイベント発生時にそのコントロールの HWND をグローバル変数に
保存しておくという方法が使えません。

素人ながら調べているのですが解決策へたどりつけていません。
可能か/不可能か、可能ならば参考情報へのポインタを教えていただけ
ませんでしょうか。宜しくお願いいたします。


■過去ログ置き場に戻る■ 1- 次250 最新50
DAT2HTML 0.33f Converted.