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


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

Win32API質問箱 Build16
1 名前:デフォルトの名無しさん :04/01/11 23:07
スレ立てるまでもない、Win32APIについての質問はこちらへどうぞ。
最低限、最新スレくらいは質問する前に検索ぐらいしてください。
過去スレ・参考は>>2-5くらいを参照してください。

2 名前:デフォルトの名無しさん :04/01/11 23:08
- 過去スレ
Build15:http://pc2.2ch.net/test/read.cgi/tech/1069339866/
Build14:http://pc2.2ch.net/test/read.cgi/tech/1065328397/
Build13:http://pc2.2ch.net/test/read.cgi/tech/1059549320/
Build12:http://pc2.2ch.net/tech/kako/1056/10560/1056033645.html
Build11:http://pc2.2ch.net/tech/kako/1052/10526/1052651750.html
Build10:http://pc2.2ch.net/tech/kako/1047/10478/1047819779.html
Build9:http://pc2.2ch.net/tech/kako/1044/10449/1044929160.html
Build8:http://pc2.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/01/11 23:12
このスレは24:00をもって削除されます。

4 名前:デフォルトの名無しさん :04/01/11 23:40
一行で休止状態にできるAPIは?

5 名前:デフォルトの名無しさん :04/01/12 00:04
>>1
乙!!

6 名前:デフォルトの名無しさん :04/01/12 06:26
>>4
何を休止するのでしょう?
人生?

7 名前:デフォルトの名無しさん :04/01/12 09:05
>>4
SetSuspendState(TRUE,TRUE,TRUE);


8 名前:デフォルトの名無しさん :04/01/12 15:49
すんません。以前質問させてもらった者なんですが、
また質問が・・・
VFWのAVISaveVで、ファイルを保存しようとするのですが、
どうも「デスクトップ」等の全角文字が入るとファイルオープン
エラーで保存してくれないみたいなのですが、
同様の症状になったかおられますか?

もしおられたら、ご返事よろしくお願いしまつ。

9 名前:Win32SDK勉強中 ◆Win32BkCJ. :04/01/12 19:12
>>前スレ187
>MSのplatformsdkアップデートからドキュメントだけ落とせたかも
探しても出てきません(焦)
どこにあるのかご存知の方がいらっしゃいましたらご教授ください。
お願いいたします。

10 名前:デフォルトの名無しさん :04/01/12 19:45
>>9
>>2
お前は本当に探してるのかと、子一時間問い詰めたい。
グーグル先生に聞いてもトップにくるんだが…

11 名前:デフォルトの名無しさん :04/01/12 21:08
>>9
SDKのドキュメントは英語しかなかった気がする。


12 名前:Win32SDK勉強中 ◆Win32BkCJ. :04/01/12 21:27
>>10,11
2のサイトを探して、googleでも調べた後の質問でした。
内容は英語でも一向に構いません。他のオフラインのPCに
内容を移動しなければいけないので素直に全部ダウンロードすることに
しました(ISDNで)。ただ、UpdateSDKActiveXをインストールしておらず、
見ることができていませんでした。お叱りごもっともです。
スレ汚しスミマセンm(_ _)m

13 名前:デフォルトの名無しさん :04/01/12 23:39
SelectObjectの戻り値は以前使ってたSelectした物と同種のGDIObjectですが、
CreateCompatibleDCで作ったばかりのデバイスコンテキストに初めて(例えば)
BitmapとかをSelectObjectした時は戻り値は何を吐くんでしょうか?

あと古い文献のサンプルコードで、プログラム終了時にCreateCompatibleDCで
作ったメモリDCをビットマップをSelectしたままDeleteDCしてましたがこれは
問題ないんでしょうか?

14 名前:デフォルトの名無しさん :04/01/13 00:54
>CreateCompatibleDCで作ったばかりのデバイスコンテキストに初めて(例えば)
>BitmapとかをSelectObjectした時は戻り値は何を吐くんでしょうか?

たしか1x1の白黒ビットマップと思う。

>ビットマップをSelectしたままDeleteDCしてましたがこれは問題ないんでしょうか?

問題無いだろ。 そのあとでDeleteObjectで自分で作ったBMPの処理も忘れるなよ。

15 名前:デフォルトの名無しさん :04/01/13 01:29
>>14
マリガトウ
2年来の疑問が氷解しますた

16 名前:デフォルトの名無しさん :04/01/13 04:59
>>14
> ビットマップをSelectしたままDeleteDCしてましたがこれは問題ないんでしょうか?
マズイんでね?
洗濯を解除してからでねえと正しく解放できなかったような。


17 名前:デフォルトの名無しさん :04/01/13 08:46
今までそのまま解放してたけど
選択解除ってどうやんの?

18 名前:デフォルトの名無しさん :04/01/13 08:49
>>17
SelectObjectの返り値を退避させといて戻す

19 名前:デフォルトの名無しさん :04/01/13 09:12
もしくは SaveDC と RestoreDC を使う

20 名前:デフォルトの名無しさん :04/01/13 12:07
デスクトップ上に絵を描画して、その絵を消したり動かしたりしたいのですがどのようにしたらいいでしょうか?

取り合えず自分でやってみた方法は、絵と同じ形でリージョンを作成しウィンドウをその形に切り取りウィンドウごと動かして
絵が動いているように見えるということをやってみたのですが、もっといい方法はないでしょうか?

21 名前:高校生 :04/01/13 13:12
ひたすら質問しまくっていた、教えて君です。
非常に低レベルだと思われるかもしれませんが、
教えていただいた結果を報告いたします。

まず、何らかの理由でWS_THICKFRAMEが付加されたにもかかわらず、
ウインドウサイズを変更できないようにする方法について、

case WM_GETMINMAXINFO:
  MINMAXINFO *info;

  info =(MINMAXINFO *) lParam;
  info->ptMinTrackSize.x = info->ptMaxTrackSize.x = 640;
  info->ptMinTrackSize.y = info->ptMaxTrackSize.y = 480;

  return 0;

とする事で、WS_THICKFRAMEが付加されようと、MoveWindow()を使われようと、リサイズできないウインドウを作る事ができました。
ご親切に何度も教えていただき、ありがとうございました。

22 名前:高校生 :04/01/13 13:12
任意のウインドウにWS_EX_TOPMOSTを付加したい場合、
何故、SetWindowLong()ではなく、SetWindowPos()を使わなければならないのかという質問に対して、
>試せば分かる。
と言われました。そこで、実際に試してみることにしました。
まず、SetWindowLongを使用する方法から――。

//hTargetは最上位表示にしたいウインドウのハンドル。
  LONG style;
  style = GetWindowLong(hTarget, GWL_EXSTYLE);
  style = style | WS_EX_TOPMOST;
  SetWindowLong(hTarget, GWL_EXSTYLE, style);

hTargetの値が正しいかどうかは、FlashWindowEx()を使って確認済みです。
SetWindowLong()戻り値は非ゼロでした。しかし、ウインドウの挙動は変わりません。
spy++を使って調べても、 WS_EX_TOPMOSTを確認できませんでした。

SetWindowPosではどうかというと――。

  SetWindowPos(hTarget, HWND_TOPMOST,0,0,0,0,SWP_NOMOVE | SWP_NOSIZE);

ウインドウは最上位に表示されました。
拡張スタイルにも WS_EX_TOPMOSTが付加された事を確認しました。
プログラムは完成しました。友達がこのプログラムを欲しがった理由は、フルスクリーンで起動するゲームでも、常にプレイヤーが見えるようにしておきたかったのだそうです。こういうツール、どこにでも転がっていそうな気がしますがw
以前使っていたツールは、クソ重たい上に、複数のウインドウに対して設定できなかったそうです。
また、別のウインドウを変更すると、前の変更が問答無用で元に戻ってしまうとか
(しかもシェアウエア。まあ関係ないけどw)

23 名前:高校生 :04/01/13 13:14
>>20
9x系をサポートしないのであれば、レイヤードウインドウが簡便ですと言ってみるテスト

24 名前:デフォルトの名無しさん :04/01/13 13:35
MDIの子ウインドウにIEコンポーネントを使用して
タブ切り替え型ブラウザを作ろうと思ったのですがうまくいきません。
ちなみにクラス名を自分で作成したクラスに変えると
MDIの子ウインドウがちゃんと表示されます。

<現在のソース:エラーが出る箇所>
hDoc = CreateWindowEx(
  WS_EX_MDICHILD,
  "AtlAxWin",
  "Shell.Explorer.2",
  WS_CAPTION | WS_VISIBLE,
  CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
  hClient,
  NULL,
  hInst,
  0);

ご存知の方いましたらご教授願います。

25 名前:24 :04/01/13 14:25
とりあえず子ウインドウ毎にWM_CREATEで"AtlAxWin"クラスの
コントロールとして作ることにしました。

26 名前:高校生 :04/01/13 16:29
ダイアログベースのプログラムを作りました。
開発環境はVC++.NET WinXPです。
NT系での正常動作を確認しました。
しかし、9x系ではうまく動きません。
具体的に言うと、
 ダイアログの文字列が文字化けしてしまう。
 GetKeyState() GetAsyncKeyStateが動かない。
という問題があります。
何故でしょうか?

27 名前:デフォルトの名無しさん :04/01/13 17:04
9x系の動作確認はビルド後のexeを互換モード設定してやると
とりあえず擬似的にできるのでデバッグしてみると文字化けくらいは
解決するとおもわれ

28 名前:高校生 :04/01/13 17:31
ExitWindowEx()
をつかってウインドウズを終了させようとしました。
開発環境は>>26で言っている通りです。
で、終了されません。
GetLastError()は、「権限がない」とか言っているんですが……。
アドミニストレータ―権限でログインしているんだけどなあ。
MSDNよんだら、AdjustTokenPrivileges()を使えとか書いてあるんですけど、
これの使い方が分かりません。
だれかサンプルを書いてもらえないでしょうか?
それと、9x系だったら、こういうことは考えなくても良いのでしょうか?

29 名前:デフォルトの名無しさん :04/01/13 17:42
>>28
ほい
ttp://www.yuzuriha.sakura.ne.jp/~way/computer/win_tech2.htm

30 名前:デフォルトの名無しさん :04/01/13 17:43
こんな感じか?
権限の種類がアドミニとかって話じゃないんだと思うが

BOOL ExecuteShutDown()
{
HANDLE hToken = 0;
TOKEN_PRIVILEGES tkp;

OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken);
LookupPrivilegeValue(0, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid);
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)0, 0);
if(GetLastError() != ERROR_SUCCESS)
{
// 権限なし
return FALSE;
}
ExitWindowsEx( EWX_SHUTDOWN , 0 ) ;
return TRUE;
}

31 名前:高校生 :04/01/13 17:48
>>29 >>30
うわっ!
レス早い!
どうもありがとうございます。
言えかえって試してみよう。
(これ、学校から)

32 名前:デフォルトの名無しさん :04/01/13 20:50
SHFileOperation(FOF_ALLOWUNDO) で行ったUNDO可能なファイル操作を、
実際にUNDOするには何を使えばよいでしょうか?
また、このときのUNDOで何が起こるか
(エクスプローラのメニューで「元に戻す」を選択したときに、ステータスバーに表示される文字列)
を取得するにはどうしたらよいでしょうか?

33 名前:デフォルトの名無しさん :04/01/13 22:57
VC++でダイアログにスタティックコントロールでラベル貼って
それがフォーカス取得できるようにするにはどうすればいいですか?

34 名前:デフォルトの名無しさん :04/01/14 00:39
>>33
VC++でダイアログにスタティックコントロールでラベル貼って
それがフォーカス取得できるようにする。

35 名前:デフォルトの名無しさん :04/01/14 05:56
自分のプログラムのみ、レジストリへの書き込みを禁止させる方法ってないでしょうか?


36 名前:デフォルトの名無しさん :04/01/14 08:11
VC上のリソースエディタから作った、
ラジオボタンにBS_3STATE又はBS_AUTO3STATEのスタイルを付けるには
どうすればいいのでしょうか?
グレイ表示したいのですが、上手くスタイルを設定出来なくて困ってます。


37 名前:デフォルトの名無しさん :04/01/14 09:23
>>36 オーナードr(ry

38 名前:デフォルトの名無しさん :04/01/14 09:34
>>24
まずどんなエラーが出るか書け。
話はそれからだ。

>>26
Unicodeビルドになっていないか?


39 名前:デフォルトの名無しさん :04/01/14 15:35
C++ Builderで発生している事なのですが
どうもWin32絡みのことのようなので質問させて頂きます

fopen、fread、処理、fclose
という処理があるのですが
freadの途中で、対象ファイルが無くなってしまった場合
(CD-ROM等に入っていて、それが取り出された場合など)

ドライブからメディアが取り出された、どうしますか
みたいなメッセージが出てきてしまうのです
このメッセージは止める事ができるのでしょうか?
できるのならば、方法を教えてください、お願いします

40 名前:デフォルトの名無しさん :04/01/14 15:38
ちょっと質問したいんですが、IPアドレスって犯罪とかでプロバイダー
に警察とかが照会求める以外で、特定されることってあるんですか?
個人のレベルでIPアドレスから住所とか個人情報を抜き出すことって
可能なんでしょうか?
それと、メッセンジャーって今はじめてダウンロードしたんですけど
ファイル共有できるんですよね。まだ使ったことないんですが、
友達とかと音楽とか交換した場合、やばいことになりますか?
もちろん違法ってことはわかってるんですが、一般的にそういうことは
行われてるんですか?誰かに音楽を送った場合相手が受け取って
それが知り合いだった場合、そのプロセスの間に誰か介入してきて
逮捕されたりってあるんでしょうか?
初心者なので教えてください。友達がファイル交換しようって言って
くるんですが、心配なので。


41 名前:デフォルトの名無しさん :04/01/14 15:42
>>40
http://pc2.2ch.net/pcqa/ にでも行け。

42 名前:39 :04/01/14 15:44
自己解決の模様
まだ検証してないが

SetErrorMode(SEM_NOOPENFILEERRORBOX);

のようだ

43 名前:高校生 :04/01/14 15:56
>>27
試してみました。しかし、問題が再現しない。
まさかUnicode?
そんなわけないでしょうし……。

これは別の話ですが、互換モードを95/98/MEにしてやると、
ExitWindowsEx一発でシャットダウンできました。
互換モードにするとAPIの挙動も変わるんですね。

>>30
コピペしました。
いったい何をやっているのかを理解していないのですが……。
どこかに分かりやすく説明しているサイトがないかなあ。ググってみます。
MSDNって分かりにくい。

44 名前:あおりイカ :04/01/14 16:15
高校生だからなんなんだ
免罪符にでもなるとおもっているのか

45 名前:デフォルトの名無しさん :04/01/14 16:46
> どこかに分かりやすく説明しているサイトがないかなあ。

>>29

46 名前:デフォルトの名無しさん :04/01/14 17:01
女子高生なら優しく教えてあげるけどな

47 名前:デフォルトの名無しさん :04/01/14 17:09
じゃあいまから女子高生ということにしてください

48 名前:高校生 :04/01/14 17:10
免罪符ってインチキカトリック教会に、法外なお布施をしないともらえなかったのでは?
それと、残念ながら、漏れは男です。(女ってここにいるの?)
ところで、フォントの設定について教えてくれませんか?
実は、AAを表示するプログラムを書いているのですが、どうもうまくいかないのです。
MSDNのCreateFont()に書いてある通り、ポイントから高さへ変換する方法を使ったのですが、
微妙にIEと異なります。
レイヤードウインドウにして重ねてみると良く分かるのですが、
IEの方が、縦に長い&横に短い
となってしまいます。



49 名前:デフォルトの名無しさん :04/01/14 17:17
>>48
nWidthは0にしたか?
つーか、どうやって指定したのか書かんと原因がわからないだろうが


50 名前:高校生 :04/01/14 17:18
#include <windows.h>
#include <stdio.h>

void main(void){
for(;;){
if(GetKeyState(VK_RETURN) & 0x8000)
Printf("Enter key is pressed.\n");

Sleep(1000);
}
}

だれか、これを9x系で試してくれませんか?
NTだとエンターキーが押されたときにコンソールにその旨が出力されるんだけど。
98だとうまくいかない。

51 名前:高校生 :04/01/14 17:21
家ではネットにつなげないから、ソース晒せない。
>>49
もちろんゼロにしています。
>nHeight = -MulDiv(PointSize, GetDeviceCaps(hDC, LOGPIXELSY), 72);
 ↑MSDNに載っていた方法

52 名前:デフォルトの名無しさん :04/01/14 17:42
エディットボックスに出したときと
DrawTextで書いたときとではもしかして高さと幅バラバラになるのか?

53 名前:デフォルトの名無しさん :04/01/14 17:44
女子高生ですがJAVAを教えてください

54 名前:デフォルトの名無しさん :04/01/14 17:52
女子高生ですがHSPを教えてください

55 名前:デフォルトの名無しさん :04/01/14 18:01
>>51
では家に>>30のソースはどうやって持ち帰ったのか
逆のことをすればよい

56 名前:デフォルトの名無しさん :04/01/14 18:13
>>50
GetAsyncKeyState と間違って使ってない?

GetKeyState は、APによってメッセージキューから取り出されたキーボードイベントが
発生したときのキーボードの状態だよ( WM_KEYDOWN / WM_KEYUP とかを受けて、
Alt キー押されてたかな、とかいうときに使う)。

57 名前:デフォルトの名無しさん :04/01/14 19:55
んなこたぁない

58 名前:デフォルトの名無しさん :04/01/14 21:13
>>40
マルチポスト


59 名前:デフォルトの名無しさん :04/01/14 21:32
8ビットのBMPをCreateDibSectionで作りました。
その後SetDIBColorTableでビットマップのパレットを変更して再描画したのですが、画面に反映されません。
しかしアプリケーションを切り替えて再びアクティブにすると、画面の色が正しく更新されています。
アプリケーションが切り替わるときに何かパレットがアップデートされるようなメッセージが飛んでいると予測し、切り替えて戻る時のメッセージをデバッグしましたがわかりません。
それらしいと思ったのはWM_QUERYNEWPALETTEですが、自分で送信しても何も起こりませんでした。
何が悪いのでしょうか。教えてください。
OSはPocketPC2003です。

60 名前:デフォルトの名無しさん :04/01/14 21:45
RealizePaletteとか

61 名前:デフォルトの名無しさん :04/01/14 23:50
マウスのボタンが押されているかどうか調べる関数ってないですか?

マウスのボタンがダウンしていたら、スライダーを移動をスルーするという事をしたいのですが・・

62 名前:デフォルトの名無しさん :04/01/14 23:55
>>61
GetKeyStateとか

63 名前:デフォルトの名無しさん :04/01/15 00:01
>>62

レスありがとうございます、なんとかなりました

64 名前:デフォルトの名無しさん :04/01/15 13:33
>>56
キーボードイベントには限らないと思うけど。
イベント処理と関わり無く監視したいなら Async の方じゃなきゃダメですね。
逆に Alt + Click みたいのを判断するときには Async じゃダメ。

65 名前:高校生 :04/01/15 15:50
GetKeyState()でも、
GetAsyncKeyState()でも、
9x系では動かないのです。
>>50のコードは、
自分の持っている、WinXPでは動き、友達の2KやXPでも動くんですが……。


66 名前:デフォルトの名無しさん :04/01/15 15:55
女子高生ですがSEXを教えてください

67 名前:デフォルトの名無しさん :04/01/15 16:13
VK_RETURN以外のコードは試しましたか?

68 名前:高校生 :04/01/15 16:25
>>67
はい。
0x41(A key)
とか試したんですが……。
いずれも、
NT系では動作する。
9x系では動かない。
コンパイラはVS.NET アカデミック
ボーランドのフリーなやつ使ってみようかなあ。

69 名前:デフォルトの名無しさん :04/01/15 16:35
ずっと押しっぱなしでもダメなの?

70 名前:デフォルトの名無しさん :04/01/15 16:36
>>68
Windows98で試してみた。駄目だった。

71 名前:デフォルトの名無しさん :04/01/15 16:36
9x系のコンソールはDosエミュレートだから
NT系のコマンドラインウインドウとは違う動きをするのかもしれない
Cランタイムとかでしかうまくいかないかも

72 名前:デフォルトの名無しさん :04/01/15 16:39
>>68
for(;;){
 printf("%04X", GetKeyState(VK_RETURN));
}

なんてするとどう表示される?


73 名前:デフォルトの名無しさん :04/01/15 16:47
ReadConsoleInput
PeekConsoleInput
WriteConsoleInput

この辺か?

74 名前:デフォルトの名無しさん :04/01/15 16:50
>スレッドがメッセージキューからキーメッセージを読み出すたびに、この関数が返すキーの
>状態は変化します。キーの状態は、ハードウェアによる割り込みレベルの状態を反映しません。
>割り込みレベルの情報を取得するには、GetAsyncKeyState 関数を使ってください。

GetKeyStateの説明。
GetMessageしないと話にならない

75 名前:高校生 :04/01/15 16:53
>>72
とりあえずやってみます。

ところで話は変わるんですが、
現在のウインドウの内容を、ビットマップファイルで記録したいのですが、
どうすればいいのでしょうか?
やはりビットマップファイルの構造を知っていないといけないのでしょうか。
なんか簡単なAPIはありませんか?

76 名前:デフォルトの名無しさん :04/01/15 16:53
じゃー、なぜNT系では動くんだ?

77 名前:デフォルトの名無しさん :04/01/15 16:56
>>74
それはGetKeyboardStateの説明だろ
GetKeyState

78 名前:高校生 :04/01/15 16:59
>>74
こう言う事ですか?
でも、NT系では普通に動作するなあ。
それに、実際のプログラムでは、ウインドウプロシージャ―の中に書いているんですが……。

#include <windows.h>
#include <stdio.h>

void main(void){
MSG msg;

for(;;){
PeekMessage(&msg, NULL, 0, 0, PM_REMOVE);
if(GetKeyState(VK_RETURN) & 0x8000)
Printf("Enter key is pressed.\n");

Sleep(1000);
}
}


79 名前:デフォルトの名無しさん :04/01/15 17:00
>>75
1_も調べた形跡のない質問するなよ


80 名前:デフォルトの名無しさん :04/01/15 17:02
コンソールにウインドウプロシージャってあるの?

81 名前:デフォルトの名無しさん :04/01/15 17:06
>>77
GetKeyStateって言ってるだろうが。

>>78
動いたとしても想定外というか保証外といったことだろ?
ウインドウプロシージャの中に書いて動かないんだとしたら
多くのテキストエディタとか動かなくなる可能性があるけど。

82 名前:デフォルトの名無しさん :04/01/15 17:10
>>75
プログラム内だけで使うならDDBでいいと思うよ。
メモリDCとディスプレイDCの両方に出力するか、メモリDCに書き終わった後WM_PAINTでBitBltするとか。


83 名前:高校生 :04/01/15 17:11
まず、BITMAPINFOHEADER構造体があって
次に、BITMAPINFO構造体があって
そして、画像データ。(GetDIBits()を使う?)

ということでよろしいのでしょうか?


84 名前:高校生 :04/01/15 17:14
>>80
コンソールではありません。

>>82
普通にビューワーを使って開けるビットマップを作りたいんです。

85 名前:デフォルトの名無しさん :04/01/15 17:16
>>50でコンソールと言ってたんで
読み間違えですか...

86 名前:82 :04/01/15 17:18
>>83
ちがう。
BITMAPINFOはBITMAPINDOHEADERとカラーテーブルをまとめた構造体のこと。
DIBに関しては、中身はこうなってる。

1.情報ヘッダ
2.カラーテーブル
3.ピクセルビット

詳しく言うと1はBITMAPCOREHEADER, BITMAPINFOHEADER, BITMAPV4HEADER, BITMAPV5HEADERがある。
2は1, 4, 8bppのビットマップはかならずカラーテーブルがある、16以上のbppも一応もてるけど持たなくてもいい。

詳しく説明するとキリがないかもしれん。

87 名前:82 :04/01/15 17:23
プログラム内だけで使うのならDDBでいいんだけど、DIB使うならもうちっと勉強しないとだめだね。

Displayのピクセルを記録しておきたいだけなら、

hdcMem = CreateCompatibleDC(hdc);
hBitmap = CreateCompatibleBitmap(hdc, width, height);
SelectObject(hdcMem, hBitmap);

これでビットマップをメモリDCにセットして、あとはHDC使ってカキカキすればいい。

88 名前:高校生 :04/01/15 17:36
>>87
ググったけど難しい。
FDに落として家でじっくり読むことにします。

89 名前:82 :04/01/15 17:37
余談だが高校生よ。
なんでも聞いてばかりでは上達しないぞ。
たしかにピンポイントで答えは得られるかもしれんが、自分で解析するってことはそれだけその問題に
たいして時間を費やして考えることであり、忘れない知識として持つことができる。
さらには今現在の知識を振り絞って考えることからある種の関連を導き出せたりね。
もちろんデバッグにも役に立つ。

あとは、UIとGDIは一応網羅的に把握していないとやりたいこと実行できるLvではないかもしれん。
このへんは書籍やWebから学べることだからキッチリ押さえておくといいよ。

#偉そうなこと言ってる俺もプログラミング歴8ヵ月のアマチャソなんだけどね、お互い頑張ろう


90 名前:82 :04/01/15 17:42
家かえってみるなら、wisdomのビットマップのところ見て基本を押さえてMSDNをよく読むこと。
そしたらググって使い方書いてるサンプル探して要点をまとめること。
ただし、DIBに関しては詳細に書いてあるWebは少ない。

91 名前:デフォルトの名無しさん :04/01/15 17:46
このへんとかどう?
ttp://www.sm.rim.or.jp/%7Eshishido/windows.html

92 名前:デフォルトの名無しさん :04/01/15 17:59
そこは俺も参考にした。
とくにピクセルデータ操作関数は参考になるけど、画像処理部門になりそうだ。

ビットマップについて把握したらwin32API関数とどっか参考になるクラスライブラリでも見ながら
自分で基本的な操作関数つくって、その後にピクセルデータ操作のアルゴリズムとか考えるべきかな。
やってみればわかるけど圧倒的にDIBSectionのほうが扱いやすいし、APIとの連動もとりやすい。

93 名前:デフォルトの名無しさん :04/01/15 18:03
>>82
鼻息荒いようだが

>16以上のbppも一応もてるけど持たなくてもいい。

この書き方ってどうよ?
殆どダウトだぞ?

94 名前:デフォルトの名無しさん :04/01/15 18:03
普通のDIB使うなら、>>91のように構造体定義して操作関数つくっておくと細かいこと考えなくていい。
欲を言えば、win32関数の引数になる値は保持しておいて迅速に使えたほうがいい。

95 名前:デフォルトの名無しさん :04/01/15 18:05
>>93
詳しく説明しろと?

96 名前:デフォルトの名無しさん :04/01/15 18:10
ウィンドウスタイルを変更した時の更新のタイミングを教えて下さい。
例えばスクロールバーを付けたり外したりする時に
1、GetWindowLongでスタイル取得
2、DWORD値をいじる
3、SetWindowLongで値を設定
とやった時に画面上ではすぐ更新されず、一旦「アイコン化->元に戻す」とやらないと
変更が反映されません。(InvalidateRectでも不可)

取り敢えずCloseWindow/OpenIconとすれば反映されますがなんかダセーです。
この変更を実際に画面に反映させるスマートな方法ってなんかありますかね?

97 名前:デフォルトの名無しさん :04/01/15 18:12
>>95
説明以前にあの言い方じゃ間違い

98 名前:デフォルトの名無しさん :04/01/15 18:16
>>95
説明があいまい、まあ高校生にパレット説明してもわからんだろうからいいんじゃない

99 名前:デフォルトの名無しさん :04/01/15 18:17
>96
ShowWindowだとおもわれ

100 名前:デフォルトの名無しさん :04/01/15 18:27
>96
PostMessage(hWnd, WM_SIZE, 0, 0);
ってやってごらん。

ところで、MSDNには、
「SetWindowLong 関数を使って何らかのウィンドウデータを変更した場合、SetWindowPos 関数を呼び出してその変更を有効にしなければなりません。この場合、uFlags パラメータには、SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED を指定してください。」
と書いてあるけどなんかやってみた?

101 名前:96 :04/01/15 18:42
>>99
さいしょそれでやろうとして更新できないのでアレ?と…

>>100
PostMessageは効きませんでしたが、SetWindowPosでSWP_FRAMECHANGEDを
指定してうまくいきますた
でもこれVC++4のヘルプには書いてなかったよ…これからはMSDNも確認しまつ
皆さんマリガトウ

102 名前:デフォルトの名無しさん :04/01/15 20:59
>>101
いくらなんでもVC++4のヘルプは古すぎると思われ。


103 名前:デフォルトの名無しさん :04/01/15 22:45
>>60
やっとできました。どうやら256色BMPをウインドウに転送するには、SetDIBitsToDeviceを使わないとダメだったようです。


104 名前:デフォルトの名無しさん :04/01/15 23:06
テキストエディタ作ってます。
IMEの変換を受け取るとき、デフォルトの変換ウインドウでは
エディタ上の文字とずれが生じ見栄えが悪いので、
自力で描画を行おうとしているのですが、どうすればいいのか分かりません。

変換中の文字の描画はImmGetCandidateListで取得した結果を表示すればいいのですが、
変換ウインドウを非表示にしたまま入力を有効にする方法がわかりません。
どなたかご存知ないでしょうか?


105 名前:デフォルトの名無しさん :04/01/15 23:19
GetCandidateじゃなくてGetComposition〜の方でしたね。
文字変換の自力描画はたしかMSWordとかがやっていたと思うので
そのとおりのやりたいのですが、何か方法は無いでしょうか

106 名前:デフォルトの名無しさん :04/01/16 08:45
VC++4のヘルプ見たことないなぁ

107 名前:デフォルトの名無しさん :04/01/16 11:02
>>66
InitCommonControlSex()

108 名前:デフォルトの名無しさん :04/01/16 11:23
ExitWindowSex()

109 名前:デフォルトの名無しさん :04/01/16 11:26
SagE X

110 名前:デフォルトの名無しさん :04/01/16 11:58
WaitForMultipleObjectSex()

111 名前:デフォルトの名無しさん :04/01/16 12:07
それらのAPIはOS「彼女」「嫁」「ソープ嬢」でお使いください


112 名前:デフォルトの名無しさん :04/01/16 13:07
>>111 それ買うよ!(;゚Д゚)ノ いくら!?

113 名前:デフォルトの名無しさん :04/01/16 13:56
>>112 インストールしたいだけなんでしょ!?

114 名前:デフォルトの名無しさん :04/01/16 14:14
>>107
肛門コントロールSEXは女子高生には早すぎたかも…

115 名前:デフォルトの名無しさん :04/01/16 15:09
ソケット使ってファイルを送るのってどうやってやるのでしょうか?
send()、recv()メソッドだと文字列を送るっぽい(?)のは分かったんですが
ファイルを送るにはどうしたらいいのでしょうか?
ファイルを送るメソッドってあるんですか?
どなたかご教授お願いします。

116 名前:デフォルトの名無しさん :04/01/16 15:11
>>115
ファイルを読んでsend()
recv()で受け取ったのをファイルに出力
これで送れるよ

117 名前:デフォルトの名無しさん :04/01/16 18:01
>>115
すれ違ってないか?
というより君は
単にファイルを送るアプリをつくりたいのか
Winsock直叩きでファイルを(ry
そこをはっきりしれ。
君の質問内容は後者に該当しそうだが、君が後者を選ぶ理由が思い当たらない

118 名前:全てのウィンドウを最小化 :04/01/16 20:35
Winキー + M で全てのウィンドウを最小化することができますが、
これを Visual Basic からやりたいと思っています。

しかしデスクトップ以下のウィンドウ全てに対して ShowWindow で
最小化した結果と、Winキー + M で最小化した結果は違うようです。
具体的にはWinキー + M での最小化ではいくつかのウィンドウが
除外されているようです。

Winキー + M での最小化では、最小化すべきウィンドウを
どのようにして判定しているのでしょうか??

119 名前:デフォルトの名無しさん :04/01/16 21:06
>>118
EnumWindows()して、IsWindowVisible()だったら
ShowWindow(SW_MINIMIZE)するとか?

適当スマソ

120 名前:118 :04/01/16 21:07
結局仮想キーコードを送ってWin + M することにしました。

121 名前: :04/01/16 21:08
一定期間キーボードやマウスからの入力が無かったら自動的に終了する
ようなアプリを書きたいと思っています。

最後の入力からの時間を返してくれるAPIというのは無いでしょうか?

122 名前:118 :04/01/16 21:14
>>119 レスありがとうございます。
IsWindowVisible での判定はやってみました。
が、Win + M の挙動はちょっと違うようです。

実は http://tachyorg.at.infoseek.co.jp/bluetick/の時計アプリケーション
を使っているのです。このアプリケーションは非矩形のウィンドウを持っています。
また、僕は Doblog ツールバー http://www.doblog.com/ を常駐させて
いて、これが画面下にティッカーを表示しています。
これらのウィンドウ群は Win + M でも最小化されないんです。

#余談ですけど、上に書いた時計アプリケーション、
#カコイイので気に入ってます。
#使い始めて10時間くらいしかたってないけど。

123 名前:デフォルトの名無しさん :04/01/16 21:15
WS_OVERLAPPEDを持っているかどうかじゃないか?

124 名前:118 :04/01/16 21:18
>>123 なるほど、タイトルバーの有無で判定するということですね。
よさそうな気がしてきました、まだ未確認ですけど。

125 名前:デフォルトの名無しさん :04/01/16 21:19
ペイントソフトの選択範囲を表す鎖線を、ちょっとずつ動かすにはどうすればよいのでしょうか。
PS_DASHまではわかりましたが、動かす方法がわかりません。

126 名前:デフォルトの名無しさん :04/01/16 22:47
>>125
5角形ABCDEを作り、BCDEが矩形の頂点にくるように配置する。
Aが辺EB上を動くように動かしながらPolyLineで描画。
うまくいくかどうかはシラネ

127 名前:デフォルトの名無しさん :04/01/16 23:05
TAPIを使用して電話の発信/着信を行っているのですが
着信時の相手先情報(電話番号とか)はどのようにして取得するのでしょうか?

ナンバーディスプレイ対応の電話機で相手番号の確認は出来たのですが
プログラム中での取得が出来ません。
『このAPIで出来る』とかご存知でしたら教えて頂きたく...

128 名前:デフォルトの名無しさん :04/01/16 23:11
"Win32"APIにあるのか…?

129 名前:デフォルトの名無しさん :04/01/16 23:23
>>127
前に聞いたときには「できない」という結論だった

130 名前:デフォルトの名無しさん :04/01/16 23:47
昔、ナンバーディスプレイの番号を
シリアルポートかなんかで
通知してくれる製品があったな。
あれ買っとけば良かったかなぁ。

131 名前:デフォルトの名無しさん :04/01/16 23:49
こんなのがあった。
http://www.vector.co.jp/soft/win95/net/se070782.html

132 名前:デフォルトの名無しさん :04/01/16 23:50
ISDN回線用なら昨日もヨドバシで普通に売ってたがアナログ回線用は…

133 名前:デフォルトの名無しさん :04/01/16 23:51
>>121 「一定時間」のタイマーを張って、入力があったらリセットという実装ではダメ?

134 名前:デフォルトの名無しさん :04/01/17 11:15
どうも。

文字列で FindResource と SizeofResource を使う必要が出てきて、
ちょっと試しに使ってみたのですが上手くいきません。

void CTesMFCDlg::OnButton1()
{
HINSTANCE hInst = AfxGetResourceHandle();
HRSRC h = ::FindResource(hInst, MAKEINTRESOURCE(IDS_STR1) , RT_STRING);
TRACE1("h = %d\n", h);
DWORD size = ::SizeofResource(hInst,h);
TRACE1("size = %d\n", size);
}

で h=0 size=0 と返ります。
なにゆえにこうなるのか理解不能です。どなたか助けてぇ
MFC上でのテストですが、IDS_STR1はStringTableにちゃんと入れてます。

135 名前:デフォルトの名無しさん :04/01/17 11:21
>>121
> 最後の入力からの時間を返してくれるAPIというのは無いでしょうか?
2000以降で GetLastInputInfo。
9x系まで考えれば無い。


136 名前:デフォルトの名無しさん :04/01/17 11:22
とりあえずGetLastErrorはやってみたのか?

137 名前:134 :04/01/17 11:36
GetLastErrorすると
1814
The specified resource name cannot be found in the image file.
ERROR_RESOURCE_NAME_NOT_FOUND
らしいです。でも、rcファイルでは
・・・
STRINGTABLE DISCARDABLE
BEGIN
IDS_STR1 "テスト用文字列"
END
・・・
なんですけどね

138 名前:デフォルトの名無しさん :04/01/17 12:17
>>137
#include "Resource.h"

139 名前:デフォルトの名無しさん :04/01/17 14:02
>>137
HINSTANCE hInst = AfxGetInstanceHandle();
だとどーなる?

140 名前:デフォルトの名無しさん :04/01/17 14:32
>>135
> 2000以降で GetLastInputInfo。
> 9x系まで考えれば無い。

ありがとうございました。
たぶん自分では探し出すことができなかったと思います。

141 名前:デフォルトの名無しさん :04/01/17 19:31
コモンコントロールで教えて下さい。
ステータスバーやツールバーをつけたWindow内に子Windowを作るとツールバーやステータスバーの
上に子Windowが描画されてしまうんですが、これはどうやって回避するんでしょうか?

142 名前:デフォルトの名無しさん :04/01/17 19:38
: error C2440: '=' : 'long (__stdcall CDebugPrint::*)(struct HWND__ *,unsigned int,unsigned int,long)' から 'long (__stdcall *)(struct HWND__ *,unsigned int,unsigned int,long)' に変換すること
はできません。(新しい動作 ; ヘルプを参照)
この変換が可能なコンテキストはありません。

というエラーがでます。
ウィンドウクラスを定義する関数を作って、その中でクラスの定義を行っているのですが、それがいけないのでしょうか?
また、その関数はクラス内のメンバ関数です。
答えにもっと情報が必要ならば返信します。よろしくお願いいたします。

143 名前:142 :04/01/17 19:56
自己解決。乱文すいませんでした。

144 名前:142 :04/01/18 01:04
すいません。やっぱわかってないみたいです。
ご教授のほうよろしくお願いしますm(__)m

145 名前:デフォルトの名無しさん :04/01/18 01:18
クラスのメンバ関数を普通の関数として使うことはできない。
普通の関数かstaticメンバ関数にする。

なんどめだナウシカ

146 名前:142 :04/01/18 03:30
>>145
ありがとうございます。

147 名前:デフォルトの名無しさん :04/01/18 04:38
RegisterClassEx()がNULLを返す場合とは、どのような事情があるんでしょうか?

148 名前:デフォルトの名無しさん :04/01/18 08:59
>>147

関数が失敗すると、0 が返ります。拡張エラー情報を取得するには、GetLastError 関数を使います。


149 名前:高校生 :04/01/18 11:11
spy++を使っていて気になったんですが、
あのウインドウの枠を強調表示するにはどのようなAPIを使えばいいのでしょうか?
それとも、あれはspy++が自前で描画しているのでしょうか?

150 名前:デフォルトの名無しさん :04/01/18 11:36
自前で描画してる

151 名前:デフォルトの名無しさん :04/01/18 11:51
MCIに関して質問です。

フォーマットをMILLISECONDSにした状態で
CDのトラック毎の始めと終わりの正確な位置を知りたいのですが、どうしたらいいでしょうか?

152 名前:デフォルトの名無しさん :04/01/18 13:58
>>127
ATコマンド直打ちでやったような気がする

153 名前:デフォルトの名無しさん :04/01/18 15:46
>>149
Draw〜であったと思うけど忘れた

154 名前:147 :04/01/18 16:53
>>148
ありがとうございます。
エラー情報の獲得等扱って、エラーコードを見たんですが、
エラーコードは「0」でした。。。
CreateWindowから帰ってきた値が「0」だったので、えらーが起きてると思い、
エラーコードを獲得したら、それも「0」でした。
エラーコードの獲得は、えらーが起きたと思われる関数の直後に呼び出す。で
いいんですよね?

155 名前:141 :04/01/18 17:05
コモンコントロールって誰も理解できない程のハイテクなんすか?

156 名前:デフォルトの名無しさん :04/01/18 17:11
>>155
バーの分だけ子ウィンドウを小さくしろ

157 名前: :04/01/18 17:12
void Test(int n = 2, int m = 2 ){
return;
}

引数が2つあって、1、2番目ともデフォルト値がきまっているとします
このとき、
2番目だけ値を設定したい場合

Test(○ ,1); ○の1番目はどうしたらいいですか?

158 名前:デフォルトの名無しさん :04/01/18 17:12
どこがWin32APIの質問なんだ

159 名前:デフォルトの名無しさん :04/01/18 17:22
>>154
CreateWindow?
RegisterClassExの直後じゃないの

160 名前:デフォルトの名無しさん :04/01/18 17:28
>>157
自分で値を入れるしかない。
プロトタイプで n=2 はわかっているわけだから
不可能ではないでそ。

161 名前:デフォルトの名無しさん :04/01/18 17:40
WinAPIについて分かってないのが結構入ってくるな…
もしかしてWinでつくるAPplIについての総合質問だと思われてないか?

162 名前:デフォルトの名無しさん :04/01/18 17:42
たしか非MFCのウインドウズプログラミングスレと統合したんじゃなかったか?
API質問(だけの)スレなんていまさらほとんど需要ないだろうし
大抵の質問者はウインドウズプログラム一般として扱ってると思うぞ

163 名前:151 :04/01/18 20:42
スレ違いでしたか・・?

164 名前:デフォルトの名無しさん :04/01/18 21:07
>>162
>API質問(だけの)スレなんていまさらほとんど需要ないだろうし
私物化すんな

# デフォルトCなのは賛成しながらも疑問だが

165 名前:デフォルトの名無しさん :04/01/18 21:21
>>163
指摘されているのは、あんたじゃない。

>>157 とかだよ。

166 名前:デフォルトの名無しさん :04/01/18 22:09
複数のウィンドウプロシージャ間で変数の値を渡す(共有する)にはどうしたらいいですか?


167 名前:  :04/01/18 22:19
ばかやろう!
他のスレでスレ違いとかいわれりゃ
じゃこっちのスレで質問すればええかと思って貼ってんじゃネーかよ
なにがマルチじゃ ボケ、そんなことでわざわざ書くなよ 暇人が
アホどもが バーカ

168 名前:デフォルトの名無しさん :04/01/18 22:24
DDBで1ピクセル単位の操作をしたいのですが、可能でしょうか?
DIBに変更すれば出来るのはわかっているのですが、できればDDBのままでやりたいです
とりあえず、DDB画像中の指定した位置の1ピクセル分の値を得るということをしたいのですが・・・

169 名前:デフォルトの名無しさん :04/01/18 22:25
>>167
しね

170 名前:デフォルトの名無しさん :04/01/18 22:26
SetPixel/GetPixelで良いじゃん
別にこれはイメージをDIBに変更しているわけじゃないし。

171 名前:デフォルトの名無しさん :04/01/18 22:41
>>167
> じゃこっちのスレで質問すればええかと思って貼ってんじゃネーかよ

>>> あらゆる質問はまず すれ立てるまでもない質問はここで スレにしてください。 <<<

板のルールも守れないくせに暴れるな。

ちなみに、答えは向こうのスレの 160 で出てる。

せっかく答えを書いても、マルチする奴はこいつみたいに元の方を見なかったりするから嫌われる。

172 名前:デフォルトの名無しさん :04/01/19 01:07
懺悔します。
私、コモンコントロールをサブクラス化したくって
 original = (WNDPROC)SetWinidowLong(hwnd, GWL_WNDPROC, (LONG)myWndProc);
ってやって、その myWndProc の中の最後で CallWindowProc 使わずに
 return (original)(hwnd, msg, wparam, lparam);
とかやってました (;´Д`)
だって Win2k で問題なく動くんだもん (;´Д`)
WinMe(たぶん9x系全部) だと挙動不審 (;´Д`) ていうか発狂

173 名前:デフォルトの名無しさん :04/01/19 08:03
>>151
MCI つってもいろいろあると思うんだが、
mciSendString を使ってるんなら、status コマンドか何かでいけた気がする。
とりあえず、ぐぐれ。

174 名前:デフォルトの名無しさん :04/01/19 08:54
>>172
それでコンパイル通るのか...
試したくなってきた!!!

175 名前:デフォルトの名無しさん :04/01/19 09:08
>>172
それのどこがダメなのかがわからない・・・


176 名前:デフォルトの名無しさん :04/01/19 11:46
>>172
ウィンドウの文字コード(A or W)が一致していれば、一応動くんじゃない?
UNICODEでビルドしてたのか?

177 名前:デフォルトの名無しさん :04/01/19 13:39
>176
172ではありませんが
w95 EDITで死にました(当然 A)。

178 名前:デフォルトの名無しさん :04/01/19 13:49
WinNTで、QT_Thunkのようなレイヤってないですかね?

179 名前:デフォルトの名無しさん :04/01/19 14:40
>>178
「実は16ビットで実装してますた」というものはNTには
一切ないからできても無意味だと思うが。
何がやりたいのかもっと具体的に書くべし

180 名前:デフォルトの名無しさん :04/01/19 15:18
9x系とNT系を判別して、A系とW系を使い分けているのですが、
これを9x系のOSで実行しようとすると、使っていないW系のコードが入っているだけで、
プログラム開始エラーになります。
コメントアウトすると動くことを確認していますし、W系の場所が呼ばれていないことも確認しました。
一体何が原因でしょうか。こういう場合、どうしたらいいのか、教えてください。

181 名前:デフォルトの名無しさん :04/01/19 15:28
dllで呼び分けるとかだめ?

182 名前:デフォルトの名無しさん :04/01/19 15:31
>>180
・GetProcAddressを使って動的にAPIをロードする。
・DLLの遅延ロードを使用する。
・TCHARマクロ等で9x/NTでバイナリを分ける。
・9xでサポートされていないAPIは使用しない。

183 名前:デフォルトの名無しさん :04/01/19 15:52
9xでもW系のAPIはスタブが入ってるから
存在するだけでエラーが出るのは
単にAPIのサポートの問題だと思うが

184 名前:デフォルトの名無しさん :04/01/19 16:22
>>179
WinNT上のWin32アプリからでWin16DLLを呼び出したいということです。

DLLのソースを失い32bit化することが出来ないので
そのまま再利用したいのです。

185 名前:デフォルトの名無しさん :04/01/19 16:38
mciSendCommandです

少し前はTMSFフォーマットで操作させていたため、トラックの始めの箇所を指定するのは容易でしたが
今回スライダーを導入するため、フォーマットをミリセコンドにしました。

とりあえずぐぐってもMSDNとにらめっこしてもわからなかったので、質問したわけです(^-^;)

186 名前:高校生 :04/01/19 16:50
この前、アクロバットリーダー6.0をインストールしたら、
英文の読み上げ機能がついていました。
これをやりたいのですが、どうも情報がありません、
MSAAというものだとは思うのですが。


187 名前:デフォルトの名無しさん :04/01/19 16:58
じゃぁMSAAについて調べたらできるよ

188 名前:高校生 :04/01/19 17:14
ググっても、MSAAとは何ぞや的なサイトしかヒットしません。
MSDNでも、障害者にも使いやすいデザインなんかがあります。
具体的にどうすれば使えるのか、説明しているところはありませんか?

189 名前:デフォルトの名無しさん :04/01/19 17:32
スレッドを作成するとそのハンドルが作成されますが、このハンドル
以外にも生成したスレッドに渡るハンドルというものがあるのでしょうか?

作成するスレッドの処理の先頭にブレークポイントを設定し、
スレッド作成元にてCreateThredやbeginethreadexをコール
すると当然ハンドルがひとつ増加しますが、
その後スレッド処理の先頭にブレークがかかった際に再度ハンドル数を
確認すると何故か更にひとつ増加しており、このハンドルがクローズ
できずに困っております。

初心者ですみませんがご存知の方よろしくお願いいたします。

190 名前:デフォルトの名無しさん :04/01/19 17:37
生成されたスレッドは自分自身への参照を持つ。
スレッドが終了すれば消える。
CreateThreadが返したハンドルを閉じただけで参照カウントが
0になったらまだスレッドが生きてるのにスレッド情報が
開放されてまずいでしょ

191 名前:185 :04/01/19 17:46
自己解決しました、申し訳ありません。

やり方としては、FORMAT_TMSFにして、トラックの先頭を指定し、その位置にシークさせ
それからFORMAT_MILLISECONDSに戻して、その位置を取得することで出来ました。

192 名前:デフォルトの名無しさん :04/01/19 18:02
>>190
すばやい回答ありがとうございます。
助かります。

スレッド側でハンドルが増えるのは当然のことだったのですね。

スレッド側でExitThreadや_endthreadexをコールし、その後スレッド
作成側でWaitForSingleObjectでスレッド終了を待った後、
スレッドハンドルをクローズしてもハンドルが一つ増えたままになって
いたので、スレッド側で増加したハンドルもクローズする必要が
あるのかと思ってしまいました。

スレッド終了でクローズされるということは、当方のスレッド終了
方法に問題があるようです・・・処理を見直してみます。


193 名前:デフォルトの名無しさん :04/01/19 18:15
>>186
このへんは見てみた?
ttp://www.microsoft.com/speech/download/sdk51/

194 名前:デフォルトの名無しさん :04/01/19 18:22
>>191 mciSendStringだけど、こんなのもあるよん。
ttp://twin-tail.jp/contents/pg_tips/tips001.htm

195 名前:デフォルトの名無しさん :04/01/19 19:43
>>184
サンクという仕組みで32bit<->16bit相互に呼び出せる。
別に難しいこたぁない。
thunk とか WOWでぐぐれ。


196 名前:デフォルトの名無しさん :04/01/19 23:16
windowsXPでnotepad.exeのロードアドレスは、0x01000000になりますが、
これのメリットって何ですか。

197 名前:デフォルトの名無しさん :04/01/19 23:54
スナックのママに自慢できる

198 名前:デフォルトの名無しさん :04/01/19 23:57
キャバ嬢にモテる

199 名前:デフォルトの名無しさん :04/01/20 00:18
弱酸性で地肌にやさしい(赤ちゃんも洗えます)

200 名前:デフォルトの名無しさん :04/01/20 00:47
200Gets!

201 名前:デフォルトの名無しさん :04/01/20 01:08
>>197
それ、すごいな!

202 名前:デフォルトの名無しさん :04/01/20 08:45
>>201
スナックのママはなんでも聞いてくれるけど
APIについては教えてくれないからな

203 名前:デフォルトの名無しさん :04/01/20 14:55
盛り上がってるところすみません。
外部アプリ、例えばメモ帳が起動された事を常に検知したいのですがどのようにすれば可能でしょうか?

204 名前:デフォルトの名無しさん :04/01/20 15:30
そこで右フックだ!

205 名前:デフォルトの名無しさん :04/01/20 15:34
>>203
見張る

206 名前:デフォルトの名無しさん :04/01/20 16:03
FindWindowしまくる

207 名前:高校生 :04/01/20 17:34
>>193
おお、こんなところにSDKが! おーしこれを使えば……ってデカすぎ!

>サンプルコードとドキュメント、SAPIと開発用のUS版スピーチエンジンが欲しいなら、Speech SDK 5.1 fileを落とせ。

>日本語版や中国版の開発用エンジンが欲しいのなら、Speech SDK 5.1 Language Pack fileも落とせ。

>もし、製品にスピーチAPIやスピーチエンジンを組み込み、製品として配布したいなら、Speech 5.1 SDK Redistributables; All fileを落とせ。

解釈は間違っていませんよね? やれやれ、理系なのに数学が赤点ギリギリで、英語がトップな香具師(=漏れ)はそういないと思います。

それにしてもデカいなあ。
Speech SDK 5.1だけで68MB
Language Packが81.5MB
Redist : Allに至っては131.58MB

とりあえず落とすのはSDKと言語パックか、これだけで149.5MB。
ところで、最後のRedist : Allは落とす必要がありますか? 商用目的でなければいいの?


208 名前:高校生 :04/01/20 17:41
組み込む(原意:統合する)ってどう言うことでしょうか?


209 名前:デフォルトの名無しさん :04/01/20 17:54
=アプリ内で使う、と思われ。それで英語トップ?

210 名前:デフォルトの名無しさん :04/01/20 19:17
インストールができませんとか言って来そうだよな…(w

211 名前:デフォルトの名無しさん :04/01/20 19:17
RedistributablesはSpeech APIを使ったアプリの動作に必要なファイル一式だベ。
藻前はSDK入れとけばいいけど、エンドユーザにはRedistributablesが
必要になる。


212 名前:デフォルトの名無しさん :04/01/20 21:45
>>203
NOTEPAD.EXEを挿げ替えるだな
ローテク侮るべからず

213 名前:デフォルトの名無しさん :04/01/21 00:06
>>195
WinNTで32bit→16bitはないと思うが。逆はあるけど

214 名前:デフォルトの名無しさん :04/01/21 01:17
>>203
if メモ帳が起動されている ニョホ
これをループしまくる

215 名前:デフォルトの名無しさん :04/01/21 08:53
>>214
ツェペリは(ry

216 名前:デフォルトの名無しさん :04/01/21 10:55
みなさんありがとうございます。

やっぱしそうそう都合のいいメッセージとかないんですね。
期待していたのは「アプリが起動された事のメッセージが
通知される」事だったんですが、そんなのいちいち全アプ
リに発行なんてしてらんないですもんね。

>204さんや>205さんのようにフックで見張って>206さんや
>214さんのようにFindWindowとかでやるしかなさそうですね。
>212さん「挿げ替える」辞書で調べました。
実際はNOTEPAD.EXEだけじゃないので今回は駄目なようです。

FindWindowとかは実際はタイマーでチェックするんでしょう
けど、そうするとタイミングによっては駄目なので、仕様から
見直してみます。

ありがとうございました。

217 名前:デフォルトの名無しさん :04/01/21 11:05
>>216
タイマーでFindWindowって…
フックの使い方知ってる?

218 名前:デフォルトの名無しさん :04/01/21 12:13
スレッドでfindwindow!(プ

219 名前:デフォルトの名無しさん :04/01/21 13:31
>217-218さん
マウスとキーボードのフック位しか経験ないです。
では、今回の場合は何をフックすればいいのか…
まぁ私がバカな事を言ってるのでしょうからこれでお終いでいいです。
バカなりに調べてみます。

220 名前:デフォルトの名無しさん :04/01/21 13:41
フックとFindWindowを同時に使おうというのが根本的に間違い
まったくの別物

221 名前:Win32SDK勉強中 ◆Win32BkCJ. :04/01/21 16:34
↓こんなコードでアプリの置かれた環境独自の数を取得できますか?
#include <windows.h>

int get_serial()
{
    char drive[MAX_PATH];
    GetWindowsDirectory(&drive[0], MAX_PATH);
    drive[3] = '\0';
    DWORD serial;
    if(!GetVolumeInformation(&drive[0], 0, 0, &serial, 0, 0, 0, 0))
    {
        return 0;
    }
    else
    {
        return serial;
    }
}

222 名前:デフォルトの名無しさん :04/01/21 16:47
>>221
コード読むのマンドクセ
環境独自の数ってなんだよ


223 名前:高校生 :04/01/21 16:56
環境変数の数のこと?

224 名前:デフォルトの名無しさん :04/01/21 16:59
Winがインスコされてるボリュームのシリアル番号を、MACアドレスみたいな
ものとしてみなせるかみなせるかって話しだと思う。

225 名前:Win32SDK勉強中 ◆Win32BkCJ. :04/01/21 17:31
>>222-224
読みにくいコード、非常に申し訳ありません。
224さんの仰るとおりです。ただ、完全に唯一無二である
必要はなく、同じ物があまりでない程度でいいのですが…

226 名前:デフォルトの名無しさん :04/01/21 17:55
メーカー製PCの同一モデルとかって、どうなってるんだろうか?<ボリュームのシリアル番号

227 名前:デフォルトの名無しさん :04/01/21 18:16
以前、販売しているフォーマット済みFDを数枚試してみたらシリアルは全部0だった。

228 名前:デフォルトの名無しさん :04/01/21 18:22
あと、OSのシリアルとかは割れを除いても、会社で複数台同じPC購入するとOS入れなおしのときに
別のマシンのシリアルいれたり、複数台入れなおすときなんて全部同じシリアル入れるとかへーき

229 名前:デフォルトの名無しさん :04/01/21 19:06
>>216
メディアプレイヤが起動してるかチェックしたときに使ったコード

hWnd = ::FindWindow(NULL,_T("Windows Media Player"));
if(hWnd){
::SendMessage(hWnd,WM_CLOSE,NULL,NULL);
Sleep(1000);
}
これをループで回せばいいんじゃないのか

230 名前:Win32SDK勉強中 ◆Win32BkCJ. :04/01/21 19:32
>>227
うちでは数枚同じものがありました。
>>228
それはWindows xpのProduct Activationにも使えますか?

231 名前:デフォルトの名無しさん :04/01/21 19:37
フロッピーのボリュームIDに意味はないだろ。
diskcopyで同じディスク作れるし。

>>230
XPは知らんけど、2000まではサイトライセンスというものがあって、
複数マシンに同じProduct IDでインストールするようになっていた。
だから、OSのProduct IDはマシンの区別には役立たないと思った方がいい。

232 名前:デフォルトの名無しさん :04/01/22 03:58
勉強中の分際でシェアウェアでも作るつもりか?

233 名前:デフォルトの名無しさん :04/01/22 07:26
WindowsのTCP/IPのプロパティで設定されている
DNSサーバーの設定を取得する方法をご存知の方、
教えていただけないでしょうか。

234 名前:デフォルトの名無しさん :04/01/22 09:05
>>229
これ
起動されることを確認じゃなくて
起動していることを確認だね

起動していることが前提ならメッセージフックだって可能


235 名前:デフォルトの名無しさん :04/01/22 09:28
>>234
ループで回して監視してりゃいいんでないの?
どっちも一緒でしょ

236 名前:デフォルトの名無しさん :04/01/22 12:15
>233
GetPerAdapterInfo
GetAdaptersAddresses
あたりでねーか。

237 名前:デフォルトの名無しさん :04/01/22 12:16
あ、GetNetworkParamsもあったな。

238 名前:デフォルトの名無しさん :04/01/22 15:35
CreateFontにある文字の高さとセルの高さの違いを教えてください

239 名前:デフォルトの名無しさん :04/01/22 15:41
内部レディングを含めるかどうか。

240 名前:高校生 :04/01/22 16:11
友達にSpeech SDKを落としてもらいました。
今日インストールするつもりです。
どうもマイクが必要なようですね。


241 名前:高校生 :04/01/22 16:13
なるほどこのスレは名前に高校生と入れると何を書き込んでもいいんですね

242 名前:高校生 :04/01/22 16:43
ここまでで、241以外の『高校生』は皆同一人物です。

243 名前:高校生 :04/01/22 16:44
   (V)∧_∧(V)
    ヽ(・ω・)ノ  フォッフォッフォッ
.     /  /
    ノ ̄ゝ


.          (V)∧_∧(V)
           ヽ(   )ノ  フォッフォッフォッフォッ
.           /  /
       .......... ノ ̄ゝ

244 名前:デフォルトの名無しさん :04/01/22 16:55
別に、音声入力しないならマイクは要らんだろ。

245 名前:Win32SDK勉強中 ◆Win32BkCJ. :04/01/22 17:59
>>232
いやいや、まさか^^;
ちとProduct Activationに興味を持っただけです。
皆さん、ありがとうございました。

246 名前:デフォルトの名無しさん :04/01/22 21:13
Product Activationはヴォリュームのシリアル番号も見てたよな

247 名前:デフォルトの名無しさん :04/01/23 00:55
WindowsXPでエクスプローラなどから mpeg や jpeg などの動画や画像ファイルの
プロパティを見ると、「概要」タグがありキーワードやコメントなどを編集することができますが、
このキーワードやコメントをファイルから読み書きするためのAPIといったものが用意されているのでしょうか?
MSDNで探すにもキーワードが間違っているのか見つかりませんでした。
ヒント、キーワードだけでもいいのでよろしくお願いします。


248 名前:デフォルトの名無しさん :04/01/23 01:02
>>247
ヘッダーのコメント部分かなんかに書いてあるだけじゃねぇえの?

249 名前:247 :04/01/23 01:07
>>248
そう思い、コメント、キーワードの文字列を変更してバイナリエディタで比較したのですが
Jpegに関しては Exif フォーマットでヘッダー部にコメントなどが埋め込まれ実際にファイルサイズも変わります。
しかしMpegの場合はコメントなどを変更してもファイルサイズ、中身はまったく変わらないのです。
そのためOSの機能としてAPIが提供されているのではないかと思いまして。


250 名前:デフォルトの名無しさん :04/01/23 01:08
それって動画じゃなくて実行ファイルでも出るんじゃね?
多分NTFSのオルタナティブストリームじゃないか?


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