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


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

Win32API質問箱 Build45
1 名前:デフォルトの名無しさん :2006/08/20(日) 09:13:26
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。

過去スレ、関連リンクは>>2-5くらい。

■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。英語版(http://msdn.microsoft.com/library/)の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで

2 名前:デフォルトの名無しさん :2006/08/20(日) 09:13:59
-過去スレ
44 ttp://pc8.2ch.net/test/read.cgi/tech/1151501925/
43 ttp://pc8.2ch.net/test/read.cgi/tech/1148005509/
42 ttp://pc8.2ch.net/test/read.cgi/tech/1144962549/
41 ttp://pc8.2ch.net/test/read.cgi/tech/1141392216/
40 ttp://pc8.2ch.net/test/read.cgi/tech/1138893959/
39 ttp://pc8.2ch.net/test/read.cgi/tech/1136673250/
38 ttp://pc8.2ch.net/test/read.cgi/tech/1133798345/
37 ttp://pc8.2ch.net/test/read.cgi/tech/1131884991/
36 ttp://pc8.2ch.net/test/read.cgi/tech/1128951330/
35 ttp://pc8.2ch.net/test/read.cgi/tech/1125850096/
34 ttp://pc8.2ch.net/test/read.cgi/tech/1122723009/
33 ttp://pc8.2ch.net/test/read.cgi/tech/1120153520/


3 名前:デフォルトの名無しさん :2006/08/20(日) 09:16:34
32 ttp://pc8.2ch.net/test/read.cgi/tech/1117271829/
31 ttp://pc8.2ch.net/test/read.cgi/tech/1114762194/
30 ttp://pc8.2ch.net/test/read.cgi/tech/1112345886/
29 ttp://pc8.2ch.net/test/read.cgi/tech/1110281860/
28 ttp://pc5.2ch.net/test/read.cgi/tech/1108199304/
27 ttp://pc5.2ch.net/test/read.cgi/tech/1106103119/
26 ttp://pc5.2ch.net/test/read.cgi/tech/1104109858/
25 ttp://pc5.2ch.net/test/read.cgi/tech/1101393155/
24 ttp://pc5.2ch.net/test/read.cgi/tech/1098967135/
23 ttp://pc5.2ch.net/test/read.cgi/tech/1095534704/
22 ttp://pc5.2ch.net/test/read.cgi/tech/1092524669/
21 ttp://pc5.2ch.net/test/read.cgi/tech/1090422324/
20 ttp://pc5.2ch.net/test/read.cgi/tech/1088140233/
19 ttp://pc5.2ch.net/test/read.cgi/tech/1084697545/
18 ttp://pc5.2ch.net/test/read.cgi/tech/1081702990/
17 ttp://pc5.2ch.net/test/read.cgi/tech/1077470361/
16 ttp://pc2.2ch.net/test/read.cgi/tech/1073830065/
15 ttp://pc2.2ch.net/test/read.cgi/tech/1069339866/
14 ttp://pc5.2ch.net/tech/kako/1065/10653/1065328397.html
13 ttp://pc5.2ch.net/tech/kako/1059/10595/1059549320.html
12 ttp://pc5.2ch.net/tech/kako/1056/10560/1056033645.html
11 ttp://pc5.2ch.net/tech/kako/1052/10526/1052651750.html
10 ttp://pc5.2ch.net/tech/kako/1047/10478/1047819779.html
ttp://pc5.2ch.net/tech/kako/1044/10449/1044929160.html
ttp://pc5.2ch.net/tech/kako/1040/10409/1040964626.html
ttp://pc3.2ch.net/tech/kako/1036/10366/1036654893.html
ttp://pc3.2ch.net/tech/kako/1032/10325/1032548635.html
ttp://pc3.2ch.net/tech/kako/1028/10285/1028580373.html
ttp://pc3.2ch.net/tech/kako/1023/10233/1023361418.html
ttp://pc.2ch.net/tech/kako/1017/10170/1017072275.html
ttp://pc.2ch.net/tech/kako/1006/10067/1006783012.html
ttp://pc.2ch.net/tech/kako/991/991576947.html

4 名前:デフォルトの名無しさん :2006/08/20(日) 09:20:59
- MSDN ホームページ
http://www.microsoft.com/japan/msdn/
- MSDN ライブラリ
http://msdn.microsoft.com/library/ja/
- MSDN 2 ライブラリ
http://msdn2.microsoft.com/ja-jp/library/

- 猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/
- Google
http://www.google.com/

MSDN ライブラリ 2006年6月版
http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=373930CB-A3D7-4EA5-B421-DD6818DC7C41
- Platform SDK Update
(WindowsR Server 2003 R2 Platform SDK Full Download)
http://www.microsoft.com/downloads/details.aspx?FamilyId=484269E2-3B89-47E3-8EB7-1F2BE6D7123A
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/XPSP2FULLInstall.htm
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm

- Win32 API入門
http://wisdom.sakura.ne.jp/system/winapi/
- Win32 プログラミング入門
http://www7.plala.or.jp/keny01/

- Advanced Windows (書籍)
http://www.amazon.co.jp/exec/obidos/ASIN/4756138055

-おまけ
dat落ちしている過去スレが見れるかも。Build19が見たい人、余裕のある人は●でも買ってやってくれ。
http://makimo.to/cgi-bin/search/search.cgi?q=Win32API&andor=AND&sf=2&view=table&D=tech

5 名前:デフォルトの名無しさん :2006/08/20(日) 09:21:46
以上テンプレ。

6 名前:デフォルトの名無しさん :2006/08/20(日) 09:25:03
俺の彼処がビルド

>>1

7 名前:デフォルトの名無しさん :2006/08/20(日) 13:05:55
>>1


8 名前:デフォルトの名無しさん :2006/08/20(日) 19:59:18
リストボックスに列挙したアイテムに右クリックしたら
ポップアップウインドウを表示させていろいろと処理させたいんだけど、
都合のいいメッセージが見つからないよ。
つーか、あるの?

9 名前:デフォルトの名無しさん :2006/08/20(日) 20:24:45
>>8
WM_CONTEXTMENU

10 名前:デフォルトの名無しさん :2006/08/21(月) 00:17:56
指定したウィンドウ(例えばデスクトップ)をウィンドウハンドルを元に
アクティブ/非アクティブか調べたいのですがそれを判定するのにはどうすればいいでしょうか?
一発でそれが簡単に判定できる関数はあったりしませんか?

11 名前:デフォルトの名無しさん :2006/08/21(月) 01:55:49
WH_MOUSEでグローバルフックしてマウスのボタンを監視&横取りしたいんだけど
WM_BUTTONDOWNをこっちで拾って次へ回さなかった場合
ウィンドウ上でボタンが押されてから
同一ウィンドウ内で離した場合はUPが送られてくるのに
ウィンドウ外へ移動して離したときはWM_BUTTONUPが送られてこないとです

WM_TIMERで周期的にボタンの状態取得は避けたいんだが
誰か方法を知らないかい?

12 名前:デフォルトの名無しさん :2006/08/21(月) 01:59:40
知らない

13 名前:デフォルトの名無しさん :2006/08/21(月) 02:03:41
>>10
isWindowEnabledかも?

14 名前:デフォルトの名無しさん :2006/08/21(月) 11:04:40
>Advenced
いつになったらアドベンスドが直るんだろう?

15 名前:デフォルトの名無しさん :2006/08/21(月) 11:11:26
>>13
ありがとうございます。
is の I が大文字の I でなんとかコンパイルが通りました。
これで頑張ってみます。

16 名前:デフォルトの名無しさん :2006/08/21(月) 21:23:13
>>15
activeとenabledはちがうくない?

17 名前:デフォルトの名無しさん :2006/08/21(月) 23:56:35
前スレの964です。

結局、SetupAPIを使ってデバイスをenable/disableすることで、ネットワーク接続の
有効/無効を切り替えることが出来ました。

DDKのリファレンスを見ても使い方がさっぱりわからなかったのですが、DDKの
サンプルプログラムdevconに使い方が書いてありました。

18 名前:デフォルトの名無しさん :2006/08/22(火) 10:01:47
>>11
SetCapture()でいいんじゃない?

19 名前:デフォルトの名無しさん :2006/08/22(火) 12:29:53
あるAPPが起動したかどうかを監視するためには、
Desktopハンドラを取得してそこへのWM_CREATEメッセージを捕まえ、
そのメッセージが該当のAPPの起動だったらよしということでいいのでしょうか?
DeskTopハンドラの取得はできたのですが、それを監視する方法がよくわかりません。
プログラムはあるAPP終了後に出るウィンドウを自動的に消すというもので、
プログラム起動中、消したいウィンドウが出ているときにメニュー選択によって
手動的に消すことはできてるのですが、デスクトップハンドラを監視するところが
よくわかりません。どなたかHINTだけでもいいのでお助けを。


20 名前:デフォルトの名無しさん :2006/08/22(火) 12:53:40
マルチ「はわわわわ」

21 名前:デフォルトの名無しさん :2006/08/22(火) 20:09:35
WinExecって使わないほうがいいんですか?
これ使わないのってどうやるのかな。

22 名前:デフォルトの名無しさん :2006/08/22(火) 20:19:38
ShellExecute
CreateProcess

C ランタイムと Windows API がセキュリティに及ぼす影響
ttp://www.microsoft.com/japan/msdn/windows/windowsxp/appsec.asp

23 名前:デフォルトの名無しさん :2006/08/22(火) 20:45:05
"C:\Program Files\foo" って…

24 名前:デフォルトの名無しさん :2006/08/22(火) 20:49:17
>>23
言いたいことは、きちんと言いましょう。

25 名前:デフォルトの名無しさん :2006/08/22(火) 21:01:44
>>19
デスクトップは関係ない。
メッセージフック辺りでググレ。

26 名前:デフォルトの名無しさん :2006/08/22(火) 21:20:18
>24は要らない子

27 名前:デフォルトの名無しさん :2006/08/22(火) 21:24:28
>>26
>>23みたいな馬鹿の方がいらない。

28 名前:デフォルトの名無しさん :2006/08/22(火) 21:50:49
>>27
>>23が馬鹿だと分かるお前は天才
俺は何が言いたいのかわからなかったぜ

29 名前:デフォルトの名無しさん :2006/08/22(火) 21:54:09
何が言いたいのかわからんようなレスをする奴を、馬鹿と言うのだ。

30 名前:デフォルトの名無しさん :2006/08/22(火) 22:30:57
>>29
分からないと素直に言えない方が馬鹿

31 名前:デフォルトの名無しさん :2006/08/22(火) 22:32:27
どっちもどっち。
いつまでこの流れ続ける気ですか?

32 名前:デフォルトの名無しさん :2006/08/22(火) 22:58:45
Spy++ でファインダーツールをドラッグしてるとき、
相手が自分以外のプロセスでも、ウィンドウの枠線を描画できてるんですが、
これってどうやって実現してるんでしょうか?

33 名前:デフォルトの名無しさん :2006/08/22(火) 23:02:05
>>32
デスクトップのデバイスコンテキストにでも重ねてるんじゃない?

34 名前:デフォルトの名無しさん :2006/08/23(水) 00:11:01
>>33
本当にそうしてるかどうかは、レジストリのwinlogonのshellに
explorer.exe以外のものを突っ込んでみて、デスクトップが無い
状態で試せば分かるな。
コモンダイアログをシェル代わりに使って。

実験が終わったらexplorer.exeを立ち上げればデスクトップが
出てくるので、レジストリを戻して一件落着。

35 名前:デフォルトの名無しさん :2006/08/23(水) 00:16:29
winlogonいじらなくたってexplorer.exe殺せばいいんじゃね?

36 名前:デフォルトの名無しさん :2006/08/23(水) 00:17:47
>>35
不死鳥のようによみがえったりしない?>explorer.exe

37 名前:デフォルトの名無しさん :2006/08/23(水) 00:18:14
しない

38 名前:34 :2006/08/23(水) 00:19:11
>>34
> 実験が終わったらexplorer.exeを立ち上げればデスクトップが
> 出てくるので、レジストリを戻して一件落着。

順番逆だったかもしれん。
レジストリ戻してからexplorer.exe起動だったかも。

39 名前:34 :2006/08/23(水) 00:23:56
というわけで、不死鳥問題含めて試した人がいたらレポ待ってます。
(マカーなので試せない。)

40 名前:デフォルトの名無しさん :2006/08/23(水) 00:28:56
>>18
なんだか他ウィンドウにはSetCaptureかけらないらしい

41 名前:デフォルトの名無しさん :2006/08/23(水) 00:30:03
98は不死鳥の希ガス。
XPは棺桶行き。

42 名前:デフォルトの名無しさん :2006/08/23(水) 00:36:13
XPで試してみたけど、
explorer殺してもspy++で普通にwindowとか取得できたよ。
窓枠の線も描画されてたよ

43 名前:デフォルトの名無しさん :2006/08/23(水) 00:45:49
98=ゾンビ
XPで異常終了=ゾンビ
XPでタスクマネージャーから終了=終了

44 名前:デフォルトの名無しさん :2006/08/23(水) 01:24:38
>>32
WindowのDCを得て、そこに描画する。


GetWindowDC()とか、そんな感じのヤシがあったはず。

45 名前:デフォルトの名無しさん :2006/08/23(水) 01:27:15
>>32
GetWindowDC(),Rectangle()

http://www.codeproject.com/dialog/windowfinder.asp
登録しないとソースダウンロードできないけど
ページ中のHighlightFoundWindow()が描画部分。
消すのはInvalidateRect(),UpdateWindow(),RedrawWindow()でやってる。


46 名前:デフォルトの名無しさん :2006/08/23(水) 01:59:56
今、16ビットカラーのBMPファイルを読み込むコードを書いたんだけど、
テストしたいんだけど、16ビットの BMP を作成できるツールってある?
ペイントじゃ作成できないみたい。Visual Studio 内蔵の画像エディタもだめ、
PhotoShop でもだめ、XnVIEW でもだめだった。。

47 名前:デフォルトの名無しさん :2006/08/23(水) 02:09:12
スレ違いだろボケ

48 名前:デフォルトの名無しさん :2006/08/23(水) 02:11:04
>>47
適当なスレがないんだけど、どこか教えてくれないかな。

49 名前:デフォルトの名無しさん :2006/08/23(水) 02:17:10
自分で探せよボケ

気軽に「こんなソフトありませんか?」 43
ttp://pc7.2ch.net/test/read.cgi/software/1155750807/

50 名前:デフォルトの名無しさん :2006/08/23(水) 02:59:50
>>49
ありがとう。

51 名前:デフォルトの名無しさん :2006/08/23(水) 09:14:34
このスレ的には「自分で作ってしまえ」だ

52 名前:デフォルトの名無しさん :2006/08/23(水) 09:24:30
なんでググルー使わないんだよ

53 名前:デフォルトの名無しさん :2006/08/23(水) 10:38:47
exeファイルが実行された時のファイル名を取得するにはどういうAPIを使えばいいのですか?

54 名前:32 :2006/08/23(水) 10:40:22
みんなありがとう。
とくに >>45 さんはサンプルまで紹介してくれて
助かりました♥

55 名前:デフォルトの名無しさん :2006/08/23(水) 10:47:16
>>53
EnumProcessModules
GetModuleBaseName

56 名前:デフォルトの名無しさん :2006/08/23(水) 12:24:16
>>40
AttatchThreadInput

57 名前:デフォルトの名無しさん :2006/08/23(水) 13:29:23
各ファイルをexeにまとめて、どこかテンポラリーに自己解凍してから実行するようにしたいんだけど、
どこかに参考になるサンプル無いですか?


58 名前:デフォルトの名無しさん :2006/08/23(水) 13:32:54
処理手順が分かっているんだから、別にサンプルなんていらないだろ。

59 名前:57 :2006/08/23(水) 15:47:09
BeginUpdateResource
これでできそうだ。


60 名前:デフォルトの名無しさん :2006/08/23(水) 21:12:04
初心者なので、ここでいいのかどうかわからないのですが
ある問題(多分問題というと大袈裟過ぎるのかもしれません)で困りきっています。

その問題なんですが、UNICODEファイル(txtファイルです)をどうやって読みこんで
その読み込んだデータをどのように処理したらいいかということで困っています。

もし、他のスレッドが適当なようでしたら、何分お導きいただけたらとおもいます。

hFile = CreateFile(szFileName, GENERIC_READ, FILE_SHARE_READ, NULL,
OPEN_EXISTING, 0, NULL);
if(hFile == INVALID_HANDLE_VALUE) return FALSE; //ファイルを開けなかった場合

dwFileSize = GetFileSize(hFile, NULL);
if(dwFileSize > MAX_READ) return FALSE; //ファイルがおおきすぎる場合
hGlobal = GlobalAlloc(GPTR, dwFileSize);

    OpenClipboard(hwnd);
EmptyClipboard();
SetClipboardData(CF_TCHAR, hGlobal);
CloseClipboard();

CloseHandle(hFile);
GlobalFree(hGlobal);

こんな感じでクリップボードに移すことはできるのですが、(変数の定義はスペースが限られていますので
省かせていただきました) ファイルから読み込んだデータを、普通の文字列に移すことが出来ません。
プリプロセッサの_UNICODEの定義や、TEXT(""),TCHAR 等はきちんと使用しているのですが・・・

どうかみなさん助けてください。
明日までにドイツ語ー日本語対応のフラッシュカードプログラムを作成しなければいけないです。

61 名前:デフォルトの名無しさん :2006/08/23(水) 21:14:25
>>60
スレ違い
文字コード変換でググレ

62 名前:デフォルトの名無しさん :2006/08/23(水) 21:23:30
UNICODEでフォーマットされたテキストファイルを、ReadFile関数で読み込んでいます。

TCHAR szBuffer[1024];

hFile = CreateFile(szFileName, GENERIC_READ, FILE_SHARE_READ, NULL,
OPEN_EXISTING, 0, NULL);
if(hFile == INVALID_HANDLE_VALUE) return FALSE; //ファイルを開けなかった場合

dwFileSize = GetFileSize(hFile, NULL);
if(dwFileSize > MAX_READ) return FALSE; //ファイルがおおきすぎる場合

bReturn = ReadFile(hFile, szBuffer, dwFileSize, &dwRcv, NULL);
if(bReturn == FALSE) return FALSE;//ファイルを読み込めなかった場合

szBufferにはUNICODE文字列を指すアドレス(ポインタ)が入っていると思うんですが、 lstrlen(szBuffer)の答えがいつも3になってしまいます。
どこがおかしいのかわかりません。

63 名前:デフォルトの名無しさん :2006/08/23(水) 21:27:39
>>62
>>61

64 名前:デフォルトの名無しさん :2006/08/23(水) 21:31:47
>>63
すみませんです。

http://pc8.2ch.net/test/read.cgi/tech/1143375639/
文字コード総合スレ

もしかしてこっちでしょうか。
UNICODEってなんでこんなにややこしいのか、頭が痛いです。

65 名前:デフォルトの名無しさん :2006/08/23(水) 21:33:45
ICUでもつかえば?

66 名前:デフォルトの名無しさん :2006/08/23(水) 21:35:35
そもそもUNICODEなんてテキストフォーマットはない。
UTF8なのかUCS2なのかUTF16なのかすら分かってないだろう。

67 名前:デフォルトの名無しさん :2006/08/23(水) 23:42:41
>>62
winbase.h内で

#ifdef UNICODE
#define lstrlen lstrlenW
#else
#define lstrlen lstrlenA
#endif // !UNICODE

と記述しているから、

#define UNICODE
を追加するんじゃね?

68 名前:デフォルトの名無しさん :2006/08/24(木) 01:13:25
>>66
便乗でお願いします。
こんどファイル関係操作を日・中・韓対応するために、
いままでxxxA系のAPIを使っていた処理をxxxW系に直す作業が
発生したのですが、xxxW系のAPIで使われるUNICODEは何なのでしょうか。
2バイトの固定長=UCS2ということでしょうか。
例えばFindFirstFileWで得られたファイル名を
TextOutW等で出力する必要があります。

それと、SJISにあった0x5c(='\')が漢字の2バイト目と認識されるような問題が、
このUNICODEでもあったりするんでしょうか。
固定長だから無さそうな気がするのですが、
何か特別な処理が必要かどうか知りたいのです。

今までUNICODEには関わるまいと思っていましたが、
とうとうこの日が来てしまいまし

69 名前:デフォルトの名無しさん :2006/08/24(木) 02:18:24
Unicodeでやっている分には、0x5Cの問題は無い。
それよりも、文字=char=1バイト前提の箇所に悩まされる予感。

70 名前:デフォルトの名無しさん :2006/08/24(木) 02:54:35
ありがとうございます。
そういえばフォントはどうなるんだろう。
日本語フォントをSelectObjectしている状態で
中国語が正しく表示されるわけないですよね。
UNICODE文字列から中国語かどうか判定して、
フォントを切り替える必要があるのでしょうか。
頭痛いです。

71 名前:デフォルトの名無しさん :2006/08/24(木) 03:09:26
>>70
UNICODEのテキストファイル(>>66さんのいっているような難しいことはわかりませんが)
を読みこんで、表示する方法すらわからないです。

72 名前:デフォルトの名無しさん :2006/08/24(木) 03:12:29
そうですか。

73 名前:デフォルトの名無しさん :2006/08/24(木) 03:20:31
はい、そうです

74 名前:デフォルトの名無しさん :2006/08/24(木) 03:40:43
いえいえ、どういたまして

75 名前:デフォルトの名無しさん :2006/08/24(木) 07:33:41
>>70
FontLinkを当てにして、Tahomaで描画とか?

FontLinkに関しては、
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink
以下を参照しつつ、
IMEパッドの文字一覧でUnicodeを選んだ後、
フォントを切り替えてみれば雰囲気は解ると思う。

76 名前:デフォルトの名無しさん :2006/08/24(木) 09:11:00
>>68
古いWindowsではUTC2だったかもしれないが、最近のWindowsではUTF-16になっている。
違いはサロゲートペアの有無だが、今のところそれを使うことなんてほとんどない。

77 名前:デフォルトの名無しさん :2006/08/24(木) 09:18:14
協定世界時のバージョン2ですか?

78 名前:デフォルトの名無しさん :2006/08/24(木) 16:05:05
VBでAPI使っててかなりいきづまったから質問したいんだけど
ここでいいのかな?

79 名前:デフォルトの名無しさん :2006/08/24(木) 16:16:54
ブビ厨は巣にお帰りください

80 名前:デフォルトの名無しさん :2006/08/24(木) 18:41:17
>>78
VBだろうとperlだろうとWin32APIの質問なら無問題

81 名前:デフォルトの名無しさん :2006/08/24(木) 22:24:52
このスレでよいか少し不安ですが・・・

┏━━━━┳━┓
┃      ┃  ┃
┃ 描画  ┃  ┃
┃ エリア ┃A ┃
┃      ┃  ┃
┣━━━━┫  ┃
┃  B   ┃  ┃
┗━━━━┻━┛
↑こういうウィンドウを作りたいのですが、
AやBはタブコントロールやエディットボックスの集まりで、
例えばAの場合は幅固定、Bの場合は高さ固定になっています。
この場合、ウィンドウを1つ作って、AとB用に子ダイアログを2つ作って、
ウィンドウ内でのダイアログの位置は固定、
ウィンドウのサイズが変わるたびにダイアログサイズも変える、という処理でよいでしょうか?
WS_???やWS_EX_??等でのスタイル指定にお約束のものがあればコメント頂けるとありがたいです。


82 名前:デフォルトの名無しさん :2006/08/24(木) 22:31:56
WM_SIZEがぶっ飛んできたら計算して普通にリサイズすればたぶんおk

83 名前:81 :2006/08/24(木) 22:50:21
>>82
どうも。
では親ウィンドウのWM_CREATEを捉まえたときにそれぞれのダイアログを作り、
各ダイアログがWM_INITDIALOGを捉まえたときにMoveWindowで位置とサイズ調整、
あとは親ウィンドウのリサイズ時に各ダイアログに位置とサイズ調整のメッセージを送る、
という感じになるでしょうか。

あれ。親ウィンドウを動かす場合も子ダイアログに位置を変えるメッセージを
送らないといけないのでしょうか…。なんだか面倒ですね…。


84 名前:デフォルトの名無しさん :2006/08/24(木) 22:53:18
画像の中から適合する部分があるかを探索して、その結果を返す関数やライブラリは公開されているでしょうか?
またない場合はどのような手順をふむのが一番効率的でしょうか?
自分ではいまいちよく分かりません。分かる方教えてください。

85 名前:デフォルトの名無しさん :2006/08/24(木) 22:55:53
>>84
俺の知る限りそんなAPIは無い。
やりたいことにもよるけど、論文読み漁るしかないんじゃね?

86 名前:デフォルトの名無しさん :2006/08/24(木) 22:56:36
>>83
だったら親ウィンドウが動かされたらそこで子ウィンドウも動かしちゃうとか。
WM_CREATEの直後にもWM_SIZEが来ると思うからそこでも動かしてくれるだろうし。

87 名前:デフォルトの名無しさん :2006/08/24(木) 23:00:45
チャイルドウインドウなら親が動けば一緒に動くだろ。
ごちゃごちゃ言う前に少しは自分で試せよ。

88 名前:81 :2006/08/24(木) 23:09:51
>>86
わかりましたー。
では基本的には親ウィンドウのWM_SIZEやWM_MOVEを捉まえて
各ダイアログの位置とサイズを調整するということですね。
ありがとうございましたー。

続けて恐縮ですが…こういうものの場合、子ダイアログのスタイルは
タイトルバーを付けない、描画エリアと分ける適当な境界を作る(WS_EX_DLGMODALFRAME?)、
モードレスにする(?)、あたりを押さえておけば大丈夫でしょうか?


89 名前:デフォルトの名無しさん :2006/08/24(木) 23:10:42
>>84
いやぁ〜んマッチングって奴だな。
マッチング 画像相関でググってみ

90 名前:81 :2006/08/24(木) 23:11:12
>>87
どうもー。あれ?子ダイアログも親と一緒に動きますか?
なんかついてこなくて…。ソース見直してみます。


91 名前:デフォルトの名無しさん :2006/08/24(木) 23:11:35
>>85
APIは当然ないですよねー・・・
このスレだったらだれかが作ったものを知ってる人がいらっしゃるかとおもったんですが
引き続き捜してみます

92 名前:デフォルトの名無しさん :2006/08/24(木) 23:13:02
>>89
書いてる途中で入ってた・・
激しく難しい・・・ がんばって解読してみます

93 名前:デフォルトの名無しさん :2006/08/24(木) 23:17:52
>>90
owned windowとchild windowは違うが、理解してるか?

94 名前:81 :2006/08/24(木) 23:18:29
>>87
むぉー。ダイアログにWS_CHILD付けてませんでした。
ダイアログ作成時にオーナーのハンドルを指定するだけではいわゆる親子ではないのですね…。
というわけで移動に関しては簡単に解決…。

95 名前:81 :2006/08/24(木) 23:19:25
>>93 そういうことなのですね。どうもありがとう。

96 名前:デフォルトの名無しさん :2006/08/24(木) 23:19:26
>>90
ワロタ

97 名前:デフォルトの名無しさん :2006/08/25(金) 08:00:34
>>92
画像ファイルを読み出して〜まで・・・はこのスレだけど。
そこからヒストグラムを起こすのは別スレなのよ。

ま、精進して。

98 名前:デフォルトの名無しさん :2006/08/25(金) 17:03:33
半透明ウインドウの作り方はわかるんですが、
マウス動作を透過するウインドウはどのように設定するのか、教えてください。
半透明にしたり、完全透明職設定はできるんですが、半透明でマウス操作だけ透過
というのがわかりません。

99 名前:デフォルトの名無しさん :2006/08/25(金) 17:16:36
>>98
普通に半透明にして自分のウィンドウがクリックされたら下にあるウィンドウにメッセージを送るとか?

100 名前:デフォルトの名無しさん :2006/08/25(金) 17:34:48
まさにそれ!!!!!!!

101 名前:デフォルトの名無しさん :2006/08/25(金) 18:54:13
>>100
WS_EX_LAYEREDがあるときにWS_EX_TRANSPARENTを付けると、
透明にしつつマウス操作は下のウィンドウへ行く。

102 名前:デフォルトの名無しさん :2006/08/25(金) 20:52:32
デスクトップのSysListView32にLVM_GETITEM メッセージなんか送ったりして
マウス直下のアイテム名を取得することはできたんですが、
そのアイテムそのもののパスかPIDLを取得することはできませんか?


103 名前:デフォルトの名無しさん :2006/08/25(金) 21:09:12
デスクトップのフォルダを取得してしまえばどうにでもなる

104 名前:デフォルトの名無しさん :2006/08/26(土) 12:52:42
エディットボックスの一行の文字の色を変えるにはどうしたら
よいでしょうか?

105 名前:デフォルトの名無しさん :2006/08/26(土) 12:56:55
Rich Edit を使えばいいな

106 名前:デフォルトの名無しさん :2006/08/26(土) 13:16:15
ふつうのエデイットボックスでは不可能ですか?


107 名前:デフォルトの名無しさん :2006/08/26(土) 13:27:32
いいえ

108 名前:デフォルトの名無しさん :2006/08/26(土) 13:55:54
教えてくれませんか?

109 名前:デフォルトの名無しさん :2006/08/26(土) 13:59:58
色セロファン、を、貼る。

110 名前:デフォルトの名無しさん :2006/08/26(土) 14:06:54
懐かしいな。

111 名前:デフォルトの名無しさん :2006/08/26(土) 14:32:07
マジで教えてくれません?

112 名前:デフォルトの名無しさん :2006/08/26(土) 14:38:46
Gugurecus, 生没年未詳

113 名前:デフォルトの名無しさん :2006/08/26(土) 14:57:19
色めがね、を、かける。

114 名前:デフォルトの名無しさん :2006/08/26(土) 15:03:14
>>104
VBつかっとけ

115 名前:デフォルトの名無しさん :2006/08/26(土) 15:19:01
お断りです。Cつかってます。

116 名前:104 :2006/08/26(土) 15:31:28
自己解決しました。有難うございました。

117 名前:デフォルトの名無しさん :2006/08/26(土) 15:39:40
116は偽者ですまだ解決してません

118 名前:デフォルトの名無しさん :2006/08/26(土) 15:41:04
117は偽物ですもう解決しました

119 名前:デフォルトの名無しさん :2006/08/26(土) 15:42:41
118は偽者ですまだ解決してません

120 名前:デフォルトの名無しさん :2006/08/26(土) 15:49:26
120は偽物ですもう解決しました

121 名前:デフォルトの名無しさん :2006/08/26(土) 15:52:36
>>116-120
は違います。
Windows XPについてるインータネットリバーシの
チォット部分のように自分と相手の文の色を変えたいのです。
あれは普通のエディットじゃないのですか?


122 名前:デフォルトの名無しさん :2006/08/26(土) 16:00:23
>>121
ちっとWindowClass見てみたが、RichEdit20Aってクラスになってるな。
素直にRichEdit使っとけってこった。


123 名前:デフォルトの名無しさん :2006/08/26(土) 16:06:43
CreateFont()

124 名前:デフォルトの名無しさん :2006/08/26(土) 16:12:45
>>123
CreateFont() がどうかしましたか?

125 名前:デフォルトの名無しさん :2006/08/26(土) 16:13:15
CreateFont()かわいいよCreateFont()

126 名前:デフォルトの名無しさん :2006/08/26(土) 16:14:51
つオーナードロー

127 名前:デフォルトの名無しさん :2006/08/26(土) 16:25:12
独自のエディットコントロールでも作っちゃうとか

128 名前:デフォルトの名無しさん :2006/08/26(土) 16:29:49
車輪の再発明

129 名前:デフォルトの名無しさん :2006/08/26(土) 16:31:40
三角形の車輪を発明しました。真似しないでください


130 名前:デフォルトの名無しさん :2006/08/26(土) 16:32:02
より優れた車輪を発明すればよい

131 名前:デフォルトの名無しさん :2006/08/26(土) 16:35:24
つまり普通のエディットにSendMessage(hwnd, **, 行番号, font)
みたいにはできないということですね?
>>123
は偽者なので


132 名前:デフォルトの名無しさん :2006/08/26(土) 16:38:24
偽者ってwww
>123は誰かのふりなんかしてないだろwwwww

133 名前:デフォルトの名無しさん :2006/08/26(土) 16:44:46
そんなに偽者いやなら名前にfusianasan入れろよw

134 名前:デフォルトの名無しさん :2006/08/26(土) 16:53:54
ごめんなさい
>>124でした。

135 名前:デフォルトの名無しさん :2006/08/26(土) 16:54:24
>>131は無理なのでしょうか?

136 名前:デフォルトの名無しさん :2006/08/26(土) 17:17:38
>>104
直後に至極真っ当で、一般的に最良の答えをもらっているのに、
頑なに、リッチエディットの使用を拒むあなたの態度が、冷やかしレスを呼び込んでるのが、
わからないんでしょうか?

エディットコントロールだけで実現せよ。って、いう宿題ですか?


137 名前:デフォルトの名無しさん :2006/08/26(土) 17:24:17
そうです。

138 名前:デフォルトの名無しさん :2006/08/26(土) 18:29:42
ちがいます。

139 名前:デフォルトの名無しさん :2006/08/26(土) 18:39:14
>>136だからそう言ってるじゃん

140 名前:デフォルトの名無しさん :2006/08/26(土) 18:41:18
そうです

141 名前:デフォルトの名無しさん :2006/08/26(土) 18:41:41
質問です
ポップアップメニューの、ウィンドウとメニューアイテムとの隙間と
メニューアイテムをスクロールさせる▼の背景の
オーナードローは出来るんでしょうか?

142 名前:デフォルトの名無しさん :2006/08/26(土) 22:08:17
サービスアプリから、他のアプリにpostmessageすることはできないのですか?

143 名前:デフォルトの名無しさん :2006/08/26(土) 22:09:18
何を言ってるか分かりません。


144 名前:デフォルトの名無しさん :2006/08/26(土) 22:14:53
>>142
デスクトップが違うとできない。

145 名前:142 :2006/08/26(土) 22:19:45
>144
サービスアプリから同じPCの他プロセスに
PostMessageはできないということでしょうか?




146 名前:デフォルトの名無しさん :2006/08/26(土) 22:23:46
「デスクトップが違うとできない」。

147 名前:142 :2006/08/26(土) 22:26:20
何度もすいません。
デスクトップを同じにするということは可能なのですか?
サービスアプリは、ログインユーザと同じアカウントで動かしています

148 名前:デフォルトの名無しさん :2006/08/26(土) 22:29:01
>>145
[SDK32] サービスからアプリケーションデスクトップへのアクセス
http://support.microsoft.com/default.aspx?scid=kb;ja;173687

デスクトップと対話するプロセス、なら出来るんじゃないかな。

149 名前:デフォルトの名無しさん :2006/08/26(土) 22:29:21
「デスクトップが違うとできない」

150 名前:デフォルトの名無しさん :2006/08/26(土) 22:34:30
デスクトップが違うとタンクトップ

151 名前:デフォルトの名無しさん :2006/08/26(土) 22:39:49
トップレスの金髪美女

152 名前:デフォルトの名無しさん :2006/08/26(土) 22:41:33
( ´д)ヒソ(´д`)ヒソ(д` )

153 名前:デフォルトの名無しさん :2006/08/26(土) 22:55:51
>>145
Vistaになると、サービスからデスクトップのプロセスにメッセージ送信できなくなるから
注意しろよ。

154 名前:デフォルトの名無しさん :2006/08/27(日) 00:42:36
ダイアログで取得した変数のセット(文字列とか実数とか)を親ウィンドウに送りたいのですが、
SendMessage(GetParent(hwnd),...)だとwparamやlparamしか使えないですよね。
こういう場合の定石ってあるんでしょうか?

親ウィンドウがダイアログとあるクラスAを管理していて、
ダイアログで取得した変数値をクラスAに渡したい、という状況なのです。


155 名前:デフォルトの名無しさん :2006/08/27(日) 00:49:55
>>154
ポインタを駆使

156 名前:デフォルトの名無しさん :2006/08/27(日) 00:50:47
クラスのポインタを渡しておけばいいだけ。

157 名前:デフォルトの名無しさん :2006/08/27(日) 01:33:15
>>155-156
なるほろ。試してみます。


158 名前:>>155-156 :2006/08/27(日) 01:51:00
うまくいったでやんす。どうもありがとう。


159 名前:デフォルトの名無しさん :2006/08/27(日) 07:38:34
指定したファイルが更新されるまで、ロックするか
更新された時に指定したハンドラが呼ばれるようにしたいのですが、どうすればいいのしょうか?

(FindFirstChangeNotificationという関数を見つけたのですが、
 監視対象のファイル以外に、非常に更新頻度が高いファイルが同じディレクトリ内にあるので
 負荷軽減のために、出来ればディレクトリ全体ではなく、
 一つのファイルだけに対象を絞りたいので、この関数は不適と感じました。)

ご教授お願いします。

160 名前:デフォルトの名無しさん :2006/08/27(日) 10:36:28
>>159
・そのファイルをタイマーあたりで定期ポーリングして監視するとか。
・FindFirstChangeNotificationで、まずファイル名をチェックして、
 対象外なら何もしないとか。

FindFirstChangeNotificationはそんなにコスト高いんだっけ?
それほど大したこと無かったような希ガス。
つーか、更新頻度高いって、そもそもファイルアクセスは重いんだから、
その辺を何とかする方が負荷軽減に繋がったりして。:P


161 名前:デフォルトの名無しさん :2006/08/27(日) 11:02:49
監視対象のファイルが数十分・数時間単位(不定期)の更新頻度なのに対して、
同ディレクトリ内の更新頻度の高いファイルが秒・分単位なので、
常駐用途として使うこともあってちょっと心配だったのですが、、、

おっしゃるとおり、検証してみると、意外と負荷は大したことありませんでした。
ご返答有難うございました。

162 名前:デフォルトの名無しさん :2006/08/27(日) 20:50:11
夏休みもうすぐ終わっちゃうんで、
そろそろ教えてください!


163 名前:デフォルトの名無しさん :2006/08/27(日) 21:20:35
よし、教えてあげよう!

164 名前:デフォルトの名無しさん :2006/08/27(日) 22:16:03
>>162
君だけ学校来なくていいってさ。よかったね。

165 名前:デフォルトの名無しさん :2006/08/28(月) 10:46:46
pgpdiskみたいなWindows上の仮想ドライブはWin32APIのレベルでできる?
それともデバイスドライバ書いてATAコマンドをエミュレートする必要がある?

166 名前:デフォルトの名無しさん :2006/08/28(月) 11:13:51
WNetAddConnection? のようなネットワークを仮想ドライブ化するのは WinAPI でいけるっぽ
RAM Disk とか その他の手段でのドライブは DDK でドライバを書く。(別に ATAコマンドエミュレートする必要はないハズ)

167 名前:デフォルトの名無しさん :2006/08/28(月) 22:36:31
質問させてください。

ワードで作成した仕様書のレビューを複数ノートPCで出来るツールを作ろうと思っています。
文書校正もできるようにしたいので、全員が見れて更に全員が編集できるようにしようと思っています。
また専用の編集ツール&ビューアを作るのもめんどうだし機能が限定されそうなので、
全員にワードを開かせ、SendMessageして編集者と同じ操作をさせようと思っています。
編集したデータは編集した部分だけ全員に流して、カーソル位置に挿入しようと思っているのですが、
こんなツールは作ることができるでしょうか?
なにやらめんどくさい問題にぶち当たりそうで工程見積もりができません。

機能としては
・全員が編集できる
・誰かが編集しているとき、もしくはカーソルを動かしているときは他のPCは(ワードのみ)操作不可になる
・全員のカーソル位置を、最後に操作した人のカーソル位置にあわせる
・できれば挿入中の文字を変換しているところまでリアルタイムで見たい(ムリだろうけど)
・ワードの編集機能をほとんど使える

言語はなんだってかまいません。
ぶちあたりそうな問題、もっといいアイディアなどありましたらご教授ください。

168 名前:デフォルトの名無しさん :2006/08/28(月) 22:49:25
>>167
どっかの塾とか予備校用!? はいA君やってみてとか?
たしか・・・メーカどこだっけ・・・
パソコン遠隔操作のソフトはある、ゼロから作るのはやばいと思う

169 名前:167 :2006/08/28(月) 22:58:44
>>168
いや社内用です。あまり精度は要求されません(ちなみに本業は組み込み)
ワードが素直に言うことを聞いてくれるなら割と楽に作れると思ってはいるのですが、、
SendMessageして操作すること自体ヤバ気な感じがしますので、
いくら社内用とはいえ、もう少し安定した方法が欲しいところです。


170 名前:デフォルトの名無しさん :2006/08/28(月) 23:00:08
>>167
やりたいことが、ようわからん。
ワードでやろうとすることじゃない。グループウェアとか使えよ。って思う。


>文書校正もできるようにしたいので、全員が見れて更に全員が編集できるようにしようと思っています。
みんなが開くファイルは、
 (1) 各自のローカルにおいてある、同一バージョンの仕様書ファイル
 (2) ネットワークドライブ上の(一つの)仕様書ファイル
(3) その他
のどれ?

(1) だと、各編集者同士で、同期とるのが大変。
(2) だと、そもそも Word側で、一人しか編集不可にされてしまう。

やっぱ、ワードでやる事じゃないな。


171 名前:167 :2006/08/28(月) 23:11:55
>>170
仕様書のフォーマットがワードなので仕方ないのです。。

>文書校正もできるようにしたいので、全員が見れて更に全員が編集できるようにしようと思っています。
みんなが開くファイルは(1)ですかねー。
レビューイが起動したツールが、レビューイのファイルのデータをレビューアに流し、
レビューアのツールが受け取ったデータを元に自分用ファイルを生成するつもりです。

編集したときうまく同期取れますかねぇ。。。

172 名前:デフォルトの名無しさん :2006/08/28(月) 23:19:33
全然仕方なくいないけどな

173 名前:デフォルトの名無しさん :2006/08/28(月) 23:21:30
[案1] 編集者はひとり方式(うちの会社の場合)
レビューは、レビュアーが同じ場所に集まってやる。
レビュアーが4〜6人くらいの場合は、小さな会議机に集まり、編集者のノートPCを19インチ
くらいのLCDにつないで、編集が発生する場合は、全員が編集内容を確認しながらすすめていく、
レビュアーが多い場合は、プロジェクターにつないで、同様にやる

[案2] 全員が編集者方式
ワードをあるPCで立ち上げておく。
レビュアー全員でそのPCをVNCを使って接続し、全員で編集をやる。
ただし、この方法だと編集作業を排他できないので、全員がそばにいる場合は声をかける
などで回避する。離れている場合は、阿吽の呼吸で・・・。

174 名前:167 :2006/08/28(月) 23:24:55
やっぱりカーソル位置に挿入ってきびしそうですよね。
例えば何かが入力されて、その後1秒以上入力がなかったら、
その時点で1回全員にデータを流し、全員が再表示とかだったらどうでしょ?

どこそこはどうやんの?お前そこんとこ考えてる?
みたいなつっこみをお願いいたします。

>>172
レビューですよ?
グループウェアってそこまでできるんですか?
何分知識不足なため、こいつぁアホだなと思って温かい目で見守ってやってください。


175 名前:167 :2006/08/28(月) 23:31:00
>>173
[案1]はうちの会社でもやってます。
[案2]のVNCは初めて知りました。こんなのあるんですね。
ありがとうございます、参考にします。
VNCの動作は快適ですか?

176 名前:173 :2006/08/28(月) 23:43:22
>>175
> VNCの動作は快適ですか?

すごく簡単にインストールできるから、明日会社でインストールしてみそ。
自宅にPCが2台以上あるなら、今試してもいいけど。
Wordの編集だと、「出来なくもない」という感じだと思う。高速タイプは無理。

案1で、超高速タイパーが編集を担当したほうが、全員が幸せになれる気が
するんだけど、これで駄目なのは何故?

177 名前:167 :2006/08/28(月) 23:55:49
>>176
>案1で、超高速タイパーが編集を担当したほうが、全員が幸せになれる気が
レビューアが「ここんとここうやればいいんじゃない?」て言うときに便利だからです。
長い文章なら超高速タイパーで幸せになれそうですが、
ちょっとした細かくかつ微妙な表現をする点では、
「ちがう、こうだって、こうだよ!糞が!!」
そんな雰囲気になるからです。これは新人レビューイの時によく発生します。
まぁそこまで怒りませんけどね。

それでは明日早速試してみます。(使えれば工程1週間は削減できたかな?)
ありがとうございました。


178 名前:デフォルトの名無しさん :2006/08/29(火) 00:00:26
>>175
その他の用途を思いつくかもしらんし、一度試してみろ。
某庁絡みの仕事でリモートメンテナンス用にVNC入れているけど、
インターネット(≠web)越しでも充分実用になるぞ。
#短気な香具師はダメだと思うが。

179 名前:173 :2006/08/29(火) 00:09:30
>>177
ちなみにうちでは「リアルタイムな修正」はめったにやりません。
よくやるのは、議事の作成の場合です。全員が合意した議事録が会議終了後に
出来上がるので、すぐにメールで送れます。

他の会社のレビュー方法に口出しする気は毛頭ありませんが、一度
『ピアレビュー』という書籍を読んでみることをお勧めします。
今のレビュー方式だと、みんなレビューがいやで、なおかつプロセスのボトルネックに
なってたりしませんか?

180 名前:167 :2006/08/29(火) 00:25:32
>>178
了解です。
情報提供ありがとうございます。

>>179
いえ、ちょっと言いすぎました。
リアルタイム修正というか、精々メモ程度です。
新人研修のせいで敏感になっているだけですので気にしないでください。
実際のところモニタ数やレビュー場所の制限のほうが大きいです。
レビュー場所が全て使用されているときに、
ノートPCを持ち寄ってレビューができかつ編集ログも取れたら便利かな、と。
『ピアレビュー』は今度読んで見ます。
情報ありがとうございました。


181 名前:デフォルトの名無しさん :2006/08/29(火) 01:00:11
Win32API質問箱

182 名前:デフォルトの名無しさん :2006/08/29(火) 01:30:41
>>167 の言うツールって、期待通りに作ると市販ソフトですら
実現してないような超高機能でしょ。>>167 みたいな牧歌的な奴には
とても無理。素直に vnc で多重接続を許可して使いなさい。


183 名前:デフォルトの名無しさん :2006/08/29(火) 04:20:55
ScreenToClientについて質問です。
GetClientRect(hWnd,&rc); //1

GetWindowRect(hWnd,&rc); //2
pt.x=rc.right;
pt.y=rc.bottom;
ScreenToClient(hWnd,&pt);
上の1と2を実行して得られる座標がなぜか1より2の方がxとy両方とも4ピクセル大きいのですが
わかる方おられますか?

184 名前:デフォルトの名無しさん :2006/08/29(火) 04:45:17
GetClientRect と GetWindowRect で
rc に格納される値が違うやん。

185 名前:デフォルトの名無しさん :2006/08/29(火) 06:28:17
>>183
2の方は枠の外側を指しているんじゃね。枠の幅分違うとか。

186 名前:デフォルトの名無しさん :2006/08/29(火) 06:30:59
>>183
2は枠の外じゃね

187 名前:183 :2006/08/29(火) 06:59:06
>>185-186
ありがとうございます!まさにその通りでした。
MoveWindowで2のpt.xとpt.yを指定してボタンを動かしてみたら
微妙にボタンと外の青い枠が被ってしまいました。

188 名前:デフォルトの名無しさん :2006/08/29(火) 08:02:43
実行中のExeファイル(自分のアプリ)のパスを得る方法を
知りたいのですが。よろしくお願いします


189 名前:デフォルトの名無しさん :2006/08/29(火) 08:05:29
>>188
詳細は何を示しているのわからんけど、
GetCurrentDirectory, GetModuleFileNameの好きなほうで

190 名前:デフォルトの名無しさん :2006/08/29(火) 09:53:44
>>189
あ、それです。API名GetModuleFileNameが思い出せなくて。。。
どうもありがとうございました。

191 名前:デフォルトの名無しさん :2006/08/29(火) 10:23:46
GetCurrentDirectoryってカレントディレクトリが変えられたときに何かと不便ね

192 名前:デフォルトの名無しさん :2006/08/29(火) 10:47:55
それ以前に、起動時からカレントディレクトリと実行ファイルパスが
同じである保証も無い。


193 名前:デフォルトの名無しさん :2006/08/29(火) 16:20:55
質問者は問題ない方を選んでいるから、まぁいいんじゃまいか?

194 名前:デフォルトの名無しさん :2006/08/29(火) 18:12:00
Windowsのメインのボリュームを設定するAPIって何ですか?

195 名前:デフォルトの名無しさん :2006/08/29(火) 18:18:25
自己解決しました

196 名前:デフォルトの名無しさん :2006/08/29(火) 18:51:13
>>189-192
俺はGetCommandLineをよく使うんだけど、
GetModuleFileNameとの違いって、パラメータの有無だけ?

197 名前:デフォルトの名無しさん :2006/08/29(火) 19:06:06
>>196
それってユーザーが勝手に名前変えたりパラメータ渡してきたら分からなくね?
"C:\\Program Files\\foo.exe bar.exe"
とか

198 名前:デフォルトの名無しさん :2006/08/29(火) 19:36:39
質問させてください。
ウィンドウ内にマウスポインタがあると
マウスを全然触っていないのにWM_MOUSEMOVEがくるのですが、
そういうものなのでしょうか?
駄目元でウィンドウ生成時に
 if (GetCapture()==hwnd) ReleaseCapture();
なんてしてみたり…。キャプチャ云々は関係ないですよね??


199 名前:デフォルトの名無しさん :2006/08/29(火) 19:39:26
そういうものでしょう。

200 名前:198 :2006/08/29(火) 20:22:46
>>199
マジデスカ。MSDNには
「The WM_MOUSEMOVE message is posted to a window when the cursor moves.」
と書いてあるのですが…。
グーグルで検索しても
http://www.google.co.jp/search?hl=ja&q=WM_MOUSEMOVE&lr=
たいがい「カーソルがクライアントエリアの上を移動すると」という感じの
説明があります。これってウソ???


201 名前:デフォルトの名無しさん :2006/08/29(火) 20:33:27
光学式でプルプル震えてるんでしょ

202 名前:デフォルトの名無しさん :2006/08/29(火) 20:34:14
>>200
嘘じゃないでそ

画面更新とか頻繁にしてない?
WM_ERASEBKGNDとか関係なかったっけ

203 名前:198 :2006/08/29(火) 20:35:28
>>202
TIMERで定期的に(1回/30msecくらい)InvalidateRect呼んでます。
そのタイミングで送られているということでしょうか?


204 名前:デフォルトの名無しさん :2006/08/29(火) 20:45:46
マウスがクライアント領域にあるとき定期的にカーソル位置教えるためのメッセージじゃなかったっけ?

205 名前:伝説新人タクシ :2006/08/29(火) 21:00:07
break;が消えてない?
InvalidateRectは描画しろって言うだけじゃん。

206 名前:198 :2006/08/29(火) 21:09:43
うーん。やっぱりどこの説明を読んでも
「マウスポインタがクライアント領域内を移動したときに送られるメッセージ」
としか読めないです。それから>>203のInvalidateRect云々は関係ありませんでした。

>>204

case WM_MOUSEMOVE: wmMouseMove(hwnd,wp,lp); break; // ←メッセージボックスを表示
default: break;
}
return DefWindowProc(hwnd_, msg_, wp_, lp_);
としてます。breakはちゃんと入っています(ちなみにreturn 0としても駄目でした)。
これを実行すると、マウスポインタがクライアントエリアにあるとき、
マウスを触っていなくてもメッセージボックスがバカバカと表示されて
最終的に落ちます。


207 名前:198 :2006/08/29(火) 21:11:01
>>206のアンカーは>>205の間違いでした。
あとDefWindowProcの引数のアンダースコアは誤記です。


208 名前:デフォルトの名無しさん :2006/08/29(火) 21:18:50
>>196
PATHが通ってたりコマンドラインから相対パスで起動したりすると、
exeの場所は分からない。

209 名前:デフォルトの名無しさん :2006/08/29(火) 21:35:08
>>208
知ったかはやめろ。
知らない上に確かめもせず調べもしないならいい加減なことを書かないで黙ってろ。

http://www.microsoft.com/japan/developer/library/Jpwinpf/_win32_getcommandline.htm
>CreateProcess 関数を呼び出す際に指定した実行可能ファイル名と一致しているとは限りません。
>完全修飾パスを指定せずに実行可能ファイル名を CreateProcess 関数に渡した場合、
>オペレーティングシステムはそのファイル名に完全修飾パスを追加することがあります。

210 名前:デフォルトの名無しさん :2006/08/29(火) 22:25:40
「することがある」ってことはしないこともあるんだろ。

211 名前:デフォルトの名無しさん :2006/08/29(火) 23:05:00
>>209
そんだけでかい口たたいといて、まさか自分が試してないってことはないよな。

 ま さ か な

212 名前:デフォルトの名無しさん :2006/08/29(火) 23:39:54
恥の上塗りをする暇があったら、首をつる方が賢明だろう。

213 名前:デフォルトの名無しさん :2006/08/30(水) 00:08:43
>>212
もしかしてサポートの終わったWin95系だけで試してフルパスになったって言ってるのか。

結局のところ>>210なわけだが。

214 名前:デフォルトの名無しさん :2006/08/30(水) 00:37:05
>>206
WM_MOUSEMOVEはマウスをキャプチャしているウィンドウ、
もしくは現在アクティブなウィンドウに送られる。

たとえマウスを動かしていなくても、
マウスのキャプチャ状態が変化したり
アクティブウィンドウ が切り替わったりすると
(要するにメッセージの受け取り先が変わると)
親切にもWM_MOUSEMOVEを送ってきてくれるよ。

メッセージボックスやめて別の方法で確認してみたら?

215 名前:214 :2006/08/30(水) 00:58:47
訂正、アクティブウィンドウのわけないわな。
マウスカーソルの下にあるウィンドウだ。

今カーソルのある場所にポンと別のウィンドウが現れたら、
そのウィンドウに「アンタの上にカーソルがいるぜ」と
教える意味でWM_MOUSEMOVEが送られる。
それに引っかかってるんじゃないかってこと。

216 名前:198 :2006/08/30(水) 01:56:40
>>214
> メッセージボックスやめて別の方法で確認してみたら?

あぁ…。ビンゴでした。WM_MOUSEMOVE、来てませんでした。
メッセージボックスを表示させたのが間違いだったのですね。
丁寧にありがとうございました。


217 名前:デフォルトの名無しさん :2006/08/30(水) 08:49:56
GetPrivateProfileString() で
用意されたバッファサイズよりもキーの値が大きかった場合の戻り値は
用意されたバッファサイズと同じということで良いんでしょうか。

218 名前:デフォルトの名無しさん :2006/08/30(水) 09:15:59
>>217
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/getprivateprofilestring.asp
よく読め

219 名前:217 :2006/08/30(水) 09:48:25
各パラメータにNULLが用いられていない時
用意されたバッファサイズよりもキーの値が大きかった場合は
バッファサイズ分返され、最後にNULL文字を入れられる。
その時の戻り値は、用意されたバッファサイズ -1 である。
でokでしょうか?

220 名前:デフォルトの名無しさん :2006/08/30(水) 09:50:41
試してみれば分かるだろうに

221 名前:デフォルトの名無しさん :2006/08/30(水) 10:20:58
>>219
戻り値は指定されたバッファにコピーされた文字の数を示します。
終端のNULL文字は含まれません。
lpszSectionパラメータとlpszKeyパラメータのどちらもNULLではなく、
転送先バッファが小さくてすべての文字列を含むことができない場合、
文字列は切り捨てられ、 NULLが最後に加えられます。
戻り値は、 cchReturnBufferから1を引いた値になります。

lpszSectionパラメータとlpszKeyパラメータのどちらかがNULLで、
転送先バッファが小さくてすべての文字列を含むことができない場合、
最後の文字が切り捨てられ、 2つのNULL文字が加えられます。
この場合の戻り値は、 cchReturnBufferから2を引いた値になります。

222 名前:217 :2006/08/30(水) 10:31:48
ありがとうございます

223 名前:デフォルトの名無しさん :2006/08/30(水) 14:02:43
いまどきGetPrivateProfileString・・・

224 名前:デフォルトの名無しさん :2006/08/30(水) 14:13:49
>>223
私は、ini ファイル大好きです。


225 名前:デフォルトの名無しさん :2006/08/30(水) 14:56:33
書式さえ合ってればiniじゃなくてもいいので割と使ってる。

226 名前:デフォルトの名無しさん :2006/08/30(水) 15:04:44
USBメモリに入れて持ち運ぶにはアプリには、iniファイルは便利だよね。

227 名前:デフォルトの名無しさん :2006/08/30(水) 16:42:32
>>223
いまどきは何ですか?

228 名前:デフォルトの名無しさん :2006/08/30(水) 17:33:47
>>227
xmlだろ。

229 名前:デフォルトの名無しさん :2006/08/30(水) 17:40:40
レジストリと比較してるのかと思った

230 名前:196 :2006/08/30(水) 18:34:11
>>197
自分で試してみました。

C:\Program Files\AAA.EXEに
C:\BBB.TXTをドラッグ&ドロップした場合、

GetCommandLineの結果 : "C:\Program Files\AAA.EXE" C:\BBB.TXT
GetModuleFileNameの結果: C:\Program Files\AAA.EXE

後者はダブルクォーテーションが付かないようです。

俺様専用関数ではダブルクォーテーションで囲まれていない空白はパラメータ境界と見なすため、
GetModuleFileNameは使えませんな。

231 名前:デフォルトの名無しさん :2006/08/30(水) 18:39:31
ダブルクォーテーションをつけたり取ったりするAPIがあったような…?

無くても自作すればいいと思うが。

232 名前:デフォルトの名無しさん :2006/08/30(水) 18:40:15
>>230
GetModuleFileName には、実行時引数渡らない
俺様専用関数の仕様から GetCommandLine のほうが望ましい ってことだね

233 名前:デフォルトの名無しさん :2006/08/30(水) 18:40:36
わざわざ取ったりつけたりしなくても GetCommandLine でいいじゃん。

234 名前:デフォルトの名無しさん :2006/08/30(水) 18:44:05
>>231
PathQuoteSpaces()とかな。

235 名前:デフォルトの名無しさん :2006/08/30(水) 18:57:17
GetModuleFileNameで取得するのはファイル名なんだから、
""が付かないのは当然だろ。
空白があっても、それは当然pathの一部。

逆にGetCommandLineは引数との区別をつけなければいけないから
(pathに空白が含まれていたら)""が付くのが当然。

236 名前:デフォルトの名無しさん :2006/08/30(水) 19:00:33
>>230ってさ、Program Filesがパスに入ってるからダブルクォーテーションがついてるけど、
パスに肺ってなかったらダブルクォーテーションつかなくね?

237 名前:デフォルトの名無しさん :2006/08/30(水) 19:06:34
>>236
ディレクトリを除く実行ファイル名本体にスペース含んでても quote されてるね。
ex) "C:\foo test.exe"

238 名前:デフォルトの名無しさん :2006/08/30(水) 19:08:57
こういうことは、NT系か9x系かで結果が異なることも考えられるぞ。

239 名前:デフォルトの名無しさん :2006/08/30(水) 19:10:03
そうであった。 >>237 のは Win2K

240 名前:196 :2006/08/30(水) 20:20:03
>>238
>NT系か9x系かで結果が異なる
GetCommandLineで取得できるファイル名だったかな。
NT系ではロングファイル名だが9x系ではショートファイル名で、
ロングファイル名に直すにはFindFirstFileとか使ったりして。
間違ってたらスマソ。

241 名前:デフォルトの名無しさん :2006/08/30(水) 21:18:42
目的が自身のフルパスファイル名の取得という限定された状況で、
なんでコマンドラインの情報まで入ってくる関数つかうのやら。
フルパスで入ってくることが確定しているGetModuleFileNameでいいじゃん。


242 名前:デフォルトの名無しさん :2006/08/30(水) 21:20:14
MultiByteToWideCharで「文字列をUnicodeに変換します」とかあるけど、
これって実際はUTF-16なんですか?
そしてそのことをアテにしてプログラムしてもいいんでしょうか?

243 名前:デフォルトの名無しさん :2006/08/30(水) 22:12:07
GetCommandLine関数ってより、CreateProcess関数の話っぽいかもね

244 名前:デフォルトの名無しさん :2006/08/30(水) 22:35:11
外部ウィンドウの中にあるボタンをポチっとプログラム側で押してやるのに必要な手順教えてくださいまし。
対象のボタンのhWndは取得できとります。


245 名前:デフォルトの名無しさん :2006/08/30(水) 22:37:16
適当にPostMessageとか送ってみたけどやっぱり動かず。


246 名前:デフォルトの名無しさん :2006/08/30(水) 22:38:59
座標に向かってクリッコメッセ

247 名前:デフォルトの名無しさん :2006/08/30(水) 23:40:06
PostMessageのパラメータが"クリック"の指定になってませんでしたorz
直したらちゃんとできました。

248 名前:デフォルトの名無しさん :2006/08/30(水) 23:41:25
>>246
色々なやり方があるんですね。
ありがとうございました。

249 名前:デフォルトの名無しさん :2006/08/31(木) 22:19:36
以前に FindWindow で取得したハンドルが今も有効かどうか調べるのは IsWindow でOKですか?


ハンドルの再利用とかされてたらどうしようか……(・ω・`)

250 名前:デフォルトの名無しさん :2006/08/31(木) 22:27:54
FindWindowくらいもう一回やったらええがな


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