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


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

Win32API質問箱 Build44
1 名前:デフォルトの名無しさん :2006/06/28(水) 22:38:45
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。

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

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

2 名前:デフォルトの名無しさん :2006/06/28(水) 22:39:49
-過去スレ
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/06/28(水) 22:41:01
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
9 ttp://pc5.2ch.net/tech/kako/1044/10449/1044929160.html
8 ttp://pc5.2ch.net/tech/kako/1040/10409/1040964626.html
7 ttp://pc3.2ch.net/tech/kako/1036/10366/1036654893.html
6 ttp://pc3.2ch.net/tech/kako/1032/10325/1032548635.html
5 ttp://pc3.2ch.net/tech/kako/1028/10285/1028580373.html
4 ttp://pc3.2ch.net/tech/kako/1023/10233/1023361418.html
3 ttp://pc.2ch.net/tech/kako/1017/10170/1017072275.html
2 ttp://pc.2ch.net/tech/kako/1006/10067/1006783012.html
1 ttp://pc.2ch.net/tech/kako/991/991576947.html

4 名前:デフォルトの名無しさん :2006/06/28(水) 22:42:11
- MSDN ホームページ
http://www.microsoft.com/japan/msdn/
- MSDN ライブラリ
http://msdn.microsoft.com/library/ja/
- MSDN 2 ライブラリ
http://msdn2.microsoft.com/ja-jp/library/default.aspx
- 猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/
- Google
http://www.google.com/

- Platform SDK Update
(Windows® Server 2003 SP1 Platform SDK Full Download)
http://www.microsoft.com/downloads/details.aspx?familyid=EBA0128F-A770-45F1-86F3-7AB010B398A3&displaylang=en
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&H=&view=table&shw=&D=tech


5 名前:デフォルトの名無しさん :2006/06/28(水) 22:43:11
【HSP】HSPで3Dゲーム【3D】
http://pc8.2ch.net/test/read.cgi/gamedev/1016699230/
HSPでRPG
http://pc8.2ch.net/test/read.cgi/gamedev/1082902759/
HSPで出来る範囲について
http://pc8.2ch.net/test/read.cgi/gamedev/1085733089/
HSP - Hot Soup Processor [11]
http://pc8.2ch.net/test/read.cgi/gamedev/1133488968/
HSPでの麻雀プログラムについて
http://pc8.2ch.net/test/read.cgi/gamedev/1047707655/
HSPは・・・
http://pc8.2ch.net/test/read.cgi/gamedev/1104208959/
おまいらHSPで適当なゲームでもつくりませんか
http://pc8.2ch.net/test/read.cgi/gamedev/1102214621/
★ゲーム製作期待の星! HSP Part 9 ★
http://pc8.2ch.net/test/read.cgi/gamedev/1005313791/
HSPで完全オリのSLGを作るスレ
http://pc8.2ch.net/test/read.cgi/gamedev/1047478458/
HSPでSLGが作れるようになるまで頑張るスレ
http://pc8.2ch.net/test/read.cgi/gamedev/1103618349/
HSPでモンスター育成SLGを作りましょう!
http://pc8.2ch.net/test/read.cgi/gamedev/1089467139/
ネットゲームforHSP『無人島』制作スレ
http://pc8.2ch.net/test/read.cgi/gamedev/1018534410/
PGの面接で、使える言語はHSPですって言ったら
http://pc8.2ch.net/test/read.cgi/gamedev/1046921466/
HSPでシミュレーションRPG
http://pc8.2ch.net/test/read.cgi/gamedev/1036923414/

6 名前:デフォルトの名無しさん :2006/06/28(水) 22:51:20
>>1


7 名前:デフォルトの名無しさん :2006/06/28(水) 22:59:18
これを付け加えてもよいと思う。

MSDN ライブラリ 2006年6月版
http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=373930CB-A3D7-4EA5-B421-DD6818DC7C41

8 名前:デフォルトの名無しさん :2006/06/28(水) 23:04:48
MessageBox(NULL, ">>1 乙", NULL, MB_OK);

9 名前:デフォルトの名無しさん :2006/06/29(木) 00:22:25
一物

10 名前:デフォルトの名無しさん :2006/06/29(木) 04:19:11
>>5は何だよw

11 名前:デフォルトの名無しさん :2006/06/29(木) 19:27:01
ハードディスクのキャッシュ内容ををハードディスクに書き出したい(シンクロさせたい?)
だけど、APIありますか?


12 名前:デフォルトの名無しさん :2006/06/29(木) 19:28:54
ハードディスクのキャッシュ内容ををハードディスクに書き出したい(シンクロさせたい?)
だけど、APIありますか?


13 名前:デフォルトの名無しさん :2006/06/29(木) 19:37:17
ttp://support.microsoft.com/default.aspx?scid=kb;ja;332023

キャッシュされたデータを即座に物理ディスクに書き込むように強制するには、一般に以下の 2 つのコマンドを使用します。

*)flush buffers コマンドは、SCSI および IDE/ATAPI のディスク デバイスで使用できるコマンドであり、
ディスクに対し、キャッシュされたデータをすべて即座にディスクに書き込むように命令します。
SCSI ディスクの場合は、ディスクに SYNCHRONIZE CACHE コマンドを発行することによって実装されています。
IDE/ATAPI ディスクの場合は、ディスクに対して FLUSH CACHE コマンドが送られます。
このコマンドは、通常、Windows のプログラムが FlushFileBuffers API を呼び出した結果として発行されます。
レジストリへの書き込みは、FlushFileBuffers API の呼び出しと
ディスクへの SYNCHRONIZE CACHE コマンドの送信が発生する操作の一例です。



14 名前:デフォルトの名無しさん :2006/06/29(木) 19:38:48

*)Write Through コマンドは、SCSI ディスク デバイスでのみ使用でき、ForceUnitAccess (FUA) ビットを設定した状態で
ディスクに対して WRITE コマンドを発行することによって実装されています。この種のコマンドは、現在のデータのパケットを、
オンボード書き込みキャッシュを通さずに、即座にディスクに書き込むように命令します。
通常、この動作が発生するのは、Windows プログラムが、FILE_FLAG_WRITE_THROUGH フラグを設定した状態で
CreateFile API を呼び出して開いたファイルに対して、WriteFile API を呼び出して書き込みを行った場合です。
一般にウイルス検索ソフトウェアは、FILE_FLAG_WRITE_THROUGH フラグを設定した状態でファイルを開きます。
FUA ビットのサポートはオプションです。この機能は、一部の SCSI およびファイバ チャネル (FC) デバイス
(一般には RAID アレイではなく個々のドライブ) にのみ実装されています。

仕様により、これらのコマンドは、ディスクに書き込まれているデータの安全性を確保するため、
ある程度のパフォーマンス (一般にはディスクのオンボード書き込みキャッシュによって提供されるもの) を犠牲にします。
これらのコマンドによってデータがディスクに即座に書き込まれず、さらにディスクの電源が突然切れた場合、
キャッシュされたデータは失われます。また、書き込み中のファイルが破損する可能性もあります。


ファイル・アクセスを細かく制御する (API VC++)
ttp://www.geocities.jp/monalipse/c/api/FileAccess.html


15 名前:デフォルトの名無しさん :2006/06/29(木) 20:17:28
早速のレスどうもです!
参考になりました。
ハードディスク全体のキャッシュの書き出しをしたいので「flush buffers」で目的が達成できそうなんですが、
VCのヘッダー群、Googleで検索してみたんですが、有効な情報が見つけられませんでした。
何か情報ありましたら教えてください。
よろしくお願いします。


16 名前:デフォルトの名無しさん :2006/06/29(木) 20:25:12

ttp://wisdom.sakura.ne.jp/system/winapi/win32/win113.html

FlushFileBuffers()
BOOL FlushFileBuffers(HANDLE hFile);

ファイルのバッファをフラッシュします

hFile - GENERIC_WRITE アクセスを持つフラッシュするファイルを指定します

戻り値 - 関数が成功すれば 0 以外、失敗すれば 0


17 名前:デフォルトの名無しさん :2006/06/29(木) 20:25:16
>このコマンドは、通常、Windows のプログラムが FlushFileBuffers API を呼び出した結果として発行されます。

18 名前:デフォルトの名無しさん :2006/06/29(木) 22:07:31
ttp://uploaderlink.hp.infoseek.co.jp/cgi-bin/512kb/src/up12112.jpg
こいつをどうにかするツール作ってぇん

19 名前:デフォルトの名無しさん :2006/06/29(木) 22:31:21
自作ポエムを大量に流せ

20 名前:デフォルトの名無しさん :2006/06/29(木) 23:22:03
フィギュアぶっかけ画像も

21 名前:デフォルトの名無しさん :2006/06/30(金) 01:58:58
タスクマネージャの「プロセスの終了」はどのような方法をとっているのでしょうか?

TerminateProcessかと思ったのですがDLLの管理について問題があるようです
ExitProcessは引数にプロセスのハンドルが渡せないので自プロセスのみかと思われます

22 名前:デフォルトの名無しさん :2006/06/30(金) 02:24:07
>>21
タスクマネージャがどう処理しているのかは知らないが、
予め終了させたいプロセスが分かっている(hProcessとする)なら

CreateRemoteThread(hProcess, NULL, 0, (LPTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandle("Kernel32"), "ExitProcess"), 0, 0, NULL);

のように、相手のプロセスに強制的にExitProcessを呼び出させることができるけど。
これでうまくいくかはシラン

23 名前:15 :2006/06/30(金) 11:47:23
レスありがとうございます、
スイマセン説明不足でした。
やりたい事は、自分が作ったファイルのキャッシュの書き出だけではく、
システム駆動中のプロセス全部のキャッシュの書き出しを行いたいのです、
(シッピング?のような)
情報ありましたら、よろしくお願いします

24 名前:デフォルトの名無しさん :2006/06/30(金) 17:16:03
他の実行ファイル(Notepad)を実行してNotepadに文字列を入力して改行したいの
ですが、どうすればいいでしょうか?
一文字、一文字を入力ならkeybd_eventで入力は出来たのですが文字列で一気に
入力したいのです。理想としては
char MOZI;とかの変数にwscanfなどで入力された文字列を変数に保存(代入?)して
そのあとにNotepadを起動したらその文字列と最後に改行を入力したいのです。
どうかよろしくお願いします。

25 名前:21 :2006/06/30(金) 18:00:18
>>22
うまくいきました. ありがとうございます

26 名前:デフォルトの名無しさん :2006/06/30(金) 18:50:01
>>25
一応言っておくと、22の方法は9xでは使えないが平気?

27 名前:デフォルトの名無しさん :2006/06/30(金) 19:06:52
プロセス/スレッド制御は9xとNT系で大きく違いすぎて
互換性を考慮するのが大変になってきたな…

28 名前:デフォルトの名無しさん :2006/06/30(金) 20:31:59
>>23
そのリンクに「レジストリに書き込めばすべてフラッシュされる」と書いてある

29 名前:デフォルトの名無しさん :2006/07/01(土) 01:51:03
めちゃくちゃくだらない事で恐縮なんですが…
DWORDってDoubleWORD、ワード長*2 って事で32bitなんですよね?

でも今のCPUってIA32だからワード長は32bitじゃないんですか?

30 名前:デフォルトの名無しさん :2006/07/01(土) 01:53:30
>>29
そういう慣習になってるだけ。

31 名前:デフォルトの名無しさん :2006/07/01(土) 01:55:23
>>29
16bitのときからあったデータ型なんじゃないのか?
で、そのままソースの互換を保つために32bitに。と適当に回答。

32 名前:デフォルトの名無しさん :2006/07/01(土) 02:02:19
あーなるほど……
即レス感謝です。

33 名前:デフォルトの名無しさん :2006/07/01(土) 02:11:39
自プロセスで生成したメインウィンドウの一覧を取得したいのですが何かよいAPIはあるでしょうか?
EnumWindowsだと他のプロセスのメインウィンドウも取得してしまうので困っています。

34 名前:デフォルトの名無しさん :2006/07/01(土) 02:13:59
EnumWindowsで取得したウインドウに対してGetWindowThreadProcessIdをかけてプロセスIDを取得し、
それをGetCurrentProcessIdで取得した自プロセスのIDと比較する。
一致していれば自プロセスのウインドウ。

35 名前:デフォルトの名無しさん :2006/07/01(土) 02:20:41
>>34
素晴らしいです!ありがとうございます!

36 名前:デフォルトの名無しさん :2006/07/01(土) 07:36:38
>>33
スレッド単位で良ければEnumThreadWindowsがあるんだけどね。

37 名前:デフォルトの名無しさん :2006/07/01(土) 08:07:33
タスクトレイの件で質問した、前スレ979ですが

>>980
おっしゃるホバー時に文字列を動的に生成される場合には、
正常に取得できないとの事ですが、そういう場合は
諦めるものとして、それ以外のホバー時に動的に生成しない
ものについて、取得する方法はありますか。

>>983
CPU使用率を取るためにこういう事をしたいんじゃなくて、
タスクマネージャのCPU使用率のように、ころころとツールチップの
内容が変わる場合に、その文字列を取得したいという例です。
勿論取得したい文字列は、タスクマネージャのものではありません・・。

38 名前:デフォルトの名無しさん :2006/07/01(土) 09:22:43
98 までを切り捨てるなら、
Shell_TrayWndから辿っていってToolbarWindow32まで行って、
そいつのToolTip取得して、
そっから文字列取得すればいいだろ。

39 名前:982 :2006/07/01(土) 10:48:40
>>37
だからShell_NotifyIconをフックしろって。
動的だろうがなんだろうが対応できるから。


40 名前:デフォルトの名無しさん :2006/07/01(土) 13:15:05
これとかどうかな。何やら怪しげなことやってるが・・・
ttp://forums.belution.com/ja/vc/000/271/38.shtml

41 名前:デフォルトの名無しさん :2006/07/01(土) 15:11:21
ほかのウィンドウよりいつも手前に表示されてるんだけどウィンドウメッセージは
自分の裏のにスルーしたいときってシコシコ自前で中継する方法しかありませんか?

自ウィンドウを表示されてるんだけど存在してないことにしてくれるモードになれるAPIみたいのがほしいです


42 名前:デフォルトの名無しさん :2006/07/01(土) 15:38:47
日本語でおk

43 名前:デフォルトの名無しさん :2006/07/01(土) 15:49:21
>>41
多分、キーボードイベント・マウスイベントをフォアグランドウィンドウ以外の
ウィンドウで受け取りたいとの事ではないかと。

その機能を実現するAPIは、AttachThreadInput で実現可能

44 名前:デフォルトの名無しさん :2006/07/01(土) 16:13:10
>>42
つまり、AAであらわすとこんな感じのやつってことでわ?
                                      //                    |
                                     //     」              |
                                     //     7Γ               |
                                      //_                     |
                                        ||| |                    |
                                        |  |                 /
                      ダンッ                | u |                 /
                           ダンッ            |  \                |
 ちょwwおまww             \    _             |  \              |
           マトリクスー        _―\\ || |   ___      |__  ̄ ̄―______-/
 Λ_Λ   ━−‐‐‐           ) ( ̄ ̄ ̄(Ξ (|| ||       |   _______|__
 (;´∀`)━Λ_Λ‐‐ ━−‐‐‐  ̄―//  ̄ ̄(Ξ  (|| ||  ___|―― _________|_
 (    ) ( ´∀`)ーっ__ ミ     /  ダンッ   (Ξ  (|| ||≪| _―― ̄ ̄              |
 | | | ⊂ニ__  ̄ヽ\                 | ̄― ̄/ ̄  ____―――――――――
 (__)_)     (__)_)               ( ̄(0_/ ̄ ̄ ̄


45 名前:デフォルトの名無しさん :2006/07/01(土) 19:59:48
エディットボックスに無効な数字(例えば小さすぎる数字)などが
入力されたときに、エラーメッセージをMessageBoxではなく
バルーンを使って表示したいのですが、どうすれば良いでしょうか?
CToolTipCtrl ttc;

ttc.Create(m_hWnd, 0, 0, TTS_BALLOON);
ttc.Activate(TRUE);
ttc.SetTitle(TTI_ERROR, L"エラータイトル");

ttc.AddTool(CToolInfo(TTF_SUBCLASS, GetDlgItem(IDC_EDIT), 0, 0, L"エラーメッセージ"));
こうしてしまうとエディットボックスにカーソルを置かないとエラーメッセージが
表示されないし、IDC_EDITに元からある説明のためのバルーンに重なって表示されてしまいます。

46 名前:デフォルトの名無しさん :2006/07/01(土) 20:31:30
できました〜みなさ〜ん!!
まだ課題が山積みですが、一応SDKレベルでActiveXコントロールを初期化する方法がわかりました。

WBC001.LZH:SDKレベルでWebBrowserコントロールを使用して簡易ブラウザを作るサンプル(C++)
ttp://winscript.s41.xrea.com/upload/source/No_0015.lzh

あの後、CoCreateInstance()じゃなくてOleCreate()を使うのだ、という事に気付いたのだけれどその後がわからなくて、OleCreateでググったらズバリな記事がCode Projectにありました。ありがとうCode Project!

ttp://www.codeproject.com/com/cwebpage.asp?df=100&forumid=13828&exp=0&select=1119074

しかし、MSにはまたやられた・・・

SDK文書にはDoVerbすると書いてある個所があるのは分かってた。
で、DoVerbのリファレンス見たらEnumVerbしたものをパラメータに入れるって書いてある。
のでIEnumVerb::Next()してみたら一つも列挙できないのでこれじゃDoVerbなんか出来ないな、と思ってたら実はEnumVerbしなくてもDoVerbはできるのだった・・・
それは上のCode Projectの記事でVerb列挙できないWebBrowserコントロールにDoVerbしているのを見てわかったのだった・・・

・・・MSDN・・・なぜこんなにもオレを酷い目に遭わせる・・・OrZ

なお、現在ひっかかっているのはタブストップです。コントロール内の各コントロール(ボタンとかエディットとか)やリンクをTABキーで巡回できません。

そもそも私はTABキーで移動する正式なやり方を知らなくて、
いつもはメインループ部でWM_KEYDOWN/VK_TABが来たら次の子ウィンドウにSetFocusする、という方法をやってます。(バカなのかも)

たぶんみなさんならTABキーで移動できる方法が想像つくんじゃないでしょうか?

で、何はともあれ、これでどんなコンパイラでもWebBrowserコントロールが使えます!

BCCでもgccでもWin32対応なら何でもです!(NASMとかもありかも) MSに頼る必要はもうありません!

うーん・・・ブラウザ百出の予感・・・
長文失礼しました。m(_ _)m

47 名前:デフォルトの名無しさん :2006/07/01(土) 21:18:27
>>46
Sub1〜Sub8っていう関数名どうにかしろよ。

48 名前:デフォルトの名無しさん :2006/07/01(土) 21:22:47
>>46
コンストラクタでAddRef呼んで、デストラクタでRelease呼ぶのもおかしいだろ。

49 名前:デフォルトの名無しさん :2006/07/01(土) 22:47:05
>>46
色々ワロタ

50 名前:デフォルトの名無しさん :2006/07/01(土) 23:59:45
>>46
よくわからんが↓と同じ方法か?
http://www.adp-gmbh.ch/win/misc/mshtml/HTMLWindow.html
見た瞬間、泣きながら「ATL使おう」とか思ったけど、同じことを調べてやったてんなら神だな。

mingwってATLだけ対応してないってことなんだ。Oleは対応してんだね。
漏れも今WebBrowserコントロールをATLで使ってるが、gccが使えるのはいいな。
とにかく、Sub1〜Sub8っていう関数名どうにかしろよ。

51 名前:50 :2006/07/02(日) 00:07:35
あっ、タブストップはあれじゃないか?
ウィンドウスタイルのWS_TABSTOP指定してないんじゃないか?

52 名前:デフォルトの名無しさん :2006/07/02(日) 01:14:05
>>41

LayeredWindow

53 名前:デフォルトの名無しさん :2006/07/02(日) 01:26:11
>>41

http://www.microsoft.com/japan/msdn/windows/windows2000/layerwin.asp

ウィンドウスタイルに TOPMOST と Transparent を同時に指定してみて下さい



54 名前:デフォルトの名無しさん :2006/07/02(日) 07:49:08
すでに起動されてるプロセスの実行ファイル名がわかってるときに(仮にtest.exeとする)
そのプロセスハンドルを取得するにはどうすればいいのでしょうか?

55 名前:デフォルトの名無しさん :2006/07/02(日) 07:52:35
Process クラス調べろ

56 名前:デフォルトの名無しさん :2006/07/02(日) 10:22:58
HDC・・・・・・・・画像を描く板
HBITMAP・・・・画像のデータ情報

HBITMAPの形式
・DIB・・・・・多様性が高い情報形式
・DDB・・・・マイナーな情報形式

上の認識でOK?


CreateCompatibleDCでDCを55個作りまくったんだんだが、たった55kアップ。
メモリがあまり変化してない、画像データってもっとメモリ食うと思ってたよ。


57 名前:デフォルトの名無しさん :2006/07/02(日) 10:25:09
( ゚д゚)ポカーン

58 名前:デフォルトの名無しさん :2006/07/02(日) 10:33:23
ツールバーを作ったのですが、bitmapによってエラーをはくと思ったら、trueカラーがだめなようです。
ソフトで対応しているものは多いのに、なぜだめなのでしょうか?MSDNで調べてみましたが、見つかりませんでした。
それとも別の方法で実現しているのでしょうか?ほかに原因と思われるものはないのですが・・
よろしくお願いします。

59 名前:デフォルトの名無しさん :2006/07/02(日) 11:12:31
>>56
HDCはデバイスコンテキストへのハンドル
デバイスコンテキストというのは抽象的なもので
描画先はウインドウだったり、プリンタだったりする。
これによって、描画先が何であろうと、プログラマが気にしなくてすむ。

DIBとDDBは簡潔に説明するのが、自分には無理なのでパス
CreateCompatibleDCで作ったデバイスコンテキストには、
1x1モノクロのビットマップが割り当てられている。
もしこのDCに描画したかったら、自分でビットマップを確保して
SelectObject()すること。

60 名前:デフォルトの名無しさん :2006/07/02(日) 12:22:26
>>54
プロセスを列挙して一個ずつ条件にあうかどうか調べる。

61 名前:デフォルトの名無しさん :2006/07/02(日) 12:22:46

画像の表示までは出来た・・・・
透明も・・・しかし半透明ができない!w
やっぱ一個一個計算していくしかないのね・・・うはすふあhふdsyひゅは オワタ

62 名前:デフォルトの名無しさん :2006/07/02(日) 13:07:54
>>56
HDC…画家
HBITMAP…紙

DIB…デバイスに依存しない統一された形式
DDB…デバイスによってフォーマットが異なる

63 名前:デフォルトの名無しさん :2006/07/02(日) 13:11:36
>>56
俺は、HDCが画像を書く板という認識でもよいと思う。

ただ、CreateCompatibleDCで作ったデバイスコンテキスト(板)は、
その上に紙(ビットマップ)を置いて、その紙に画を描くんだという感じ。
(紙を置くとは、HBITMAPをSelectObjectで選択するということ)

初期状態では、1×1モノクロと言うどうしようもないほど小さな紙が置いてある。
紙がない状態が存在すると面倒だから、とりあえず置いてあります程度に考えておけばいい。

結構無理がある言い方だけど、これは連想ゲームの限界。

また、DDBはマイナーでもなんでもない。ただ内部でのみ使われるので外に現れないというだけ。
HBITMAPはDDB。DIBのHBITMAPは存在しないと思え。(ハイブリッドなDIBセクションというのもあるが)

64 名前:デフォルトの名無しさん :2006/07/02(日) 15:51:48
-- ビルド開始: プロジェクト: 01, 構成: Debug Win32 ------
リンクしています...
WinMain.obj : error LNK2019: 未解決の外部シンボル "public: static struct tagBITMAPINFO * CSpriteAlpha::lpDibBitInfo" (?lpDibBitInfo@CSpriteAlpha@@2PAUtagBITMAPINFO@@A) が
関数 "public: _thiscall CSpriteAlpha::~CSpriteAlpha(void)" (??1CSpriteAlpha@@QAE@XZ) で参照されました。

WinMain.obj : error LNK2019: 未解決の外部シンボル "public: static struct HBITMAP__ * CSpriteAlpha::hDib" (?hDib@CSpriteAlpha@@2PAUHBITMAP__@@A) が
関数 "public: __thiscall CSpriteAlpha::~CSpriteAlpha(void)" (??1CSpriteAlpha@@QAE@XZ) で参照されました。

WinMain.obj : error LNK2019: 未解決の外部シンボル "public: static struct HDC__ * CSpriteAlpha::hDC" (?hDC@CSpriteAlpha@@2PAUHDC__@@A) が
関数 "public: __thiscall CSpriteAlpha::~CSpriteAlpha(void)" (??1CSpriteAlpha@@QAE@XZ) で参照されました。

D:\c\works\takuhai\Debug\01.exe : fatal error LNK1120: 外部参照 3 が未解決です。
ビルドログは "file://d:\c\works\takuhai\01\Debug\BuildLog.htm" に保存されました。
01 - エラー 4、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新、0 スキップ ==========




65 名前:デフォルトの名無しさん :2006/07/02(日) 16:18:26
      r;ァ'N;:::::::::::::,ィ/      >::::::::::ヽ
.      〃  ヽル1'´        ∠:::::::::::::::::i
       i′  ___, - ,. = -一   ̄l:::::::::::::::l
.      ! , -==、´r'          l::::::/,ニ.ヽ
      l        _,, -‐''二ゝ  l::::l f゙ヽ |、 ここはお前の日記帳じゃねえんだ
        レー-- 、ヽヾニ-ァ,ニ;=、_   !:::l ) } ト
       ヾ¨'7"ry、`   ー゙='ニ,,,`    }::ヽ(ノ  チラシの裏にでも書いてろ
:ーゝヽ、     !´ " ̄ 'l,;;;;,,,.、       ,i:::::::ミ
::::::::::::::::ヽ.-‐ ト、 r'_{   __)`ニゝ、  ,,iリ::::::::ミ
::::::::::::::::::::Vi/l:::V'´;ッ`ニ´ー-ッ-,、:::::`"::::::::::::::;゙ ,  な!
:::::::::::::::::::::::::N. ゙、::::ヾ,.`二ニ´∠,,.i::::::::::::::::::::///
:::::::::::::::::::::::::::::l ヽ;:::::::::::::::::::::::::::::::::::::::::::/ /
::::::::::::::::::::::::::::::! :|.\;::::::::::::::::::::::::::::::/ /



66 名前:デフォルトの名無しさん :2006/07/02(日) 19:14:53
HDC…カンバス
HBITMAP…紙
ペンやブラシ・・・画材
LineTo 等の関数・・・画家

67 名前:デフォルトの名無しさん :2006/07/02(日) 19:45:11

LoadImageやBitBltで画像の表示&色抜きは出来たけど、
半透明&回転が出来ない、どうやらDDBでは無理らしい。
なのでDIB(直接アクセス?)でやらんといけないとか・・
表示はStretchDIBitsでやるのかBitBltは!?

あ〜  もうダメポ・・・・・orz
DirectXの方が簡単に思えてきた。



68 名前:デフォルトの名無しさん :2006/07/02(日) 19:53:27
その手のサイトを読み込んで出直して来い
ここはお前の(ry

69 名前:デフォルトの名無しさん :2006/07/02(日) 20:07:02
>>67
ライブラリ組んでしまえばDirect3D使った方が楽な上に早い

70 名前:デフォルトの名無しさん :2006/07/02(日) 20:07:39

ちらし

DIBSectionを使えばいいことが発見!!
DDBは回転&透明でない、DIBは使いづらいなどの欠点を解決した!?
いいとこどりのDIBSection!!!
DIBSectionは速度どうだろう、測定してみるか。


71 名前:デフォルトの名無しさん :2006/07/02(日) 20:09:48
>69
DirectX使えない人のためにGDIの方がいいと思って。
DirectX使えない人はいまだに見かけるorz
やっぱ切り捨てたほうがよさげ!?


72 名前:デフォルトの名無しさん :2006/07/02(日) 20:12:13
AlphaBlendってなかったっけ?

73 名前:デフォルトの名無しさん :2006/07/02(日) 20:12:57
ピクセル単位で処理すればなんでもできるだろ
とりあえず「今日は〜ができました」とか言ったことはチラシの裏に書いとけ
ここは質問箱

74 名前:AlphaBlend :2006/07/02(日) 20:21:40
AlphaBlendはWin98で動かないらしいので諦めました
ちなみに、我輩はXPです。


75 名前:デフォルトの名無しさん :2006/07/02(日) 20:34:42
>>67
cos -sin
sin cos

76 名前:デフォルトの名無しさん :2006/07/02(日) 20:38:16
>75
thx
無事成功すると思います。

77 名前:デフォルトの名無しさん :2006/07/02(日) 21:29:45
DIBSection遅いーーー!!!!

640*480 十回表示。
DDB     30fps      CPU 8%
DIBSection 3fps       CPU100%

使えない・・・・orz


78 名前:デフォルトの名無しさん :2006/07/02(日) 21:30:20
>>77
で、質問は何?

79 名前:デフォルトの名無しさん :2006/07/02(日) 21:56:03
>78
じゃ、質問
早い回転&透明が出来る方法教えて。


80 名前:デフォルトの名無しさん :2006/07/02(日) 22:02:28
もういいよ。うせろ

81 名前:デフォルトの名無しさん :2006/07/02(日) 22:07:41
>80
質問聞いといて、答えられないw


82 名前:80 :2006/07/02(日) 22:16:02
俺は>>78じゃないけど
そうだな。少なくとも俺はレベルがとても低いので答えられそうにない
よってゲーム製作板に行く事をオススメする

83 名前:デフォルトの名無しさん :2006/07/02(日) 22:18:18
すいません質問させてください。

煩雑にファイルの出し入れや書き換えをしているフォルダが複数あるのですが、
それらのファイルの状況を監視したいと思っているのですが、
数が多すぎて通常のファイルアクセスでは遅くなってしまいます。

そこで、OSがファイル書き込みした時やファイル書き換えをする時などに、フックを仕掛けられないかと思っているのですが、
そのような方法をご存知の方がいましたらご教授ください。

84 名前:デフォルトの名無しさん :2006/07/02(日) 22:25:10
初心者質問ですいません。

c言語のソースをコンパイルしたいのですがどうするのか・・・。
コマンドプロンプトでしたいのですが

85 名前:83 :2006/07/02(日) 22:29:52
すいません。

しばらく検索をしていたら、目的のことができそうなトピックを見つけました。
拡張シェルオブジェクトのICopyHookインターフェイスで出来そうです。
http://www.asahi-net.or.jp/~GV4J-SGUR/narik/stp002b.htm#ICopyHook

これでなんとか挑戦してみます。ありがとうございました。

86 名前:デフォルトの名無しさん :2006/07/02(日) 22:58:56
FindFirstChangeNotificationかなんかで出来た気もするが、たぶん見てないだろうな

87 名前:デフォルトの名無しさん :2006/07/02(日) 23:16:11
>>84
nmake

88 名前:デフォルトの名無しさん :2006/07/02(日) 23:31:32
>>84
a.cをコンパイルするとしたら、
VCならコマンドプロンプトから cl.exe a.c
mingwならコマンドプロンプトから g++.exe a.c
BCCならコマンドプロンプトから bcc32.exe a.c

コマンドラインの引数が知りたかったら cl /? とか g++ -h とかbcc32は知らん。とかすればいい。

89 名前:45 :2006/07/02(日) 23:39:30
こっちも誰かいいアイデアお願いします・・

90 名前:83 :2006/07/02(日) 23:41:13
>>86
レスありがとうございます。

知りませんでした。情報ありがとうございます。m(_ _)m
ただWaitForSingleObjectがブロック関数なので、同時に監視したいフォルダの数だけスレッドを作らないといけないみたいですね。
ICopyHookインターフェイスと異なりNTFSだけというわけではなく
Win95,NT3.1以降対象なので、FAT32でも問題なく動きそうなのでこちらで検討してみます。

91 名前:デフォルトの名無しさん :2006/07/02(日) 23:45:03
>>90
少しは勉強しろよ。
WaitForSingleObject()が見つかれば、すぐそばにWaitForMultipleObjects()があるだろ。

92 名前:83 :2006/07/02(日) 23:56:50
>>91
レスありがとうございます。

気づきませんでした。まだプログラムの感覚が鈍いと反省してます・・・・
監視自体が内部的には別スレッド動いているみたいですね。


93 名前:デフォルトの名無しさん :2006/07/03(月) 00:09:08
>プログラムの感覚が鈍い
┐(´-`)┌

94 名前:デフォルトの名無しさん :2006/07/03(月) 00:31:37
MessageBox APIの第二引数の型はLPCSTRですが、
ここにint型を指定したいんですがどうすればよいでしょうか?

MessageBox(0,i,NULL,MB_OK);
みたいにやりたいんですが

95 名前:デフォルトの名無しさん :2006/07/03(月) 00:34:06
>>94
itoa

96 名前:デフォルトの名無しさん :2006/07/03(月) 00:41:44
>>94
無理。itoaとかsprintfとかで文字列に変換してからに指定しる。

97 名前:デフォルトの名無しさん :2006/07/03(月) 00:48:24
>77
これって俺のプログラムミス?
異常だよな、、、サイト探してるとDIBSection普通に使っているし。


98 名前:94 :2006/07/03(月) 01:23:21
>>95さん
>>96さん
どうもありがとうございます

char buff[100];
int i = 3;
sprintf(buff, "%d", i);
MessageBox(0,buff,0,MB_OK);

でいけました

99 名前:デフォルトの名無しさん :2006/07/03(月) 04:56:55
> Win95,NT3.1以降対象なので
ICopyHookがNT3.1にあるとでも思ってるのか?
http://windowssdk.msdn.microsoft.com/en-us/library/ms646539.aspx
> Minimum DLL Version: shell32.dll version 4.0 or later
> Minimum operating systems: Windows NT 4.0, Windows 95
自分が確認もできない環境に妄想だけで対応した気になるのやめろ

100 名前:デフォルトの名無しさん :2006/07/03(月) 07:37:37
>>99
おまえ恥ずかしいなww

101 名前:デフォルトの名無しさん :2006/07/03(月) 09:47:59
>>99
ぷぎゃーw

102 名前:デフォルトの名無しさん :2006/07/03(月) 09:49:21
表示されている画面の色だけを変更したいのですが。

例えば赤い丸の図形があってこれを青色にしたいとき。
こういう場合は、再描画(丸をいったん消して、ペンの色を変えて円を書き直す。)
するしかないのでしょうか。


103 名前:デフォルトの名無しさん :2006/07/03(月) 12:16:06
いや

104 名前:デフォルトの名無しさん :2006/07/03(月) 13:24:24
あるフォルダ内にあるファイル一覧を元に動的にポップアップメニューを作成する場合、
どういう方法をとるのが楽ですか?

普通にCreateMenu、AppendMenuをして map<UINT, string>型のグローバル変数に
IDとファイル名を保存しておいて、WndProcでどのメニューアイテムが
クリックされたか取得というのを考えたのですが、どうでしょうか。

105 名前:デフォルトの名無しさん :2006/07/03(月) 13:32:55
ID_BASE + n とか

106 名前:デフォルトの名無しさん :2006/07/03(月) 14:21:57
だれか、Win32 API の FindFirstFile()や FindNextFile()を使って、
指定されたフォルダの中のファイルを全て削除するプログラム作ってけろ。
サブフォルダがある場合は再帰的に。
よろぴく。


107 名前:デフォルトの名無しさん :2006/07/03(月) 14:22:57
1万円で作ってやる

108 名前:デフォルトの名無しさん :2006/07/03(月) 14:42:01
FindWindow APIの第二引数はドキュメントによれば
「NULL で終わる文字列へのポインタを指定します」
とありますが、
FindWindow(NULL,"aaaaa");
とすると、aaaaaというタイトルのウィンドウがあればちゃんとハンドルが帰ってきます。

例えばchar a[] = "aaaa";
とすればa[]には実際にはaaaa\0が格納されますが、
LPCTSTR型に関しても同じ作用があるのでしょうか?

あ、LPCTSTR型ってchar *の別名でしたっけ?

109 名前:デフォルトの名無しさん :2006/07/03(月) 14:49:20
>>108
Win32APIというよりC/C++の問題。
"aaaaa"のような文字列リテラルは、ヌル文字終端の文字の配列。

LPCTSTRはconst TCHAR *のtypedef。
そう思いたいのなら、const char *のtypedefだと思えばいい。

110 名前:デフォルトの名無しさん :2006/07/03(月) 15:06:16
リストビューで、Drag&Dropを受け付けようと、DragAcceptFilesを実行してみたのですが、
WM_DROPFILESのメッセージが来ません。ぐぐってみた所、
リッチエディットコントロールだと、EN_DROPFILESというのがあるようなのですが、
リストビューの場合は、Drag&Dropを受け取る手段が無いのでしょうか?

111 名前:108 :2006/07/03(月) 15:07:33
>>109
はやっ
全然知りませんでした。ありがとうございます

TCHARを調べてみると

For Unicode platforms, TCHAR is defined as synonymous with the WCHAR type.

とありました
#define _UNICODE
すれば wcharになるんですね

112 名前:デフォルトの名無しさん :2006/07/03(月) 15:31:47
Drag&Dropは受けれる

113 名前:デフォルトの名無しさん :2006/07/03(月) 17:56:33
>>106
作ったよ

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2239.c

一応 fool proof にしてあるつもりだが
くれぐれも気を付けて使ってくれ



114 名前:デフォルトの名無しさん :2006/07/03(月) 19:22:12
アプリを再起動させていんだけど。。。
自作アプリを一旦終了し、また再起動(パソコンの再起動じゃないよ、自作アプリの再起動)させてたい。
こんな事したいんですけど、気の利いたAPIありますか?
それとも、別のプロセスで見張ってないとですか?
知ってたら教えてください。


115 名前:デフォルトの名無しさん :2006/07/03(月) 19:24:24
質問があります。

Tera Termからコマンド入力するプログラムがあるのですが、コマンドを毎回入力するのは
面倒ということで簡単なリモコンぽいモノをVCで作ることになりました。

Tera Termからのコマンド入力という考え方はそのままで、VCのボタンなりを押下することで
Tera Termのコンソール部にメッセージを送りたいと思っています。
(例えば、STARTボタンを押下するとコンソール部にstartと表示される)

FindWindowでTera Termのウインドウハンドルを取得して、SendMessageでメッセージを送ろうとしたのですが、
Tera Termのハンドルの取得がうまくないのか、コンソール部ではなく、タイトル部に対してメッセージを送ってしまい
タイトル名が変更されるという結果になってしまいました。

何か処理が足りないのでしょうか?それとも他の方法があるのでしょうか?
ご教授のほど、お願いします。

116 名前:デフォルトの名無しさん :2006/07/03(月) 19:32:54
>>114
自exeを起動して、自プロセスを終了させるだけじゃん。

117 名前:デフォルトの名無しさん :2006/07/03(月) 19:38:21
>>115
spy++でどういうウィンドウ構成になっているか調べろ。

118 名前:デフォルトの名無しさん :2006/07/03(月) 19:40:38
Tera Termのソースなら持ってるよ

119 名前:デフォルトの名無しさん :2006/07/03(月) 19:43:34
Tera Termのヘルプをよく読もう

120 名前:デフォルトの名無しさん :2006/07/03(月) 20:15:00
http://vipper.jpn.org/www/upload/src/VIPphoto5924.jpg
ToolTipに影をつけるには何が必要ですか?

121 名前:デフォルトの名無しさん :2006/07/03(月) 20:29:06
レジストリ

122 名前:115 :2006/07/03(月) 20:37:50
>>117-119
早速のレスありがとうございます。
解決しましたと言いたいところですが、明日改めて確認してみます。
会社ではネットを見る権限がないので・・・

spy++とTera Termのヘルプですか。
spy++は確認したつもりですが、理解不足だったみたいですね。
ヘルプはTera Term側が原因と思わず、見向きもしてませんでした。

123 名前:デフォルトの名無しさん :2006/07/03(月) 21:04:23
>>
SH〜〜のAPIにそういう関数があったと思う。SHRemoveDirectoryだっけか、よく覚えてないが

124 名前:デフォルトの名無しさん :2006/07/03(月) 21:21:15
>>123
DeleteFileより、
> To recursively delete the files in a directory, use the
> SHFileOperation function.
ということのようです。

125 名前:デフォルトの名無しさん :2006/07/03(月) 21:32:11
>>112
どうやって受け取るのでしょうか。WM_DROPFILESのメッセージも来ないようですし、
WM_COMMANDやWM_NOTIFYをチェックしてもそれらしいメッセージが見当たりません。

126 名前:デフォルトの名無しさん :2006/07/03(月) 21:46:49
>>125
ぐぐってると、コモンコントロールへのドロップは、
サブクラス化しないと受け取れないという事が書いてありましたので、
試してみたらいけました。お騒がせしました。

127 名前:デフォルトの名無しさん :2006/07/03(月) 21:50:08
>>114
多重起動防止のロジックを応用して、
起動時に多重起動だったら
古いプロセスを殺すようにしておいて
再起動したいときはargv[0]を
CreateProcess()する。

という手はよく使う。

128 名前:120 :2006/07/03(月) 22:27:32
CS_DROPSHADOWなんてのがありました

129 名前:デフォルトの名無しさん :2006/07/03(月) 22:34:42
>>115
マクロ使えよ

130 名前:デフォルトの名無しさん :2006/07/03(月) 22:42:31
座標からウィンドウハンドル取得できなかったっけ


131 名前:デフォルトの名無しさん :2006/07/03(月) 22:43:29
>>130
出来るよ

132 名前:デフォルトの名無しさん :2006/07/03(月) 22:45:00
WindowFromPoint

133 名前:デフォルトの名無しさん :2006/07/04(火) 01:12:43
>113
大変ありがとうございました。
さっそく、明日、会社で、参考にさせていただきます。


134 名前:デフォルトの名無しさん :2006/07/04(火) 01:29:03
>>131
>>132
ありがと。思い出した
ぱすみえみたいなツール作る時に使ったんだった

135 名前:デフォルトの名無しさん :2006/07/04(火) 03:10:48
Windows起動や終了時、ログオン、ログオフの時に飛んでくるメッセージは何になるのでしょうか?

136 名前:デフォルトの名無しさん :2006/07/04(火) 03:22:16 ?#
いや別に飛んできたメッセージが何か別のものになることはないから。

137 名前:デフォルトの名無しさん :2006/07/04(火) 03:23:40
GetProcessHeap()って同一プロセスなら常に同じハンドルが返ってくる?
void *buf = HeapAlloc( GetProcessHeap(), 0, size );
if ( buf == NULL ) return 1;
HeapFree( GetProcessHeap(), 0, buf );
みたいなのは安全?

138 名前:デフォルトの名無しさん :2006/07/04(火) 03:26:35
>>137
安全

139 名前:デフォルトの名無しさん :2006/07/04(火) 03:28:35
>>136
起動時や終了時、ログオン、ログオフ時に何か処理をしたいと思っているのですが
どんなメッセージを捕まえればよいのかさっぱりで途方にくれています。
何かヒントをいただけませんでしょうか?

140 名前:デフォルトの名無しさん :2006/07/04(火) 03:32:11
起動時やログオン時には何もこないよ。
アプリも動いてないし。

ログオフ時、終了時には WM_QUERYENDSESSION とか
WM_ENDSESSION とか来ますよ。

141 名前:デフォルトの名無しさん :2006/07/04(火) 03:38:21
>>140
その二つのメッセージがあれば目的を達成できそうです。
回答ありがとうございますた。


142 名前:デフォルトの名無しさん :2006/07/04(火) 03:41:38
>>140
続けてお尋ねしたいのですが
ログオフ時と終了時の区別、スタンバイと休止の区別をつけることは出来ますでしょうか?

143 名前:デフォルトの名無しさん :2006/07/04(火) 03:50:38
>>138
安全なのね、よかった。
ありがとう。

144 名前:デフォルトの名無しさん :2006/07/04(火) 03:54:38
>>142
スタンバイ等のときにはWM_POWERBROADCASTも来ますので、
それでなんとかならないでしょうか。

145 名前:デフォルトの名無しさん :2006/07/04(火) 04:03:39
>>144
回答ありがとうございます。
それが私の環境ですと休止、スタンバイとWM_POWERBROADCASTが送られてきて
スタンバイと休止の区別が付きませんでした。
環境はWindowsXPsp2です。

それにしてもXPのグループポリシーでは起動・終了・ログオフ・ログオンを区別出来てるようなのに
それに対するメッセージがないのはなんでだろう。

146 名前:デフォルトの名無しさん :2006/07/04(火) 04:11:57
>>145
WM_POWERBROADCASTが飛んできたらwParamを見て、
PBT_APMQUERYSTANDBYになっていたらスタンバイ
PBT_APMQUERYSUSPENDになっていたら休止状態
じゃなかったっけ?

147 名前:デフォルトの名無しさん :2006/07/04(火) 04:15:50
>>146
私もそう思っていたのですが検証してみると
PBT_APMQUERYSUSPENDのみ飛んできて
STANDBYと名の付くメッセージは飛んできませんでした。

何かおかしいのかな?

148 名前:デフォルトの名無しさん :2006/07/04(火) 04:20:59
>>143
根拠が不明だから本当に安全かどうか分からん
単に「今まで動いてた」ってだけかもしれないし
>>147
PBT_APMQUERYSTANDBYは廃止されたっぽい。
ヘッダには残ってるけどMSDNからは説明が消えてる

149 名前:デフォルトの名無しさん :2006/07/04(火) 04:22:58
>>148
HeapAlloc/HeapFreeの引数にGetProcessHeapを使うイディオムは
MSDN内のサンプルコードの所々に使われてるよ。

150 名前:デフォルトの名無しさん :2006/07/04(火) 05:16:51
>>149
あーすまん、>>137のコード読み違えてた
これなら確かに安全なはずだな

151 名前:デフォルトの名無しさん :2006/07/04(火) 07:27:36
>>143
でも俺はGetProcessHeapを呼び出すオーバーヘッドが気になって、
結局グローバル変数にコピーする派。

152 名前:デフォルトの名無しさん :2006/07/04(火) 11:53:36
>>147
以前に誰かのサイトで、
サンザ探したけどその情報の取得の仕方はわからず、
NT系列のOSではレジストリのどっかに書かれてるので結局それを参照した
とかいうことが書かれていますた・・・

153 名前:デフォルトの名無しさん :2006/07/04(火) 16:04:17
特定のプロセス(のウインドウ)だけを、一時的に最小化・元に戻す事を出来なくしたいのですが
どうすれば良いでしょうか。グローバルフックしてメッセージを破棄すれば良さそうなのは
分かるのですが、そうすると全てのウインドウに対して行われてしまいますので^^;

154 名前:デフォルトの名無しさん :2006/07/04(火) 16:05:30
エクスプローラのタイトルバーみたくウィンドウのサイズを変更したら
ピクセルの色をグラデーションみたいに表示したいんだけど
いい方法あったら教えてほしいんだ。

本にGetPixelとSetPixel関数は使わないほうがいいって書いてて、
実際それでコーディングしてみたらウィンドウサイズ変更のたびに重くて使えない。

155 名前:デフォルトの名無しさん :2006/07/04(火) 16:07:20
>>154
GradientFill とか。

156 名前:153 :2006/07/04(火) 16:09:21
すいません自己解決しました。

157 名前:デフォルトの名無しさん :2006/07/04(火) 16:25:10
>>153
グローバルフックして、その特定のプロセス(のウインドウ)だけ処理すればいいじゃない。

158 名前:デフォルトの名無しさん :2006/07/04(火) 16:42:57
>>155
ありがとう。
今調べてるんだけどGradientFill関数のサンプルコードがなかなか見つからない・・・
なんか知らない構造体が引数になっててとまどってる

159 名前:デフォルトの名無しさん :2006/07/04(火) 17:12:30
GradientFillのDelphiの 例

ttp://blog.livedoor.jp/junki560/archives/18495762.html

160 名前:デフォルトの名無しさん :2006/07/04(火) 17:26:46
最近の奴はMSDN見ずにサンプルを参考に書くのか?
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/bitmaps_8oa4.asp

161 名前:デフォルトの名無しさん :2006/07/04(火) 18:03:13
>>153
システムメニューから削っちゃえば?
元にもどせるかどうか知らんけど。

162 名前:デフォルトの名無しさん :2006/07/04(火) 22:17:01 ?
質問です。

オーバーラップI/O で、WriteFile の引数に送りたいデータのポインタを
渡した後、そのデータをすぐに書き換えてしまうのは危険でしょうか?

それとも、内部でコピーを取ってくれているものなんでしょうか?

163 名前:デフォルトの名無しさん :2006/07/04(火) 22:42:03
ttp://www.microsoft.com/japan/developer/library/jpwinpf/_win32_writefile.htm

出力バッファを使って書き込み操作を行っている間にそのバッファにアクセスすると、
そのバッファを使って書き込んだデータが壊れることがあります。書き込み操作が完了するまでは、
アプリケーションは出力バッファの読み取り、書き込み、再割り当て、解放を行ってはなりません。

164 名前:デフォルトの名無しさん :2006/07/04(火) 22:43:37
そもそもオーバーラップI/Oは内部でコピーを取る無駄を省くために
存在しているわけで

165 名前:デフォルトの名無しさん :2006/07/04(火) 22:44:36 ?
ありがとうございます。というか、普通に書かれてましたね。すいませんでした。

166 名前:デフォルトの名無しさん :2006/07/05(水) 11:18:23
ActiveDirectory環境でクライアントが認証を行ったサーバ名を取得したいのだけど
どの関数を使うのがいいのかな?
NetGetDCNameじゃ、PDCしか取ってこなさそうだし・・・・

これ使うと幸せになれるよってのがありましたら教えてください。


167 名前:デフォルトの名無しさん :2006/07/05(水) 11:49:11
test

168 名前:デフォルトの名無しさん :2006/07/05(水) 12:14:20
すんません、すれ違い覚悟で質問なんすが、
自分の作ったアプリを一般に公開されたWin Vistaのパブリックベータ版(日本語版 build 5384)で動くか試してみたんです、
殆どは動作したんですが、一部自作のCOMコンポーネントを使ってるアプリが動作せず、調べてみるとコンポーネントの登録に失敗しているようで、
試しに該当COMのDLLを「regserv32 自作コンポーネント.dll」とすると、エラーしてしまい
ダイアログで「このアプリケーションのサイドバイサイド構成が正しくないため・・・・」と出力されてしまいました。
Dependency Walkerで欠損ファイルが無い事は確認してるんですが、
Manifestとかそういう問題なんでしょうか、何か情報ありましたらよろしくお願いします。


169 名前:デフォルトの名無しさん :2006/07/05(水) 12:30:04
>>168
スレ違いもいいとこだ…

同じように困ってる人がいるという情報まで
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=518620&SiteID=1

170 名前:デフォルトの名無しさん :2006/07/05(水) 15:40:57
>>168
欠落エクスポート(利用しているシンボルが無い)とかも無いですか?

171 名前:デフォルトの名無しさん :2006/07/06(木) 12:47:10
FindFirstChangeNotificationでフォルダ内のファイルの変更を監視できますが、変更を行ったアプリケーションがどれか調べる方法ってありますか?

172 名前:デフォルトの名無しさん :2006/07/06(木) 12:51:01
ReadDirectoryChangesW

173 名前:172 :2006/07/06(木) 12:51:54
すまん、なんでもない。早漏した。

174 名前:デフォルトの名無しさん :2006/07/06(木) 13:05:30
どなたか::SetWindowLongPtr関数に GWLP_USERDATA を指定して
設定したデータが64ビット環境において
内部で64ビットデータとして扱われているかどうか
確認された方はいますか?
MSDNで32ビットデータと書かれている為、ここにポインタを代入する
コードを書くのが不安になっています。
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpwinui/html/_Win32_SetWindowLongPtr.asp

もっとも英語版MSDNにそのような記述は無いので
単に日本語版が古いだけかもしれませんが・・
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windowclasses/windowclassreference/windowclassfunctions/setwindowlongptr.asp

175 名前:デフォルトの名無しさん :2006/07/06(木) 15:38:37
>>174
UserData目的ならSetPropのほうがいいと思われ
SetPropならHANDLEなんで元からポインタだし

176 名前:デフォルトの名無しさん :2006/07/06(木) 17:30:00
どのみちコンパイラに指示しなきゃ32bitなのでは?

177 名前:デフォルトの名無しさん :2006/07/06(木) 21:13:41
RegisterHotKeyで登録したホットキーを押すと
該当スレッドにWM_HOTKEYが飛びますが、

そのとき現在フォアグラウンドのウインドウに、
ホットキーを押した情報が伝わるようにするには、
どうしたらいいでしょうか。

該当スレッドのWM_HOTKEY処理内でkeybd_eventを発行してみましたが、
上手く行きません。

178 名前:デフォルトの名無しさん :2006/07/06(木) 22:24:53
先ほどMFCスレで質問したのですが、スレ違いだったようなので
続きをこちらで質問させてください。

DLLでWH_CALLWNDPROCをフックしてるのですが
 g_hHookWnd = SetWindowsHookEx(WH_CALLWNDPROC, CallWndProc, g_hDll, 0);
のように第4引数を0で呼び出してもシステムフックできず、ローカルフックしか出来ません。
何が原因として考えられるでしょうか?

179 名前:デフォルトの名無しさん :2006/07/06(木) 22:33:17
フックプロシージャがEXE内に有る

180 名前:デフォルトの名無しさん :2006/07/06(木) 22:39:12
>>178
フックをセットする関数はDLL外部に開放してEXEから呼んでいますが、
CallWndProc()自体はDLL内に定義しています。
このDLLは全てCで書かれていて正常に動作するソースをそのまま
使っているのですが、MFCのSDIアプリから呼ぶとSDIアプリのメッセージ
しか受け取れないようなんです。

181 名前:デフォルトの名無しさん :2006/07/06(木) 23:45:54
他プロセスにマップされたDLLとのデータ共有とか考慮してないとか。

182 名前:デフォルトの名無しさん :2006/07/07(金) 00:54:06
DDBでアクティブ 非アクティブ 状態を繰り返してると
突然、重くなる。
しかもメモリもどんどん食うしwww

これはバグなのか!?
DirectXと同じようにデバイスの再構築とか必要なのか

エロい人教えて!

183 名前:デフォルトの名無しさん :2006/07/07(金) 01:11:22
>>180
http://www.kab-studio.biz/Programing/Codian/DLL_Hook_SClass/08.html
ここのDLLの中でのグローバル化についてとか

ちなみにlParamのCWPSTRUCTへのポインタだけど
こいつをExeに直接渡しても参照エラー起こるから気を付けて

184 名前:デフォルトの名無しさん :2006/07/07(金) 12:10:43
例えばDOS窓を開いて、

notepad.exe [ENTER]

と打ち込むとメモ帳が開きます。
一方、メモ帳のアイコンをダブルクリックしてもメモ帳が開きますが、

質問は、メモ帳さん自身が、自分はDOS窓から起動されたのか、アイコンのダブルクリックで起動されたのか、
あるいは、他のアプリからsystem()とかcreateProcess()などで起動されたのか、
そういう違いを判定することはできますか?

185 名前:デフォルトの名無しさん :2006/07/07(金) 12:18:46
>>184
GetStartupInfo関数だったかな?

186 名前:デフォルトの名無しさん :2006/07/07(金) 12:22:05
>185さん
ありがとうございます。
早速調べてみます。

187 名前:デフォルトの名無しさん :2006/07/07(金) 12:35:10
>>181,>>183
ありがとうございます。
最初は>>183さんのサイトのサンプルを参考に作っていたのですが、
それで上手くいきませんでした。
(オリジナルのキーフックの方は上手く行くのですが)

しかし色々と調べてみて解決したようなので一応ご報告。
DLLでフックしたメッセージを共有メモリに詰め込んで親画面宛てに
ユーザーメッセージを送信していたのですが、SendMessage()する際の
親画面のhWndが共有されてなかった事が原因だったようです。
・・・この辺の根本的な理由はよく判ってないのですが。

SetWindowsHookEx()が返すハンドルを共有化する理由も
よく判らずにサンプルのまま使っていたので気付きませんでした。
この辺の情報がまとまった本をご存知の方がいらっしゃいましたら
ぜひ教えてください。

188 名前:デフォルトの名無しさん :2006/07/07(金) 12:39:54
>>184
Windows系OSの場合、プロセスの起動は最終的に "CreateProcess" APIを利用して
起動されます。
DOS窓からの起動、プログラムアイコンのダブルクリックによるExplorerからの
起動、任意のプログラムからの起動も最終的には "CreateProcess" を呼び出して
起動されますので、起動方法の違いを判定する事は出来ません。

但し、メモ帳の起動を行った親プロセスの確認を行う事は出来ます。
メモ帳の親プロセスの確認を行う事で、DOS窓からの起動かExplorerからの起動
かの確認を行うことが出来ます。

CreateToolhelp32Snapshotでググって見て下さい。

189 名前:デフォルトの名無しさん :2006/07/07(金) 14:08:54
ボタンコントロールを使って、ボタンを押しっぱなしにしているときと離したときで
処理を分けるにはどうすればよいでしょうか?
PUSHBUTTONだと押して離したときにWM_COMMANDメッセージが送信されるだけなんです。

190 名前:デフォルトの名無しさん :2006/07/07(金) 15:20:46
>>189
WM_LBUTTONUPとかWM_LBUTTONDOWNとかでは解決できない話?

191 名前:デフォルトの名無しさん :2006/07/07(金) 15:51:46
>188さん
詳しい解説ありがとうございました。
早速Googleしているところです。

192 名前:デフォルトの名無しさん :2006/07/07(金) 16:28:27
「WindowsタスクマネージャでいうCPUの使用率」のHDD版みたいのを作ってみたいのですが、
ディスクI/Oの現状アクセス状況の取得というのは可能なのでしょうか?
もし可能でご存知の方がいましたらご教授ください。



193 名前:デフォルトの名無しさん :2006/07/07(金) 16:38:31
可能です

194 名前:デフォルトの名無しさん :2006/07/07(金) 16:41:06

パフォーマンスメーター用のAPIがあったような気がする

WMIだったかな

CからWMI呼んでいいなら可能


195 名前:デフォルトの名無しさん :2006/07/07(金) 16:45:42
簡単なペイントソフトを作っているのですが、鉛筆のようなペン(ブラシ?)を
「WM_MOUSEMOVE」で作ってみたいのですが、マウスを早く動かすと振り切られて
点線のようになってしまいます。SetCaptureも試してみたのですがうまくいきません。
MFCではMoveToなどで解決できるみたいですが、APIではどうしたらいいでしょう?

196 名前:デフォルトの名無しさん :2006/07/07(金) 16:47:13
可能ですか、できますか、ありますか、知りませんか、
というような質問に対して詳細な回答をしたばかりに、

 出来るかどうかしか聞いてねーのに
 何知識ひけらかして余計なこと書いてんのw?

などと書かれて、軽い人間不信に陥ることがたまにあります。
質問者はちゃんと自分の無知がばれるリスクをとって、
「〜のやり方がわからないので教えてください」と書きましょう。

197 名前:デフォルトの名無しさん :2006/07/07(金) 16:48:01
>>192
WindowsNT系OSに特化できるのであれば、

パフォーマンスカウンタでググって見て下さい。

198 名前:デフォルトの名無しさん :2006/07/07(金) 16:51:20
>>195
MoveTo

199 名前:デフォルトの名無しさん :2006/07/07(金) 16:52:34
>>195
WM_LBUTTONDOWN で現在位置を保存。押してるよフラグを true に。
WM_MOUSEMOVE で、押してるよフラグがtrueなら、
前の位置から新しい位置までMoveTo,LineToで線を引く(新しい位置を現在位置として保存)。
WM_LBUTTONUP で押してるよフラグをfalseに

そんな感じ。いずれにせよ SetCapture/ReleaseCapture は適切に呼ぶ必要がある。

WM_MOUSEMOVE ではどうもイベントが間引かれているんじゃないかという疑いが
ある場合には、タイマーか何かで GetCursorPosを呼んで監視。

200 名前:195 :2006/07/07(金) 16:59:45
>>198
>>199
どうもお早い解答ありがとうございます。
MoveToは使えるんですね・・書いたらエラーが出たので他のやり方がある
ものだと思ってました。今度からはもっとちゃんと調べてから質問します。

201 名前:デフォルトの名無しさん :2006/07/07(金) 17:00:56
今は MoveToEx しか無いかもね。もしかすると。

202 名前:デフォルトの名無しさん :2006/07/07(金) 17:09:41
>>196
> 出来るかどうかしか聞いてねーのに
> 何知識ひけらかして余計なこと書いてんのw?

赤の他人の煽りだろ。どこまで神経質なんだよ。

203 名前:デフォルトの名無しさん :2006/07/07(金) 17:17:20
>>193>>194>>196>>197>>202
WMIにて解決できそうです。
レスありがとうございました。

http://207.46.19.60/japan/technet/scriptcenter/scripts/storage/disks/monitor/stmovb04.mspx

204 名前:デフォルトの名無しさん :2006/07/07(金) 17:34:54
便乗質問なのですが、Win32APIからWMIを使うにはどうすればよいのでしょう?

205 名前:デフォルトの名無しさん :2006/07/07(金) 17:46:57
>>204
ここらへんが参考になるかな?
http://zatsugaku.info/index.php?Program%2FWmi%2FProgram

206 名前:デフォルトの名無しさん :2006/07/07(金) 19:47:08
>>187
本は知らんけど共有化する理由は、
システムフックの場合、フックプロシージャを持つDLLは各プロセスごとにロードされるから。

単純に変数に入れといても、別のプロセス中のメッセージをフックしたときにはDLLごと別のインスタンスなので
それを考慮して、フックプロシージャ内で必要な情報はプロセスを跨いで有効な方法で持っている必要がある。

207 名前:187 :2006/07/07(金) 23:02:13
>>206
つまりDLLからのメッセージを受信するSDIアプリと同じスレッドにいるDLL以外は
hWndが初期化されてないので、DLLが変なハンドルに宛ててSendMessage()してた
ということなんですね。
システムフック掛けただけでDLLのスレッドがどっと増えるというイメージも
まだなんだか良くわからないけど、またこつこつと勉強していきます。
いろいろと教えて頂きありがとうございました。

208 名前:デフォルトの名無しさん :2006/07/08(土) 00:50:42
>>196
そこまで勘ぐらなくてもwww
相手にとって役に立つかどうか知らんけど、
自由気ままに答えればいいんじゃん。

>>192
俺もちょっと知りたかったりする。と思ったらURLマリガトー>>203 >>205

209 名前:189 :2006/07/08(土) 02:09:52
>>190
WM_LBUTTONDOWNはボタンコントロールを押している間は発行されないみたいなんです。
たくさんのボタンで押しっぱなしと離した場合を分けたいので、適当なところでクリック、
ではダメなんです。

210 名前:デフォルトの名無しさん :2006/07/08(土) 02:26:23
>>209
なら氏ねよ。

211 名前:デフォルトの名無しさん :2006/07/08(土) 02:35:30
フィルタドライバでも作って入力を横取りしろ

212 名前:デフォルトの名無しさん :2006/07/08(土) 04:19:17
横取り40萬

213 名前:デフォルトの名無しさん :2006/07/08(土) 06:26:42
>>209
WH_KEYBOARDをフックしてlParamを調べると幸せかも

214 名前:デフォルトの名無しさん :2006/07/08(土) 06:29:58
>>209
ごめん間違えたw
マウスじゃフックしてもだめだな、
自分で何クリックしたか覚えとけば良いんじゃ?


215 名前:デフォルトの名無しさん :2006/07/08(土) 09:12:07
>>189
サブクラス化

216 名前:デフォルトの名無しさん :2006/07/08(土) 12:25:17
DeleteUrlCacheEntryの使い方を教えてくらはい


217 名前: ◆XVqm6n6is6 :2006/07/08(土) 12:39:30
教えてください。
hEditBox = CreateWindow(
TEXT("EDIT"), TEXT(""),
WS_DLGFRAME | WS_CHILD | WS_VISIBLE |
WS_TABSTOP | ES_AUTOHSCROLL | ES_LEFT,
170, 50, 500, 25, hWnd, (HMENU)EDIT_ID,
((LPCREATESTRUCT)(lParam))->hInstance, NULL
);
/* 実行ボタン作成 */
hActBtn = CreateWindow(
TEXT("BUTTOn"), TEXT("実行"), WS_CHILD | WS_VISIBLE |
BS_DEFPUSHBUTTON | WS_TABSTOP,
170, 100, 50, 30, hWnd, (HMENU)ACT_ID,
((LPCREATESTRUCT)(lParam))->hInstance, NULL
);
この二つのコントロールを作成したときTABキーでフォーカスを移動できるようにしたいんですが、
WS_TABSTOPを指定してもうまくTABキーでフォーカスが移動してくれません。
WMでキー情報取得してそれがTABキーならフォーカス移動でもいいんですが、それは何か面白くないので
なんとかならないでしょうか?

218 名前:デフォルトの名無しさん :2006/07/08(土) 12:40:30
>>216
そこまでわかってたらぐぐってソースコピペすれば動くと思う。

219 名前:デフォルトの名無しさん :2006/07/08(土) 13:05:46
>>217
IsDialogMessage ?

220 名前:デフォルトの名無しさん :2006/07/08(土) 13:08:27
mouse_event()でクリックイベント送ってもボタンが反応してくれない。
なぜかドラッグになったりして・・・
かと言ってペイントブラシ上でお絵かきさせても飛び飛びになる。
思い切り間隔開けると(100msくらい)ボタンにも反応するけど、
もちっと早くならんかな。

221 名前:デフォルトの名無しさん :2006/07/08(土) 13:12:37
実際のマウスで発生するマウスイベントの真似をする。

222 名前: ◆XVqm6n6is6 :2006/07/08(土) 13:23:18
コテハン忘れた・・
>>219
ダイアログにはしてないんだよ。
とりあえずコードはこんな感じに


223 名前: ◆XVqm6n6is6 :2006/07/08(土) 13:30:11
http://read.kir.jp/file/read51302.c
コメント適当だから逆に見にくいかもしれない

224 名前: ◆XVqm6n6is6 :2006/07/08(土) 13:31:58
処理はコールバックのCREATEのCreateWindowを何とか変更してTABで移動できるようにしたいんだけど
できねぇ

225 名前:189 :2006/07/08(土) 14:02:03
>>211->>212
>>214->>215
サブクラス化でできました!!
ありがとうございましたぁ!! 。゜(゜´∀`゜)゜。

226 名前:デフォルトの名無しさん :2006/07/08(土) 14:04:35
>>216
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/wininet/wininet/deleteurlcacheentry.asp

227 名前:デフォルトの名無しさん :2006/07/08(土) 14:34:28
>>224
>>219 で正解

228 名前:46 :2006/07/08(土) 19:46:16
みなさんちゃんと見てくれて有り難うございます!

sub1〜ですが、いい名前が思いつかないのです。捨てルーチンなのでいいんじゃないか、と思ったのですが・・・

>>48
・・・AddRef()/Release()、間抜けでした・・・ハズカシ・・・
修正しました。今度は大丈夫かと・・・↓
WBC002.LZH:SDKレベルでWebBrowserコントロールを使用して簡易ブラウザを作るサンプル(C++)

>>50
>http://www.adp-gmbh.ch/win/misc/mshtml/HTMLWindow.html
やっぱりありますか・・・どっかにはあるだろうとは思ってましたが・・・これが見つけられていれば・・・
・・・オレの費やした2週間って・・・OrZ

タブ巡回ですが、自作コントロールではSetWindowLong()で直接WS_EX_CONTROLPARENTに設定し、IsDialogMessage(g_hWndMain)する事でできました。
(でも窓APIをじかに使うのが正しいのかどうかわからない・・・)

が、WebBrowserはやっぱりできない・・・WebBrowserの場合はそもそも各HTML要素はウィンドウではないのでSetFocus()することさえできない・・・

・・・今度はActiveXコントロールをSDKレベルで作ってみようかと思ったんだけど、やっぱりどっかにありますよね・・・OrZ

229 名前:デフォルトの名無しさん :2006/07/08(土) 21:03:33
非アクティブ時でも実行を続けるようにしたいんですが…

230 名前:デフォルトの名無しさん :2006/07/08(土) 21:10:30
そうですか

231 名前:デフォルトの名無しさん :2006/07/08(土) 21:19:01
ウィンドウのサイズを変更できないようにするにはどうすれば良いでしょうか??

232 名前:デフォルトの名無しさん :2006/07/08(土) 21:19:14
できた。簡単だった。

233 名前:220 :2006/07/08(土) 23:49:30
なんか変だと思ったら・・・
間違ってWM_LBUTTONDOWNとか送ってたよ、テヘッ (*´∀`*)


234 名前:デフォルトの名無しさん :2006/07/09(日) 03:37:26
>>228
WM_KEYFIRST 〜 WM_KEYLASTに対して
IOleInPlaceActiveObject::TranslateAccelerator()
IOleInPlaceActiveObjectはWebBrowser2からQueryInterface。

これで、TABキーとかその他のキーボードショートカット使えるはず。
私が昔作った時はこれでいけた。

235 名前:デフォルトの名無しさん :2006/07/09(日) 08:46:41
>>234に補足
メッセージループの中で、TranslateAcceleratorでS_OKが返って来たら
アクセラレータが変換されたということなので、
それ以降のTranslateMessageやDispatchMessageは実行してはいけない。

236 名前:228 :2006/07/09(日) 10:02:02
うわ。アドレス貼り忘れた。すみません。
WBC002.LZH:SDKレベルでWebBrowserコントロールを使用して簡易ブラウザを作るサンプル(C++)
http://winscript.s41.xrea.com/upload/source/No_0016.lzh

237 名前:デフォルトの名無しさん :2006/07/09(日) 11:08:10
WindowsXPでVC++.NET2003使用

BGMにMIDIを使いたいんですが

・リソースから読み込み
・ループ再生
・非ループで1曲演奏し、それの終了を知りたい

などはどうすれば良いのでしょうか。

238 名前:デフォルトの名無しさん :2006/07/09(日) 11:14:10
MDIはやめとけ

239 名前:デフォルトの名無しさん :2006/07/09(日) 11:24:12
>>237
一番上はIGraphBuilderで簡単なの書いたことしかないから知らん。
残りはDirectShowのIMediaEventで可能。


240 名前:デフォルトの名無しさん :2006/07/09(日) 11:31:13
MCI?

241 名前:デフォルトの名無しさん :2006/07/09(日) 12:37:18
回答ありがとうございます。

DirectShowの使い方がいまいちよくわからず、
何とか再生することはできたのですが
ただ再生するだけならMCIの方が簡単かな、と思いました。

何か相違点などあるのでしょうか

242 名前:デフォルトの名無しさん :2006/07/09(日) 12:40:49
MCIは簡単な分、細かい操作が苦手だったかと

細かく制御したいなら
midiOut〜系関数を使うとか

243 名前:デフォルトの名無しさん :2006/07/09(日) 12:48:12
API で MIDI 扱ったら、CPU 負荷が大きくなると途端に遅延しまくって困った。
ので DirectX お勧め。

244 名前:デフォルトの名無しさん :2006/07/09(日) 12:53:00
CPU負荷が大きくなればDirectXでも遅延しそうだが・・・
内部で何かやってるんだろうか

ひょっとして別スレッド作って再生してなかったとか?

245 名前:デフォルトの名無しさん :2006/07/09(日) 13:50:45
Windowsアプリケーションのサイズ変更のしくみってどうなってるんですか
どこかでウィンドウの大きさのリージョンを毎回セットしなおしてるんでしょうか
それとも長方形ブラシかなんかで領域を塗ってマウスの左クリックが離れたら
その大きさをリージョンにセットしてるんでしょうか

今タイトルバーやウィンドウやメニューのインターフェースを自前で作ろうとしてて
ビットマップから不定形のウィンドウを作成したまではいいんですが、
不定形のウィンドウのサイズを変更しようと思ってもどうやっていいかさっぱりです。

246 名前:デフォルトの名無しさん :2006/07/09(日) 15:26:45
WM_NCHITTEST使って不定形ウィンドウの淵をWindowsにサイズ変更枠と認識させて、
WM_SIZEきたらリージョン再作成かな。
でも、リージョン再作成の処理によっては激しく重いかもしらん。

247 名前:231 :2006/07/11(火) 00:22:53
解決しました。

248 名前:デフォルトの名無しさん :2006/07/11(火) 10:16:07
今作っているアプリAで、ライセンス有無の判定をするために、
GetVolumeInformation()を使ってディスクのボリュームのシリアル番号を確認する方法を採用しました。
問題なく動いていたのですが、
そのアプリを他の二つのアプリ(BとC)から、数秒にに一回くらいの割合で、CreateProcess()使って
数百回呼び出したところ、そのうち数回くらい、GetVolumeInformation()がエラーしました。
こんな感じです。
  アプリC → アプリB →アプリA (GetVolumeInformationエラーした)
実は、それは特定のパソコンで3回だけ連続して発生し、今は起こらなくなってしまったのです。
でも確かにエラーしたのを確認しましたし、自然に治るのも気持ち悪いので、どこかに何か問題が
あるように思うんですが、皆さん何か心当たりとかありませんでしょうか?
よろしく。

249 名前:デフォルトの名無しさん :2006/07/11(火) 10:24:24
よくわからんけどエラーしたの内容を具体的に書いた方がいい

250 名前:デフォルトの名無しさん :2006/07/11(火) 10:27:29
>249
ありがとうございます。
具体的には、GetVolumeInformation()がエラーを意味する0を返しました。
それしか分かっていません。


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