Win32API質問箱 Build59

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。

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

■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。英語版(http://msdn2.microsoft.com/library/)の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
2デフォルトの名無しさん:2007/11/10(土) 22:40:26
3デフォルトの名無しさん:2007/11/10(土) 22:40:39
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デフォルトの名無しさん:2007/11/10(土) 22:40:49
5デフォルトの名無しさん:2007/11/10(土) 22:41:02
- 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://www.2chsearch.info/index.php?b=tech
http://makimo.to/cgi-bin/search/search.cgi?q=Win32API&andor=AND&sf=2&view=table&D=tech
6デフォルトの名無しさん:2007/11/10(土) 22:41:15
以上
7デフォルトの名無しさん:2007/11/11(日) 02:03:53
>>1
8デフォルトの名無しさん:2007/11/11(日) 07:44:49
前スレ最後の方で返り血の不統一が話題だったけど、
MS内部では、マック好みが多いってホント?
9デフォルトの名無しさん:2007/11/11(日) 07:56:37
ロバート・フリップはiPod派だよ
10デフォルトの名無しさん:2007/11/12(月) 00:54:12
質問です
キーボードからの入力をフックして、仮想キーコードを置き換えるプログラムを作ろう思い、
SetWindowsHookEx()でWH_KEYBOARD_LLにフックをかけて、
フック関数側ではlParamからKBDLLHOOKSTRUCT構造体にアクセスし、仮想キーコードを変更するようにしたのですが、
このプログラムを起動した状態でメモ帳に何か文字を入力しても、キーコードが変更されず打った文字がそのまま出てきてしまいました。
フック関数からMessageBox()表示させることはできたので、フック関数自体は呼び出されている様です。
もしかするとWH_KEYBOARD_LLでは仮想キーコードの取得はできても置換はできないのでしょうか?
11デフォルトの名無しさん:2007/11/12(月) 01:05:24
>もしかするとWH_KEYBOARD_LLでは仮想キーコードの取得はできても置換はできないのでしょうか?

概ねそんな感じ

WH_KEYBOARD_LLで送られてきたキー情報を書き換えても
メッセージキューのメッセージには影響しない
12デフォルトの名無しさん:2007/11/12(月) 01:08:52
そういうのってデバドラ書かないと無理じゃなかった?
13デフォルトの名無しさん:2007/11/12(月) 01:17:53
いや、置き換えだけならWH_WNDPROCでWM_KEY***とか見張ってればおk

目的のキーのWM_KEY***が来たら、仮想キーコード書き換えて
PostMessageしなおせばいい
14デフォルトの名無しさん:2007/11/12(月) 01:23:46
解説
GetMsgProc フックプロシージャは、メッセージの検討と変更を行えます。このフックプロシージャがシステムへ制御を返した後、GetMessage または PeekMessage 関数は、そのメッセージを変更結果と共に、最初にその関数を呼び出したアプリケーションへ渡します。

アプリケーションがこのフックプロシージャをインストールするには、WH_GETMESSAGE フックタイプと GetMsgProc フックプロシージャへのポインタを指定して、SetWindowsHookEx 関数を呼び出します。
15デフォルトの名無しさん:2007/11/12(月) 01:25:45
つまりはMSDN嫁。と
1610:2007/11/12(月) 01:37:29
素早い返信ありがとうございます
なるほど、やはり取得しかできないメッセージを捕まえてたんですね…
沢山キーワードを頂けたので調べながら作り直してみたいと思います
17デフォルトの名無しさん:2007/11/12(月) 06:31:31
>>13-14
その方法ってGetKeyState/GetAsyncKeyStateとかも置き換えられたっけ?
18デフォルトの名無しさん:2007/11/12(月) 08:14:15
置き換えるって言うか…

各スレッドはキーの状態を保持したキーボードマップを持ってて
GetKeyStateはそこからキー情報を取ってくる
キーボードマップはスレッドがGetMessageかPeekMessageした時に更新される

で、WH_GETMESSAGEはメッセージがキューから取得される直前にフックを呼ぶ

後はどうなるか分かるよな
19デフォルトの名無しさん:2007/11/12(月) 10:33:55
どのスレで聞くべきか迷いましたがここで質問させていただきます。

他のアプリケーションのウインドウを画像として取得するにはどうしたらよいのでしょうか?
20デフォルトの名無しさん:2007/11/12(月) 10:45:10
HDC様を取得してみよう
21デフォルトの名無しさん:2007/11/12(月) 11:02:25
なんだそれw
22デフォルトの名無しさん:2007/11/12(月) 11:48:56
ビットマップのHDC様といっしょにBitBltでGo!
23デフォルトの名無しさん:2007/11/12(月) 12:17:01
XP以降ならPrintWindow
2000以下なら方法は無し
24デフォルトの名無しさん:2007/11/12(月) 13:24:47
SDKって上書きしていいの?
25デフォルトの名無しさん:2007/11/12(月) 13:29:45
意味が分からん

インストールの話なら一度アンインストールしとけ
26デフォルトの名無しさん:2007/11/12(月) 13:49:12
というかSDKといってもいくつかあるからな
Windows SDK 6.0なのか、Platform SDK最新版(今Server2003用か?)か
27デフォルトの名無しさん:2007/11/12(月) 14:02:37
>>24
OSから入れ直しに決まってんだろ。
28デフォルトの名無しさん:2007/11/12(月) 15:43:36
WinAPIでツールボタンを使ったウィンドウを作ろうと思ったのですが、
comctl32.dll、バージョン 5.82.2900.2982、エラー発生アドレス 0x0001d465
のようなエラーが出ます。WindowsXPHome,コンパイラはMinGWのgcc3.4.5,リソースコンパイラはwindres2.17.50です。ソースは下のようになっています。
*WndProc.c
LRESULT CALLBACK WindowProc(HWND hwnd,UINT message,WPARAM wparam,LPARAM lparam){
HINSTANCE hInst;
HWND hToolBar;
TBBUTTON tbb[]={{0,IDM_OPEN,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0},省略{5,IDM_TOOL5,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0}};
switch(message){
case WM_CREATE:
InitCommonControls();
hInst=(HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE);
hToolBar=CreateToolbarEx(hwnd,WS_CHILD|WS_VISIBLE,ID_TOOLBAR,6,hInst,ID_TOOLBMP,tbb,6,0,0,16,16,sizeof(TBBUTTON));
return 0;
省略
*resource.h
#define ID_TOOLBAR 100
#define ID_TOOLBMP 101
#define IDM_OPEN 102
省略
#define IDM_TOOL5 107
*resource.rc
#include "resource.h"
ID_TOOLBMP BITMAP DISCARDABLE "control.bmp"

また、このページを参考にしたのですがまったく同じように作っても同じエラーが出ました。
http://wisdom.sakura.ne.jp/system/winapi/common/common8.html
環境が問題なのでしょうか。だとしたら解決策などはあるのでしょうか。
ご教授願います。
29デフォルトの名無しさん:2007/11/12(月) 15:53:52
とりあえずデバッガで追いかけてみたりしたかしら?
30デフォルトの名無しさん:2007/11/12(月) 16:45:25
>>29
すいません、試していませんでした。今gdbでやってみたら
Program received signal SIGSEGV, Segmentation fault.
0x5ab7d465 in ImageList_AddMasked () from C:\WINDOWS\system32\comctl32.dll
と出ました。ImageList_AddMaskedを調べるとビットマップのイメージマスク関連のようですがそこまでしかわかりませんでした。
WindowProcにブレークポイントを設定し、hToolBarの内容を見てみると0xffffffffでしたがやはりこれが問題でしょうか?
いろいろ考え試してみましたがどうにもわかりません。ご教授願います。
31デフォルトの名無しさん:2007/11/12(月) 16:50:02
>hToolBarの内容を見てみると0xffffffffでした

INVALID_HANDLE_VALUEだろそれw
作成失敗してるw
32デフォルトの名無しさん:2007/11/12(月) 16:58:29
ちがう。
CreateToolbarExの失敗時の戻り値はNULL。

でも0xFFFFFFFFが有効なハンドルって事はないから・・・。
33デフォルトの名無しさん:2007/11/12(月) 17:12:18
おそらくImageList_AddMaskedの中で
無効なビットマップハンドル使ってるんだろうな

試してないがGetWindowLongに失敗してない?
WM_CREATEってまだウィンドウ作成されてないからhWndって無効なハンドルの気が
で、無効ハンドルのせいでインスタンスハンドル取れない→イメージリソースが取れない。と

試しにGetModuleHandle(NULL);にしてみろ
34デフォルトの名無しさん:2007/11/12(月) 17:15:20
WM_CREATEでなら、
CREATEPARAMS const* pcs = (CREATEPARAMS const*)lParam;として、
pcs->hInstanceとすればインスタンスハンドルが取れる。
35デフォルトの名無しさん:2007/11/12(月) 17:15:51
CREATESTRUCTだったorz
36デフォルトの名無しさん:2007/11/12(月) 17:31:30
>>28です。
>>33-35
すべて試しましたが結果は同じでした。
hInstのインスタンスハンドルは$2=0x7c953288で取れているようです。
また、hwndのハンドルも取れています。

コードをすべてどこかにアップロードしてしまったほうが解決が早いでしょうか…?
37デフォルトの名無しさん:2007/11/12(月) 17:35:01
結局CreateToolbarExって成功してるの?
38デフォルトの名無しさん:2007/11/12(月) 17:37:40
>>WM_CREATEってまだウィンドウ作成されてないからhWndって無効なハンドルの気が

どんだけw
39デフォルトの名無しさん:2007/11/12(月) 17:49:40
>>1
4019:2007/11/12(月) 18:01:53
>>20-23
PrintWindowでいきたいと思います。
ありがとうございました。
41デフォルトの名無しさん:2007/11/12(月) 18:07:46
>>36
hInstが0x7c953288ってどう考えてもおかしいだろ

つーかこの程度のバグを解決できないスキルならMinGWなんて使わずVC使えよ
42デフォルトの名無しさん:2007/11/12(月) 18:23:58
ビットマップでボタン作れますか?
マウスがボタンに重なったら、ボタンに使われているビットマップを変更する等の処理もしたいのですが、
43デフォルトの名無しさん:2007/11/12(月) 19:16:21
>>42
ボタンにビットマップ張ったらいいんでは?
44デフォルトの名無しさん:2007/11/12(月) 19:27:00
どうやって張るんですかね?
本等にもあまり載っていなくて苦難してます。
45デフォルトの名無しさん:2007/11/12(月) 19:31:40
質問です。

プログラムを動かそうと考えているマシンにはプリント用のネットワーク出力ポートがいくつかありますが、
EnumPortsを呼ぶとPORT_INFO_2構造体にはそれぞれ
 pMonitorName : TCPMON.DLL
 pDescription : Standard TCP/IP Port
 fPortType : 11
という値が入ります。
これらについて個々のIPアドレスを知る方法はありますでしょうか?
46デフォルトの名無しさん:2007/11/12(月) 20:00:15
>>44
普通に

ボタン ビットマップ

でググれば出てくるが
47デフォルトの名無しさん:2007/11/12(月) 20:13:40
>>46
ググッてきます!!!
48デフォルトの名無しさん:2007/11/12(月) 20:43:43
>>28です。
resource.rcに#include "resource.h"の記述をしないとなぜかウィンドウ自体は表示されます。
ですがビットマップイメージがボタンに張られていない状態です。
当たり前といえばそうなのですが、この情報から何かわかることはあるでしょうか?
たびたびすいません、ご教授願います。
>>37
プログラムが異常終了してしまうので成功していません。
>>41
おかしいのですか…どのようにおかしいのかわかりますでしょうか?

ソースをすべてアップロードしてみました。たびたびすいません、どこが悪いのかご教授願います。
>>28に書いたソースよりいくらかいじったので違う点がありますが基本的に同じです。
http://www.dotup.org/uploda/www.dotup.org2842.zip.html
49デフォルトの名無しさん:2007/11/12(月) 21:44:20
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆【一番クリックした国が優勝】参加者求ム!☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

 イギリス人天才プログラマが運営する前代未聞の無料ブラウザゲーム、http://clickclickclick.com/
 ただひたすらクリックし、国別の総クリック数を世界中で競い合う!
 究極にバカバカしくそして意味がなく、ひたすら時間の無駄でなんの得にもならない、だがそれが(・∀・)イイ!

 ライバルはハンガリー、そして台湾!! GAME2から参戦し、現在GAME27開催中!
 VIPで発祥し現在2ch全土から結集したクリック兵達で日本チームは戦っている!
 意味のない事に全力を傾ける、それが2ちゃんねるクオリティ!!

 独自のクリックツール開発競争も熱く、各国のプログラマが全力で優秀な兵器開発をしている!!
 日本の技術力の高さを世界に見せつけてやろうぜ!
 プログラマ、Flashゲーム製作者、動画職人、AA職人、絵師、DJ、wiki編集blog編集者、データ分析者etcも募集中!
 ツール放置参加もできるので、PCのスペックに自身のある奴、CPUに空きのある奴、時間が余ってる奴もぜひ参加してくれ!

 本スレッド
 【簡単多重】一番クリックした国が優勝【8砲門】
 http://wwwww.2ch.net/test/read.cgi/news4vip/1194741194/l50
 ※落ちているときはここから1発検索
 http://www.clickjapan.jp/find2ch.php

 日本チームの有志によるまとめサイトポータル
 http://www.clickjapan.jp/ 
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
50デフォルトの名無しさん:2007/11/12(月) 22:32:12
>>28
> リソースコンパイラはwindres2.17.50です。
これは、リソースに日本語が入っているとダメだったような…
ひょっとして、そっち関係とか。
51デフォルトの名無しさん:2007/11/12(月) 22:32:28
>>48
だからVC使えと(ry
デバッガだけでもVCを使う価値は十分にあると思うが、どうしてもMinGWを使わなければならない理由でもあるのか?
52デフォルトの名無しさん:2007/11/12(月) 22:37:23
WindowsはZIPを解凍するAPIを標準で持っているんでしょうか?
また、あるとしたらどのバージョンからなんでしょうか。
53デフォルトの名無しさん:2007/11/12(月) 22:41:39
ねーよ
54デフォルトの名無しさん:2007/11/12(月) 22:47:42
>>48
ビットマップが24ビットだからじゃね?
256色以下にしてみ
55デフォルトの名無しさん:2007/11/12(月) 22:50:18
パソコンの画面をキャプチャーしてメモリ内に格納したいのですが、
GetDCでデスクトップのデバイスコンテキストを取得し、
GetPixelで1ピクセルずつ取得する方法より、効率の良い方法は何かあるでしょうか?
56デフォルトの名無しさん:2007/11/12(月) 22:52:53
DIB
57デフォルトの名無しさん:2007/11/12(月) 23:13:33
>>52-53
ZIPフォルダを実現する関係上、ZIPファイルはシェルフォルダとして読み書きできる。
Me/XPから標準搭載だが、98ではPlus!に付いてきたはず。
また、2000でもMeからDLLを持ってくれば使える。

ようするにWindowsのバージョンなんて当てにしないで、
実際に試してみて成功すればOKという方針で行け。
58デフォルトの名無しさん:2007/11/12(月) 23:18:59
>>55
BitBlt
59デフォルトの名無しさん:2007/11/12(月) 23:19:51
>>57
OS再インスコしたら真っ先にregsvr32 /u zipfldr.dllなんだが
そんな不確かな物に頼るぐらいなら普通にunzip32やzlibでも使えばいい
60デフォルトの名無しさん:2007/11/12(月) 23:20:33
>>55
1ピクセルごとじゃなくて普通にBitBltじゃだめなのか
61デフォルトの名無しさん:2007/11/13(火) 09:29:25
>>59
自分で機能切ってるヤツまで知ったこっちゃねーだろ・・・
62デフォルトの名無しさん:2007/11/13(火) 09:32:21
delphiのぐだすれで質問したらすれ違いと言われたのでここに来ました。
WindowsXPのアクティベーションとかで使用しているようなハードウェアハッシュを
自前のプログラムでも使用したいのですが
どうやったら取得できますでしょうか。
すれ違いでしたら誘導願います。
63デフォルトの名無しさん:2007/11/13(火) 10:50:43
>>61
そもそもなぜ圧縮フォルダをプログラムから直接利用する必要があるのかサッパリなんだが
外部DLL不要、世界最小のZIP解凍ソフト!とか作りたいのかねぇ
64デフォルトの名無しさん:2007/11/13(火) 12:04:19
>>28です。
>>54
本当にありがとうございます。解決しました。
65デフォルトの名無しさん:2007/11/13(火) 14:08:15
>>63
お前、とことん読解力ないな
66デフォルトの名無しさん:2007/11/13(火) 14:21:45
( ´,_ゝ`)プッ
67デフォルトの名無しさん:2007/11/13(火) 14:42:28
言語問わずWin32APIが呼び出せるインタプリタ環境ってありますか?
68デフォルトの名無しさん:2007/11/13(火) 14:49:17
Perl
69デフォルトの名無しさん:2007/11/13(火) 15:23:49
>>68
ありがとうございます、調べてみます
70デフォルトの名無しさん:2007/11/13(火) 16:22:08
PowerShell
71デフォルトの名無しさん:2007/11/13(火) 17:05:04
>>70
こんなものもあるんですね、不勉強ですみません
72デフォルトの名無しさん:2007/11/13(火) 22:34:14
APIとか一寸試したい時に、そういうのが欲しいとちょっと思わなくもないが、
結局Cや、GUI絡みでもMFC使えば簡単に試せるからなあ。
73デフォルトの名無しさん:2007/11/14(水) 01:04:06
>>56
ありがとうございます。調べて見ます
>>60
>>58
取得した画面をファイルに出力したりネットワークで送信したりしたいのですが、
BitBltだと、出来ませんでした
74デフォルトの名無しさん:2007/11/14(水) 01:08:18
そういう場合はGetDIBitsで検索
75デフォルトの名無しさん:2007/11/14(水) 06:05:51
>>72
環境勝手にいじれない(非開発の)PCではAPI使うのにofficeのVBAしかなかったりするんだよ…

MSはPowerShell を優先度の高い更新に含めやがれ
あるいは会社のPCをすべて2008にしてください
76デフォルトの名無しさん:2007/11/14(水) 06:23:03
.NETは結局XPに標準搭載されなかったんだっけか
77デフォルトの名無しさん:2007/11/14(水) 10:13:29
標準搭載しなくていいよ
78デフォルトの名無しさん:2007/11/14(水) 11:30:13
ファイルだの日時をコピーもしくは変更するAPIを教えてください
79デフォルトの名無しさん:2007/11/14(水) 12:09:27
SetFileTime
GetFileTime
80デフォルトの名無しさん:2007/11/14(水) 12:09:41
日本語でおk
8178:2007/11/14(水) 13:12:30
フォルダでした。
ところでこれってFATでも機能するのでしょうか?
82デフォルトの名無しさん:2007/11/14(水) 13:33:53
83デフォルトの名無しさん:2007/11/14(水) 14:56:30
SendMessageで書き直したいのですが、どのように書き直せばよいのか教えてください。
(VB2005です)↓

'キーコード送信
Dim DownUp As Integer = 0
Dim Down As Integer = 1
Dim Up As Integer = 2
Private Sub KBD(ByVal KEY_CODE As Byte, ByVal 状態 As Integer, ByVal ms As Integer)
Sleep(ms)
If 状態 = 1 Then
Call keybd_event(KEY_CODE, 0, 0, 0)
ElseIf 状態 = 2 Then
Call keybd_event(KEY_CODE, 0, &H2, 0)
ElseIf 状態 = 0 Then
Call keybd_event(KEY_CODE, 0, 0, 0)
Call keybd_event(KEY_CODE, 0, &H2, 0)
Else
End If
End Sub
84デフォルトの名無しさん:2007/11/14(水) 16:09:01
keybd_eventがやってることはSendMessageじゃエミュレートできないと思うんだが
85デフォルトの名無しさん:2007/11/14(水) 16:11:05
場合による
86デフォルトの名無しさん:2007/11/14(水) 16:14:41
キーイベントはポストだろ
87デフォルトの名無しさん:2007/11/14(水) 16:16:27
ポストだとどんな感じですか?
88デフォルトの名無しさん:2007/11/14(水) 16:19:42
マニュアル嫁
89デフォルトの名無しさん:2007/11/14(水) 17:31:09
ポストはポストでも、マルチポストだろ
90デフォルトの名無しさん:2007/11/14(水) 21:50:10
いろんな方が質問されている内容ですがうまくいかないので質問させてください。
WS_EX_LAYERED、SetLayeredWindowAttributes、LWA_COLORKEY、IDB_CHRISTALについて
「定義されていない識別子です。」というエラーでコンパイルできません。

ソースは以下のサイトを見ながら書いています。
http://www.kumei.ne.jp/c_lang/sdk4/sdk_346.htm

環境はVC++6.0、OSはWindowsXP SP2です。
やってみたこと
・ServicePack6 の適用
・Windows Server 2003 SP1 Platform SDK の PSDK-x86.exeをダウンロードしてインストール
 →C:\Program Files\Microsoft Platform SDK\Bin\Orca.Msi を実行
・ソースに#include<WinUser.h> を追記

対処法がありましたら教えていただきたいです。
91デフォルトの名無しさん:2007/11/14(水) 21:56:14
VC++のインクルードディレクトリの設定を変えろ。
新しいPlatform SDKのインクルードディレクトリを指すように。

winuser.hは昔も今もwindows.hの中でインクルードされるから、
自分でインクルードを明記する必要はない。
92デフォルトの名無しさん:2007/11/14(水) 22:33:26
VC++のディレクトリとPlatFormSDKのディレクトリで
階層構造が多少違うようなのですが、、、、


で、適当にやったらインクルードファイルがオープンできませんってなりました・・・。(;つД`)
メニューのツール -> オプション -> ディレクトリ タブ の中の設定を変更したんですが違いました?
9390=92:2007/11/14(水) 22:42:22
WS_EX_LAYERED については警告はでなくなりましたが
下記エラーが出ます。インクルードディレクトリの指定がマズイのでしょうか?

error LNK2001: 外部シンボル "__imp__SetLayeredWindowAttributes@16" は未解決です
94デフォルトの名無しさん:2007/11/14(水) 22:43:10
_WIN32_WINNTとかWINVERとかじゃね?
95デフォルトの名無しさん:2007/11/14(水) 22:52:14
>>75
ExcelあるならスクリプトからExecuteExcel4MacroでCALL Win32API
96デフォルトの名無しさん:2007/11/14(水) 23:05:20
>>93
インクルードパス同様、ライブラリパスも設定する必要があるぞ。
9790=92=93:2007/11/14(水) 23:05:55
>>94
ソース冒頭で
#define _WIN32_WINNT 0x0500
を指定しています。

WINVERというのが良くわかりませんが
#define WINVER 0x0400
と指定したところではエラーの内容は変わらずでした。
98デフォルトの名無しさん:2007/11/14(水) 23:12:44
>>97
つーかVC6で使えるSDKの最終バージョンって2003年2月ぐらいの奴じゃなかったっけ?
一応2003SDKとかも使えなくも無いがリンクエラー出ることあるからやめといた方がいいと思うぞ
99デフォルトの名無しさん:2007/11/14(水) 23:16:43
>>93
ライブラリのパス
10090=92=93=97:2007/11/14(水) 23:29:14
できました━━━━(゚∀゚)━━━━!!!!。

ありがとうございました。
10190=92=93=97=100:2007/11/14(水) 23:44:52
>>98
ttp://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en

これには ”Date Published: 5/2/2005 ”とあるようです。

このSDKはあんまり薦められないってことですか?
今回はこれでないと動かない代物だったので仕方ないですが
必要なければ使わないほうが良いのでしょうか?
102デフォルトの名無しさん:2007/11/14(水) 23:46:11
タスクトレイのアイコン上でマウスホイールで操作したときに処理をすることを
考えているんですが、タスクトレイのアイコン上でマウスホイールを操作しても、
WM_MOUSEWHEELがとんできません。
WM_MOUSEWHEELをフックしても、タスクトレイのどのアイコン上なのか
識別する方法がわかりません。
NOTIFYICONDATAのhWndとかuIDを判別する方法ありませんか?

103デフォルトの名無しさん:2007/11/14(水) 23:46:54
今ならWindowsSDKだけで十分なような気も
104デフォルトの名無しさん:2007/11/14(水) 23:49:38
>>102
状況がよくわからんけど・・・
タスクトレイから通知が来たときのLPARAMを見てみる
105デフォルトの名無しさん:2007/11/14(水) 23:52:04
あ、違うか
どのアイコンか判定したかったらShell_NotifyIconのAPIフックからしないと駄目な気が
通知メッセージはユーザー定義だからフックできんし
WM_MOUSEWHEELは普通にタスクトレイが受け取ってるはず
106102:2007/11/15(木) 00:13:14
>>105
レスどうもです。

えとですね。
自分のアプリで登録しているアイコンなんですよ。
タスクトレイのアイコン上で操作したときに、
例えば左クリックならばWM_LBUTTONDOWNは来るんですが、
マウスホイール操作のWM_MOUSEWHEELは来ないんです。

なので、WM_MOUSEWHEELをフックして処理しようかと思ったのですが、
自分のアプリで登録しているタスクトレイのアイコン上であるかどうかの
判別ってどうするんだ?と困っているところなのです。
107デフォルトの名無しさん:2007/11/15(木) 01:24:41
>>101
そのページに書いてあるでしょ
>This SDK does not support working with Microsoft Visual C/C++®, 6.0 as support for VC 6.0 has ended.
>The last SDK that will work with VC 6.0 is the February 2003 Edition, you can order a CD on the fulfillment site.

2003年2月版でもXPSP1ぐらいまではサポートしてるので普通に使う分には困らないと思う
108デフォルトの名無しさん:2007/11/15(木) 04:44:07
>>81
NT系ならFATでも使える。まだ9xサポートしてるのか?
109デフォルトの名無しさん:2007/11/15(木) 06:19:56
>>95
知らなかった。ちょっと楽になる。サンクスですわ
110デフォルトの名無しさん:2007/11/15(木) 06:46:39
zipの圧縮、解凍をサポートするapi関数ってある?
Jpegの伸縮のように、外部ライブラリ入れないとダメかな
111デフォルトの名無しさん:2007/11/15(木) 08:09:45
なんでXPでzipfldr.dllなんてDLLが追加されたか考えれば分かるだろう
112デフォルトの名無しさん:2007/11/15(木) 08:16:37
スレ違いだけど.NETならGZipStreamクラスある
113デフォルトの名無しさん:2007/11/15(木) 08:49:12
zip圧縮解凍ライブラリなんてネット上に腐るほどあるだろ
zipfldrを呼び出す方が遥かに面倒だと思うが
114デフォルトの名無しさん:2007/11/15(木) 10:05:12
COM使ったことあれば、そう面倒でもないと思うが・・・まぁ人それぞれか
115デフォルトの名無しさん:2007/11/15(木) 11:24:13
zipfldr.dllのCOMインターフェイスって公開されてたっけ?
IShellFolder::GetUIObjectOfでIDropTargetを取得してD&Dをエミュレートして・・・とか考えたけど結構面倒な気が
他に方法あったらおせーて
116デフォルトの名無しさん:2007/11/15(木) 11:56:30
rundll32.exe zipfldr.dll,RouteTheCall %zipfile%

これか?ためしてないけど
117デフォルトの名無しさん:2007/11/15(木) 12:05:42
CLSIDFromString("CompressedFolder",&clsid);
CoCreateInstance(clsid,NULL,CLSCTX_ALL,IID_IStorage,(LPVOID*)&pStorage);
pStorage->QueryInterface<IPersistFile>(&pPersistFile);
pPersistFile->Load("zipファイル名",STGM_READWRITE|STGM_SHARE_EXCLUSIVE);

てな感じ、足りないとこは脳内補完よろ
あとはIStorageとIStreamの操作で中身読める。
書き込みは試したことないけど・・・、たぶん似たような手順でいけるとおもふ
118デフォルトの名無しさん:2007/11/15(木) 12:10:27
それって
rundll32.exe unzip32.dll,UnZipCommandLine "%1"
と同レベルな気が
119デフォルトの名無しさん:2007/11/15(木) 12:12:31
リロードしてなかった
>>118>>116へのレス

>CLSIDFromString("CompressedFolder",&clsid);
これって将来的に大丈夫なのかな?
そんなモン気にするなってツッコミは無しで
120デフォルトの名無しさん:2007/11/15(木) 12:21:32
質問です。
SetWindowsHookEx でグローバルフック登録しているのですが、runas 等で別のユーザで起動したウィンドウへのメッセージがフックできないようです。
普通の (同じユーザ) ウィンドウへのメッセージはフックできています。
何か方法はありますか?
121デフォルトの名無しさん:2007/11/15(木) 12:23:56
別ユーザのウィンドウがフック出来たらセキュリティホール以外の何物でもないだろう
ImpersonateLoggedOnUserとか使えばどうにかなるかも知れんが
122デフォルトの名無しさん:2007/11/15(木) 12:27:09
自分も昇格する
123120:2007/11/15(木) 13:06:13
>>121 そういわれればそうですねぇ。
まあ、今回のは特殊用途なので権限は気にしなくていいのですが・・・
ImpersonateLoggedOnUser 知らなかったので調べます。
124110:2007/11/15(木) 15:11:57
c++は使えないから、comとか無しで頼む
普通にapi関数を一本呼び出し(ループでも)で使えないの?
125デフォルトの名無しさん:2007/11/15(木) 15:14:11
無理だっつうの
126デフォルトの名無しさん:2007/11/15(木) 15:15:27
もう自分でdeflate書け
127デフォルトの名無しさん:2007/11/15(木) 15:18:37
>>124
例えCでもCOMは使えるぞ
いったい何を言ってるんだ?
128デフォルトの名無しさん:2007/11/15(木) 15:20:07
>>124
unzip32使え
嫌なら.net使え

いずれにせよスレ違いだからもう来なくていいよ
129デフォルトの名無しさん:2007/11/15(木) 15:20:30
(124は)CでCOMが使えない
130デフォルトの名無しさん:2007/11/15(木) 15:25:45
124では無いがCでCOMなんて面倒すぎるだろ
第1引数省略できねーしスマートポインタ使えねーしlpVtblとか一々書いてられるか
131デフォルトの名無しさん:2007/11/15(木) 15:28:31
で、だから何?
132デフォルトの名無しさん:2007/11/15(木) 15:30:40
124みたいな奴がCでCOMなんかに手を出すとリークしまくりの糞プログラムにしかならんだろうという事だ
133デフォルトの名無しさん:2007/11/15(木) 15:35:16
なるほど
134デフォルトの名無しさん:2007/11/15(木) 22:58:01
>>110
一般公開されていないよ、MSのZIP解凍/圧縮は。
APIもCOMも。
135デフォルトの名無しさん:2007/11/16(金) 00:04:43
このスレでいいのかどうか悩んだんですが
『Advenced Windows』を読む上で、Win32APIやOSの知識は前提になっているのでしょうか?
C/C++は一通りやったけどWindowsプログラムは未経験という段階の人間が、
>>1にある言葉を借りると「APIフックなど高度な事」が最終目標だという場合、
先に『プログラミングWindwos』などを読んでおくべきなのかどうかと思いまして。
136デフォルトの名無しさん:2007/11/16(金) 00:27:30
http://www.kumei.ne.jp/c_lang/sdk4/sdk_346.htm

上記のプログラムでCreateWindowExにてウィンドウスタイルを
WS_OVERLAPPEDWINDOW としているのを
WS_POPUP に置き換えるとウインドウが表示されなくなってしまうのですがどうしてでしょうか?
枠線が消えるのはわかりますが、表示されていたはずのピットマップまで消えてしまうので
納得できませんでした。

よろしくお願いします。
137デフォルトの名無しさん:2007/11/16(金) 00:31:11
基礎的なAPIの知識は必要。
最終的にAdvenced Windowsを買う「べき」なのは間違いないと思うけど入門には向かない。
4倍ぐらいの量と金額のEffectiveC++ or STLを入門として買うようなもの。

個人的には APIで学ぶWindows徹底理解 ちゅうのが激しくオススメ
138デフォルトの名無しさん:2007/11/16(金) 00:31:46
どこでエラーが出てるか調べろ
139デフォルトの名無しさん:2007/11/16(金) 00:33:44
沢山のソースコードを読むほうがためになると思う。
140デフォルトの名無しさん:2007/11/16(金) 00:53:01
>>139に同意
141デフォルトの名無しさん:2007/11/16(金) 01:07:23
>>137-139
アンカーつけて喋れw
142デフォルトの名無しさん:2007/11/16(金) 01:18:33
はい
143デフォルトの名無しさん:2007/11/16(金) 01:42:04
いいえ
144デフォルトの名無しさん:2007/11/16(金) 01:47:24
はいえ
145デフォルトの名無しさん:2007/11/16(金) 02:14:27
ないあるよ
146135:2007/11/16(金) 02:17:40
>>137
分かりやすい解説、ありがとうございました。
おすすめいただいた書籍、目次見てたらおもしろそうなので、
是非目を通してみたいと思います。
147デフォルトの名無しさん:2007/11/16(金) 05:04:23
>>136
CW_USEDEFAULTはWS_OVERLAPPEDでないと効果がない。
WS_POPUPだと単にサイズゼロのウィンドウが画面外に作成されてしまう
148デフォルトの名無しさん:2007/11/16(金) 11:22:25
TextOutで表示させる文字のフォントを変更したいのですが、
どのようにすればいいのでしょうか?
149デフォルトの名無しさん:2007/11/16(金) 11:35:57
SelectObject
150デフォルトの名無しさん:2007/11/16(金) 11:58:39
もっといえばCreateFont→SelectObject
151デフォルトの名無しさん:2007/11/16(金) 12:04:38
スレ違いの場合は誘導をお願いします。

今、生DVDにデータを書き込むプログラムを作っています。理想は、時系列で増え続けるデータを
direct recordingすることです。
ところがまず、Windows 2003 DDK添付のspti.cでWRITE DATA BUFFER operationがエラーコード2で
失敗する所ではまっています。
そもそも生DVDに対しては、spti.cでは書き込みは行えないのでしょうか?
152デフォルトの名無しさん:2007/11/16(金) 13:33:13
_beginthreadex関数で、void*型の引数で文字列を渡したいんですけど

  _beginthreadex(NULL, 0, mythread, (void*)str, 0, (unsigned int*)&thID);

でスレッド作成をして、スレッド内で

  char buf[256];
strcpy(buf, str);

としていますが、上手く引数を受け取れません。
表示させてみると「フフフ…」となります。


strの部分を&strとしたり、色々試してみたのですが上手くいきません。

おとなしくグローバル変数で値を渡したほうがよいのでしょうか…。
  
153デフォルトの名無しさん:2007/11/16(金) 13:41:33
呼び出している側の領域が、相手のスレッドが動作する前に消失しているんだろ。
馬鹿がよくやる。
154デフォルトの名無しさん:2007/11/16(金) 16:55:25
よくわからないけど、とりあえずはキャストしないといけないんじゃない?
155デフォルトの名無しさん:2007/11/16(金) 17:28:39
>>152
複数作成したりどうしてもグローバル変数使いたくないなら
動的に確保してやればいい
ローカル変数のアドレスを渡すなんて問題外
156デフォルトの名無しさん:2007/11/16(金) 18:43:29
プログラミングに慣れてないならスレッドなんかに手を出すのはやめとけよ
ネット上のサンプルでも排他制御やアトミックオペレーションしてない、いい加減なソースが多いしな
157136:2007/11/16(金) 20:11:06
>>147
また一つ賢くなれました。
ありがとうございました。
158デフォルトの名無しさん:2007/11/17(土) 08:31:31
助けて下さい。
次の物を作らなければなりません。
http://hp.jpdo.com/cc009/1/img/1718.jpg

図形は、単純なのですが、作り方が分かりません・・・
アドバイス・参考文献 宜しくお願いします。
出来れば優しい神降臨求む
159158:2007/11/17(土) 08:39:59
http://i-bbs.sijex.net/imageDisp.jsp?id=gtrgtr&file=1195256319996o.jpg
上の画像は、出ないのでコチラ?
160158:2007/11/17(土) 08:46:25
画像は、サンプルです。実際は単純な○△◇等です。
言語は、Vidual c++ 6.0以降
ダイヤログから出発、ボタンを押すと各図形を表示
宜しくお願いします
161デフォルトの名無しさん:2007/11/17(土) 08:53:38
何が分かっていて、何がわからないの?
CあるいはC++はわかるならプログラミングWindowsでも読め。

162158:2007/11/17(土) 09:16:18
ダイアログからダイアログの飛ばし方が分からないです。
とばすのに必要なのは?

ダイアログでも図形は、書けるものなのか?
それに必要なのは?

とりあえずこの2点の知識お願いします。
163デフォルトの名無しさん:2007/11/17(土) 09:30:39
>ダイアログからダイアログの飛ばし方が分からないです。
ダイアログを親ウィンドウにしてダイアログを生成する

>とばすのに必要なのは?
お前のプログラミング知識

>ダイアログでも図形は、書けるものなのか?
描ける (書けるって何だよ)

>それに必要なのは?
お前のプログラミング知識
164デフォルトの名無しさん:2007/11/17(土) 09:44:40
宿題か

>ダイアログからダイアログの飛ばし方が分からないです。
>とばすのに必要なのは?

DialogBox
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpwinui/html/_win32_dialogbox.asp

これだとダイアログリソースが必要になる

CreateWindowExでも書けると言えば書ける
http://www.sm.rim.or.jp/~shishido/mdialog.html

こちらは普通にウィンドウを作るのでリソースは必要ない

>ダイアログでも図形は、書けるものなのか?
>それに必要なのは?

例示された奴をとりあえず書けって言われたら
BeginPaint、EndPaint、GetStockObject、FillRect、LineTo、MoveToEx、SetPixel辺りで書くかな

訳分からなければWin32 API入門の30章あたりまで読め
165デフォルトの名無しさん:2007/11/17(土) 10:49:57
やさしいインタネッツだな
166デフォルトの名無しさん:2007/11/17(土) 11:03:22
ダイアログにその画像貼っとけ
167158:2007/11/17(土) 11:36:02
>>164様 他
有難う御座います・・・
読んだけど、分け分から無いです。
取りあえず”Win32 API入門”を買って読みます。
必死なので、また来ます。
それでは、宜しくお願いします。
168デフォルトの名無しさん:2007/11/17(土) 11:36:50
つーかMFCだろスレ違い
169デフォルトの名無しさん:2007/11/17(土) 11:43:41
>>167
Win32 API入門って「サイト名」なんだけどね

>>168
少なくとも164に上がってんのはほぼ全部API
170デフォルトの名無しさん:2007/11/17(土) 12:05:01
リソースとして埋め込んだビットマップを
普通にファイルからビットマップ読み込んだ時のように
CreateDIBSectionする方法って無いでしょうか?

リソースとして埋め込んだビットマップで
アルファブレンド等をしたいのでピクセル列が欲しいんです、W98SEです
171デフォルトの名無しさん:2007/11/17(土) 12:10:19
とりあえず、LoadImageにLR_CREATEDIBSECTION使っとけばいいんじゃね?
暇なら、FindResourceから始める、という手もあるけど。
172デフォルトの名無しさん:2007/11/17(土) 12:29:05
今時98SEかよ
173デフォルトの名無しさん:2007/11/17(土) 12:30:55
>>171
どうもありがとう、両方試してみます
174デフォルトの名無しさん:2007/11/17(土) 12:38:48
アクティブなウインドウのファイル名を取得するコードを書いてます。
ネットではぴったりのコードがなく、つなぎ合わせで
なんとかこんな感じでまとめたのですが、よくわからない
のもあって、うまく動きません。
環境はBCB WinXPです。
/*
//ttp://m--takahashi.com/bbs/pastlog/11800/11731.html
1) GetWindowThreadProcessId() で HWND から ProcessID を得る
2) OpenProcess() で ProcessID から hProcess を得る
3) EnumProcessModules() で hProcess から hModule を得る
4) hProcess / hModule を使って GetModuleFileNameEx() でヤッター!!
*/
DWORD dwPID;
DWORD dwProcessID = GetWindowThreadProcessId(GetForegroundWindow(), &dwPID);
DWORD ProcessIDs[1000]; /* プロセスIDの一覧 */
HANDLE handle = OpenProcess(PROCESS_ALL_ACCESS, 0, dwProcessID);

DWORD ReturnSize; /* プロセスID一覧の取得結果のサイズ */
EnumProcesses(dwProcessID, sizeof(dwProcessID), &ReturnSize);//この行は?
if(handle)
{
HMODULE hMod;
DWORD size;
char fname[MAX_PATH];
EnumProcessModules(handle, &hMod, sizeof(hMod) ,&size);
GetModuleFileNameEx(handle, hMod, fname, sizeof(fname));
CloseHandle(handle);
ShowMessage(fname);
}
175デフォルトの名無しさん:2007/11/17(土) 12:45:03
GetWindowThreadProcessIdの返り値はスレッドID
176デフォルトの名無しさん:2007/11/17(土) 12:45:50
途中で送信しちまった

GetWindowThreadProcessIdの返り値はスレッドIDなのに
OpenProcessにスレッドID渡してるぞハゲ
177デフォルトの名無しさん:2007/11/17(土) 12:48:17
EnumProcessesの第一引数
178デフォルトの名無しさん:2007/11/17(土) 12:49:33
そもそもEnumProcessesいらないだろこの場合
HWNDからProcessID取るって言ってんだから
179デフォルトの名無しさん:2007/11/17(土) 12:59:47
なんかもうアレ
180デフォルトの名無しさん:2007/11/17(土) 13:12:37
DWORD dwPID;
DWORD dwProcessID = GetWindowThreadProcessId(GetForegroundWindow(), &dwPID);

噴いたwww
181デフォルトの名無しさん:2007/11/17(土) 14:47:18
wiodwsXP
visual studio .net
にてwindowアプリケーションを作っておりますが、
Heap corruption detected at 038A9008(最後の数字は毎回変わる)
のような文章が「出力」の欄に出て警告もなしに勝手に終了します。

ググッた結果、どうやら領域確保あたりが怪しいらしく
mallocやfree関数を調べましたが、おかしな点は見当たりませんでした。

他にどこらへんが怪しいと思いますか?
182デフォルトの名無しさん:2007/11/17(土) 14:49:22
mallocやfree周辺
183デフォルトの名無しさん:2007/11/17(土) 15:00:56
使ってるOSがおかしいよ
184デフォルトの名無しさん:2007/11/17(土) 15:06:36
ヒープオーバーランだろ
185デフォルトの名無しさん:2007/11/17(土) 15:09:28
>>181
プログラムのどこかで、メモリの確保した範囲外に書き込みをして、ヒープを破壊しまったんだ
プログラムのどの部分がどこに影響を与えるとかほとんど予測できないから、
問題が出なくなるまで怪しい場所をひとつずつコメントアウトして原因を絞っていくしかない
186デフォルトの名無しさん:2007/11/17(土) 15:18:37
初心者は文字列用のバッファが怪しい
終端NULLが良くオーバーランしてる
187デフォルトの名無しさん:2007/11/17(土) 15:22:52
ヌル文字はNULと書くようにしようぜ
188デフォルトの名無しさん:2007/11/17(土) 15:23:45
>>181
>>181の頭が怪しい
189デフォルトの名無しさん:2007/11/17(土) 16:20:32
APIスレに来てmallocとかfreeとか言ってるのが気に入らない
HeapAlloc使えよ

とかいう冗談はさておきWin32API関係ない。C初心者スレいってソースすべてうpすれば早く片付くかもね
190デフォルトの名無しさん:2007/11/17(土) 16:34:58
>>185
ありがとう。めんどくさそうだけど頑張ります。

>>186
参考にしてみます。ありがとうございます。
191デフォルトの名無しさん:2007/11/17(土) 17:17:43
>>171のFindResource()のほうから調べながら試していたんですが
(BITMAPFILEHEADER)LockResource()
(BITMAPINFO)LockResource()
とヘッダとインフォのメモリへのポインタを取得して
インフォからCreateDIBSection()でHBITMAPを作成する所まではできたんですが
DIBSectionのほうで使用するメモリに
読み込んだリソースの方のメモリをコピーする所で躓きました

LockResource()でピクセル列の先頭ポインタを取得するために
どういうキャストをすれば良いのかが分からないので困っています
思いつくことを試しながらCopyMemory()しましたがどれも強制終了してしまいます
192デフォルトの名無しさん:2007/11/17(土) 17:38:41
windows XP
VC++ 2003
SetWindowRgnでウィンドウスタイルが変わらないようにするには
どうすればいいですか?
SetWindowRgnしなければXPスタイルなのに、関数を呼ぶと
コマンドプロンプトと同様のスタイル(クラシック?)になります
ウィンドウはVC++2003のWin32プロジェクトで新規作成した
雛形そのままです
193デフォルトの名無しさん:2007/11/17(土) 18:11:14
ANSIビルドのプログラムで、ウィンドウ内に作成したエディットコントロールに
ユーザーによって入力されたテキストを取得して、それをUNICODE形式のファイルに保存しようとしています。

処理の流れとして、エディットコントロール内のテキストの長さ(バイト単位)を取得して
→ 動的にメモリ確保
→ WideChatToMultiByteでUNICODE文字列に変換
→ WriteFile でファイルの先頭2バイトにBOMを書き込み
→ 変換後の文字列をWriteFile ファイルに書き込む

こういう風にしています。
ただ、エディットコントロール内のテキストの長さを取得する段階でつまづいてしまって。。
なんだか、2バイト文字が正確に数えられていないようなんです。
エディットコントロール内のテキストが、「こんにちはwindows」のようになっていた場合。
この文字列「こんにちはwindows」のサイズ(バイト数)を正確に掴むためにはどうすればいいんでしょうか?

ちなみにMFCはわかりません。
194デフォルトの名無しさん:2007/11/17(土) 18:23:31
GetWindowTextLength(のA)でいけるぞ。

comctl32.dllバージョン6使っていたらUTF-16単位での文字数になるかもしれないが、
そのときには、そもそもNT系のはずで、W系APIを直接使って
UNICODE文字列を取得してしまえばいい。
195193:2007/11/17(土) 18:51:26
lstrlen()でも同じ症状になるんですが、
例えば

ANSIビルド版のプログラムでは
lstrlen(TEXT("hello") = 5
lstrlen(TEXT("こんにちは")) = 10
ですが

UNICODE版では
lstrlen(TEXT("hello") = 10
lstrlen(TEXT("こんにちは")) = 10
となります。

確認してみましたが、GetWindowTextLengthでも同じ結果でした。
バイト数は分かりますが、文字数が分からないに思うんですが・・
確かにメモリ確保にはバイト数だけ分かればいいんですが、そもそもGetWindowTextLengthって文字列の長さ(=文字数)
を取得する関数という認識で間違いないですよね?

UNICODE版は、文字数とバイト数(文字数×2)に何の不思議も無いんですが
ANSI版は、文字数とバイト数がバラバラというか。。
ダブルバイト文字とシングルバイト文字が一緒くたでわかりにくいというか・・
196193:2007/11/17(土) 18:56:10
lstrlen(TEXT("hello") = 5
lstrlen(TEXT("こんにちは")) = 5
でした。

うぉー混乱する000

文字列を取得する関数って、
ANSI版だと、文字列のバイト数
UNICODE版だと、文字列の文字数
になってる??みたいですgあ・・
197デフォルトの名無しさん:2007/11/17(土) 19:02:06
ユーザーが手入力するならたいした文字数じゃないだろうから、
単純にバイト数の倍確保しておけばいいんじゃね?
198デフォルトの名無しさん:2007/11/17(土) 19:07:28
キーボードやマウスのボタンを押した時にはウインドウメッセージが出ますが、
ゲームパッドのボタンを押した時にはWMは出ているのでしょうか?
出ていればそのメッセージを教えて頂きたく思います。

60fpsのゲームループの中にゲームパッド情報取得の「〜->GetDeviceState〜」を書くと
まれにエラーが出てしまうため、他の方法を模索しています。
199デフォルトの名無しさん:2007/11/17(土) 19:10:23
>>198
あるわけない
200193:2007/11/17(土) 19:18:51
>>197
うーん。そうなんだけどねぇ。
あとMultiByteToWideCharの最後の引数は文字数を指定しろってなってるから、
これが原因なのかどうか分からないけど、UNICODEファイルとして保存したとき
最後にゴミがつくんです。
一応メモリ確保はGlobalAlloc(GPTR, dwSize)とやってますんで、0で初期化されてるはずなんだけど。。
どこがおかしいのかが分からないという。。。
201デフォルトの名無しさん:2007/11/17(土) 19:58:33
>>191
FindResourceの方は半ば冗談だったのだけどな……

LockResourceで先頭のアドレスが取れるのだから、後はそれを手繰っていくだけ。
中身は通常のビットマップのファイルとほとんど一緒。
ただし、BITMAPFILEHEADER部分が省かれているので、その点には注意。
202デフォルトの名無しさん:2007/11/17(土) 20:11:42
ウィンドウのメニュー部分を透明にすることは出来ますかね?
203デフォルトの名無しさん:2007/11/17(土) 20:12:15
C++で静的な仮想関数を使用する方法 or 参考HPを教えてください。

やりたいことは、_beginthreadexでスレッドクラスを作成して、
子クラスで任意の子メソッドを呼び出すことです。
つまづいている点は、_beginthreadexのコールメソッドが、
Staticなため、子クラスがオーバーライドできなくて困ってます。

ちなみに、以下のHPを参照しましたが、
これよりスマートな方法があれば教えてください!

よろしくです!

C++で遊ぼう「静的仮想関数」編
ttp://www.ksky.ne.jp/~seahorse/cpp/staticvirtual.html
204デフォルトの名無しさん:2007/11/17(土) 20:18:16
>>203
「スレッドクラス」「子メソッド」「コールメソッド」「子クラスがオーバーライド」の意味が
わかりません。

エスパーカモン。
205203:2007/11/17(土) 20:23:21
203です。スレッドだと話がややこしいのでサンプル書きました。
以下で、BとCクラスのtest()を呼んだとき、BとCのtest1()を読んでほしいという質問です。
よろしくおねがいします。

#include <iostream>
using namespace std;
class A{
public:
static void test1(void){cout << "A" << endl;}
void test(void){test1();}
};
class B : public A{
public:
static void test1(void){cout << "B" << endl;}
};
class C : public A{
public:
static void test1(void){cout << "C" << endl;}
};
int main(int argc, char *argv[]){
B *bbb = new B();
C *ccc = new C();
bbb->test();
ccc->test();
delete bbb;
delete ccc;
return 0;
}
実行結果:
A
A
206デフォルトの名無しさん:2007/11/17(土) 20:32:34
>>203
やりたいのはこういうことじゃないか?
静的な仮想関数なんてわけのわからないものは必要ない

class A{ public: virtual void test1(){ cout << "A" << endl; }};
class B{ public: virtual void test1(){ cout << "B" << endl; }};
class C{ public: virtual void test1(){ cout << "C" << endl; }};

void thread_main(void *p){
 static_cast<A*>(p)->test1();
}

int main(int argc, char **argv){
 B *bbb = new B();
 C *ccc = new C();
 _beginthreadex(NULL, 0, thread_main, bbb, 0, NULL);
 _beginthreadex(NULL, 0, thread_main, ccc, 0, NULL);
 ....
}
207デフォルトの名無しさん:2007/11/17(土) 20:34:14
>>205
static を virtual に変えて終了。

Windows API 関係ないなら C/C++ スレいけば?
208デフォルトの名無しさん:2007/11/17(土) 20:46:05
>>205
thisポインタで自分を取り戻すんだ!
209203:2007/11/17(土) 20:53:03
203です。
>>207,206
_beginthreadexで実行する関数が、GlobalかStaticの制限があるのです。
また、スレッドクラスを継承するクラスは、簡単に使えるようにしたかったのです。
わけあって、MFC等のライブラリを使用できないのです。
>>208
thisを渡す方法も検討したのですが、これも上記Win32APIの理由で・・・

C++すれ逝って来ます。どうもです。
210デフォルトの名無しさん:2007/11/17(土) 20:55:58
>>209
> _beginthreadexで実行する関数が、GlobalかStaticの制限があるのです。

嘘だろ?どこに書いてある?

_beginthreadex のせいでこんなことになってるなら C++ スレに逝っても
迷惑なだけだろう。
211デフォルトの名無しさん:2007/11/17(土) 20:59:00
>>209
>thisを渡す方法も検討したのですが、これも上記Win32APIの理由で・・・ 

どの理由だよ
thread_mainはグローバル関数なんだから制限の範囲内じゃん
212デフォルトの名無しさん:2007/11/17(土) 21:08:43
>>201
カスタムリソースにも興味があったのでFindの方やってみようかなと思って
アドバイスありがとう、やってみます
213デフォルトの名無しさん:2007/11/17(土) 21:32:25
class A {
public:
virtual unsigned threadProc () = 0;
static unsigned threadProcStatic (void * arglist) {
return ((A *)arglist)->threadProc(); }
void Start () {
_beginthreadex(threadProcStatic, this); // 引数適当 }
};
class B : public A {
public:
virtual unsigned threadProc () { // なんか }
};
こんな感じじゃ駄目なのか? >>209
214203:2007/11/17(土) 22:14:30
203です。Win32APIよくわかってなくてスイマセン。

>>210
 _cdeclか_clrcallで渡すことが規約のようです。global or 非staticなメンバ関数を渡せるなら教えてください。
>>211
 混乱しててスイマセン。_beginthreadexとthisをどううまく使えば良いのかわかりませんでした。
>>213
 ありがとうございます!これで動きました!一度staticな関数を噛まして非staticを呼ぶのですね。

皆様どうもありがとうございました。
215デフォルトの名無しさん:2007/11/17(土) 22:32:28
>>214
>213 は >206 と同じことなわけだが。
216デフォルトの名無しさん:2007/11/17(土) 23:28:01
>>195
>ANSI版は、文字数とバイト数がバラバラというか。。
>ダブルバイト文字とシングルバイト文字が一緒くたでわかりにくいというか・・
それが、可変長であるダブルバイト文字列というもの。
それに嫌気がさしたから、UNICODEは1文字が固定長になっている。
#というはずだったが現実そう上手くは行かず。

>>196
ANSIだとchar型、UNICODEだとwchar_t型でどれだけの要素数を占めるのかと考えればよい。
217デフォルトの名無しさん:2007/11/18(日) 00:01:51
>>215
206は再利用ということを考えてないっぽい
218デフォルトの名無しさん:2007/11/18(日) 00:02:44
このようなのを作りたいんですが、どのような関数を使えばできますか?

ttp://www.hsjp.net/upload/src/up5686.jpg
219デフォルトの名無しさん:2007/11/18(日) 00:08:52
CreateListViewMitainaControl()
220デフォルトの名無しさん:2007/11/18(日) 00:10:59
>>214
>>210は間違っている気がするな
221デフォルトの名無しさん:2007/11/18(日) 00:12:32
>>219
ありがとう。そんな便利な関数があるんだね
CreateListViewでググって勉強してくる
222デフォルトの名無しさん:2007/11/18(日) 00:12:37
>>219
Mitainaワロタw
223デフォルトの名無しさん:2007/11/18(日) 07:03:24
>>199
やっぱり無いですか。調べても出てこないわけだ
エラー無くす方向で頑張ってみます
224デフォルトの名無しさん:2007/11/18(日) 08:12:52
>>198-199
無いこともない。joySetCaptureでググれ。

といっても、これを使ったところで全く解決にはならないけどな。
結局自分の代わりにポーリングして監視してくれるだけ。

ゲームパッドはキーボードやマウスのようにmake/breakコードを
送信するいわゆる割り込みデバイスではないから、能動的に
状態の変化を受け取るのは不可能。
225デフォルトの名無しさん:2007/11/18(日) 08:47:25
画面上の任意のテキストを右クリックして、文字列を取得するにはどうしたらよいでしょうか。
Babylon ttp://www.babylon.com/jpn/ のような感じで、Webブラウザに表示されたWebコンテンツでも、
ウィンドウのタイトルの文字列でも、自由にテキストを取得できるようにしたいです。
調べた限りでは、クリックした座標を元にウィンドウハンドルを取得し、該当する文字列を*丸ごと*取得することはできます。
しかし、*クリックした付近の文字列*を取得することが必要なのです。何かよい方法はありますでしょうか。
226デフォルトの名無しさん:2007/11/18(日) 09:09:23
先に言っておくが汎用的な方法は無い

テキストが表示されてるのがEDITクラス(エディットコントロール)なら
EM_GETSELで選択範囲を取れるから
WM_GETTEXTでテキストを取ってから選択範囲を切り出せばいい

ブラウザの場合は表示されてるのはキャプションじゃないのでもっと別の方法が必要になる
具体的には
IWebBrowser2→IHTMLDocument::selection→
HTMLElement::createTextRange→IHTMLTxtRange::findText
って感じで取る

まあ無理だろう
227デフォルトの名無しさん:2007/11/18(日) 09:35:55
Babylonは画面上の「画像」をOCRで読み取ってる
だからIEだろうがFirefoxだろうが、画像中の文字だろうが読み取れる

同等の物を作るのは相当な困難が予想されるが、まぁがんばれw
228デフォルトの名無しさん:2007/11/18(日) 10:32:19
>>227
>Babylonは画面上の「画像」をOCRで読み取ってる
これ、まじ?
("O(ptical)"では無いだろうというツッコミは置いといて、)
ほんとに、画像→文字認識してるの?
229デフォルトの名無しさん:2007/11/18(日) 10:38:13
>>228
Babylonの説明にそう書いてあるだろう
例に出してるものくらいちゃんと調べろよw
230228:2007/11/18(日) 10:48:08
>>229
ごめりんこ
231デフォルトの名無しさん:2007/11/18(日) 11:01:02
どこの誰が書いたかわからんヨタかもしれん話をいちいち調べるかよw
232158:2007/11/18(日) 11:05:38
昨日の158です。再び助けて下さい。

http://i-bbs.sijex.net/imageDisp.jsp?id=gtrgtr&file=1195351075500o.jpg
ダイアログのボタンを押して、メッツセージBoxを表示させました。

これを、異なるダイアログを表示させたいです。
例 http://i-bbs.sijex.net/imageDisp.jsp?id=gtrgtr&file=1195351124662o.jpg

表示させる記述と方法がわかりません。
出来れば具体的な記述をしてくれると有り難いです。
どなたか、ご教授お願いします。
233158:2007/11/18(日) 11:09:45
昨日の記述
>>158
>>159
>>160

助けてくれた神
>>164
234デフォルトの名無しさん:2007/11/18(日) 11:12:15
>>231=馬鹿
235デフォルトの名無しさん:2007/11/18(日) 11:18:43
>>232-233
だからMFCはスレチだっつーの
236デフォルトの名無しさん:2007/11/18(日) 11:59:39
>>232
普通にボタンがクリックされたメッセージ処理に、DialogBoxかDialogBoxParamを呼び出せばいいだけじゃないの?
昨日の質問というのは見てないので分からんけど、メッセージボックスだってDLL内でリソース確保して
DialogBoxParam関数を呼び出しているだけのような気がする
モーダルダイアログボックス
237デフォルトの名無しさん:2007/11/18(日) 12:05:44
>>232
ダイアログから複数のモードレスダイアログを開くサンプルを、
C+Win32で書いてみたぞ。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5289.zip
サブダイアログは、管理を楽にするために、
一度作成されると閉じても非表示になるだけの仕様。
宿題のメインはここじゃないのだろうから、こんなもんでいいんじゃね?
238デフォルトの名無しさん:2007/11/18(日) 12:16:12
宿題お願いすると簡単に答えてくれるスレはここですか?
239デフォルトの名無しさん:2007/11/18(日) 12:26:45
宿題スレでやれ
240158:2007/11/18(日) 14:04:35
>>236
>>237様 他
有難う御座います・・・
けれど、駄目だ Orz 分け分からないです。

void CKadai1119Dlg::Onmaru()
{
// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
//MessageBox("○の表示");
DialogBox(hInst, (LPCTSTR)IDD_maru, hWnd, (DLGPROC)About);

}

IDD_maru ダイアログを新たに作成し、取りあえず付けました。
当然エラー 
C:\Documents and Settings\あ\デスクトップ\kadai1119\kadai1119Dlg.cpp(178) : error C2065: 'hInst' : 定義されていない識別子です。
C:\Documents and Settings\あ\デスクトップ\kadai1119\kadai1119Dlg.cpp(178) : error C2065: 'hWnd' : 定義されていない識別子です。
C:\Documents and Settings\あ\デスクトップ\kadai1119\kadai1119Dlg.cpp(178) : error C2065: 'About' : 定義されていない識別子です。
241158:2007/11/18(日) 14:08:11
以上のエラーが出ています。
根本的に知識が足りないです。
サンプルプログラムや文献を漁ってみます。

とても、237様に感謝してます。参考にして頑張ります。
242デフォルトの名無しさん:2007/11/18(日) 15:02:06
MFCで無意味にDialogBoxなんてAPIを使おうとする馬鹿初めて見た

>>241
いい加減こっち行けつってるだろ
日本語読めんのか?

■MFC相談室 mfc18d.dll■
http://pc11.2ch.net/test/read.cgi/tech/1185917008/
243デフォルトの名無しさん:2007/11/18(日) 15:02:35
基礎からやれってことだ
横着したって無駄

ここは宿題スレではない
244デフォルトの名無しさん:2007/11/18(日) 16:00:50
俺は、応援してるぞ158w
245デフォルトの名無しさん:2007/11/18(日) 16:07:57
>>244
自演乙
246デフォルトの名無しさん:2007/11/18(日) 16:20:19
      __ 
     /__.))ノヽ
    .|ミ.l _  ._ i.)    
   (^'ミ/.´・ .〈・ リ   
   .しi   r、_) |   しゃぶらないか?
     |  `ニニ' /     
    ノ `ー―i´     
 / ̄    '   ̄ヽ
/   ,ィ -っ、    ヽ  
|  / 、__う人  ・,.y i   
|    /     ̄ | |  
ヽ、__ノ       |  |  
  |     。   | /  
  |  ヽ、_  _,ノ  丿
  |    (つ)   |
  |    / ヽ   |
247デフォルトの名無しさん:2007/11/18(日) 16:23:25
>>240
デスクトップwww
248デフォルトの名無しさん:2007/11/18(日) 18:25:09
がんばれ158w
249デフォルトの名無しさん:2007/11/18(日) 18:54:46
エディットボックスを透明にすることは出来ますかね?
250デフォルトの名無しさん:2007/11/18(日) 18:59:10
非表示にすればいい
251デフォルトの名無しさん:2007/11/18(日) 19:11:18
頭いいな
252デフォルトの名無しさん:2007/11/18(日) 19:25:23
間違えました。
透明な背景を持つようにするにはどうしたらいいですかね?
253デフォルトの名無しさん:2007/11/18(日) 19:34:23
レイヤードウィンドウでカラーキーを設定する
254デフォルトの名無しさん:2007/11/18(日) 21:05:18
透明なエディットボックスって何の役に立つの?
255デフォルトの名無しさん:2007/11/18(日) 21:13:38
仕事中に官能小説でも書きたいんジャマイカ?
256デフォルトの名無しさん:2007/11/18(日) 21:19:35
ググッてるんですが、中々難しいです。
>254
機能的にはなんの役にも立ちません。
しかし、描画してあるビットマップがエディットボックスの背景色と重なるのは少し気になります。
257デフォルトの名無しさん:2007/11/18(日) 21:59:08
1. WS_EX_TRANSPARENTを設定する
2. WM_CTLCOLOREDITでNULL_BRUSHを返す

これで透明にならなければEditコントロール自体の問題だからMSに文句言うか諦める
258デフォルトの名無しさん:2007/11/18(日) 23:32:39
.NETでも探しているのですが、Win32APIでも探しています。

Windowsのユーザーアカウントの一覧リストをプログラム上で表示して
そこからアカウントを選択するようなことをする場合、ユーザーアカウントの
リストを得るためのクラスやAPIがあればうれしいのですが、どのようなものがある
でしょうか?

また、そのリストを、Domain上のユーザーアカウントに対しても取得したい
場合にも有効なクラスやAPIであれば尚ありがたいです。何卒よろしくお願いします。
259デフォルトの名無しさん:2007/11/19(月) 00:07:56
static HBRUSH hBrush;

switch (msg) {
case WM_CREATE:
hBrush = CreateSolidBrush(123);
hEdit = CreateWindowEx(WS_EX_CLIENTEDGE,"EDIT", "",
WS_CHILD | WS_VISIBLE | WS_BORDER | ES_AUTOHSCROLL,
100, 10, 200, 25, hWnd, (HMENU)ID_EDIT, hInst, NULL);
SendMessage(hEdit, EM_SETLIMITTEXT, (WPARAM)63, 0);

case WM_CTLCOLOREDIT:
SetBkColor((HDC)wParam, 456);
return ((LRESULT)hBrush);
break;
こうですかね?
260デフォルトの名無しさん:2007/11/19(月) 00:09:20
標準機能では背景を透過させることは出来ない。
以上
261デフォルトの名無しさん:2007/11/19(月) 00:16:47
dllから、そのdllを読み込んだexeにメッセージを渡したいのですが
どちらもウインドウを持たない場合はどのような手段が考えられるでしょうか。
262デフォルトの名無しさん:2007/11/19(月) 00:23:40
メールを送信する
263デフォルトの名無しさん:2007/11/19(月) 01:05:11
メモリマップトファイル
アトム
264デフォルトの名無しさん:2007/11/19(月) 01:26:11
>>261
コールバック関数用意しとけばいいんじゃね?
265デフォルトの名無しさん:2007/11/19(月) 01:55:32
非同期でよければexeからdll呼び出すときに変数のポインタ渡せばいいんじゃない?
コールバックが一番確実だろうけど。
266デフォルトの名無しさん:2007/11/19(月) 02:10:55
>>259
hBrush = CreateSolidBrush(123);
SetBkColor((HDC)wParam, 456);

ナンダコレw
267デフォルトの名無しさん:2007/11/19(月) 07:00:16
Process Explorerでプログラムのsuspendとresumeが可能なんですが
どんなAPIを使ってるんでしょうか?
268デフォルトの名無しさん:2007/11/19(月) 07:18:36
ねいてぃう゛API
269デフォルトの名無しさん:2007/11/19(月) 09:03:22
スレッドを列挙してSuspendThread連打
270デフォルトの名無しさん:2007/11/19(月) 13:18:16
たぶんNtSuspendProcess
調べてもないけど
271261:2007/11/19(月) 14:22:54
>>262-265
レスありがとうございます!
コールバックを実装してみようと思います。
272デフォルトの名無しさん:2007/11/19(月) 17:31:21
リソースからではなく、ファイルからアイコンを取得してイメージリストに
追加したいんですが、どういう方法をとればいけるんでしょうか。
273デフォルトの名無しさん:2007/11/19(月) 17:37:54
LoadLibraryで開いて、LoadIconなりLoadImageなり
274デフォルトの名無しさん:2007/11/19(月) 17:55:20
すいません、dll内のものじゃなくて、iconファイルやbmpからです。
275デフォルトの名無しさん:2007/11/19(月) 18:39:23
LoadImage で LR_LOADFROMFILE
276デフォルトの名無しさん:2007/11/19(月) 19:26:25
>>275
ありがとうございました。
解決しました。
277デフォルトの名無しさん:2007/11/19(月) 20:09:40
透過出来ないのはなぜなんですか?
278デフォルトの名無しさん:2007/11/19(月) 20:11:24
何が?
279デフォルトの名無しさん:2007/11/19(月) 20:15:08
人体
280デフォルトの名無しさん:2007/11/19(月) 20:28:59
人体より衣服を透過したい
281デフォルトの名無しさん:2007/11/19(月) 20:31:50
夜店で売ってるよ
282デフォルトの名無しさん:2007/11/19(月) 20:54:13
>>280
ユーザーモードでは他人の衣服を透過させる事はできない
まずはターゲットに対しての特権取得を行う必要がある
283デフォルトの名無しさん:2007/11/19(月) 21:17:45
>>282
どうあがいても、無理ってことですか?
284デフォルトの名無しさん:2007/11/19(月) 21:39:50
衣服の透過は実装例とか見つからないので詳しくはわからないけど、
管理者権限でも衣服にアタッチできないんなら諦めたほうが素直じゃないか?
285デフォルトの名無しさん:2007/11/19(月) 22:13:16
透過した衣服を着てくれる彼女を作ればいいよ
286デフォルトの名無しさん:2007/11/19(月) 22:22:54
境界線をクリックした時に出る
変な網目のようなバーを描画する関数ってあるんでしょうか?
287デフォルトの名無しさん:2007/11/19(月) 22:27:49
あるといえばあるし、ないと言えばない。
あらゆるプログラムは関数を組み合わせて書く。
288デフォルトの名無しさん:2007/11/19(月) 23:15:04
>>286
DrawFocusRect
289デフォルトの名無しさん:2007/11/20(火) 01:53:40
>>286
白黒のブラシを作って、それで反転させる。
290デフォルトの名無しさん:2007/11/20(火) 06:43:28
1つのアプリでコンソールを複数表示したいのですが、どうすればいいですか?
stderr用とかstdout用とかにわけたいんですが。
291デフォルトの名無しさん:2007/11/20(火) 07:30:24
コンソールは各プロセスに 1 つしか割り当てることができません。
すでにコンソールを持っているプロセスが AllocConsole 関数を呼び出すと失敗します。
FreeConsole 関数を使って現在のコンソールからプロセスを切り離すと、
AllocConsole 関数を呼び出して新しいコンソールを作成することができます。
AllocConsole 関数は、新しいコンソールの標準入力ハンドル、標準出力ハンドル、
標準エラーハンドルを設定することもできます。
標準入力ハンドルはコンソールの入力バッファのハンドル、
標準出力ハンドルと標準エラーハンドルはコンソールの画面バッファのハンドルです。
ハンドルを取得するときは、GetStdHandle 関数を使います。
この関数は主に、グラフィックスアプリケーションでコンソールウィンドウを作成するときに使います。
グラフィックスアプリケーションは、コンソールなしで初期化します。
コンソールアプリケーションは、切り離されたプロセスとして作成する
(CreateProcess 関数を呼び出すときに DETACHED_PROCESS フラグをセットする)
場合を除いて、コンソール付きで初期化するのが普通です。

ttp://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpfileio/html/_win32_allocconsole.asp
CreateConsole
AllocConsole
FreeConsole
292デフォルトの名無しさん:2007/11/20(火) 08:25:51
コンソールを持つ子プロセスを複数用意して
CreateProcessの時に親プロセスのstderrやらstdoutをそれぞれのstdinに当ててしまえば可能かも名
293デフォルトの名無しさん:2007/11/20(火) 09:41:19
ブラウザのお気に入りとかのウィンドウのサイズを変える境界線みたいなのってどうやって作るんですか?
境界線を移動できるオプションをウィンドウに設定しても、動くのは一つのウィンドウだけで、
その他のウィンドウはそれに反応してリサイズされないですよね?あの境界線ってどうやって作るのでしょうか?
294デフォルトの名無しさん:2007/11/20(火) 09:47:10
リサイズされるたびに再計算してるだけ
295デフォルトの名無しさん:2007/11/20(火) 10:34:59
>>293
「スプリッタウィンドウ」 で ググれ
296デフォルトの名無しさん:2007/11/20(火) 13:03:37
>>288 >>289
ありがとう、試してみます
297デフォルトの名無しさん:2007/11/20(火) 14:21:09
>>295
ありがとうございます
298デフォルトの名無しさん:2007/11/20(火) 14:24:56
でも画面DCに反転ブラシで書く方法はAeroGlass環境だとクソ重くなるぞ
スプリッタならエクスプローラみたいにダイレクトにサイズ変更するようにしたほうがいい
299デフォルトの名無しさん:2007/11/20(火) 15:48:34
普通はスプリッタウィンドウの中に子ウィンドウを置くだろ
300デフォルトの名無しさん:2007/11/20(火) 20:19:01
スプラッタ?
301デフォルトの名無しさん:2007/11/20(火) 20:52:48
バケラッタ!
302デフォルトの名無しさん:2007/11/20(火) 20:58:28
(/O^)/
303デフォルトの名無しさん:2007/11/20(火) 20:59:44
はらへった
304デフォルトの名無しさん:2007/11/20(火) 23:08:21
hDCはEndPaintで開放されるのでしょうか?


case WM_PAINT:
// クライアント領域を再描画する処理
hDC = BeginPaint(hWnd, &ps);
TextOut(hDC, 0, 0, s, lstrlen(s));
EndPaint(hWnd, &ps);
return 0;
305デフォルトの名無しさん:2007/11/20(火) 23:09:32
そうだよ。PAINTSTRUCTの中にhDCが保持されているので、
そこからEndPaintは解放するデバイスコンテキストを見付ける。
306デフォルトの名無しさん:2007/11/20(火) 23:20:22
なるほど、そういうことだったのですね
デバイスコンテキストはプロシージャを抜けるまでに開放しないと
やばいことになる(どうやばいのかは知りませんが)と聞いていたので
どこで開放してるのか必死になってさがしまつた
307デフォルトの名無しさん:2007/11/21(水) 12:56:48
しかしPAINTSTRUCTの中のhdcと同じもの返すって普通に考えたら謎な実装だな。
文字列系関数で渡したバッファのポインタそのまま返すのと似た感じでコーディング楽にするためなんだろうか。
308デフォルトの名無しさん:2007/11/21(水) 13:54:58
>>307
BeginPaint の動作を勘違いしていると思う・・・
309デフォルトの名無しさん:2007/11/21(水) 14:01:02
そうか?
>>307はpsのメンバにもhdcあるのに、戻り値でも返してるって言ってるだけでは?
310デフォルトの名無しさん:2007/11/21(水) 14:32:29
確かに
別に戻り値は普通にT/Fで良いんだけどな

いいけどさ
311307:2007/11/21(水) 14:37:28
>>308
>>309の通り。

かなりくだらないレベルかもしれんが、PAINTSTRUCTとHDCを両方定義するのが無駄と思って
戻り値は無視(NULLチェックだけ)してPAINTSTRUCTのhdcだけを使うようにしてる。
312デフォルトの名無しさん:2007/11/21(水) 15:24:07
VBのWithのようなものがあったら俺もそうするな。
まあ今でもPAINTSTRUCTの変数名はいつもたった2文字、psだけど。
313デフォルトの名無しさん:2007/11/21(水) 16:42:38
Windows Version 1 の頃の
TextOut(BeginPaint(hWnd, &ps), 0, 0, s, lstrlen(s));
の名残
314デフォルトの名無しさん:2007/11/21(水) 18:43:50
色はつけれるけど、透過ができねぇぇぇえええ!!!
315デフォルトの名無しさん:2007/11/21(水) 18:53:36
つGDI+
316デフォルトの名無しさん:2007/11/21(水) 19:01:43
hdcはWM_PAINTのWPARAMで渡される訳だが
317デフォルトの名無しさん:2007/11/21(水) 19:14:53
>>316
一体いつの時代だ?
http://msdn2.microsoft.com/en-us/library/ms534901.aspx
wParam 
This parameter is not used.
318デフォルトの名無しさん:2007/11/21(水) 19:35:11
>>316
それは WM_PRINT じゃ?
319デフォルトの名無しさん:2007/11/21(水) 19:37:50
WM_PRINTと勘違いしてないか?
320デフォルトの名無しさん:2007/11/21(水) 20:28:56
>>317
URL貼るなら最後まで読めよw

> For some common controls, the default WM_PAINT message processing checks the wParam parameter.
> If wParam is non-NULL, the control assumes that the value is an HDC and paints using that device context.
321デフォルトの名無しさん:2007/11/21(水) 20:38:07
そんなイレギュラーな仕様は常用すべきではないだろう
322デフォルトの名無しさん:2007/11/21(水) 20:58:36
>>321
お前英語苦手だろw

もう少し詳しく説明されてる古いWin32SDKヘルプの説明を貼ってやろう
> Handle to the device context to draw in. If this parameter is NULL, use the default device context.
> This parameter is used by some common controls to enable drawing in a device context other than the default device context.
> Other windows can safely ignore this parameter.
323デフォルトの名無しさん:2007/11/21(水) 22:11:02
何にせよまずはBeginPaintが基本ということでいいのでは?
324デフォルトの名無しさん:2007/11/21(水) 23:09:27
325デフォルトの名無しさん:2007/11/22(木) 15:20:45
エクスプローラでマイコンピュータを開くと表示される
「ローカル ディスク」や「CD ドライブ」といった文字列を取得するには
どうすればいいのでしょうか?
30分以内に小倉優子ばりのおっとりキャラで答えてください
326デフォルトの名無しさん:2007/11/22(木) 15:23:32
shell32.dllからGetResource
327デフォルトの名無しさん:2007/11/22(木) 15:36:31
SHGetFileInfoで取れぬのか?
328デフォルトの名無しさん:2007/11/22(木) 15:41:26
>>327
おおいけそうな予感
ありがとー☆ミ
329デフォルトの名無しさん:2007/11/22(木) 17:28:11
330デフォルトの名無しさん:2007/11/22(木) 17:37:49
割り込んで申し訳ないのですが、教えてください。
DirectX全画面のゲームの上から、文字や画像を表示する方法はないでしょうか?
(レイヤードウィンドウとかはダメでした。。。)
331デフォルトの名無しさん:2007/11/22(木) 18:36:06
グラフィックカードに直接アクセスして
描画領域くりぬいてるから駄目なんじゃない?
332デフォルトの名無しさん:2007/11/22(木) 18:42:35
よくチートツール類がやってる方法:

プロセスに潜り込んでIDrectDraw***を乗っ取り、そのBlt()あるいはBltFast()に割り込んで自分で書く。
333デフォルトの名無しさん:2007/11/22(木) 19:19:22
>>330
俺は普通に枠なしウィンドウで文字表示したことあるけど
べつにその画面内に描画したいわけじゃないんだろ
334デフォルトの名無しさん:2007/11/22(木) 19:37:41
330です。
説明不足ですんません&ありがとうございます。

よくMODツールなんかで見かけるやつです。
(レースゲームなんかでスピードメータを追加する改造など)

でもどうやったら、DirectDraw***のオブジェクトを乗っ取れるか?
それができたらやりたい放題ですね。
そこをぜひぜひお願い申し上げます。

(僕のプログラミングレベルでは・・
デバイスコンテキスト取ってDrawText、BitBltぐらいしかできないっす。)
335デフォルトの名無しさん:2007/11/22(木) 19:47:33
そのレベルじゃ厳しすぎるだろ・・・
336デフォルトの名無しさん:2007/11/22(木) 20:06:50
>>334
(1) APIフックで CreateDirectDrawの類をフックして順次wrapperオブジェクトを返す
(2) 途中まで同じで、wrapperは使わず IDirectDraw9Device 等の vtbl を書き換える
のどっちかかな。

APIフックの仕方やvtblの書き替え方を自分で見つけられる程度の実力があれば、
地味にやってけばできるでそ。
337デフォルトの名無しさん:2007/11/22(木) 20:41:49
334です。
>>335 やっぱり?
>>336 ありがとうございやーす。

とりあえず正しい方向へ行けるのでホッとしました。
あとは学習あるのみ・・・
338デフォルトの名無しさん:2007/11/22(木) 21:05:42
>>337
dxwndのソースが参考になるかもな。ならんかも知れんが。
339デフォルトの名無しさん:2007/11/22(木) 21:28:37
DirectDrawって・・・
もう今じゃほとんど使われていないぞ
340デフォルトの名無しさん:2007/11/22(木) 21:29:20
DWMをXPでいぢりたひ
341デフォルトの名無しさん:2007/11/22(木) 21:30:23
>>338
中に「int HookDirectX(TARGETMAP *target)」こんな関数あったよ。
モロです。
地道にやってたら2週間かかってたかも
嬉しいんだけど、ちょっとはずかしい。
342デフォルトの名無しさん:2007/11/22(木) 23:54:47
>>337
ぶっちゃけTaksiが全てのソースを公開してるんだがな
343デフォルトの名無しさん:2007/11/23(金) 00:18:16
CはJavaとかとちがってガベコレがないから
プログラマがすべてリソースの開放をしなければならないと聞いたのですが
どの入門サイトもそれらしいコードがないのですがなぜでしょうか?
最初にメッセージボックスを表示するサンプルが多いようですが
メッセージボックスを開放する処理はどうすればいいのでしょうか?
また、ウインドウを作成したときもPostQuitMessageを送るだけで
その後ウインドウを開放するようなコードがないHPばかりなのですが
344デフォルトの名無しさん:2007/11/23(金) 00:19:51
>>343
ネタだよな?そうだよな?
345デフォルトの名無しさん:2007/11/23(金) 00:44:16
>>343
リソースの解放なんて必要ないよ。
一部の特殊なリソースを除けば、プロセス終了で、OSが全て片づけてくれる。
346デフォルトの名無しさん:2007/11/23(金) 00:45:20
>>343
malloc/freeやnew/deleteというのがあるじゃないか。
GetBufferしたらReleaseBufferしなきゃならないとかもそう。
ファイルは開いたら閉じるのだってリソースの解放だ。

メッセージボックスの件はネタだと信じたい。
347デフォルトの名無しさん:2007/11/23(金) 00:58:25
>どの入門サイトもそれらしいコードがない
>その後ウインドウを開放するようなコードがないHPばかりなのですが
文面から察するに経験豊富というわけではないだろうから、
「それらしい」や「するような」という判断自体が怪しいが
このレスからじゃあどのページをもってそう判断しているのかわからない

>Cは……プログラマがすべてリソースの開放をしなければならない
というのはC言語としての話であってWin32APIの話ではない。たとえば
>その後ウインドウを開放するようなコードがないHPばかりなのですが
の場合、「ウインドウを開放する」というコーディングはWinAPIとして要求してないと思われる。
(これもどのコードについて言っているのか解らないので推測だが)

まともなページであれば、APIとして開放しなければならないリソースはAPIの作法で開放されている。
ただその作法を知らないのであれば開放のコードは見つけられないかもしれない。
( HANDLE hFile = malloc(...) / free(hFile) なんてしないので)

なので勉強しろ。そして調べろ。
348デフォルトの名無しさん:2007/11/23(金) 01:01:17
論文がはかどらなくてムシャクシャして書いた。
開放がすべて誤字であることに気づいたが反省はしていない。あすも平日だがまだがんばる。
349デフォルトの名無しさん:2007/11/23(金) 01:01:27
メインスレッド内でCreateThreadで作成した複数の副スレッドのうちの特定の一つのスレッドを、
メインスレッドから停止(停止っていってもいい?スレッドを消したい)させるにはどうしたらいい?
ExitThreadでは特定スレッドを別スレッドから狙い打ちにできないような???
ねぇどうすればいい??
350デフォルトの名無しさん:2007/11/23(金) 01:12:58
>>348
明日は休日ですよ……
351デフォルトの名無しさん:2007/11/23(金) 01:29:16
hoge.exe: user error (GetClientRect: ヲ」ヲ マ・!ケgY
(error code: 578))
ってどういう意味のエラーなのでしょうか?
一部の文字化けは元からです。
コンパイル環境:mingwで g++ hoge.c -mwindow
352デフォルトの名無しさん:2007/11/23(金) 01:34:04
>>349
ExitThreadは呼び出し元のスレッドを終了させる奴だ
別スレッドを終了させるならTerminateThread

ただ別スレッドで作成したリソースが残る可能性があるから
続行判断用のフラグをCreateThread時に渡しておく方がベターだと思う

その場合はフラグの領域が先に開放されないように注意が要るけど
353デフォルトの名無しさん:2007/11/23(金) 01:36:26
>>351
デバッグしなさいw
354デフォルトの名無しさん:2007/11/23(金) 01:44:19
>>352
TerminateThread、そういう関数がありましたか。。
ExitThreadはc標準の_exitthreadみたいなもんなんですね。

>>352さん指摘どおり、たしかに
「TerminateThread is a dangerous function that should only be used in the most extreme cases.」
ってありますね。

やっぱりパラメーターで渡しておくほうがよさげですね。
でもこのやり方嫌いなんだよなぁw なんか副スレッドがいつ本スレッド内のパラメーターの変更をチェックしてるんだよ、と
渡来してみます。ありがとうございました。
355351:2007/11/23(金) 01:52:37
どういう理由かわからないのですが、
実行ファイルを削除してから再コンパイルすると正常に(?)動作しました。
356デフォルトの名無しさん:2007/11/23(金) 05:14:13
_で始まる関数は標準じゃないぜ
これ知らないと俺みたいな一言居士がうるせーから要注意な
357デフォルトの名無しさん:2007/11/23(金) 07:37:18
>>354
排他制御
アトミックオペレーション
358デフォルトの名無しさん:2007/11/23(金) 09:44:32
読み取りだけなら領域が無効になってなきゃ別にいつだって良いだろ
書き込みなら排他制御すべきだが
359デフォルトの名無しさん:2007/11/23(金) 09:55:36
             ____
          /__.))ノヽ
          .|ミ.l _  ._ i.) 
         (^'ミ/.´・ .〈・ リ  
         .しi   r、_) |     チャリーン
           |  `ニニ' /    __ lヽ,,lヽ
          ノ `ー―i´    | |Θ|(    )
        | ̄ ̄ ̄| ̄ ̄|_ |_|_|と   i
        |___|__|_|  |_|  しーJ

            ____
          /__.))ノヽ
          .|ミ.l _  ._ i.) 
         (^'ミ/.´・ .〈・ リ  <ヘンリーはわしが育てた
         .しi   r、_) | 
           |  `ニニ' /    __ lヽ,,lヽ
          ノ `ー―i´    | |Θ|(    )
        | ̄ ̄ ̄| ̄ ̄|_ |_|_|と   i
        |___|__|_|  |_|  しーJ
360デフォルトの名無しさん:2007/11/23(金) 09:58:40
誰だヘンリーってw
361デフォルトの名無しさん:2007/11/23(金) 10:31:49
ビルゲイツ(本名William Henry Gates III)だろ
362デフォルトの名無しさん:2007/11/23(金) 14:32:39
Win32でメニューバーの色を取得したいのですがどうすればいいのでしょうか?
363デフォルトの名無しさん:2007/11/23(金) 14:40:22
getsystemmetrics
364デフォルトの名無しさん:2007/11/23(金) 14:42:00
DWORD menu_color = GetSysColor(COLOR_MENU);
365362:2007/11/23(金) 14:49:42
>>363-364

>>362です。有難うございました。
366デフォルトの名無しさん:2007/11/23(金) 15:31:59
>>365
誰だよwww

>>363-364
ありがとうございます。
367デフォルトの名無しさん:2007/11/23(金) 15:40:52
ツリービューをダブルクリックでは開閉させたくないんですが、
どういう方法をとればいいんでしょうか。
368デフォルトの名無しさん:2007/11/23(金) 17:13:30
サブクラス化してダブルクリックのメッセージを捕まえてreturn 0;をすればおk
369デフォルトの名無しさん:2007/11/23(金) 19:46:11
>>368
やってみます。
ありがとうございました。
370デフォルトの名無しさん:2007/11/23(金) 20:20:42
すでに起動してるアプリケーションに文字列をSendMessageするにはどうすればいいのでしょうか?
FindWindowをしてWM_APPのLPARAMに文字列を乗せて送信してみたところ
誤ったポインタが届いてしまいました
371デフォルトの名無しさん:2007/11/23(金) 20:26:21
WM_COPYDATA
372デフォルトの名無しさん:2007/11/23(金) 20:36:44
ポインタを別プロセスに送っても無意味
>>371かファイルマッピングを使う
373デフォルトの名無しさん:2007/11/23(金) 20:51:36
テキストファイルから複数行の文字列を取り出し
リストビューに表示させるにはどうしたらいいですか?
374デフォルトの名無しさん:2007/11/23(金) 20:51:37
アトムくんじゃダメなの?
375デフォルトの名無しさん:2007/11/23(金) 20:51:47
>>371-372
出来ました!
こんな便利なのあったのかー
ありがとうございました
376デフォルトの名無しさん:2007/11/23(金) 20:57:38
>>373
そりゃテキストファイル開いて、読んで、リストビューコントロールにに登録すりゃいいんでない?
377デフォルトの名無しさん:2007/11/23(金) 21:19:04
複数のBMPを結合して4GBytes以上のAVIファイルを作成するには
どうしたらいいですか?
できればVideo compressorも使いたい。
378デフォルトの名無しさん:2007/11/23(金) 21:20:49
どのように登録すればいいんですか?
379デフォルトの名無しさん:2007/11/23(金) 22:17:05
まずパソコンの電源を入れます
380デフォルトの名無しさん:2007/11/23(金) 22:24:19
>>379
次は?
381デフォルトの名無しさん:2007/11/23(金) 22:25:06
入れました。
382デフォルトの名無しさん:2007/11/23(金) 22:29:17
そしてスタートボタンをクリックします
383デフォルトの名無しさん:2007/11/23(金) 22:31:46
>>373
これって、リストビュー1つのアイテムに複数行表示させるってこと?
ならオーナードローかな、LVS_OWNERDRAWFIXEDあたり
384デフォルトの名無しさん:2007/11/23(金) 22:42:45
>>383
いえ、
テキストファイルから一行ずつ項目を追加したいです。
385デフォルトの名無しさん:2007/11/23(金) 22:49:55
うるせーばかどっかいけ
386デフォルトの名無しさん:2007/11/23(金) 22:51:55
リストビュー使うのにリストビューアイテムの追加の仕方なんて
人に聞くことじゃないでしょ。。。
調べろ禿で終わり
387デフォルトの名無しさん:2007/11/23(金) 22:55:05
あなたがここに書いたとおりに実装すればよい
ただし、そのために何のどのような設計が必要かを検討する
さらにそのために何のどのような設計が必要か検討する これを繰り返す。
言語や実装方法依存しない設計であること、この繰り返しで疑問の余地がなくなるまでコーディングを開始しないことが重要

これが完了すればコーディングなんて一瞬で終わるし、再コーディングなんて手戻りはまず発生しない
388デフォルトの名無しさん:2007/11/23(金) 22:58:36
ここでのレスを参考に分割ウィンドウ作っていたんですが
スクロールバーってオーナードローできないんでしょうか?
境界線を自力描画したせいか普通に置くと
境界線がスクロールバーの下をくぐるんです
389デフォルトの名無しさん:2007/11/23(金) 23:00:37
コーディングして実際に確認しないと、言語や実装方法依存しないことが確認できない。
理論だけで集結するなら、実験をする科学者はいない。
太平洋で核実験をする国もない。
390デフォルトの名無しさん:2007/11/23(金) 23:02:34
>>388
クライアントに直接書かずにウインドウを作ればいい。
391デフォルトの名無しさん:2007/11/23(金) 23:03:09
ReadLinesToListviewItems()
392デフォルトの名無しさん:2007/11/23(金) 23:44:38
>>388
MFCかWTLのソースでも見ろよ
393デフォルトの名無しさん:2007/11/24(土) 00:08:57
フックについて詳しく書かれた書籍はありますか?
ネット上の情報ではあまり身につかないと思うので・・
394デフォルトの名無しさん:2007/11/24(土) 03:38:42
すべてを詳しく網羅したものはない
395デフォルトの名無しさん:2007/11/24(土) 04:35:45
Advanced Windows かなあ
396デフォルトの名無しさん:2007/11/24(土) 10:32:43
フックなんて大して覚えることねーだろ

MSDNの説明読めば各フックが呼び出される状況は把握できるし
そしたらあとは自分で応用方法を考えるだけ
397デフォルトの名無しさん:2007/11/24(土) 10:34:51
APIフックかも知れんよ?
398デフォルトの名無しさん:2007/11/24(土) 10:39:45
>>395
あの分厚いやつですね
本屋でちょっと覗いてこよう
399デフォルトの名無しさん:2007/11/24(土) 15:51:48
タブコントロールをCreateWindowで作成する際に、
TCS_RIGHTJUSTIFYを指定しているのですが、タブが最大まで拡大されません。
どういう原因が考えられますか?
400デフォルトの名無しさん:2007/11/24(土) 18:34:22
マイクロソフトヘルプのhxsファイルはテキストなどに変換できませんか?
401デフォルトの名無しさん:2007/11/24(土) 18:36:30
純正以外のgrepツールや全文検索のインディックスを作りたいんですが
htmlに変換することも難しいです シェアでABC Amber HxS Converter
というのがあるんですが日本語無理で、まとめて変換も出来ずつかえません
402デフォルトの名無しさん:2007/11/24(土) 18:54:02
純正とは?
403デフォルトの名無しさん:2007/11/24(土) 19:02:25
MSDNライブラリをインストールすると入っているMicrosoft Developer Networkが純正ツールです
404デフォルトの名無しさん:2007/11/24(土) 19:50:44
s_hIml = ImageList_LoadImage(hInstance, MAKEINTRESOURCE(IDB_HEADER), 7, 0, CLR_DEFAULT, IMAGE_BITMAP, LR_LOADTRANSPARENT);
Header_SetImageList(ListView_GetHeader(s_hListView), s_hIml);

このようにして登録しておいたリストビューのヘッダのImage(14 x 6)を切り替えようと以下のような関数を作りました。
ところが何度呼び出しても切り替わってくれません…
一体全体どこが間違っているのでしょうか?

BOOL SetColumnState(void)
{
 HWND hHeader = ListView_GetHeader(s_hListView);
 int i;

 for(i = 0; i < Header_GetItemCount(hHeader); ++i)
 {
  HDITEM hdi = {HDI_FORMAT | HDF_IMAGE};
  Header_GetItem(hHeader, i, &hdi);

  if(hdi.fmt & HDF_IMAGE)
  {
   hdi.iImage = 1;
   return Header_SetItem(hHeader, i, &hdi);
  }
 }

 return FALSE;
}
405デフォルトの名無しさん:2007/11/24(土) 20:01:12
すみません自己解決しました
hdi.maskに入れないといけないんですね
1時間も悩んでたのになんてこった…
406デフォルトの名無しさん:2007/11/24(土) 20:39:04
簡単なウェブブラウザ作りたいんですが、何から手を付けたらいいかわかりません。
407デフォルトの名無しさん:2007/11/24(土) 20:41:54
おまいが作るまでも無い。既存のもので充分だ。

ちなみに、下手なウェブブラウザ作るとw3c厨に命を狙われるから覚悟しとけ。
408デフォルトの名無しさん:2007/11/24(土) 20:45:07
>>406
独自レンダリングはどこからやっても簡単にはならないだろうなw
IEコンポーネント使っていいならIEコンポーネントの使い方から調べたらいいなじゃないかな?
409デフォルトの名無しさん:2007/11/24(土) 20:58:50
>>407
目の前の人に厳しくなるってのは、自分の足が引っ張られるからとか、正当化のための理由は確かにあり得ると思うんだけど、こういうアカの他人に厳しい人ってのは、どういう倫理感を持ってるんだか、おれには非常に不思議だ。
410デフォルトの名無しさん:2007/11/24(土) 21:02:31
下手に穴のあるもの作られて
それが原因でウィルスやワームばらまかれて
結局は足を引っ張られることになってる

一番低能で一番迷惑な連中がMSの糞ソフト
411デフォルトの名無しさん:2007/11/24(土) 21:08:48
>>410
それは>>406本人ですか?
412デフォルトの名無しさん:2007/11/24(土) 21:14:30
windows使わなきゃいいじゃん
413デフォルトの名無しさん:2007/11/24(土) 21:27:19
自分は使わなくても世間が使うとその割合が増えて
ウィルスがそっちから流れ込んでくるだろ

最近はやったSARSみたいに
自国だけ閉鎖しててもどうにもならんのだよ

おれはWindows使わないっていうスタンスで
影響受けずに済むのは
ヒッキーだけ
414デフォルトの名無しさん:2007/11/24(土) 21:29:35
>>413
目の前の人に厳しくなるってのは、自分の足が引っ張られるからとか、正当化のための理由は確かにあり得ると思うんだけど、こういうアカの他人に厳しい人ってのは、どういう倫理感を持ってるんだか、おれには非常に不思議だ。
415デフォルトの名無しさん:2007/11/24(土) 21:45:37
>>399どなたかわかりませんか?
416デフォルトの名無しさん:2007/11/24(土) 21:49:31
>>415
使い方を間違っている
417407:2007/11/24(土) 21:50:03
アカの他人に厳しい人って、まさかと思うけど俺のことじゃないよね?
単にコピペネタなのかもしれんが。
418デフォルトの名無しさん:2007/11/24(土) 22:06:10
>>413
mac使えば良いんじゃない?

感染のリスクは比較的低いと思うよ
419デフォルトの名無しさん:2007/11/24(土) 22:09:08
>>413
macなら、ウィルスが流れ込んで来ても、
たいていはWin用だから、せいぜい自分は感染せずに済む
420デフォルトの名無しさん:2007/11/24(土) 22:12:14
>>417
お前の同僚がお前のために作ったツールが穴だらけなのは迷惑かもしれないが、
赤の他人が勉強のためか、vectorに登録するためか、もしくは仕事で作ったのかしらないけど、
彼がどの程度のものを作るのかわかってもいないうちから足を引っ張ろうとするのは倫理的にどうかと思うぞ。
お前に直接迷惑がかかるわけじゃないし、
仮に彼一人が作るのをやめたところで全体的には大して変化はないだろう。
それどころか彼の向上意欲やチャンスすら奪ってしまうことになりかねない。
お前は彼に責任を取れるのか?
文句を言いたいなら実際に迷惑を被った場合だけにしろ。
421デフォルトの名無しさん:2007/11/24(土) 22:13:47
(゚Д゚)ハァ?
422デフォルトの名無しさん:2007/11/24(土) 22:37:47
子ウィンドウをWM_LBUTTONDOWNで親ウィンドウの下に置いて
WM_LBUTTONUPで親の上に戻そうと思ってSetWindowPos()を弄ってるんですが
もしかして親ウィンドウの下に子ウィンドウを置く事はできませんか?
全然下がらなくて困っています
423デフォルトの名無しさん:2007/11/24(土) 23:20:19
>>420
彼乙彼
424デフォルトの名無しさん:2007/11/24(土) 23:45:33
>>416
どういう事でしょうか?

hTabCtrl = CreateWindowEx(0, WC_TABCONTROL, NULL,
   WS_CHILD | WS_CLIPSIBLINGS | WS_VISIBLE | TCS_RIGHTJUSTIFY,
   100, 100, 400, 100,
   hwnd, (HMENU)HTABCTRL, GetModuleHandle(NULL), NULL);

こんな感じで指定するのではないですか?
425デフォルトの名無しさん:2007/11/25(日) 00:16:29
GroupViewスタイルのListViewでグループの開閉(図参照)ってどうやればできるか誰かわかります?
LVGS_COLLAPSEDあたりかと思って試してみたけど変化なし・・・

図 http://www.youlost.mine.nu/html999/img/2298.jpg
426デフォルトの名無しさん:2007/11/25(日) 01:37:37
そりゃLVGS_***ったらGroupItemのスタイルだろ常考

コモンコントロールからの通知はWM_NOTIFYとLVN_***のはず
427デフォルトの名無しさん:2007/11/25(日) 03:06:19
逆引きリファレンスがほしいのですが
http://www.amazon.co.jp/C%E8%A8%80%E8%AA%9E%E9%80%86%E5%BC%95%E3%81%8D%E5%A4%A7%E5%85%A8-500%E3%81%AE%E6%A5%B5%E6%84%8F-%E5%B9%B3%E7%94%B0-%E8%B1%8A/dp/4798006475
を使ってる人いませんか?
ポチるかどうか悩んでるのですが
立ち読みしにいける環境じゃないので困ってまつ
428デフォルトの名無しさん:2007/11/25(日) 03:28:07
C言語スレか推薦図書スレか買ってはいけない書籍スレで聞け
429デフォルトの名無しさん:2007/11/25(日) 09:41:35
なんでこの程度の質問にも答えていただけないのですか?
しかも何故命令口調?
あなたに命令される覚えはありませんが?
430デフォルトの名無しさん:2007/11/25(日) 09:48:01
スレタイ嫁よ白雉
431デフォルトの名無しさん:2007/11/25(日) 09:48:26
スレ違い
432デフォルトの名無しさん:2007/11/25(日) 09:52:24
いや>>428は凄く親切だと思うぞw

普通ならスレ違いの一言で切って捨てられる所を
適切な質問先を示してるんだから。
433デフォルトの名無しさん:2007/11/25(日) 12:48:39
>>427
良書だよ
VC++版とあわせて両方かっとけ
434427:2007/11/25(日) 13:28:26
なんで>>429みたいな成りすましがいるのこのスレ
お前らだまされてるの?
それともだまされてるフリしてんの?
435デフォルトの名無しさん:2007/11/25(日) 13:55:13
鳥が付いてるわけでもなし

なりすましかどうかなんて誰も分からん
436427:2007/11/25(日) 14:04:24
なんでわからないの?
437デフォルトの名無しさん:2007/11/25(日) 14:16:24
>>424
http://msdn2.microsoft.com/en-us/library/bb760549.aspx
>TCS_RIGHTJUSTIFY
>The width of each tab is increased, if necessary, so that each row of tabs fills the entire width of the tab control.
>This window style is ignored unless the TCS_MULTILINE style is also specified.
438427:2007/11/25(日) 14:17:09
俺が本物だ
439427:2007/11/25(日) 14:31:13
そもそもTCS_RIGHTJUSTIFYって
#define 0x0000
だった希ガス
440デフォルトの名無しさん:2007/11/25(日) 14:36:07
コンソールで GetKeyboardState を実行しても戻り値は成功になりますが
引数バッファには結果は何も押していない状態になります。(もちろん色々押しています) 
ただ GetKeyboardState の直前に GetKeyState( 0 ) を実行すると
GetKeyboardState は正常な値が取得できます。
関数説明を見てもさっぱり挙動が理解できません、、
そもそも GetKeyboardState はコンソールで使用できないのでしょうか?
441427:2007/11/25(日) 14:52:09
GetKeyboradStateもGetKeyStateも
メッセージキューが所有する仮想キー情報からキーの状態を取ってくる

メッセージキューはスレッドがUSER32.DLLに属するAPIを最初に呼び出した時に作成される

したがって初めにGetKeyboradStateを呼んだときは
キューが作られた直後なので仮想キー情報は真っ白
442425:2007/11/25(日) 15:23:32
>>426
いや、コードから開閉したいんじゃなくて、開閉できるスタイルに設定したいんです。
>>425の画像のソフト以外で見たことないし自前でやってるのかな?
443デフォルトの名無しさん:2007/11/25(日) 15:35:24
http://msdn2.microsoft.com/en-us/library/aa930491.aspx

>state
>Currently, it can only be the following.

>LVGS_NORMAL
>Groups are expanded, the group name is displayed, and all items in the group are displayed.

どうも使えないっぽい
.NET2.0では利用可能な模様
444デフォルトの名無しさん:2007/11/25(日) 15:37:44
>>441
ありがとうございます。
説明不足でないですが、上記処理は何度も実行するループ部分でして
GetKeyState を入れるか入れないかで、
GetKeyboradState の動作がかわるのが、わけがわからないのです。
どちらもメッセージキューが必要ということは、
やはりコンソールではどちらも使用してはいけないのでしょうか?
_getch だと処理が止まってしまうので回避をしたいのが目的です。
445デフォルトの名無しさん:2007/11/25(日) 15:54:40
GetAsync〜の方を使ってみたら?
446425:2007/11/25(日) 15:57:42
>>443
サンクス。こっちでは何も書いてないんだけど、やっぱ無理かな?
http://msdn2.microsoft.com/en-us/library/bb774769.aspx
使い方は合ってるはずなのにできないってことは無理なのかもしれませんが
447デフォルトの名無しさん:2007/11/25(日) 15:58:09
>>444
コンソールで入力街に入るのを回避したいなら
_kbhitでチェックしてから_getchが常道かと
448デフォルトの名無しさん:2007/11/25(日) 17:14:34
>>437
おぉありがとうございます。TCS_MULTILINEも指定しないと無視されるようですね。
また一つ勉強になりました。しかし、>>439を見て調べたのですがTCS_RIGHTJUSTIFYは
0x0000と定義されてました。これって指定できないということなんですかね???
いくら>>424のようにしても、TCS_RIGHTJUSTIFYはあってもなくても変わりませんよね?
0と論理和とっても変化なしですしね・・・どうすれば・・・
449440:2007/11/25(日) 18:17:38
>>445
同時キーや引数をいっぱい変えて GetAsyncKeyState を実行しまくるのが非効率でしたので
GetKeyboradState が理想でしたが、いろいろ無理そうですので素直に諦めます。

>>447
_getch よりも Get〜による同時押しも欲しかったのですが
いろいろ問題ありそうですんで諦めます 。
アドバイスありがとうございました。
450デフォルトの名無しさん:2007/11/25(日) 19:16:31
>>425
それってツリービューじゃ駄目なの?
451デフォルトの名無しさん:2007/11/25(日) 20:20:21
>>448
デフォルトでそういう動作っていう意味だろう
452425:2007/11/25(日) 20:55:11
>>450
表示の切り替え(アイコンとか詳細とか)が必要なんです。
何とかならんかなぁ
453デフォルトの名無しさん:2007/11/25(日) 20:57:57
>>452
予め自分でデータを持っておいて、ListViewがクリックされた時にその位置に挿入/削除して
擬似的にツリービュー的な動作を再現すればいいと思うが。

ネットで見かけるTreeListViewのサンプルとかがそういう事をしている。
454425:2007/11/25(日) 21:10:19
う〜ん、そうするしかないようですね。
455デフォルトの名無しさん:2007/11/25(日) 22:05:50
或いは詳細表示の時だけTreeViewに切り替えるとか。
456デフォルトの名無しさん:2007/11/26(月) 02:09:51
比較的大きなドキュメントを読み込むときに、一気に読み込まず、一定のサイズごとに
シーケンシャルに読み込んでいくプログラム、例えばIE、でデータの読み込みにしたがって
右側のスクロールバーのスクロールボックスの大きさが小さくなっていく
ああいう動作はどうやって実現してるんだ?
スクロールバーの操作や、つまみ(スクロールボックス)のサイズの調整はできるんだが
読み込み中はスクロールバー自体が消えたようになってしまう。

ファイル読み込み(例えば256Byteずつ)のループ
{
ファイルの読み込み処理
行数を調べて
SetScrollInfo関数で、新しい範囲の設定
}

これでスクロールバーは更新されるはずなんだが・・ダメだ
ファイル全体の読み込み処理の終了の後、ウィンドウ全体を再描画させるとスクロールバーも出現する。

ちなみにクライアント領域の右側につく(WS_VSCROLL)、標準スクロールバーの話です。
SDK
457デフォルトの名無しさん:2007/11/26(月) 02:16:02
>これでスクロールバーは更新されるはずなんだが

されねえよw
それだとループしてる間はWM_PAINTが発生しないから再描画されるわけないだろ

手っ取り早いのは副スレッドで読み込みとスクロールバーの設定をしてInvalidateRectする
そうすればメインスレッドは滞りなく再描画する
458デフォルトの名無しさん:2007/11/26(月) 02:32:52
>>456
ウインドウメッセージを処理してやらなきゃ駄目だよ。
普通はマルチスレッド化、どうしてもスレッドが嫌ならループ内に
メッセージ処理を組み込む。
459デフォルトの名無しさん:2007/11/26(月) 02:34:26
RDW_FRAME
RDW_UPDATENOW
SWP_DRAWFRAME

辺りでぐぐれ
460デフォルトの名無しさん:2007/11/26(月) 02:34:58
それだけならDispatchMessageはさむだけで良さそうだけど
副作用出てくるような操作するときはマルチスレッドにするべき
461デフォルトの名無しさん:2007/11/26(月) 02:36:09
こんな時間に何してんだお舞ら
462デフォルトの名無しさん:2007/11/26(月) 02:41:05
質問に回答してるだけだが、何か?
463デフォルトの名無しさん:2007/11/26(月) 02:45:46
>>446
まだ見てるか分からんけど
http://msdn.microsoft.com/msdnmag/issues/07/08/WindowsCPP/default.aspx?loc=jp

>LVGS_COLLAPSIBLE 状態フラグを使用すると、グループを折りたたんだり展開したりできるようになります。
>グループを折りたたむと、グループに属するリストビュー項目が非表示になります。
>プログラムで LVGS_COLLAPSED 状態フラグを使用すると、グループを折りたたむことができます。
464456です。:2007/11/26(月) 05:27:46
一応、副スレッドでの読み込みでも同じようにやってみたけど×だったorz

>>457
スマソ
書き忘れた
SetScrollInfo();
InvalidateRect();
UpdateWindow();

と、きちんとやってるんだが
もちろんファイルから読み込んだ内容は順次表示されていく
だけど、スクロールバーが消えてしまう
で、これがなぜかわからない

一応ループ部分のソース(つっても分かりにくいと思う。)
do{
ZeroMemory(lpTemp, CHUNK_SIZE);
bRet = ReadFile(hFile, lpTemp, CHUNK_SIZE, &dwRead, NULL);

lstrcat(lppms->lpString, lpTemp);

iLines = StrChrCount(lppms->lpString, TEXT('\n')) + 1;//行数の取得
SendMessage(lppms->hwnd, WM_MY_SETRANGE, 0, (LPARAM)iLines); //メインスレッド内にある、ウィンドウプロシージャに範囲の設定の指示
//LPARAMで範囲の最大値を渡してる
InvalidateRect(lppms->hwnd, NULL, TRUE);
UpdateWindow(lppms->hwnd);
Sleep(100);
}while(dwRead && !lppms->bKill);
465デフォルトの名無しさん:2007/11/26(月) 05:28:24
で、主スレッド内でのメッセージの受け取り
case WM_MY_SETRANGE:
si.fMask = SIF_RANGE;
si.nMin = 0;;
si.nMax = (int)lParam;
SetScrollInfo(hwnd, SB_VERT, &si, TRUE);
return 0;
466デフォルトの名無しさん:2007/11/26(月) 07:11:19
スクロールバーに再描画送ってない
467デフォルトの名無しさん:2007/11/26(月) 08:44:59
スレッドがスリープなりして使用権を返却していない。
468デフォルトの名無しさん:2007/11/26(月) 10:37:47
>>466だと思う
469デフォルトの名無しさん:2007/11/26(月) 11:18:55
仮想リストビューにアイテムを追加するときは
LVN_GETDISPINFOメッセージを監視して自分で追加していくのは解るのですが
どうやってLVN_GETDISPINFOメッセージを発生させるのでしょうか?
通常のリストビューのようにListView_SetItemでいいのでしょうか?
470デフォルトの名無しさん:2007/11/26(月) 11:26:36
アイテム数をLVM_SETITEMCOUNTで設定すれば
画面の更新が必要になると勝手に飛んでくる
471デフォルトの名無しさん:2007/11/26(月) 11:41:54
ある自作メインアプリケーションに「ログイン」の機能を持たせ、
それを起動している最中は他の自作アプリケーションが
そのログインユーザの情報にアクセスできるようにしたいと思っています。
(メインアプリケーション終了時にログインユーザの情報も消す)

そうなると、メインアプリケーション内のログインユーザの情報を
アプリケーション間で共有できるようにしなければいけないとは思うのですが、
このようなグローバルな情報はどのように共有するものなのでしょうか。

感覚的には、「OS内で唯一のインスタンスがあって、みんなでextern参照」
といった使いかたをしたいのですが、
Mutexみたいなものを使って実現できるものなのでしょうか。
なにかよいサンプルなどがあれば、教えていただけると嬉しいです。
よろしくお願いいたします。
472デフォルトの名無しさん:2007/11/26(月) 11:50:55
ファイルマッピングオブジェクト(メモリマップトファイル)

データが短いならグローバルアトムで十分
473471:2007/11/26(月) 12:37:48
>>472
情報ありがとうございます。
両方調べさせていただきました。

メインアプリケーションのプロセスに聞きに行くのではなく、
各アプリケーションがそれぞれ任意のタイミングで
「メインアプリケーションがどこかにセットした現在のユーザ情報」を
自分で見に行くという動きを考えているので、
メモリマップトファイルよりはグローバルアトムのほうが
それに適した実装ができそうですかね。
こっちの方法を勉強してみようと思います。
474デフォルトの名無しさん:2007/11/26(月) 12:48:39
>[メインアプリケーションがどこかにセットした現在のユーザ情報」を
>自分で見に行くという動きを考えているので、
>メモリマップトファイルよりはグローバルアトムのほうが
>それに適した実装ができそうですかね。

たぶん逆
その用途ならメモリマップトファイルの方が楽

アトムだと中身にアクセスするには生成した識別子(=一定ではない)を
SendMessageか何かで他のプロセスに渡さなきゃいけない

メモリマップトファイルは名前(=一定の値)でカーネルオブジェクトを呼び出せるから
何かを渡したりとかは必要ない
475471:2007/11/26(月) 12:56:12
>>474
アトムの識別子って決めうち文字列じゃなかったんですね。
一時的なレジストリみたいなものだと勘違いしてました。
間違った方向に進むところでした。ありがとうございます。
476デフォルトの名無しさん:2007/11/26(月) 13:00:46
>>470
なるほど
数だけ教えてあげれば勝手にやってくれるんですね
解決できました、ありがとうございました
477デフォルトの名無しさん:2007/11/26(月) 13:12:10
>>475
ちなみにその「一時的なレジストリ」を使って実現してもいいんだよ
478425:2007/11/26(月) 13:15:48
>>463
情報サンクス。でもLVGS_COLLAPSIBLEの値がわからないです。
誰か分かる方います?
479425:2007/11/26(月) 13:17:14
てかvista以降って書いてない?
480471:2007/11/26(月) 13:27:29
>>477
レジストリだと、実行中にレジストリエディタで簡単に書いたり消したりできますよね。
もちろんアトムやメモリマップトファイルでも、
本格的にセキュリティ対策するならそのまま使うわけにはいかないでしょうけど、
OS付属のエディタで読み書きできてしまうことくらいは避けておきたいなと思いまして。
481デフォルトの名無しさん:2007/11/26(月) 13:36:04
>>479
じゃあVista以降なんだろう。残念だな。
482425:2007/11/26(月) 13:40:42
そうなんでしょうね、諦めます。
で、次の質問なんですが、ListViewでマウスホイールが回転されたことを取得したいんですけど、
サブクラス化するしかないですよね?
483デフォルトの名無しさん:2007/11/26(月) 13:43:19
他にも方法はあるけど、サブクラス化が一番楽でコストも低いような
484425:2007/11/26(月) 13:54:04
おk、サンクス
485デフォルトの名無しさん:2007/11/26(月) 16:48:58
http://software.nikkeibp.co.jp/software/backno/04apimook1.html
ここのPart3のFileCopyプログラムですが
表示されるべきのメニューが表示されません。。。

COPYやEXITなどのメニューを表示するようにするには
どうすればいいですか?
486デフォルトの名無しさん:2007/11/26(月) 17:03:18
リソースファイル (*.rc) をコンパイルしてリンクしたか?
487デフォルトの名無しさん:2007/11/26(月) 17:38:18
>>486
ご指摘のように
リソースファイルをプロジェクトに追加するのを
忘れていたのが原因だったようです。

表示するようになりました。ありがとうございます。
488デフォルトの名無しさん:2007/11/26(月) 18:56:47
文字列置換や文字列検索に使える関数ってSDKにない?
489デフォルトの名無しさん:2007/11/26(月) 19:01:02
検索や置換のダイアログの表示なら
FindTextやReplaceTextで可能です。
490デフォルトの名無しさん:2007/11/26(月) 19:14:03
>>489
ありがとうございます
FindTextとReplaceTextについて調べてみよ
491デフォルトの名無しさん:2007/11/26(月) 20:10:01
デバッガAがDebugActiveProcessでプロセスBにアタッチした後、
デバッガCがデバッガAのアタッチを強制的にデタッチして
プロセスBにアタッチしなおすことって、出来るんでしょうか?

その過程の間、プロセスBは停止したらダメ、という条件で。

ちょっと分かりにくいですが、要するにデバッガAをデバッガCに
差し替えてしまうことができるか、ということです。(AはCに
ついては何も知らないプログラムなので、連携した動作は
ありません)

デバッガAを強制的に終了するとプロセスBも終了してしまう
ようで、一見すると不可能っぽいのですが。OSは2000〜Vista
です。よろしくお願いします。
492491:2007/11/26(月) 20:11:58
すみません、上げさせてください。

あと、「プロセスBは停止したらダメ」というのは、ようするに
終了は不可と言うことで、ブレーク状態になるのは構いません。
493デフォルトの名無しさん:2007/11/26(月) 20:17:20
XP以降ならDebugActiveProcessStopってのがある。
494デフォルトの名無しさん:2007/11/26(月) 20:34:23
>>493 どうもありがとう
495491:2007/11/26(月) 21:14:53
教えてもらったので早速実験してみました。

WinMain(){
DebugActiveProcessStop(GetCurrentProcessId());
 :
 :
 :
}

ってやってデバッグ実行開始したら、デバッガ(VC8)が
外れると期待したのですが、外れずにそのまま下に
行っちゃいました。

もしかしてDebugActiveProcessStopはデバッグ対象じゃなくて
デバッガのプロセスIDを渡すのかしら? それとも自プロセスが
デバッガから強制離脱することはできない…?

あるいはDebugActiveProcessを呼んだあとに、そのプログラムが
デバッグ対象を切り離す用途で使うのかも。それだと>>491
外部からのデバッガの差し替えはできませんね。

憶測ばかりで申し訳ないですが、このAPI、ググっても細かい
ところがよく分かりませんでした。
496デフォルトの名無しさん:2007/11/26(月) 22:04:52
コレ見た感じだと DebugActiveProcess 呼んだデバッガが自分で
デタッチするときに使うような感じっぽくない?

http://msdn2.microsoft.com/En-US/library/ms679301.aspx
497デフォルトの名無しさん:2007/11/26(月) 22:30:55
ある特定のトップレベル・ウィンドウを、最前面に持ってくるのってSetWindowPos関数?
ほかにも何かいい方法ありますか?
498491:2007/11/26(月) 22:30:58
>>496
情報ありがとう
499デフォルトの名無しさん:2007/11/26(月) 22:57:02
>>497
BringWindowToTopはどう?
500497:2007/11/26(月) 23:48:53
>>499 トン
これもいいな
コードがすっきりした

表に持ってきたウィンドウの再描画が完了したのを検地したのを知る方法ってある?
タイマーで1秒くらい待ってから、ってやってるけどエレガントじゃない
501デフォルトの名無しさん:2007/11/27(火) 00:09:25
FindWindow
502デフォルトの名無しさん:2007/11/27(火) 04:34:26
プログラムの実行中に、ウィンドウが常に最前面に表示されるようにウィンドウスタイルを変更したいです。
SetWindowLong(hwnd, GWL_EXSTYLE, GetWindowLong(hwnd, GWL_EXSTYLE) | WS_EX_TOPMOST);
SetWindowPos(hwnd, 0, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED);
うまくいきません。助けてケロ
503デフォルトの名無しさん:2007/11/27(火) 05:10:48
てかWS_EX_TOPMOSTが付いてれば後ろに引っ込んだりしないだろ

…他にWS_EX_TOPMOSTを持ってるウィンドウがなければ
504デフォルトの名無しさん:2007/11/27(火) 05:17:10
>>502
なんでそこまでいっておいて、SetWindowPosを調べないんだ?
SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE);
これだけでいい。

SetWindowLongはいらない。
505デフォルトの名無しさん:2007/11/27(火) 09:26:31
SetWindowLong入らない?
506デフォルトの名無しさん:2007/11/27(火) 09:39:24
XPの制限ユーザー上で実行するとはProgramFiles以下に書き込めません。
Vistaではこのようなファイル操作はVirtualStoreにリダイレクトされるようです。

実際のプログラムで設定ファイルを保存する場合は、
実行されたパスが読み書き可能なものであるか? Yes→実行されたパスに書き込み
No↓
ユーザーディレクトリ(AppDataなど)を取得し、そこに書き込み

このような動作が必要だと思います。
これをどのwindowsでも確実に動作させるにはどのようなAPIを使えばいいのでしょうか。
507デフォルトの名無しさん:2007/11/27(火) 09:45:01
>>505
CreateWindowExの段階でWS_EX_TOPMOST付けてるなら要らないと思うけど
508デフォルトの名無しさん:2007/11/27(火) 09:45:53
>>506
常にユーザディレクトリに書けばいいやん
509デフォルトの名無しさん:2007/11/27(火) 11:04:14
>実行されたパスが読み書き可能なものであるか? Yes→実行されたパスに書き込み
この考えがそもそも間違い
ユーザーディレクトリに置くかレジストリを使用すべき
510デフォルトの名無しさん:2007/11/27(火) 11:33:00
共用というのであれば、それなりのアクセス権もってAll Usersに置けばいいし。
511デフォルトの名無しさん:2007/11/27(火) 11:37:09
どうしてもやりたければOSのバージョンを取得してやればいいんじゃね
512デフォルトの名無しさん:2007/11/27(火) 12:38:15
>>500
InvalidateRectしてからUpdateWindowすればWM_PAINTが完了するまで待てるけど
あれって他プロセスのウィンドウに使えたかな?
513デフォルトの名無しさん:2007/11/27(火) 12:40:47
WH_CALLWNDPROCRETを見てればWM_PAINTの処理が終わったかは分かる

こんなことでフックするなんて蛇足にも程がある気がするけど
514デフォルトの名無しさん:2007/11/27(火) 13:42:59
この場合、InvalidateRectが無くてもいいでしょう。
UpdateWindowだけで再描画されなくても、WM_PAINTは抜けてるって事だし。
515デフォルトの名無しさん:2007/11/27(火) 14:24:24
インストールせずにスタンドアローンで使うことを想定しているのですが、
万が一ユーザーがProgramFiles以下に置いた場合でも正常に動作させられるようにしたいのです。
516デフォルトの名無しさん:2007/11/27(火) 14:26:44
ユーザーがProgramFiles以下に置いた場合でも置かない場合でも、
常にユーザディレクトリに書いとけばいつでも正常に動作する
517デフォルトの名無しさん:2007/11/27(火) 14:27:36
だったらなおさら、どこに配置されようとAppDataを使うべきだろ
System32に入れる奴だっているかもしれないんだし(もっともXP以前ならそこでも読み書きできるが)
518デフォルトの名無しさん:2007/11/27(火) 14:28:28
>>515
たぶん、あなたが言いたいそれを「スタンドアローン」とは言わないと思う。
Readme にでも注意書きを書いておけば、わざわざ Program Files に
配置するスキルがあるユーザなら、意味をくみ取ってくれるんじぇね?
519デフォルトの名無しさん:2007/11/27(火) 14:31:25
専用のインストーラ・アンインストーラを設けないなら、
ユーザフォルダやレジストリに情報残すと削除がめんどいってのは同意するけども。
520デフォルトの名無しさん:2007/11/27(火) 16:18:05
>>515
気持ちは分かるけど、妙な俺様仕様を作らないほうがいいよ。
OSが推奨する共通の方式に従ったほうが
安全だしセキュアだし管理しやすいし将来の互換性も期待できるし
結果ユーザにとっても使い勝手が良いから。
521デフォルトの名無しさん:2007/11/27(火) 17:35:43
>>503-505
レスありがとう
解決した。
だけど、SetWindowPos に指定するフラグで、HWND_TOPMOSTはドキュメントに載ってるが
HWND_NOTOPMOSTはヘッダー見て初めて知った
最前面化:SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
最前面化解消:SetWindowPos(hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
でOKだた
522デフォルトの名無しさん:2007/11/27(火) 17:36:45
そういやexeあるフォルダのの下にファイル作るプログラム、そのままVistaでちゃんと動いてるなと思って
ファイル探したら、ユーザーの下のVirtualStore\Program Files (x86)\xxx の下にできてたわ。
勝手にマッピングしてくれるみたいだな。
523デフォルトの名無しさん:2007/11/27(火) 17:56:19
>>520
MSが互換性に気をつけると思っているのですか
524デフォルトの名無しさん:2007/11/27(火) 18:02:56
実際気をつけてるよ
525デフォルトの名無しさん:2007/11/27(火) 18:17:32
>>522を下位互換性と呼ばずになんと呼ぶと?
526デフォルトの名無しさん:2007/11/27(火) 18:18:56
>>525
新機能
527デフォルトの名無しさん:2007/11/27(火) 18:28:47
GetSysColorBrush(COLOR_***)の結果と、HBRUSH(COLOR_*** + 1) って使用上で何か違うの?
528デフォルトの名無しさん:2007/11/27(火) 18:46:04
>>524
なぜIEとFirefoxでは表示が異なるのですか?
529デフォルトの名無しさん:2007/11/27(火) 18:51:40
Firefox の仕様準拠度が低いからだな
530デフォルトの名無しさん:2007/11/27(火) 19:06:03
>>527
GetSysColorBrush はブラシのハンドルが返る
HBRUSH(COLOR_*** + 1) ってのは、WNDCLASSEX 構造体のメンバーに入れてると思うが
これはRegisterClassExを呼んだ先でインデックスかブラシのハンドルか判断して
内部でGetSysColorBrushに相当するものを呼んでるだけだろう。
+1なのはインデックス0とNULLを区別するためだなw
531デフォルトの名無しさん:2007/11/27(火) 19:28:39
FillRectとかでHBRUSH(COLOR_*** + 1)入れても動くよな?
532デフォルトの名無しさん:2007/11/27(火) 19:37:24
>>529
違います。
IEの独自仕様のためですよ。
533デフォルトの名無しさん:2007/11/27(火) 19:42:46
違います
仕様が曖昧だからですよ
534デフォルトの名無しさん:2007/11/27(火) 19:43:23
IEの仕様解釈がおかしいのは認めるが、Firefoxも解釈おかしいよ
535デフォルトの名無しさん:2007/11/27(火) 19:53:09
>>532
えーと実際に Firefox で Acid2 とか試したことありますか?
536デフォルトの名無しさん:2007/11/27(火) 19:55:09
ある文字列(改行含む)から、最長行の文字数を返す関数ってあります?
UNICODE/ANSIどっちでも対応できるもので、マルチバイト文字もうまく扱ってくれるもの

前に便利な文字列操作関数っていうサイトを見た希ガスるんだけど、見つからん
537デフォルトの名無しさん:2007/11/27(火) 19:57:02
>>535
Acid2なんて飾りだよ
538デフォルトの名無しさん:2007/11/27(火) 19:58:06
>>536
Win32API に、ですよね。
そういう関数はありません。
539デフォルトの名無しさん:2007/11/27(火) 19:58:23
>>536
等幅フォント?
540デフォルトの名無しさん:2007/11/27(火) 20:06:27
指定したフォルダにあるファイルのファイル名を全て取得する関数ってありますか?
541デフォルトの名無しさん:2007/11/27(火) 20:11:12
>>540
FindFirstFile FindNextFile FindClose
542デフォルトの名無しさん:2007/11/27(火) 20:13:54
>>539
そうです。

>>538
別にAPIになければ、APIじゃなくてもいいです。
自作するのはちょtっとミリなので
543デフォルトの名無しさん:2007/11/27(火) 20:13:54
>>541
ありがとうございます。貴方のおかげで道が開けまんた。
544デフォルトの名無しさん:2007/11/27(火) 20:23:18
>>542
なぜ自作するのが無理なんだ?

int line = 0;
int maxlen = 0;
int i = 1;
while (fgets(s, ...)) {
 int len = strlen(s);
 if (maxlen < len) {
  line = i;
  maxlen = len;
 }
 i++;
}
こんな感じでどうにかなるだろ。
545デフォルトの名無しさん:2007/11/27(火) 20:32:00
>>542
size_t maxCharsInLine(LPCTSTR p)
{
 size_t maxLen = 0;
 size_t len = 0;
 while (*p) {
  switch (*p) {
   case 0x0d: case 0x0a:
    len=0; break;
   default:
    if (maxLen < ++len) maxLen = len;
  }
  p = (LPCTSTR) CharNext(p);
 }
 return maxLen;
}
546鈴木:2007/11/27(火) 20:41:03
164 名前:鈴木[[email protected]] 投稿日:2007/11/27(火) 13:12:56

MiniDumpWriteDump をつかって、Dumpを出力しているのですが、
どのようにしてファイルの中身は見れるでしょうか?
547デフォルトの名無しさん:2007/11/27(火) 20:42:50
>>546
よう鈴木、こないだ貸した5000円返せよ
548鈴木:2007/11/27(火) 20:43:36
>>547
しゃ、借用書はあるのかっ!
549デフォルトの名無しさん:2007/11/27(火) 21:01:46
>>531
そうなのか。
それも内部でブラシ取得してるんだろう。
ハンドルかインデックスかは、上位ワードが
0かどうかを見てる気がする。
550デフォルトの名無しさん:2007/11/27(火) 21:16:30
質問です。

windowsで流れているサウンドをフックすることは可能でしょうか?
もし方法があれば、調べれば良いポイント・キーワードなどを教えていただけないでしょうか。
551デフォルトの名無しさん:2007/11/27(火) 21:21:47
そういうことを質問する前に最低限、
録音プログラムぐらいは作ったことがあるんだろうな?
552デフォルトの名無しさん:2007/11/27(火) 21:23:57
>>551
Windowsでサウンドプログラミングの経験があります。
553デフォルトの名無しさん:2007/11/27(火) 21:34:15
>>550
「サウンドをフックする」っていうのがわからない。

途中で加工したい?
それとも覗ければ(キャプチャできれば)十分?
audio 関連の filter driver を書けばいいと思うんだけど、
Vista 以前の OS だと色々なパスがあって面倒だと思う。

特定のアプリが対象なら話は遙かに簡単になるけど。
554デフォルトの名無しさん:2007/11/27(火) 21:35:57
>>553
> それとも覗ければ(キャプチャできれば)十分?
はい、覗けるだけで十分です。
加工して戻すということは想定していません。
555デフォルトの名無しさん:2007/11/27(火) 21:36:23
>>552
録音するプログラムを組んだことがあるのか無いのか聞いているんだが、ニホンゴワカリマスカ?
556デフォルトの名無しさん:2007/11/27(火) 21:39:58
>>555
録音するプログラムを書いたことがあります。
557デフォルトの名無しさん:2007/11/27(火) 21:41:24
>>556
じゃあ既に問題は解決している。
558デフォルトの名無しさん:2007/11/27(火) 21:42:21
新規質問です。
Beep関数で、XPでは音が出るもののVistaでは音がでません。
プログラムはVisualStudio2005のC++でコンパイルしています。
VistaではBeep関数を使えないのでしょうか?
559デフォルトの名無しさん:2007/11/27(火) 21:44:42
>>558
MessageBeep を使ってみてはいかが?
560デフォルトの名無しさん:2007/11/27(火) 21:47:04
>>558
マザーボード上の内蔵Beepデバイスから出ているのなら、
物によってはマザーボードからスピーカーに繋げなければ音が出ない。
XPだと逆にドライバがなかったから、サウンドデバイスから出力されていただけでは?
そもそもAPIとは何の関係もない。
561デフォルトの名無しさん:2007/11/27(火) 21:48:06
>>559
確かに、MessageBeepは使えますが、自由にメロディを設定したいのでBeep関数が使いたいのです。
562デフォルトの名無しさん:2007/11/27(火) 21:53:16
>>561
PlaySoundでwavを鳴らせばいいだろ
563デフォルトの名無しさん:2007/11/27(火) 21:55:15
>>554
DDKを使って、カーネルモードのフィルタドライバを書いてオーディオドライバの
上側のAPI(のようなもの)をフックすることになると思います。

この「オーディオドライバ」ってのが色々あるのがXPまでのOSでの難点・・・
http://www.microsoft.com/whdc/device/audio/wdmaud-drv.mspx
Vista からは UAA (Universal Audio 何とか) に統一されてるんだけど。

セキュアオーディオパスってのがあって、DRM処理された音源の再生時には
署名されていないフィルタドライバは割り込めなかったような気もする。

そうして僕の知るところ、これをやってる例は聞いたことがない。
オーディオカードの出力から入力へループバックする方が遙かに簡単だから。

特定のアプリが対象で、どんなAPIで鳴らしてるのか見当が付くなら、
単純なAPIフックで実装できるわけですが。
564デフォルトの名無しさん:2007/11/27(火) 22:05:38
リダイレクトに相当するものを録音するだけ。
ドライバを作る必用もなければ、APIをフックする必用など微塵もない。
565デフォルトの名無しさん:2007/11/27(火) 22:16:40
サウンドカード(デバイス)が対応してればそれが一番簡単でしょうね。
566デフォルトの名無しさん:2007/11/27(火) 22:28:14
リアルタイムでエフェクトでもかけたいんでね?
567デフォルトの名無しさん:2007/11/27(火) 22:31:56
用途が分からんがDirectShowでキャプチャで十分な希ガス
568デフォルトの名無しさん:2007/11/27(火) 22:34:36
サウンドデバイスをフックしてDRM解除するソフトでも作りたいのだろ
569デフォルトの名無しさん:2007/11/27(火) 22:40:14
>>566
お前は他人の話を聞かない奴だとよく言われるだろ。
570sage:2007/11/27(火) 22:45:54
録音はwaveInXXXで実装できるが、何らかの音が鳴り始めた瞬間というのは、
ユーザーモードでは特定できないはず。
しかし、WAVEデバイス指定のmciSendCommandやwaveOutWriteをAPIフックしたとなれば、
それを期に録音を開始することで再生バイトを取得できるかもしれない。
これらの関数には、MM_MCINOTIFYのような再生終了の通知メッセージがあったから、
メッセージフックでそれを取得すれば録音終了のタイミングも図れるのではないだろうか。
デバイスオープンの関数が通知を指定していないのであれば、
その関数もフックして通知フラグを立ててしまえばいい。
571デフォルトの名無しさん:2007/11/27(火) 23:03:00
今時waveOutってのもなぁ〜
DirectSoundかASIOだろ
572デフォルトの名無しさん:2007/11/27(火) 23:07:37
>>570
そんな余計なことを考え無くったって受け取った音声データ自体をみれば、
音が鳴っているかどうかなんて判断できるだろ。

そもそも再生の開始のタイミングを受け取りたいなんてどこに書いてあるんだ?
録音終了のタイミングが知りたいなんてどこに書いてあるんだ?
再生バイトの取得が必用なんてどこに書いてあるんだ?
通知フラグを立てる必用があるなんてどこに書いてあるんだ?
573デフォルトの名無しさん:2007/11/27(火) 23:14:22
>>571
DirectSoundはVistaでHALが廃止された過去の技術
ASIOは応答速度と引き替えにCPU負荷が上がる上、
ミキサーなどの機能制約がある使う場所を選ぶ技術

知っている用語を出したいんだろうが、頭が悪すぎる
574デフォルトの名無しさん:2007/11/27(火) 23:26:40
VistaがDirectSoundのHAL捨てたのはCPUパワーが上がってきたのと、
一部に狼藉ドライバがあったからで、過去の技術と言うほどじゃない。
それを言うならwaveOutの古さってどうよ?
575デフォルトの名無しさん:2007/11/27(火) 23:33:04
waveOutが古くないなんて誰も言っていないが、妄想が酷いんじゃないか?
576デフォルトの名無しさん:2007/11/27(火) 23:36:38
>>575
横から悪いが、
あんたちょっと黙ってたほうがいい気がするよ。
誰にでも難癖つけてるようにしか見えない。
577デフォルトの名無しさん:2007/11/27(火) 23:37:35
>>573
何を勘違いしてるのか知らんが、今時waveOut系を使ってるプレーヤーなんてほとんど無いから
waveOut系をフックしてもあまり意味無いだろって言ってるのだが。
578550:2007/11/27(火) 23:42:01
なるほど、いろんな関数をフックしないといけないようですね。
だとすると、やはりフィルタドライバを作ったほうが抜本的な方法なのでしょうか。
579デフォルトの名無しさん:2007/11/27(火) 23:43:55
>>577
デフォルトでASIO経由再生するプレイヤーの割合の方が遙かに少ないが、
いったい何を言ってるんだ?
580デフォルトの名無しさん:2007/11/27(火) 23:44:09
>>578
だから何が目的なのかもっと具体的に書けよ
581デフォルトの名無しさん:2007/11/27(火) 23:46:11
>>579
お前は人の揚げ足を取るのが趣味なのか?
582デフォルトの名無しさん:2007/11/27(火) 23:48:02
お前ら勝手に盛り上がりすぎだろ
583デフォルトの名無しさん:2007/11/27(火) 23:48:45
584デフォルトの名無しさん:2007/11/27(火) 23:50:23
>>581
>今時waveOut系を使ってるプレーヤーなんてほとんど無いから
>waveOut系をフックしてもあまり意味無いだろって言ってるのだが。
といってASIOを挙げている時点で支離滅裂なんだが、
いったい何を考えているのか不思議でしょうがない。
そこに対する回答はないのか?
585550:2007/11/27(火) 23:51:31
>>580
PC1で鳴っている音をLAN経由でPC2に送りたいんですよ。
PC1とPC2にはスピーカーとマイクが接続されていて、
サウンドデバイスは一つしかないと仮定します。
586デフォルトの名無しさん:2007/11/27(火) 23:52:10
>>584
DirectSoundはどうした?
VistaでHALが廃止されたからって何が問題なんだ?
587570:2007/11/27(火) 23:54:31
すまない。
自分が余計な事を言ってしまったがために話が盛り上がってしまった。
要は、waveInで登録したバッファの中身を解析すれば、音が鳴っているかどうかを判定できるということだったんだ。
588550:2007/11/27(火) 23:54:48
PC1,PC2にそれぞれ一つのサウンドデバイス、という意味です。
589デフォルトの名無しさん:2007/11/27(火) 23:54:58
>>585
そのPCにはリダイレクトに相当するものはないのか?
590デフォルトの名無しさん:2007/11/27(火) 23:56:26
>>585
WindowsMediaEncoder をインストールするだけでいいよん
591デフォルトの名無しさん:2007/11/27(火) 23:58:38
すでにあるものをわざわざ作る必要はなかろうもん
592デフォルトの名無しさん:2007/11/27(火) 23:59:16
>>586
HALのサポートが期待できなければ、別の技術に置き換わっていくというだけの話。
で、DirectSoundの件に関しては答えたから、今度はASIOを挙げた理由を答えてくれよ。
593550:2007/11/28(水) 00:00:48
>>589
その機能を使った場合、PC1に接続されているマイクは独立して使えるのでしょうか?
594550:2007/11/28(水) 00:02:21
>>590
使用感はESounDのwindows版のようなものを想定しているのです。
595デフォルトの名無しさん:2007/11/28(水) 00:02:34
>>593
マイクから音が拾いたければ、データの取得先をマイクに切り替えろよ。
596550:2007/11/28(水) 00:04:07
GnomeのESounDはアプリケーションがESounDに合わせて作らないといけないところが違いますけれど。
597デフォルトの名無しさん:2007/11/28(水) 00:04:16
>>592
あんたは勝手にwaveout使えばいいじゃん
DirectSoundやASIO使うやつにいちゃもんつけずにさ
598デフォルトの名無しさん:2007/11/28(水) 00:05:01
盛り上がりすぎだw
俺も混ぜろバカチン共w
599デフォルトの名無しさん:2007/11/28(水) 00:05:27
次回のテンプレにフックの話厳禁を入れておいた方がいいんじゃないか?
安易にフックに頼りすぎる上に、いつも話がろくな事にならない。
600デフォルトの名無しさん:2007/11/28(水) 00:05:51
>>583 は無視ですかそうですか
601デフォルトの名無しさん:2007/11/28(水) 00:06:20
>>592
>>570に対してwaveOutだけフックしても鳴ってる音全てをキャプチャできんよって言っただけだが
どうやらお前は570ではなくて、技術に拘った結果waveOutをマンセーしてるだけの変人だと分かったからもういいよ。
602デフォルトの名無しさん:2007/11/28(水) 00:10:02
>>597
で、ASIOを挙げた理由は?

何も考えてなかったんなら後付で
>今時waveOut系を使ってるプレーヤーなんてほとんど無いから
>waveOut系をフックしてもあまり意味無いだろって言ってるのだが。
とか理由をでっち上げずに、正直に理由はないけどASIOと書きたかっただけだと言えばいいのに。

どうせ逃げ回るだけでASIOを挙げた理由を答えることも無いのは分かってるよ。
ごめんね、ちょっと苛めすぎたよ。
603デフォルトの名無しさん:2007/11/28(水) 00:12:52
>>601
waveOutをマンセーしているとか、そう思いこみたいのは勝手だが、妄想にも程がある。
どこにそんなことが書いてあるんだ?
604597:2007/11/28(水) 00:12:54
>>602
ASIOなんぞ挙げてませんよ?
今までのやり取りを見てて感じただけだ
605デフォルトの名無しさん:2007/11/28(水) 00:13:06
>>602
は?今時のプレーヤなら大抵DirectSoundもASIOもサポートしてるだろ
その上で>>577>>601の意味で言ったのだが、何か問題でもあるのか?
606550:2007/11/28(水) 00:15:30
>>600
ただいま検証しています。
607デフォルトの名無しさん:2007/11/28(水) 00:17:03
>>605
実際の所、ASIOをサポートソフトはけっこう限られてくるよ。
608デフォルトの名無しさん:2007/11/28(水) 00:17:42
もう誰が誰かすら分からんが、
さすがに「今時のプレーヤなら大抵ASIOもサポート」は無い
609デフォルトの名無しさん:2007/11/28(水) 00:19:22
これからもASIO厨とwaveOut厨の喧嘩が続きそうだな
610デフォルトの名無しさん:2007/11/28(水) 00:19:42
Windows Media PlayerでASIO使えるの?
611デフォルトの名無しさん:2007/11/28(水) 00:22:23
少し夜風に当たって頭冷やしてこい
612デフォルトの名無しさん:2007/11/28(水) 00:24:58
ASIOを舐めたらどんな味ぉ?
613デフォルトの名無しさん:2007/11/28(水) 00:25:26
ASIO = Advanced Serial IO
614550:2007/11/28(水) 00:26:33
>>600
音を送る側:クライアント
実際に音を鳴らす側:サーバ
というようにしたいわけです。
つまり、たくさんのクライアントに向けて音を送りたいわけではなく、
一つのサーバに向けて音を送りたいのです。
615デフォルトの名無しさん:2007/11/28(水) 00:29:28
>>614
だから録音デバイスから普通に音を拾えよ
それを好きなだけ送れ
実際にやってみてそれでダメだったらまた来い
616デフォルトの名無しさん:2007/11/28(水) 00:29:40
ASIOは入力用だっつーの
617デフォルトの名無しさん:2007/11/28(水) 00:30:55
ふっくできるよ! できるよ!
って自分の技術に奇妙な自信を持ってるから、スレがカオスになるのではないかと予想
618デフォルトの名無しさん:2007/11/28(水) 00:31:57
>>614
上にも出てるけどWindows Media エンコーダでできないか?
619デフォルトの名無しさん:2007/11/28(水) 00:34:15
>>618
前にも思ったが、プログラミングのスレで既製品を進めてどうするんだと
620デフォルトの名無しさん:2007/11/28(水) 00:34:53
>>616
ミキサーを通さないから音質が上がるということで、
出力用に愛用している人間は少数ながらいる。
検索すると音質が上がったと喜んでいる人間がたしかにいる。
しかし私には同じ音にしか聞こえない。
621デフォルトの名無しさん:2007/11/28(水) 00:36:07
>>619
大抵はそれで済んでしまうことが多いから
まあ本人がそれでも0から作りたいっつーなら構わんが
622デフォルトの名無しさん:2007/11/28(水) 00:36:53
>>620
ボリュームパスして大音量で再生されただけだろ
あほすぎる
623550:2007/11/28(水) 00:38:47
>>618
>>614のモデルに合わせる使い方ができるでしょうか?
624デフォルトの名無しさん:2007/11/28(水) 00:40:23
>>623
ここはプログラム板だから、ソフトの使い方は別の板へ逝け
625デフォルトの名無しさん:2007/11/28(水) 00:43:04
サウンドカードのサウンドバッファが16bit以上をサポートしているなら音質は上がるかもしれない
128kbpsのmp3で満足するオレには分からんレベルだ
626550:2007/11/28(水) 00:57:15
>>621
私も既製品で済むに越したことはないと思うのですが、
目的に合うものがないので作るしかないと思ったのです。
627デフォルトの名無しさん:2007/11/28(水) 01:01:13
>>623
WindowsMediaEncoder
PortForwarder
sshd
これを組み合わせると可能
628デフォルトの名無しさん:2007/11/28(水) 01:12:17
>私も既製品で済むに越したことはないと思うのですが、
ちょwwwwwww

ソフトウェア板でやってよwwwwwwwwwwwww
何のために100レスも消費してたんだwwwwwwwwwwwww
629550:2007/11/28(水) 01:14:19
>>628
肝心なのは、直接目的に合うものが存在しないということですよ。
630デフォルトの名無しさん:2007/11/28(水) 01:16:14
単に探し足りないだけ、解説を読み足りないだけだと思う

現に出来るだろ
631デフォルトの名無しさん:2007/11/28(水) 01:17:40
>>627
SSHって必要か?
632デフォルトの名無しさん:2007/11/28(水) 01:19:12
提示されたアプリについてまるで調べてないってのは分かるなあ〜
明らかに>>623なんてレス読んで脊髄反射で聞いてるよね。
633デフォルトの名無しさん:2007/11/28(水) 01:27:07
要するに>>550はESounDみたいなサウンドサーバ/クライアントが作りたいんだろ
WindowsMediaEncoderだとストリーム配信みたいなことしかできないわな
634デフォルトの名無しさん:2007/11/28(水) 02:10:45
>>629
多くのオーディオデバイスでは、リダイレクタ(ミキシング済みの音声出力を取り込める入力)が
使えるので、それを waveIn 等でとってくれば簡単に目的の処理が可能です。
(USB オーディオ等だと無いのが普通みたいだけど)

ESound のようなものを作るのなら遅延はたぶんあまり許容できないでしょうから、
Windows Media Encoder 等ではなくシーケンス番号付けて RTP で送るのが良いと思います。

>>593
リダイレクタを使う実装では PC1 の wave 入力を利用することになるので、PC1側のアプリでは
MICは利用できなくなります。PC1 に ASIO 対応の余分なオーディオデバイスを追加し、
それでPC1の(通常の)出力を取り込むなどできれば非常に簡単ですが、ハードの追加は
ダメなんでしょうか?

XP向けにフィルタドライバを書くのは恐らく非常に大変ですよ。
635デフォルトの名無しさん:2007/11/28(水) 02:28:14
リモートデスクトップ接続、ってオーディオリダイレクタを
標準装備してるよね?
636デフォルトの名無しさん:2007/11/28(水) 02:32:39
もうほっとけよ。
どうせWindowsMediaEncoderだって試してもいないだろうし。
637デフォルトの名無しさん:2007/11/28(水) 03:34:50
>>636
WindowsMediaEncoderは役にたたんだろ。
638デフォルトの名無しさん:2007/11/28(水) 03:34:58
単純な質問で悪いけど
ウィンドウを不可視状態で作成するのって、CreateWindowのウィンドウスタイル引数に
WS_OVERLAPPED ^ WS_VISIBLE でよかったっけ?
なんか見えるんだけど・・orz
「^」って排他的ウンタラだったよね?よね?
639デフォルトの名無しさん:2007/11/28(水) 03:42:28
どうせShowWindow(hWnd,SH_SHOW);してるとかそういうオチ
640デフォルトの名無しさん:2007/11/28(水) 03:46:20
WS_OVERLAPPEDはWS_VISIBLEを含んでない件

つまり
WS_OVERLAPPED & WS_VISIBLE → 偽
なので

WS_OVERLAPPED ^ WS_VISIBLE = WS_OVERLAPPED | WS_VISIBLE
641デフォルトの名無しさん:2007/11/28(水) 06:17:14
すまん
>WS_OVERLAPPED ^ WS_VISIBLE = WS_OVERLAPPED | WS_VISIBLE
これわからん
こんなのあり?
642デフォルトの名無しさん:2007/11/28(水) 06:23:04
0^1 = 1
1^1 = 0
643デフォルトの名無しさん:2007/11/28(水) 06:39:07
>排他的ウンタラ

排他的論理和ですが何か?


きみのやりたいことはこっちではないかな?
WS_OVERLAPPED & ~WS_VISIBLE
644デフォルトの名無しさん:2007/11/28(水) 06:39:59
>>641
わからんならWS_OVERLAPPEDだけ使え
故意に明示したいなら
WS_OVERLAPPED & ~WS_VISIBLE
こうじゃないか
645デフォルトの名無しさん:2007/11/28(水) 06:40:39
かぶってしまった
646デフォルトの名無しさん:2007/11/28(水) 06:47:23
珍子がかぶってる
647デフォルトの名無しさん:2007/11/28(水) 07:18:54
もし最初から最後まで表示する気が無いなら、WS_OVERLAPPEDも
指定するだけ無駄だな。
648デフォルトの名無しさん:2007/11/28(水) 09:31:58
TotalRecorderみたいなことがしたいのか?
649デフォルトの名無しさん:2007/11/28(水) 09:58:31
>>546
デバッグ情報はデバッガで読み込めば良い
650デフォルトの名無しさん:2007/11/28(水) 10:24:37
>>550は既存品がダメならH.323とそれに関係する資料見た方がよい
ttp://www.itu.int/rec/T-REC-H.323/en
651デフォルトの名無しさん:2007/11/28(水) 11:33:57
>>650
ESound みたいな使い方には既存のストリーミングサーバは
Windows Media Encoder は遅延が大きすぎて使えないってだけだろ。
VNC のアドオンでも作ってるんじゃねーの。

リモートデスクトップでのオーディオのリダイレクトみたいに、
フィルタドライバじゃなくてそれ専用の仮想デバイスを作っちゃう手もあるな。
652デフォルトの名無しさん:2007/11/28(水) 12:00:48
>Windows Media Encoder は遅延が大きすぎて使えないってだけだろ。
だれもそんなことはいっていない。

>VNC のアドオンでも作ってるんじゃねーの。
だれもそんなことはいっていない。

>リモートデスクトップでのオーディオのリダイレクトみたいに、
>フィルタドライバじゃなくてそれ専用の仮想デバイスを作っちゃう手もあるな。
リモートデスクトップで確認してみれば自明だが、DirectSoundで音楽再生でもしようものなら音がとびまくる。

だれももいっていないことを勝手に想定したり、使い物にならない手段を提示したり、
いったい何がしたいんだ?
653デフォルトの名無しさん:2007/11/28(水) 12:09:53
>>652
リモートデスクトップで音がとぶから仮想デバイスが使い物にならないだなんて飛躍しすぎだろ
654デフォルトの名無しさん:2007/11/28(水) 12:28:02
>>652
質問者自身が ESound みたいなのを作りたいって言ってるジャンw
逆に>>650は質問のどこを見てプロトコルに関する質問だと思ったの?
学習困難児だった?
655デフォルトの名無しさん:2007/11/28(水) 12:38:37
漏れが華麗に要件をまとめた

(1) ESounD のようなリダイレクタ
(2) 同時にMICも使いたい
(3) 取ってきた音は1つのサーバに送って、サーバで鳴らす

(2)があるから、入力を占拠する「音源ボードのリダイレクタ(+WME)」はダメ。
マイクロソフトの人間は仮想デバイスを使ったが、>>652が否定してるから
仮想デバイスはダメ。フィルタドライバは>>634が否定してるからダメ。
656デフォルトの名無しさん:2007/11/28(水) 12:47:16
まだこのネタ続いてるのかよw
おまいらもういいだろww
657デフォルトの名無しさん:2007/11/28(水) 12:54:35
質問者を置き去りにして外野が騒いでるのは滑稽だな
外野といってもあーだこーだ言ってるのは一人か
658デフォルトの名無しさん:2007/11/28(水) 15:07:49
仮想デバイス作ればいいやん。
音飛びするのは帯域が足りてないだけかと。
659デフォルトの名無しさん:2007/11/28(水) 15:23:53
>>550 に関しては、お前ら
1. windowsで流れているサウンドをフックすることは可能でしょうか?
2. もし方法があれば、調べれば良いポイント・キーワードなどを教えていただけないでしょうか。

1. Yes or No
2. if( 1. == Yes) 調べれば良いポイント・キーワードを教える
これだけ、答えればOK

余計な詮索、アドバイスせずにこれだけ答えてやれよ。俺俺妄想レスするなよ
660デフォルトの名無しさん:2007/11/28(水) 15:34:23
ごめん汚して  でも見てほしい


【政治】 「放置すると、日韓関係にヒビ」 外国人参政権付与、成立への流れ加速も…公明に各党同調、自民反対派は沈黙、首相次第か★10

http://news22.2ch.net/test/read.cgi/newsplus/1196226030/259n-


参考動画
http://www.nicovideo.jp/watch/sm1636901
661デフォルトの名無しさん:2007/11/28(水) 16:25:06
HeapFreeしたときの戻り値が1404673とかなんだけど
これは何の数値?
662デフォルトの名無しさん:2007/11/28(水) 16:39:43
なんだろうね
メモリアドレスではないみたいだからヒープハンドルかなんかかな

調べてないけど
663デフォルトの名無しさん:2007/11/28(水) 16:48:01
>>662
調べてよ!
気になってよるしか眠れない!
664デフォルトの名無しさん:2007/11/28(水) 16:50:13
寝れるならいいじゃない
665デフォルトの名無しさん:2007/11/28(水) 16:59:02
昼寝したいのにー
666デフォルトの名無しさん:2007/11/28(水) 18:02:32
666
667デフォルトの名無しさん:2007/11/28(水) 19:17:16
        ____
       /      \
      / \   /  \  ネット社会の闇を見ました
    /  (●)   (●)  \   
    |     (__人__)     |  ________
     \    ` ⌒´    ,/ | |          |
    ノ           \ | |          |
  /´                 | | 
 |    l                | |   
668デフォルトの名無しさん:2007/11/28(水) 19:20:28
ウィンドウサイズ変更時に、
一瞬背景色で描画され
ちらつくのですが、回避する方法は何かありませんか?
669デフォルトの名無しさん:2007/11/28(水) 19:29:46
>>643-644
そうでしたorz
&と|は良く使うので、間違わないんだけど^と~は滅多に使わないのでごっちゃになってた
トンクス
670デフォルトの名無しさん:2007/11/28(水) 19:31:15
>>649
そもそもデバッガが何のために付いてるのか良く分からん
使い方も分からんし
671デフォルトの名無しさん:2007/11/28(水) 19:34:06
>>668
WNDCLASSのhbrBackgroundにヌルブラシを設定する
WM_ERASEBKGNDでTRUEを返す
672デフォルトの名無しさん:2007/11/28(水) 20:01:27
~はかなりよくつかうだろ
673デフォルトの名無しさん:2007/11/28(水) 20:23:50
ビットフラグを削除する時に使うね。
674デフォルトの名無しさん:2007/11/28(水) 20:26:55
>>670
デバッグするために決まってるだろ
普通、開発はデバッグ版でして、バグがなければリリース版だろ
675デフォルトの名無しさん:2007/11/28(水) 20:40:48
デバッガという名前なんだから勝手にバグを直してくれればいいのに
使えねーな
676デフォルトの名無しさん:2007/11/28(水) 20:43:05
だったらバグのあるプログラムを書くんじゃねーよ下手糞とデバッガが仰ってます
677デフォルトの名無しさん:2007/11/28(水) 20:54:04
この流れ好きだなぁw
678デフォルトの名無しさん:2007/11/28(水) 20:58:48
そうか?
679デフォルトの名無しさん:2007/11/28(水) 21:15:17
タスクバーの右側に
「ネットワークケーブルが接続されていません」とか「ワイヤレスネットワークに接続しました」
とか状態が表示されていますが
このネット接続の状態変化を監視するAPIを教えてください
680デフォルトの名無しさん:2007/11/28(水) 21:22:53
GetIFTable?
681デフォルトの名無しさん:2007/11/28(水) 21:44:19
>>680
そんな感じです。ただ今回は変更の検知をしたいのでこれは使えません
MSDNみたらGetIFTableの近くにNotifyAddrChangeというのがあったのでこれを調べて見ます
ありがとう
682デフォルトの名無しさん:2007/11/28(水) 22:02:28
IPv6のネットワークポートで接続されている機器がある時、そのアドレスがLinkLocalであった場合に
付加するスコープIDの取得の仕方を教えてもらえないでしょうか。
IP Helper関数のGetAdaptersAddresses()を使って取得できる値のいずれからしいということは
わかったのですが、列挙される構造体のうち、どれが目的の値か特定できません。
683デフォルトの名無しさん:2007/11/28(水) 22:56:11
hWndとhDCとDIBの関係がいまいちよくわからないんだけど、わかりやすく説明されてるサイトとかない?
684デフォルトの名無しさん:2007/11/28(水) 23:50:05
ウィンドウにWS_EX_LAYEREDを設定し、32Bitビットマップを読み込み下の様にUpdateLayeredWindowを実行しましたが、
ウィンドウが消えてしまい、うまくビットマップを適用させることができません。
どこがおかしいか、何方か教えて頂けないでしょうか。

ReadFile(hFile , &bmpFileHeader , sizeof (BITMAPFILEHEADER) , &dwBytes , NULL);
bmpInfo = (BITMAPINFO *) malloc (bmpFileHeader.bfOffBits - dwBytes);
ReadFile(hFile , bmpInfo , bmpFileHeader.bfOffBits - dwBytes , &dwBytes , NULL);
bPixelBits = (BYTE *) malloc (bmpFileHeader.bfSize - bmpFileHeader.bfOffBits);
hdc = GetDC(hWnd);
hBitmap = CreateDIBitmap(hdc , &bmpInfo->bmiHeader ,CBM_INIT , bPixelBits , bmpInfo , DIB_RGB_COLORS);
hBuffer = CreateCompatibleDC(hdc);
SelectObject(hBuffer , hBitmap);
GetObject(hBitmap , sizeof (BITMAP) , &bitmap);
wndPos.x = 100; wndPos.y = 100;
surPos.x = surPos.y = 0;
wndSize.cx = 300; wndSize.cy = 300;
bf.BlendOp = AC_SRC_OVER;
bf.BlendFlags = 0;
bf.AlphaFormat = AC_SRC_ALPHA;
bf.SourceConstantAlpha = 255;
UpdateLayeredWindow( hWnd, GetDC( 0 ), &wndPos,&wndSize, hBuffer, &surPos, 0, &bf, ULW_ALPHA);

長文ですみません
685デフォルトの名無しさん:2007/11/29(木) 00:01:28
freeしたポインタをfreeしたらどうなりますか?多分よくないですよね?
freeされたかどうかを調べる関数とかってないですか?
686デフォルトの名無しさん:2007/11/29(木) 00:10:35
>>683
HWNDはウィンドウ
位置を動かしたりサイズを変えたり、タイトルバーを設定したりできる

HDCは画家
ペンや絵の具を渡せば、三角形とか四角形とか円とかを描いてくれる

DIBはメモリ内の.bmpファイル
687デフォルトの名無しさん:2007/11/29(木) 00:11:51
>>685
よくないです
調べる方法はありません
自分で気をつけましょう
688デフォルトの名無しさん:2007/11/29(木) 00:18:25
>>684
ビットマップのイメージ本体を読み込んでないように見える
bPixelBits は malloc しただけでそのままだし
hBitmap も Create しただけで何も描き込んでないし
689デフォルトの名無しさん:2007/11/29(木) 00:19:09
>>687
デバッグビルドならチェック入ると思うが
690デフォルトの名無しさん:2007/11/29(木) 00:30:16
>>685
当たり前だけど、対象のポインタ変数にメモリが割り当てられてるかどうかは
ポインタがNULL番地をさして無ければいいわけだから
俺はいつも if(lpPoint != NULL) free(lpPoint) ってやってるが、もしかしたら正しくはないのかも知れん

>>686
ついでにCreateDIBSection関数が何者なのか、解説ヨロ
何度説明されても分からんけん
691デフォルトの名無しさん:2007/11/29(木) 00:32:47
>>690
if(lpPoint != NULL) free(lpPoint)
これは無駄だろ

if(lpPoint != NULL) delete[] lpPoint
の場合なら意味あるけど
692デフォルトの名無しさん:2007/11/29(木) 00:38:22
>>690
CreateDIBSection は指定したサイズのビットマップをメモリ内に作る。
GDI 関数で扱えるように HBITMAP ハンドルが返されるし、
その RGB 値を直接触れるように、ビットマップデータへのポインタも返される。
693デフォルトの名無しさん:2007/11/29(木) 00:38:56
>>691
どっちも無駄
NULL を free とか delete とか delete[] に食わせるのは合法で、単に無視される
694デフォルトの名無しさん:2007/11/29(木) 00:50:08
>>693
deleteも無駄だったのか・・・知らなかった
695デフォルトの名無しさん:2007/11/29(木) 00:54:26
deleteしたあとNULL入れとくのが正解
696デフォルトの名無しさん:2007/11/29(木) 01:30:03
if(lpPoint != NULL) {free(lpPoint); lpPoint = NULL;}
こうするのが正解
697デフォルトの名無しさん:2007/11/29(木) 01:40:16
>>696
不正解
698デフォルトの名無しさん:2007/11/29(木) 01:49:15
NULLだったら無視されるんだから
free(lpPoint);
lpPoint = NULL;
だけでいいじゃん…
699デフォルトの名無しさん:2007/11/29(木) 02:02:02
K&Rにfreeで解放されたメモリ領域にfreeをかけるのは動作が規定されてないからやめとけって書いてあった希ガスよ
正しくは>>696のようにすべきじゃね、と思う

>>692
そういう説明は何百回も読んでるんだけど、さっぱりわかんねーよ
>指定したサイズのビットマップ ← これはデバイス独立ビットマップなのか、デバイス依存ビットマップなのか・・・
GDI関数で扱えるDDB(デバイス依存とかいう香具師)は、ビットマップのピクセルビットへはアクセスできない
HBITMAP型は通常デバイス依存ビットマップを表現するのに使われるはずだよ
なのに、ピクセルビットへのポインタもちゃんと返してくる
現にGetObjectで調べてみたら、pBitsにピクセルビットへのポインタが格納されてる
通常HBITMAP型のDDBを引数に、GetObjectやってもpBitsはNULLだよね
700デフォルトの名無しさん:2007/11/29(木) 02:30:38
>>699
free(lpPoint);
lpPoint = NULL;
free(lpPoint);

と、

free(lpPoint);
free(lpPoint);

は違う。
おまいが言っているのは後者。
701デフォルトの名無しさん:2007/11/29(木) 02:48:31
>>699
DDBのビットデータに直接アクセスできるわけない
大抵VRAM上にあるだろうし、DirectXじゃないから直接アクセスできてもあまり意味が無い

>HBITMAP型は通常デバイス依存ビットマップを表現するのに使われるはずだよ
お前の「通常」の基準がよく分からん。DDBで使うことの方が多いと思うが。

DIBもDDBもHBITMAPなのは、ある程度両者を意識しなくて済むようにそういう設計にしてるのか
DIBセクションが標準APIとして加わったのがwin95以降だからなのか他に理由があるのかは知らん
702デフォルトの名無しさん:2007/11/29(木) 03:31:48
>>688
レス、有難うございます
>>ビットマップのイメージ本体を読み込んでいない

すみませんm(__)m
初歩的なミスに気付いていませんでした

ReadFileをもう一つ追加して見ます
703デフォルトの名無しさん:2007/11/29(木) 06:31:35
>>701
>HBITMAP型は通常デバイス依存ビットマップを表現するのに使われるはずだよ
お前の「通常」の基準がよく分からん。DDBで使うことの方が多いと思うが。
デバイス依存ビットマップ=DDB
704デフォルトの名無しさん:2007/11/29(木) 08:12:20
>>697
速度重視なら正解だろ
705デフォルトの名無しさん:2007/11/29(木) 08:19:13
>>704
一概には言えない
lpPointがNULLの可能性が高い場合はいいが逆だと遅くなる
706デフォルトの名無しさん:2007/11/29(木) 08:26:40
>>705
そこまで行くとそもそも論になるからもう止めようぜ
707デフォルトの名無しさん:2007/11/29(木) 08:27:10
>>699
DIBセクションは、DIBの形でデータを保持していて、
HBITMAP経由で読み書きするときには、
その都度DDBとの間で変換が行われる。

ってプログラミングWindowsに書いてあった。
708デフォルトの名無しさん:2007/11/29(木) 10:05:52
今時if文判定1個にこだわるプログラミングしてるやつがいることに驚きだわ
709683:2007/11/29(木) 10:22:06
>>686
ではなぜBitBltではDIBではなくhDCを渡すのでしょうか。
あと、DIB間での画像拡大コピーってできますか?
710デフォルトの名無しさん:2007/11/29(木) 10:25:59
>>709
DIBとDDBの違いわかってる?
711デフォルトの名無しさん:2007/11/29(木) 12:24:28
>>710
>>709が解ってないのはDIBとDDBの違いではなく、DCにビットマップを選択させる概念ではないかと
712デフォルトの名無しさん:2007/11/29(木) 12:26:35
DIBとDDBの違いがわかればその疑問も解決すると思うのだが
713デフォルトの名無しさん:2007/11/29(木) 12:43:16
>>709
>なぜBitBltではDIBではなくhDCを渡すのでしょうか。

BitBltはDIB用じゃないからさ
DIBを直接渡すAPIはSetDIBitsToDeviceやStretchDIBitsがあるからそっちを使う

>DIB間での画像拡大コピーってできますか?

ポインタ駆使して直接ビットデータを操作しちゃえばなんだって出来る
714デフォルトの名無しさん:2007/11/29(木) 12:49:00
>>709
GDI+でも使ってろ
715デフォルトの名無しさん:2007/11/29(木) 14:03:10
>>700
本来は
void correct_free(void **p){
old_free(*p);
*p = NULL;
}
という設計にすべきだったんだよな

そうなってはじめて安心して
correct_free(&lpPoint);
correct_free(&lpPoint);
と書ける
716デフォルトの名無しさん:2007/11/29(木) 14:06:23
その安心は半分まやかしだ
ポインタ値はあちこちにコピーされうる
717デフォルトの名無しさん:2007/11/29(木) 14:13:31
生成者と参照者を明確に区別して
freeは生成者だけが行うようにする
参照者は使ったらそのまま放置
っていう造りにしたら安定する?
718デフォルトの名無しさん:2007/11/29(木) 14:14:26
そんなあなたにshared_ptr
719デフォルトの名無しさん:2007/11/29(木) 14:36:20
>>715
correct_free(NULL);
どこが安心できるんだ?
720デフォルトの名無しさん:2007/11/29(木) 15:14:31
私が知っていること(onXP)

ビットマップにはDDB,DIB,DIBSectionがある
HDCが好むのはHBITMAPつまりDDBとDIBSection
DDBはシステム領域に作られ、総量の上限がある
DIBSectionはプロセス毎の2GBの中に作られる
-->長時間保持する大きなビットマップ向き、メモリマップを使えば巨大なものも可

DIBSectionを選択したままCreateCompatibleBitmapを呼ぶとDIBSectionが作られるらしい
DIBSectionはwin16のDIB.DRV,WinGの系統らしい
DDBとDIBSection win95の頃は速度大差なし
721デフォルトの名無しさん:2007/11/29(木) 15:24:23
>>719
ごめんうっかりしてた
void correct_free(void **p){
if(*p) old_free(*p);
*p = NULL;
}
correct_free(&lpPoint);
correct_free(&lpPoint);
722デフォルトの名無しさん:2007/11/29(木) 15:29:19
頑張ってそんな変なもの使って何かいいことある?
free には失敗しないかもしれないけど、
何時誰が free するかを管理しないコーディングスタイルじゃ
内容が必要なときに既に free されてる恐れがあるじゃん。

ちゃんと誰がいつまで内容を参照したいかが分かってれば、
それの終わりのとこで一回 free すればいいわけだし。
723デフォルトの名無しさん:2007/11/29(木) 15:57:27
>>708
アセンブリでMMXやSSEで使うこのご時世に
お前が低能だって事は分かった
724デフォルトの名無しさん:2007/11/29(木) 16:26:48
>>721
if(*p)
{
old_free(*p);
*p = NULL;
}
こうだろ

>>722
バカは黙ってろ
管理するに決まってるだろ
俺はマクロでNULL代入してるぞ
725724:2007/11/29(木) 16:28:36
訂正
if(p)
{
old_free(*p);
*p = NULL;
}
726デフォルトの名無しさん:2007/11/29(木) 16:30:04
ダイレクト ボブサップ
727デフォルトの名無しさん:2007/11/29(木) 16:32:44
>>722
今時は開放されたメモリの参照すれば例外飛んでくれるから
NULL入れる必要もないといえば無い。
それに、確保や開放を頻繁に行うなら、意識して717のいうように作るべきだと思う。

しかし、世の中の大多数の人はそのことを知らないし、やろうともしない。
結局バグの温床になっているが、なんとなく動いてしまっていて気がつかない人も多い。
特にリリース版で動くからいいやとかいうタイプの人もいるんで・・・

あと、自分の経験上、他人が書いたコードで確保と開放が入り乱れてる場合は
開放したところにNULLいれるように書き直すと、バグが良く見つかる。
まあ、こんな小手先の技使わないといけない俺の環境が悪いんだろうな。

最新のコンパイラとか開発環境、動作環境でやり、自分がコードのすべてを把握し
覚えている限りは無用のテクニックかもしれない。

>>723
最適化スレだったらその発言は甘んじて受け入れよう
だが、ここはAPIを質問するところだ
こんなところで、パイプラインの破壊気にしてもしょうがないだろ?
728デフォルトの名無しさん:2007/11/29(木) 16:34:44
>>727
C++ならいいんだけどな
729デフォルトの名無しさん:2007/11/29(木) 16:37:05
あああ、free論議は収拾付かなくなるので終了。

終了終了
730デフォルトの名無しさん:2007/11/29(木) 16:38:34
>開放したところにNULLいれるように書き直すと、バグが良く見つかる。
嘘だろ
731デフォルトの名無しさん:2007/11/29(木) 16:47:32
>>727
APIスレだろうが最適化スレだろうが関係ない
何万回、何百万回も使うならif文一つだろうが気にするべき
ジャンプ1回で済ますかpush、call、popを使うかで大違い
732デフォルトの名無しさん:2007/11/29(木) 16:48:24
>>728
少なからず理解者がいてくれたようでうれしい

>>730
嘘だと思える君の環境がすごくうらやましい
世の中には信じられないことをする人が多いのです。
また、C++に対応してるんだかしてないんだかわからない
しょぼい環境も多いのです。
733デフォルトの名無しさん:2007/11/29(木) 16:52:09
>>732
開放したところにNULLいれてバグるなら
NULLいれなくてもバグるだろ
734デフォルトの名無しさん:2007/11/29(木) 16:53:41
>>732
お前が低能だって事は分かった
735デフォルトの名無しさん:2007/11/29(木) 17:02:35
>>727
そんなことで例外発生させてどうすんだよ
NULLなら処理を跳ばしてくれれば良いだけなのに
736デフォルトの名無しさん:2007/11/29(木) 17:05:47
>>733
NULLいれなくてもバグってるんだけどそれは発見されない、
NULLいれたらそのバグが発見されやすい、ってことだろ
737デフォルトの名無しさん:2007/11/29(木) 17:08:32
>>736
元々バグってんのか
NULL代入関係ないじゃん
738デフォルトの名無しさん:2007/11/29(木) 17:10:49
ここはAPIスレだったよね?
特定の言語の話はスレ違い
739デフォルトの名無しさん:2007/11/29(木) 17:11:40
ガベコレのある言語を使いましょう

でこの話題は終了

↓はい次
740デフォルトの名無しさん:2007/11/29(木) 17:14:53
空気読まずに
ポインタのアドレス使ったリスト管理なんかだと
freeのあとNULL入れるのは必要になってくるけどな
741デフォルトの名無しさん:2007/11/29(木) 17:16:09
haskellお勧め
742デフォルトの名無しさん:2007/11/29(木) 17:21:43
質問なのですが、
SetLayeredWindowAttributesを使わずにウインドウのある色の部分だけ透明にすることはできるのでしょうか?
743デフォルトの名無しさん:2007/11/29(木) 17:22:31
SetWindowRgn
744デフォルトの名無しさん:2007/11/29(木) 17:31:33
>>727
> 開放したところにNULLいれるように書き直すと、バグが良く見つかる。
ワロタ
745デフォルトの名無しさん:2007/11/29(木) 18:14:14
結局
if( p != NULL ) { free(p); p = NULL; }
でFA?
746デフォルトの名無しさん:2007/11/29(木) 18:15:12
どうでもいいです
747デフォルトの名無しさん:2007/11/29(木) 19:04:14
748デフォルトの名無しさん:2007/11/29(木) 19:11:42
ぬるぽ
749デフォルトの名無しさん:2007/11/29(木) 19:12:49
if(_x_){ _x_->Release(); _x_ = NULL; }
750デフォルトの名無しさん:2007/11/29(木) 19:21:24
スマートポインタ使えよ糞共
751デフォルトの名無しさん:2007/11/29(木) 19:25:54
templateって方の種類分容量増えるんだろ
define でいいじゃん
752デフォルトの名無しさん:2007/11/29(木) 19:27:28
753デフォルトの名無しさん:2007/11/29(木) 19:32:49
>>751
確かに環境によってはtemplate禁止にせざるを得ないこともある。
が、さすがにtemplateの機能をdefineだけじゃ無理だと思う。
754デフォルトの名無しさん:2007/11/29(木) 19:44:57
本当の初心者質問ですみません。
ウインドウを作成するところで詰まってしまいました。
ビルドは成功するのですが、実行するとウインドウが表示されず、CPUが100%になります。
どこがおかしいでしょうか?

環境
WindowsXPsp2
Visual Studio2005

ソース
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5360.txt
755デフォルトの名無しさん:2007/11/29(木) 19:48:39
ウィンドウクラスの登録が抜けている
756デフォルトの名無しさん:2007/11/29(木) 19:55:50
>>854
PeekMessageなんか使うから100%になるんだ、GetMessage使え。
まずは猫でも分かる〜を読むべし。
757デフォルトの名無しさん:2007/11/29(木) 19:58:51
758デフォルトの名無しさん:2007/11/29(木) 20:02:59
>>717
>>727

COMのプログラミングすると
生成者が放置で
参照者が片付ける
みたいな感覚に染まってしまう
759デフォルトの名無しさん:2007/11/29(木) 20:07:30
>>725
それ意味なくね?
訂正が間違ってる
760デフォルトの名無しさん:2007/11/29(木) 20:59:53
InvalidateRectで無効化された領域を取得するにはどうすればよいのでしょうか?

質問の背景としては、スクロールバーを動かしたとき、画面のビットマップをBitBltで
移動させることでスクロールされるようにしています。ところが、転送元の領域が
無効化された状態であった時、その領域が転送後にも再描画されず、不正な状態のままに
なってしまっています。そこで、転送前に無効化されていた領域を転送後の座標系で
無効化しなおすことでこの問題を解決したいと思っているのですが。

よろしくお願いします。
761デフォルトの名無しさん:2007/11/29(木) 21:03:32
>>751
組み込みスレならともかく、Win32 APIスレで言う話か?
メモリ数百MiB-数GiB、CPU数百MHz-数GHzな環境で禁止にする必要などない。
762デフォルトの名無しさん:2007/11/29(木) 21:07:40
>>760
GetClipBox
PAINTSTRUCT::rcPaint
763デフォルトの名無しさん:2007/11/29(木) 21:08:29
GetUpdateRect
だけど。
ふつうはScrollWindowExが良きに計らってくれるんじゃないのかなー。
764760:2007/11/29(木) 21:16:46
>>763
おわっと、こんな関数があるとは知りませんでした。
まだ試してないですが、これを使えば万事うまくいきそうですね。
どうもありがとうございます。

>>762
どうもありがとうございます。
765デフォルトの名無しさん:2007/11/29(木) 22:32:51
>>759
どこが?
766デフォルトの名無しさん:2007/11/29(木) 23:00:00
もう引っ張るなよ
767デフォルトの名無しさん:2007/11/29(木) 23:03:31
別にfreeの話しを引っ張るつもりはない
しかし突っ込まずにはいられないだろ
768デフォルトの名無しさん:2007/11/29(木) 23:04:35
「あえていうなら、Win32APIスレでfreeの話をする辺りが。」
ってことで納得してくれよ(w
769デフォルトの名無しさん:2007/11/29(木) 23:05:44
だからfreeは関係ないと
770デフォルトの名無しさん:2007/11/29(木) 23:07:43
>>759>>766
771デフォルトの名無しさん:2007/11/29(木) 23:10:46
freeは本質とはあまり関係ないんだからとりあえず黙っとこうぜ。
荒らしたいというなら別だが。
772デフォルトの名無しさん:2007/11/29(木) 23:13:29
>>771
>>769
コードの話しだろ
773デフォルトの名無しさん:2007/11/29(木) 23:15:15
馬鹿しか居ないな
774デフォルトの名無しさん:2007/11/29(木) 23:18:55
以上をまとめると、HeapDestroy万歳ってことですね。
775デフォルトの名無しさん:2007/11/29(木) 23:25:40
>>772
>>725はあってるよ
どの道すれ違い消えろ
776デフォルトの名無しさん:2007/11/30(金) 00:12:10
昨日はサウンド関係で荒れて今日はfreeで荒れるのか
明日は何の話題で荒れるのかな〜?
777デフォルトの名無しさん:2007/11/30(金) 00:18:14
1:int *p;とint* p;
2:sizeof( char )
3:インデント
好きなのを選べ
778デフォルトの名無しさん:2007/11/30(金) 00:24:36
>>777
1 と 3 はコード整形ツールで抹殺されるから 2 しかない!
779デフォルトの名無しさん:2007/11/30(金) 00:35:00
ウィンドウのシステムバーの青い部分をドラッグしたときにくるメッセージって何ですか?
WM_ENTER/EXITMENULOOPは左上のボタンで出るメニューのメッセージっぽいのですが…
780デフォルトの名無しさん:2007/11/30(金) 00:47:13
WM_SYSCOMMAND
WM_WINDOWPOSCHANGING
WM_WINDOWPOSCHANGED
WM_MOVING
WM_MOVE
781デフォルトの名無しさん:2007/11/30(金) 00:47:54
>>778
Win32API的にsizeof (TCHAR)を使うので、このスレでは2すら話題にならない。
782デフォルトの名無しさん:2007/11/30(金) 00:48:14
結局見つけました
WM_ENTER/EXITSIZEMOVEでした。
お騒がせしました
783デフォルトの名無しさん:2007/11/30(金) 00:52:10
CHARとかWCHARとかTCHARとか型がありすぎてわけわかんね
文字列に関してはワールドワイドなUnicodeに対応してるWCHARだけつかってればいいってこと?
784デフォルトの名無しさん:2007/11/30(金) 00:52:46
いまさらハンガリアン記法でひとつ。
785デフォルトの名無しさん:2007/11/30(金) 00:55:32
もうNT系しか相手にしないなら、VC8みたいにいきなりUNICODE定義しといて
WCHARしか使わないという手はある。
外部入出力で結局charが要るのと、
文字列リテラルにL付け忘れることがあるのと
UNCODE特有の嫌らしい概念が出てくるのが
今ひとつだけど。
786デフォルトの名無しさん:2007/11/30(金) 01:09:11
数は少ないがANSI版しか用意されていない糞APIもあるけどな
787デフォルトの名無しさん:2007/11/30(金) 01:09:58
>外部入出力で結局charが要るのと

このときのcharで使う文字コードは何がよいのでしょうか?
UTF-8?
mbcs?
788デフォルトの名無しさん:2007/11/30(金) 01:11:29
外部次第だろ
789デフォルトの名無しさん:2007/11/30(金) 01:20:54
質問ですが、画面の解像度が変化したときに受け取るイベントというのは何なのでしょうか?
790デフォルトの名無しさん:2007/11/30(金) 01:22:36
あるよ
ググればすぐ出てくる
791デフォルトの名無しさん:2007/11/30(金) 02:10:24
ココ見てると、みんな同じような問題で悩んでんだなってチョット思うな。
特にDIBSectionとかDIBとかDDBとか 、答えられる香具師があんまりいないんだな。
DIBセクションはDIB?をれともDDB?
792デフォルトの名無しさん:2007/11/30(金) 02:10:38
WM_KAIZOUDOHENKA
793デフォルトの名無しさん:2007/11/30(金) 02:17:17
>>791
DIBセクションはDIBセクションだろw
CreateDIBSection によって作成された HBITMAP 互換のGDIオブジェクト。
GetObject すると DIBSection が帰る。
794デフォルトの名無しさん:2007/11/30(金) 02:30:32
>791
答え待ってないでProgramming Windows下巻読めよ
795デフォルトの名無しさん:2007/11/30(金) 03:25:30
MSのドキュメント読めばわかる程度のことは答えんな。
調べる事が下手糞だといつまでたってもスキルは上がらんぞ。
796デフォルトの名無しさん:2007/11/30(金) 03:37:08
DIBSection = DIB の部分
つまりDIBの一部分ってことでFA
797デフォルトの名無しさん:2007/11/30(金) 03:45:56
>>796
>>791のようなDIBとDDBの区別すらついてない人間にはその説明では不十分だ
結局はMSDN読め、に尽きるが
798デフォルトの名無しさん:2007/11/30(金) 04:17:46
香具師なんて使ってる奴久しぶりにみたwww
799デフォルトの名無しさん:2007/11/30(金) 05:54:26
その内「w
800デフォルトの名無しさん:2007/11/30(金) 05:55:07
失敗。
まぁいいや。
800ゲッツ!
801デフォルトの名無しさん:2007/11/30(金) 07:15:09
>>786
そりゃWin16との互換専用だったりして
Unicode版用意してまで延命させる必要がそもそもない
802デフォルトの名無しさん:2007/11/30(金) 07:32:23
GetProcAddressはー?
803デフォルトの名無しさん:2007/11/30(金) 08:35:46
DLLの仕様でシンボルにANSI文字列しか使えないから
804デフォルトの名無しさん:2007/11/30(金) 08:41:01
切れちゃった

DLLの仕様でシンボルにANSI文字列しか使えないからANSIでないと意味がない
無理してUNICODEにしてもANSIに変換してオーバーヘッドが出るだけ
805デフォルトの名無しさん:2007/11/30(金) 10:16:43
ATLのW2Aとかの文字列変換マクロを使えるなら、オーバーヘッドは最小になるよ。
自分の場合、内部はUNICODEで処理するなぁ。
806デフォルトの名無しさん:2007/11/30(金) 11:06:06
CreateWindowで作ったウィンドウの子コントロールのフォントを変更したい場合
親ウィンドウに合わせて自動で全ての子のフォントを変更することはできないのでしょうか
それともこういった処理は自分で書く必要があるんでしょうか
807デフォルトの名無しさん:2007/11/30(金) 11:42:00
もちろん、自分でやらないと駄目。
自動で勝手にフォント変更されたら、コントロール毎にフォントを変えることが
できないではないか。
808デフォルトの名無しさん:2007/11/30(金) 12:48:46
>>801
違うよImageHlpだよ
ま、こんなモン使う機会あまりないけどな
809デフォルトの名無しさん:2007/11/30(金) 12:55:46
>>807
やはりそうなんですか
ありがとうございました
810デフォルトの名無しさん:2007/11/30(金) 13:44:40
>>808
Platform SDKを良く読んだほうが良い
811デフォルトの名無しさん:2007/11/30(金) 14:10:35
>>810
よく読むべきなのはお前な
BindImage
ReBaseImage
ImageLoad

> All ImageHlp functions, such as this one, are single threaded.
今時こんな設計の糞API揃いだが
812デフォルトの名無しさん:2007/11/30(金) 14:15:58
>>811
なんだそれNT時代のAPIじゃないのか?w
813デフォルトの名無しさん:2007/11/30(金) 14:47:24
そうはいうがな
Windows1.0時代からあるAPIだってUnicode対応・マルチスレッド対応だぞ
814デフォルトの名無しさん:2007/11/30(金) 14:48:03
1.0は言い過ぎか?
今でも使われる古参のAPIってどのあたりからあるんだろ
815デフォルトの名無しさん:2007/11/30(金) 16:24:22
>>813
それだって、最初からそうだったのではなく、
Win32化されたときからじゃないか。

>>814
Win16はわからないけど、CreateWindowとか有名な関数をMSDNライブラリで引くと、
大体Minimum operating systemsがWindows 95, Windows NT 3.1になっている。
816デフォルトの名無しさん:2007/11/30(金) 18:33:37
>>815
CreateWindowはWin16時代からある
817デフォルトの名無しさん:2007/11/30(金) 18:36:26
そりゃまあ、WinMainからRegisterClassしてCretateWindowしての
一連の基本のやつは昔からあるけどよー
818デフォルトの名無しさん:2007/11/30(金) 19:02:10
マウスキャプチャ状態にある
コモンコントロールのマウスの移動を関知するには
どうすればいいのでしょうか?
タブをドラッグアンドドロップで移動させたいのですが
親にWM_MOUSEMOVEが飛んできません…
819デフォルトの名無しさん:2007/11/30(金) 19:11:50
キャプチャしたウィンドウに飛んでこないか?
820デフォルトの名無しさん:2007/11/30(金) 19:17:04
>>819
もしやサブクラス化意外に道はないのでしょうか?
通知メッセージを用意しといてくれてもいいのに…
ゲイツめぇ
821デフォルトの名無しさん:2007/11/30(金) 19:24:10
だからぁ
SetCapture( hwnd );で
hwndに飛んでこないかと?
822デフォルトの名無しさん:2007/11/30(金) 19:34:01
>>821
キャプチャ事態は自分で行っている訳ではなくて
コモンコントロールがNM_CLICKに併せて行ってくれているようで
離したときにくるNM_RELEASEDCAPTUREまでの間に
MOVEを拾えないかと思ったのです。
823デフォルトの名無しさん:2007/11/30(金) 19:36:36
>>822
そりゃサブクラス化するべきなんじゃね?
824デフォルトの名無しさん:2007/11/30(金) 19:38:55
タブコントロールがSetCaptureして、マウスキャプチャ状態にしてるんだけど、
その状態でWM_MOUSEMOVE相当のメッセージを親Windowで取得したい。

ってこと?
825デフォルトの名無しさん:2007/11/30(金) 19:41:36
NM_CLICKでコモンコントロールはキャプチャしないだろ
それにSetCaptureすればいいだろが
826デフォルトの名無しさん:2007/11/30(金) 19:46:00
spyで確認したけどキャプチャしてない
そもそもその手のドラッグアンドドロップは自分でマウスキャプチャして実装するもの
827デフォルトの名無しさん:2007/11/30(金) 19:54:01
WM_LBUTTONDOWN
If the user is clicking a button, the control redraws the button to give a sunken appearance and captures the mouse.

ってMSDNに書いてあるから、ボタンの場合(TCS_BUTTONS style)はキャプチャしているんでしょ?
828デフォルトの名無しさん:2007/11/30(金) 20:00:29
>>827
なるほど、だからキャプチャしてたんですね。
親で改めてキャプチャするかサブクラス化してみようと思います。
どうもありがとうございました。
829デフォルトの名無しさん:2007/11/30(金) 20:01:37
TCS_BUTTONSスタイルまで確認してなかったわ
830デフォルトの名無しさん:2007/11/30(金) 20:35:39
>>814
俺はWTERMの人が書いた本でWindowsプログラミングの勉強をしたが
それがたしかWindows1.0用の本で、ほとんどそのまま3.1で通用したよ。
3.1から95もAPIはほとんど一緒だから、GetMessageとかのAPIは
ずっと変わってないと思う。
831デフォルトの名無しさん:2007/11/30(金) 22:22:09
だってある意味winプログラムの原点だからGetMessageの概念は
832デフォルトの名無しさん:2007/11/30(金) 22:58:06
イベントドリブンはナムコが考えました
833デフォルトの名無しさん:2007/11/30(金) 22:58:18
友達がいなくて
携帯メールがGetMessageできない漏れをどうにかしてください

WinSockムズカシス
834デフォルトの名無しさん:2007/11/30(金) 23:07:00
GlobalAllocで確保されるメモリって、自プロセス内のスタック領域?とかいうところから拾ってきてるの?
ファイル読み込みで、何度かGlobalReAllocを繰り返し呼び出して、再確保を繰り返しやると
18000Byte超えたあたりで、メモリの再確保に失敗する
なんでだろう
835デフォルトの名無しさん:2007/11/30(金) 23:09:28
>>833
自分で自分のアドレスにPostMessageする
836デフォルトの名無しさん:2007/11/30(金) 23:10:48
>>834
MSDN嫁よ禿
837デフォルトの名無しさん:2007/11/30(金) 23:14:37
>>836
英語だからミリだよ
838デフォルトの名無しさん:2007/11/30(金) 23:19:22
たしかにな
839デフォルトの名無しさん:2007/11/30(金) 23:28:12
>>837
英語勉強しろよ禿
840デフォルトの名無しさん:2007/11/30(金) 23:31:14
「Windowsプログラミングの極意」あるいはThe Old New Thingで
いってたけど、今は、メモリ共有のために仕組みがある以外は、
ローカルヒープとあんましかわらない、みたい。
841デフォルトの名無しさん:2007/11/30(金) 23:42:12
WinXP SP2だと、1Kから1バイトずつ伸ばしても全然失敗しないな……
フラグの指定がおかしいんじゃね?

ちなみに可変長のGlobalヒープが欲しい時は、
CreateStreamOnHGlobal + GetHGlobalFromStream がお勧めだ。
842デフォルトの名無しさん:2007/11/30(金) 23:43:23
16KBのメモリチャンク云々って話をどっかで見た気がするが忘れた。
843デフォルトの名無しさん:2007/12/01(土) 00:08:13
同じくWinXP SP2、初期サイズ1KB、増加サイズ1KBずつだと4KBで失敗。GetLastErrorは8。
増加サイズが変わると失敗するサイズも変わる。法則は謎。
GMEM_MOVEABLEすればもちろん失敗しないけど。
844デフォルトの名無しさん:2007/12/01(土) 00:28:01
ちょっとコード晒せ
845デフォルトの名無しさん:2007/12/01(土) 00:47:55
>>816
ゲンミツに言うとCreateWindowEx呼んでるだけだったような気もするけど
846デフォルトの名無しさん:2007/12/01(土) 00:56:31
HeapAlloc/HeapReAllocだとどうなる?
847デフォルトの名無しさん:2007/12/01(土) 01:38:24
>>845
手元のWin16APIヘルプだと
CreateWindow(2.x)
CreateWindowEx(3.0)
って書いてあった。
848デフォルトの名無しさん:2007/12/01(土) 02:33:48
取り込んだ画像を任意の角度に回転させるAPIってありますか?
849デフォルトの名無しさん:2007/12/01(土) 03:11:05
GDI+
850デフォルトの名無しさん:2007/12/01(土) 06:48:51
>>813
NTの最初のバージョンは3.1だが?
NTじゃないWindows 1.0がマルチスレッドやUnicodeに対応しているわけないし
851デフォルトの名無しさん:2007/12/01(土) 10:12:50
GlobalReAllocで固定メモリの領域拡大に失敗するのか
まさか単に断片化しているだけというオチじゃなかろうな
852デフォルトの名無しさん:2007/12/01(土) 10:13:53
また随分とバックパスなw

>>850
>>813は1.0時代のAPIだって今はUnicode版があるって言ってる
当たり前といえば当たり前
853デフォルトの名無しさん:2007/12/01(土) 10:27:48
GlobalAlloc懐かしいな。
854デフォルトの名無しさん:2007/12/01(土) 11:37:40
>>851
それが原因な気がするけどなー
toolhlpとかプロセスメモリエディタで覗いてみたら良いんでは
855デフォルトの名無しさん:2007/12/01(土) 11:50:50
そもそもGlobalAllocなんてクリップボードとOLEドラッグ以外に使うべきでは無い
どうせ猫でも見て変な知識付けたのだろうが
856デフォルトの名無しさん:2007/12/01(土) 12:16:36
HeapAlloc(malloc)か、サイズが数MB超えるならVirtualAlloc使えよ。

857デフォルトの名無しさん:2007/12/01(土) 13:06:37
そういう話は>>836で終わってる。
858デフォルトの名無しさん:2007/12/01(土) 13:35:10
英語が読めないので>>837で再開
859デフォルトの名無しさん:2007/12/01(土) 15:22:23
1.xの遺物 AnyPopup();
860デフォルトの名無しさん:2007/12/01(土) 15:33:01
WS_CHILDで子コントロールとして貼り付けられたダイアログって
親ウインドウが破棄されると自動的に破棄されますよね?
861デフォルトの名無しさん:2007/12/01(土) 15:49:13
いいえ
862デフォルトの名無しさん:2007/12/01(土) 15:51:44
DestroyWindowの解説に書いてある
863デフォルトの名無しさん:2007/12/01(土) 15:53:45
はい
864デフォルトの名無しさん:2007/12/01(土) 16:07:53
>>852
そりゃWin32で代わりがないAPIについてだろ。
_lcreatとかOpenFileとかにUnicode版はない
865デフォルトの名無しさん:2007/12/01(土) 18:27:11
PIDLがデスクトップを指してるかどうかって、
ILGetSizeを使って2byteかどうかで判定していい?
866デフォルトの名無しさん:2007/12/01(土) 18:45:29
>>865
SHGetSpecialFolderLocation(NULL,CSIDL_DESKTOP) + ILIsEqual()で判断するのが安牌
867デフォルトの名無しさん:2007/12/01(土) 19:36:01
CreatePrivateObjectSecurityWithMultipleInheritance
nagasugi warota
868デフォルトの名無しさん:2007/12/01(土) 20:19:00
>>866
ども。そうだよね
869834:2007/12/01(土) 21:48:40
こんなに大勢が答えてくれるなんてありがてぇありがてぇ

コードはこうなってるが、素人なんで汚いだろうけど
#define CHUNK_SIZE 1024
bySrc = GlobalAlloc(GPTR, 1);
iCount = 0;
dwTotal = 0;
do{
ZeroMemory(byTemp, CHUNK_SIZE + 1);
if(InternetReadFile(hUrl, byTemp, CHUNK_SIZE, &dwRead) == FALSE){ //失敗したら
  MessageBox(hwnd, TEXT("読み込みに失敗しました。"), TEXT("InternetReadFile Failure"), MB_OK | MB_ICONWARNING);
return -1;
}
dwTotal += dwRead;
bySrc = GlobalReAlloc(bySrc, dwTotal + 1, GMEM_MOVEABLE);
if(bySrc == NULL){
wsprintf(szBuffer, TEXT("%d 回目の読み込みで、計%dByte(新たに%dByte)の確保に失敗しました。"), iCount + 1, dwTotal, dwRead);
MessageBox(hwnd, szBuffer, TEXT("GlobaReAlloc Failure"), MB_OK | MB_ICONWARNING);

GlobalFree(bySrc);
return -1;
}

memcpy(bySrc + (CHUNK_SIZE * iCount), byTemp, dwRead);
iCount++;
}while(dwRead);

で、そのまま強制終了になったり、運がよければ「("20回目の読み込みで、計19984dByte(新たに1024Byte)の確保に失敗しました。」みたいな感じのエラーが表示される
なんでかわからん

870デフォルトの名無しさん:2007/12/01(土) 21:57:04
>bySrc + (CHUNK_SIZE * iCount)

とりあえずこれがだめなんじゃない?
毎回CHUNK_SIZEずつ読めてるとは限らないんだし
871デフォルトの名無しさん:2007/12/01(土) 22:12:30
>>869
だからそういう目的ならmalloc/realloc使えと言ってるだろうが
872デフォルトの名無しさん:2007/12/01(土) 22:21:29
>>869
>bySrc = GlobalReAlloc(bySrc, dwTotal + 1, GMEM_MOVEABLE);
同じ変数で結果を受け取ると、NULLが返ってきたときに元の領域を解放する手段が
なくなってしまってメモリリークする。reallocを使った場合も同様なので注意。
873デフォルトの名無しさん:2007/12/01(土) 22:46:57
>>870
もろにセキュリティホールだよね。
874デフォルトの名無しさん:2007/12/01(土) 23:14:54
> ZeroMemory(byTemp, CHUNK_SIZE + 1);
これは大丈夫なのか?byTempの宣言が書いてないから分からんが
875デフォルトの名無しさん:2007/12/02(日) 00:01:49
            祝

 ☆ 国 取 り 1 6 0 人 到 達 ☆ 

876デフォルトの名無しさん:2007/12/02(日) 00:04:05
何?
877デフォルトの名無しさん:2007/12/02(日) 01:15:57
桂蚕糸?
878デフォルトの名無しさん:2007/12/02(日) 05:24:18
XNResourceEditorって境界線の無いダイアログ作れないのかな
ちゃんと設定してもどうしても境界線が残るんだが
879834:2007/12/02(日) 07:46:48
おまいらなんでこんなに優しいん?
普段ボロクソ言われてるってのに(涙

一応宣言はこうなってる
BYTE byTemp[CHUNK_SIZE + 1];
static BYTE *bySrc;

それから >同じ変数で結果を受け取ると、NULLが返ってきたときに元の領域を解放する手段が
なくなってしまってメモリリークする の部分を改善してみた
bySrc = GlobalReAlloc(bySrc, dwTotal + 1, GMEM_MOVEABLE);
if(bySrc == NULL){
wsprintf(szBuffer, TEXT("%d 回目の読み込みで、計%dByte(新たに%dByte)の確保に失敗しました。"), iCount + 1, dwTotal, dwRead);
MessageBox(hwnd, szBuffer, TEXT("GlobaReAlloc Failure"), MB_OK | MB_ICONWARNING);

GlobalFree(bySrc);
bySrc = NULL;
return -1;
}

あと、>bySrc + (CHUNK_SIZE * iCount) の部分

memcpy(bySrc + dwTotal - dwRead, byTemp, dwRead);
としたら、すべてうまくいきました!!!!!!!!!!!!!!!うれしいっす!!!

芋くさいコードだけど、晒してよかった・・
ひとつ問題が解決すると、ほんとに気持ちがいいな
ありがとうな。お前ら

880デフォルトの名無しさん:2007/12/02(日) 07:55:50
FillMemoryの4バイト版ってあったりしますか
881デフォルトの名無しさん:2007/12/02(日) 08:16:45
>>879
>static BYTE *bySrc;
使い方から見てstaticで宣言する意味なくね?

>bySrc = GlobalReAlloc(bySrc, dwTotal + 1, GMEM_MOVEABLE);
改善されてないじゃん。こうだろ。
BYTE *byNewSrc;
byNewSrc = GlobalReAlloc(bySrc, dwTotal + 1, GMEM_MOVEABLE);
if (byNewSrc) {
bySrc = byNewSrc;
} else {
wsprintf.....略
}
882デフォルトの名無しさん:2007/12/02(日) 09:21:06
>>880
無いです
そのくらい自分で書け
883デフォルトの名無しさん:2007/12/02(日) 12:25:26
memset(buf,0,4);
FillMemory(buf,4,0);
884デフォルトの名無しさん:2007/12/02(日) 12:58:49
それちゃうやろw
885デフォルトの名無しさん:2007/12/02(日) 13:04:22
#if defined(RtlFillMemory)
#undef RtlFillMemory
EXTERN_C VOID WINAPI RtlFillMemory(
IN VOID UNALIGNED *Destination,
IN SIZE_T Length,
IN UCHAR Fill);
#endif
こうしておかないとダメってことか
886デフォルトの名無しさん:2007/12/02(日) 15:03:34
>>880
rep stosd
887デフォルトの名無しさん:2007/12/02(日) 17:24:48
教えてください。
自分自信のウィンドウハンドルを取得するには
FindWindowとEnumWindowを使わず取得する方法ってありますか?
888デフォルトの名無しさん:2007/12/02(日) 17:26:54
自分自身のウィンドウハンドルは自分で作ったんだからわざわざ取得しなくても最初から知ってるはずでは
889デフォルトの名無しさん:2007/12/02(日) 17:27:17
>>887
WM_CREATEで保存しとけ
890887:2007/12/02(日) 18:41:21
>>888,889
そういうのではなくてDLLでロードされたタイミングでそのDLLが
マップされたプロセスのウィンドウハンドルを取得するという作りなので
WM_CREATEとかでは無理なのです。

GetCurrentProcessId+EnumWindowsで取得という手もあるんですけど
他にやり方がないのかなと思ってレスしてみました。
因みにGetForegroundWindow、FindWindow以外のやり方でお願いします。
891デフォルトの名無しさん:2007/12/02(日) 18:42:04
ねーよ
892デフォルトの名無しさん:2007/12/02(日) 18:44:21
質問です
このスレに女性はいますか?
893デフォルトの名無しさん:2007/12/02(日) 18:50:17
>>890
ファイルマッピング
894デフォルトの名無しさん:2007/12/02(日) 18:51:33
たまに書く程度の女性なら、います。
895デフォルトの名無しさん:2007/12/02(日) 19:52:56
>>890
プロセスにウィンドウが複数存在したらどうする?

メインプログラムで「渡したいハンドル」を保管し、
DLLの初期化ロジックに渡した方が簡単だし、確実。
896デフォルトの名無しさん:2007/12/02(日) 19:53:55
>>890
おれらエスパーじゃないんだから、前の書き込みで「DLLで」とかわかるわけないだろ?
あほかw
897デフォルトの名無しさん:2007/12/02(日) 19:56:39
エスパーじゃない人には聞いていません
898デフォルトの名無しさん:2007/12/02(日) 20:09:05
じゃあここで待ってるといいよ

エスパーが質問に答えるスレ
http://pc11.2ch.net/test/read.cgi/tech/1187922645/
899デフォルトの名無しさん:2007/12/02(日) 21:30:18
ム板にもエスパースレあったのか
900887:2007/12/02(日) 23:00:42
>>893
その線ちょっと調べてみる。

>>895
インジェクションなんでそれはちょっと無理ぽ

>>896
正直スマンカッタ
901デフォルトの名無しさん:2007/12/02(日) 23:16:43
注入されたプロセスのすべてのスレッドにメッセージフック仕掛ければ、大抵のHWNDはもらえる
相手によってはがむしゃらな量(種類)のHWNDが飛んでくるけどな
ところでメインウィンドウって定義はあるのけ?
902デフォルトの名無しさん:2007/12/02(日) 23:20:12
>ところでメインウィンドウって定義はあるのけ?
だれもそんなこと言ってねえよ orz 野球終わったし寝る
903デフォルトの名無しさん:2007/12/02(日) 23:40:52
DLLインジェクションっていわゆるフックとかだろ?
対象ウィンドウ(ハンドル)が分かってない状態でのそれ、ってどういう設計なんだ?
904デフォルトの名無しさん:2007/12/02(日) 23:51:26
>>896-898
ワロタwww
905デフォルトの名無しさん:2007/12/03(月) 00:30:41
そんなに面白くはないとおもう
906デフォルトの名無しさん:2007/12/03(月) 00:36:58
まあ笑いのツボは人それぞれだしな。
907デフォルトの名無しさん:2007/12/03(月) 00:41:10
何が面白いのかさっぱり分からない
908デフォルトの名無しさん:2007/12/03(月) 00:44:51
面白くないと思う
909デフォルトの名無しさん:2007/12/03(月) 00:45:53
笑うなとは言わないよ。
ただ、あまりにも世間とずれているようなので、心配になっただけです。
910デフォルトの名無しさん:2007/12/03(月) 00:59:14
それはお節介w
911デフォルトの名無しさん:2007/12/03(月) 01:01:05
また笑ってる
912デフォルトの名無しさん:2007/12/03(月) 01:39:13
掲示板とかでつまらんつまらんって連呼してる奴は
営業とか人付き合いの下手な人
913デフォルトの名無しさん:2007/12/03(月) 01:41:23
???
914デフォルトの名無しさん:2007/12/03(月) 03:04:46
>>912
私つまらんって連呼する人だけど、
このスレの主旨を考えると、正直別に笑いなんかいらんと思う。
というか害悪。
915デフォルトの名無しさん:2007/12/03(月) 17:00:01
IDも出ない板で人に嫌われたって、
自分の一秒後の生活にすら何の影響も及ぼさないからな。
916デフォルトの名無しさん:2007/12/03(月) 17:02:33
人に嫌われることに慣れてる人の意見だな
917デフォルトの名無しさん:2007/12/03(月) 17:06:26
で  、  こ  の  ス  レ  と  何  の  関  係  が  ?
918デフォルトの名無しさん:2007/12/03(月) 17:07:36
>>915
おまえをみなみけの千秋だと思って萌えてやろう
919デフォルトの名無しさん:2007/12/03(月) 17:16:33
それは私が至らなかったねえ
920デフォルトの名無しさん:2007/12/03(月) 18:37:51
スレ違いにもほどがある。






鮫の話しようぜ
921デフォルトの名無しさん:2007/12/03(月) 19:18:01
>>920
前野乙
922デフォルトの名無しさん:2007/12/03(月) 19:35:39
英単語一つでできてるAPI名ってSleepとGDIの描画関数いくつかの他にある?
923デフォルトの名無しさん:2007/12/03(月) 19:40:01
Beep
924デフォルトの名無しさん:2007/12/03(月) 20:15:18
BS_OWNERDRAWを使って外観を変えたいと思っているのですけど、
BS_RADIOBUTTONやBS_CHECKBOXと組み合わせて使えますか?

BS_OWNERDRAWを使って描画を独自に実装した場合は、
ラジオボタンやチェックボックスの動作も独自に実装しなければならないのでしょうか?
925デフォルトの名無しさん:2007/12/03(月) 20:18:09
AUTOならかってにやってくれるんじゃない?
926デフォルトの名無しさん:2007/12/03(月) 22:06:05
>>894
女性プログラマカッコヨス
927デフォルトの名無しさん:2007/12/03(月) 22:07:04
>>924
BS_PUSHBUTTON〜BS_OWNERDRAWは同時に一つしか指定できないから

>ラジオボタンやチェックボックスの動作も独自に実装しなければならないのでしょうか?
これが正解
928デフォルトの名無しさん:2007/12/04(火) 00:28:49
ここにいる奴は良くも悪くも貪欲で物好きな奴ばかりだよな
仕事と割り切ってるマのほうが圧倒的。
929デフォルトの名無しさん:2007/12/04(火) 00:36:45
HttpQueryInfoってどこから情報をとってくるの?
WEBページのサイズを取得しようとしてるんだけど、HTTP_QUERY_CONTENT_LENGTHつけてもテキストの部分のサイズしかとれない
0が返ってくるページも多いしね
930デフォルトの名無しさん:2007/12/04(火) 03:51:59
HttpSendRequestしてないとかTransfar-Encodingがchunkedになってるかどちらか

レスポンスの大きさを知るものであってWeb上のファイルの大きさを知るものではない
931デフォルトの名無しさん:2007/12/04(火) 09:55:47
そもそも画像データや外部スクリプト、外部スタイルシートはhtml解析して別途リクエストを投げる訳で‥‥
932デフォルトの名無しさん:2007/12/04(火) 19:37:01
つか、仕事だとWin32はほとんどないような気がするんだが
Javaとかの案件のほうが圧倒的に多くないか?
933デフォルトの名無しさん:2007/12/04(火) 19:41:46
当たり前じゃん。
934デフォルトの名無しさん:2007/12/04(火) 19:53:43
SetLayeredWindowAttributesで半透明にしたウインドウを別のウインドウの上に置いて、
その上でマウスを動かすとものすごくカクカクするんですが、
考えられる原因は何でしょうか?
935デフォルトの名無しさん:2007/12/04(火) 20:02:30
>>934
1.PCがしょぼい
936デフォルトの名無しさん:2007/12/04(火) 20:04:51
>>935
半透明ではない可視ウインドウにするとカクカクしないんですよ。
937デフォルトの名無しさん:2007/12/04(火) 20:11:22
半透明は処理時間食いまくりんぐwwwwwww
938デフォルトの名無しさん:2007/12/04(火) 20:19:41
特にWindows2000は無茶遅い
939デフォルトの名無しさん:2007/12/04(火) 20:23:43
ソフトウェアカーソルだとそんなことなりそうだな
今時オンボでもそんなのあるのか怪しいけど
940デフォルトの名無しさん:2007/12/04(火) 20:27:01
>>934
ちなみにスペックは?
941デフォルトの名無しさん:2007/12/04(火) 21:01:10
>>940
CPU: PentiumD920
MEM: DDR2 2GB
Graphic: Radeon7400HD
です。
942デフォルトの名無しさん:2007/12/04(火) 21:33:30
>>941
>>935でFA
943デフォルトの名無しさん:2007/12/04(火) 21:40:50
マウスの影が半透明だから、
半透明に半透明を重ねようとして
大変な話になったとか?
944デフォルトの名無しさん:2007/12/04(火) 21:45:46
初心者すぎる質問ですが、Win32API で作ったアプリケーションは、
Windowsでしか動かないのですか?
945デフォルトの名無しさん:2007/12/04(火) 21:50:12
WindowsCEでも動かない
Lindowsなら動くかもしれない
946デフォルトの名無しさん:2007/12/04(火) 22:00:45
>>945
ありがとうございました。
947デフォルトの名無しさん:2007/12/04(火) 22:05:34
スプライト処理をしたいのですが画像の枚数が多いので
動的にマスクを作ったりBitBltを多用したりで力業状態なんですが
もっと効率よく画像を重ねていく方法はありますか?
948デフォルトの名無しさん:2007/12/04(火) 22:07:57
DirectDraw
DirectGraphic
949デフォルトの名無しさん:2007/12/04(火) 23:02:42
directXですか
これ以上はすれちになりそうなので初心者スレ行ってきます

ありがとうございました
950デフォルトの名無しさん:2007/12/04(火) 23:33:53
Windows と C++ Windows Template Library 8.0
http://msdn.microsoft.com/msdnmag/issues/07/12/WindowsCPP/default.aspx?loc=jp

まあGUIプログラミングとか一切しないわけだが
951デフォルトの名無しさん:2007/12/04(火) 23:48:56
952デフォルトの名無しさん:2007/12/05(水) 01:01:55
>>945
リンドウス?ってリナクスにウインドウズっぽいGUIかぶせたライブドアが絡んでたOSだっけ?
Win32APIと互換性あるのかあれ
953デフォルトの名無しさん:2007/12/05(水) 01:05:33
というか、キモはWINEじゃねーの。
954デフォルトの名無しさん:2007/12/05(水) 02:23:49
AlphaBlend関数(だけ?)を除いて、GDIには32bppのαチャンネルなんていう概念はないですか?
955デフォルトの名無しさん:2007/12/05(水) 03:39:43
レイヤーウィンドウ作る時もアルファチャンネルあるし、XP以上だとアルファチャンネルつきアイコンも出てくる。
というか、質問の意味がわからない。
956デフォルトの名無しさん:2007/12/05(水) 03:41:04
BITMAPV4HEADER::bV4AlphaMask
957デフォルトの名無しさん:2007/12/05(水) 03:51:00
AlphaBlendていう関数がありますがなにか
958デフォルトの名無しさん:2007/12/05(水) 04:58:37
>>957
人の話を聞けとよく言われるだろ
959デフォルトの名無しさん:2007/12/05(水) 08:03:21
>>957-958
warota(bo-yomi
960shinnichi:2007/12/05(水) 11:18:58
winsockで1対多のチャットプログラムを作ろうとしているのですが、上手くいかず困っています。
とりあえず以下のプログラムを作成して実験してみたのですが、

struct sockaddr_in addr1,addr2;
struct sockaddr_in client1,client2;
int len;
SOCKET sock1,sock2;

// 1
sock1 = socket( AF_INET , SOCK_STREAM , 0 );
addr1.sin_family = AF_INET;
addr1.sin_port = htons( 12345 );
addr1.sin_addr.S_un.S_addr = INADDR_ANY;
bind( sock1 , ( struct sockaddr * )&addr1 , sizeof( addr1 ) );
listen( sock1 , 1 );
len = sizeof( client1 );
sock1 = accept( sock1 , ( struct sockaddr * )&client1 , &len );

// 2
sock2 = socket( AF_INET , SOCK_STREAM , 0 );
addr2.sin_family = AF_INET;
addr2.sin_port = htons( 12345 );
addr2.sin_addr.S_un.S_addr = INADDR_ANY;
bind( sock2 , ( struct sockaddr * )&addr2 , sizeof( addr2 ) );
listen( sock2 , 1 );
len = sizeof( client2 );
sock2 = accept( sock2 , ( struct sockaddr * )&client2 , &len );

// 1 のときにはacceptで待機し、クライアントからコネクションすると接続され // 2 が実行されるのですが、// 2のacceptでは待機してくれません(クライアントからコネクションしなくても流れていってしまう)。
理由が分からず困っています。
どなたか解る人がいましたらご教授願います。
961デフォルトの名無しさん:2007/12/05(水) 11:22:05
戻り値でどこでどんなエラーが出てるか調べてみ?
962デフォルトの名無しさん:2007/12/05(水) 11:22:35
listenポート同じだからじゃ・・
963デフォルトの名無しさん:2007/12/05(水) 11:23:55
>>960
エラーコードを確認しましょう。つーか、Winsockはネットワークプログラミングスレのほうが無難じゃないかな?
# 尤も、基礎を勉強してから出直せって言われそうではあるが。
964shinnichi:2007/12/05(水) 11:35:22
回答有難うございます。
戻り値ではINVALID_SOCKETが返ってきています。
なぜだかわかりませんか?
965デフォルトの名無しさん:2007/12/05(水) 11:38:45
最後だけチェックしてる?
エラーはもっと前で起きてるんじゃない?
966shinnichi:2007/12/05(水) 11:54:13
回答有難うございます。
エラーですがbindのところで起きていました。
>>962の指摘どおりポートが同じだからエラーが起きていると思われます。
エラーの原因わかりましたので、あとは、色々試してみようと思います。
ご意見有難うございました。
967デフォルトの名無しさん:2007/12/05(水) 12:12:07
内容はスレ違いだけど平和でよかた
968デフォルトの名無しさん:2007/12/05(水) 12:21:57
winsockはWin32APIの一部だと思うが
969デフォルトの名無しさん:2007/12/05(水) 12:23:52
>>968
>963はより適切なスレに誘導しただけだ。一部であることを否定しているわけではない。
970デフォルトの名無しさん:2007/12/05(水) 12:25:05
いや、>>967に対しての話でしょ
971デフォルトの名無しさん:2007/12/05(水) 14:34:36
→↓↘+P
972デフォルトの名無しさん:2007/12/05(水) 14:52:25
しょぉ〜〜(ry
973デフォルトの名無しさん:2007/12/05(水) 15:04:55
vc++が初めてむかついたとき:
#define WIN32_LEAN_AND_MEANがなんでデフォでテンプレにはいってんだよ!!
これのせいで3時間なやんじまったじゃねーか!!!!
974デフォルトの名無しさん:2007/12/05(水) 17:33:45
WIN32_LEAN_AND_MEANって何を省略してるんだぜメーン?
975デフォルトの名無しさん:2007/12/05(水) 17:39:11
>>974
PNOTIFYICONDATA
976デフォルトの名無しさん:2007/12/05(水) 18:44:47
>>974
windows.hをWIN32_LEAN_AND_MEANで検索すれば分かる事を聞くな低脳
977デフォルトの名無しさん:2007/12/05(水) 18:56:38
IEコンポーネントで簡単なブラウザを作ったのですが、ブラウザ側からHTMLに変化をもたせるような命令を実行した後、
うまく変化が現れません。HTMLを表示しているウィンドウにマウスカーソルを当てた時に初めて変化が起こるのですが、
これを特にマウスをウィンドウ上で移動させる事なく変更を反映させるにはどうすればいいのでしょうか?
978デフォルトの名無しさん:2007/12/05(水) 21:01:57
>>976
こういう人はなんかなぁ...
979デフォルトの名無しさん:2007/12/05(水) 21:04:51
↓次スレよろ
980デフォルトの名無しさん:2007/12/06(木) 01:13:47
書き順ソフトをつくりたいと思ってるんですが、TrueTypeフォントを序々になぞっていくようなことってどうやって実装すればいいんでしょう?
習字で筆がこう、字を書いていくような
981デフォルトの名無しさん:2007/12/06(木) 01:24:41
質問ですが、
windows用の帯域制御ソフトの仕組みがどういう風になっているのか、
大まかに教えていただけませんか?
982デフォルトの名無しさん:2007/12/06(木) 01:31:53
>>980
まず、書き順データを用意することから始めるんだ。 そしたら次はスレ立てだ。
983デフォルトの名無しさん:2007/12/06(木) 02:15:48
>>982
立てただよ

TrueTypeってどの線をどういう順番で描くのか情報持ってないの?
984デフォルトの名無しさん:2007/12/06(木) 02:18:05
>>983
氏ね
985デフォルトの名無しさん:2007/12/06(木) 02:40:51
「上書きしますか?」とか「終了しますか?」とかの、よく使う文章のメッセージボックスを表示させるAPIはあるんですか?
いくつかの外国製の英語のソフトウェアでは、そこだけ日本語で出てくるので、気になりました。
986デフォルトの名無しさん:2007/12/06(木) 03:12:36
ファイル移動にShellのAPI使ってるんじゃね?
終了しますか?はしらね
987デフォルトの名無しさん:2007/12/06(木) 03:53:29
ウィンドウハンドルからそのウィンドウを所有しているプロセスのフルパスを取得するには、
どのようなAPIを使えば良いでしょうか?
988デフォルトの名無しさん:2007/12/06(木) 03:56:24
>>985
MFCだよ
989デフォルトの名無しさん:2007/12/06(木) 06:26:56
>>987
GetModuleFileNameではダメ?
990デフォルトの名無しさん:2007/12/06(木) 10:08:30
バックアップは・・・昨日の・・・朝9時か・・・
はぁ・・・
991デフォルトの名無しさん:2007/12/06(木) 10:09:43
誤爆↑
992デフォルトの名無しさん:2007/12/06(木) 10:29:34
GetWindowModuleFileName かな
993デフォルトの名無しさん:2007/12/06(木) 14:59:43
     ____
   /__.))ノヽ
   .|ミ.l _  ._ i.)
  (^'ミ/.´・ .〈・ リ  
  .しi   r、_) |   この子もわしJAPAN入りや。わしが育てたる
    |  `ニニ' /   
   ノ `ー―i´
994デフォルトの名無しさん:2007/12/06(木) 15:39:13
>>989
>>992

レスありがとうです

家に帰ったら試して見ます
995デフォルトの名無しさん:2007/12/06(木) 17:53:57
996デフォルトの名無しさん:2007/12/06(木) 17:54:00
997デフォルトの名無しさん:2007/12/06(木) 17:54:02
998デフォルトの名無しさん:2007/12/06(木) 17:54:05
999デフォルトの名無しさん:2007/12/06(木) 17:54:08
1000デフォルトの名無しさん:2007/12/06(木) 17:54:23
なんですと?!
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。