Win32API質問箱 Build76

1デフォルトの名無しさん
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。
「知らないならレスしないで下さい。ウザイだけです。 」なんて言わないでねっ!

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

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

- Win32API質問箱 wiki
http://wiki.livedoor.jp/program1/d/FrontPage

Win32API質問箱 Build75
http://pc11.2ch.net/test/read.cgi/tech/1231423602/
2デフォルトの名無しさん:2009/02/03(火) 09:57:13
3デフォルトの名無しさん:2009/02/03(火) 09:57:46
4デフォルトの名無しさん:2009/02/03(火) 09:57:59
5デフォルトの名無しさん:2009/02/03(火) 09:58:10
6デフォルトの名無しさん:2009/02/03(火) 09:58:37
- Google 聞く前に検索
http://www.google.com/

下記サイトは、違っている事もあるので参考程度にしよう!
流れを参考にしながら、APIの仕様を読めば使えるはず。

- 猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/
- Win32 API入門
http://wisdom.sakura.ne.jp/system/winapi/
- Win32 プログラミング入門
http://www7.plala.or.jp/keny01/
●Win32API(C言語)
http://www.geocities.jp/ky_webid/win32c/
7デフォルトの名無しさん:2009/02/03(火) 09:59:40
後ろで大きな爆発音がした。あるいは気のせいかもしれない。
とりあえず今は驚いて振り返る前に、まずパスタをゆでようと思った。



そんな思いで立てましたわ。
8デフォルトの名無しさん:2009/02/03(火) 10:28:09
これはいちおつじゃなくて

知らないならレスしないでください。
9デフォルトの名無しさん:2009/02/03(火) 12:03:01
CD取り出しするAPIってありますか?
10デフォルトの名無しさん:2009/02/03(火) 12:07:38
DeviceIoControl
11デフォルトの名無しさん:2009/02/03(火) 12:14:07
mciSendStringで開け閉めできたような
12デフォルトの名無しさん:2009/02/03(火) 12:52:48
Windows NT または Windows 2000 または Windows XP でリムーバブル メディアを Ejecting する方法
http://support.microsoft.com/kb/q165721/
13デフォルトの名無しさん:2009/02/03(火) 13:00:30
>>10-12
ありがとうございます
14デフォルトの名無しさん:2009/02/03(火) 14:08:09
CDにかかった精子を綺麗に拭き取るAPIありますか?
15デフォルトの名無しさん:2009/02/03(火) 14:23:38
::RefreshSamenByHand( HWND hWnd);
16デフォルトの名無しさん:2009/02/03(火) 14:25:10
学校サボってる中学生の相手なんかしなくても
17デフォルトの名無しさん:2009/02/03(火) 14:32:55
相手してるのも学校サボってる中学生だから
18デフォルトの名無しさん:2009/02/03(火) 14:37:36
この時間にレスしてる奴って学校サボってる中学生だから
19デフォルトの名無しさん:2009/02/03(火) 15:55:27
ウィンドウを作成しESCで閉じるだけのプログラムに
CreateProcess関数でwinmain.exeを起動するプログラムを追加したんだけど

当たり前だけど、新しいウィンドウが開いてマインスイーパーが起動しますよね
この際、最初に作ったウィンドウの子ウィンドウとしてマインスイーパーを起動することは出来ないのでしょうか
20デフォルトの名無しさん:2009/02/03(火) 16:05:46
以下の判定文でMDIフレームウィンドウ(一番大本のウィンドウ)が
最前面かどうかを判定しようとしましたが、
よく分からないハンドルしか返って来ません。
MDI子ウィンドウ等かと思いましたが違うようです。
一体何のハンドルが返ってきているのでしょうか?
g_hWndMain == GetWindow( g_hWndMain, GW_HWNDFIRST )
21デフォルトの名無しさん:2009/02/03(火) 16:19:21
>>20
それはMDIクライアントというウィンドウ。
http://wisdom.sakura.ne.jp/system/winapi/win32/win139.html
22デフォルトの名無しさん:2009/02/03(火) 16:30:09
>>19
そろそろ諦めて
23デフォルトの名無しさん:2009/02/03(火) 16:31:06
ホットキーコントロールに表示されてる文字列ってどうやって取得する?
24デフォルトの名無しさん:2009/02/03(火) 16:33:34
HKM_GETHOTKEY
25デフォルトの名無しさん:2009/02/03(火) 16:34:24
はい?
26デフォルトの名無しさん:2009/02/03(火) 16:34:50
>>19
できるけど教えない。
27デフォルトの名無しさん:2009/02/03(火) 16:36:00
>>22
あきらめるって何を?
プログラム組むことあきらめて>>22みたいに、知識無いのに無駄口叩いて粘着する人間になれってこと?
28デフォルトの名無しさん:2009/02/03(火) 16:37:13
>>26
できるならそれはよかったと安心できたけど
なんで質問スレにいるの?
アホなの?
29デフォルトの名無しさん:2009/02/03(火) 16:38:12
718 名前:デフォルトの名無しさん[] 投稿日:2009/01/30(金) 08:29:41
やりたいこととしては、吉里吉里とDXライブラリを同ウィンドウで処理することなんですが


WinAPIでウィンドウ作って
その子ウィンドウとして、ある.exeファイルを起動(吉里吉里)
そして、通常は霧きりで進行、なんらかのフラグでDXライブラリに移行
みたいなのを創造しているのですが、これは可能なのでしょうか?
知識があまり無いので勘違いしまくりの発言だったらすいません

791 名前:デフォルトの名無しさん[sage] 投稿日:2009/01/31(土) 13:18:40
ああ、親ウィンドウのエディットボックス内の入力されている
ファイル名を子ウィンドウで取得させて処理させたいって事か・・・やっと意味がわかった
どのタイミングでさせたいの?場合によっては独自定義メッセージでさせちゃうとかすりゃいいのに

878 名前:デフォルトの名無しさん[] 投稿日:2009/02/01(日) 21:16:33
WinAPIでアプリAを作り、Aを起動すると
ウィンドウを作成し
次に予め作っておいたアプリBを起動し、それをアプリAの子ウィンドウにする
これってどうやればできますでしょうか

885 名前:デフォルトの名無しさん[] 投稿日:2009/02/01(日) 21:27:06
>>881
ハンドルから子ウィンドウは分かりましたがアプリAを起動するとアプリBの.exeを自動で起動する方法が分かりません



数日前からいるこいつだろ。
最初にできるって言った奴責任持って回答しろよw
3022:2009/02/03(火) 16:41:40
>>27
26みてーのしかいないから諦めろって事よ

ここで聞いても無駄な時間だと思うぜー
31デフォルトの名無しさん:2009/02/03(火) 16:42:31
>>29
うんそうだけど、質問スレに粘着して質問に答えずに意味の分からない煽りをする必要性を教えて欲しいかな
暇なの?それとも、初心者が育つのが嫌なの?
32デフォルトの名無しさん:2009/02/03(火) 16:43:35
>>30
知識無いのに知ったかぶって粘着してる奴ばっかってのは知ってるけど
たまにちゃんと知ってる人も居るから聞いてます
CreateProcess教えてくれた人とかね
33デフォルトの名無しさん:2009/02/03(火) 16:48:38
別プロセスのウインドウを親ウインドウに指定する事を禁止する記述は最近のSDKからは消えているので
普通にSetParentでできるかもしれない
ただし親ウインドウに指定できたからと言って期待通りに動くかどうかはまた別問題
34デフォルトの名無しさん:2009/02/03(火) 16:52:38
やったことないけど、新規に独自の Window station を作って
STARTUPINFO にそのステーション名渡す とかいう話になるのかね?
35デフォルトの名無しさん:2009/02/03(火) 17:28:18
>>33
ありがとうございます
既存のウィンドウのハンドルを取得するのはFindWindow関数で出来るみたいなのでちょっとまた試行錯誤してみます
36デフォルトの名無しさん:2009/02/03(火) 17:35:41
もう来るなよ
37デフォルトの名無しさん:2009/02/03(火) 17:36:35
メッセージフックで他のソフトにWM_KILLFOCUSを通さないようにしたいと思い、
メッセージフック→フックプロシージャ( if(cwps->message==WM_KILLFOCUS)return true; )
とやり、しっかりif(cwps->message==WM_KILLFOCUS)return true;の所にも届いているのですが、
上手くカットできてないのか何故かそのフックを組み込んだソフトにもWM_KILLFOCUSが届いてしまいます。
一度、WM_KILLFOCUSをフックしたらメッセージボックスを出すようにして試してみてちゃんとWM_KILLFOCUS
が送られてくるタイミングでメッセージボックスがだされるのでフックはちゃんとできていると思うんですが
なぜでしょうか?
SetWindowsHookExの第一引数はWH_CALLWNDPROCにしています。
38デフォルトの名無しさん:2009/02/03(火) 17:48:33
>>37
It is highly recommended that you call CallNextHookEx and
return the value it returns; otherwise, other applications that
have installed WH_CALLWNDPROC hooks will not receive hook
notifications and may behave incorrectly as a result. If the hook
procedure does not call CallNextHookEx, the return value should be zero.

The CallWndProc hook procedure can examine the message, but it cannot modify it.
39デフォルトの名無しさん:2009/02/03(火) 17:54:52
英語よく分がんねぇ
CallNextHookEx呼ぶか、0返すかしろってことだよね?でもCallNextHookExまたは0
返すとメッセージカットできないし、要するにメッセージフックは来たメッセージ
が分かって勝手に処理を追加することはできても本来されるとされていた処理はカット
できないってこと?
40デフォルトの名無しさん:2009/02/03(火) 18:07:28
煽ってる奴っていつもここに粘着してるクズだからスルーしなさい
41デフォルトの名無しさん:2009/02/03(火) 18:08:19
42デフォルトの名無しさん:2009/02/03(火) 18:39:51
文字列を仮想キーコードに変換できる?
"A" → VK_A
"Shift" → VK_SHIFT
みたいなの
43デフォルトの名無しさん:2009/02/03(火) 18:44:12
要するにメッセージフックではメッセージをカットすることはできないと?
ではメッセージフックの他にメッセージをカットする方法ありますか?
44デフォルトの名無しさん:2009/02/03(火) 18:50:01
>>32
前スレかどっかで答えたのじゃだめなん?
CreateProcessで立ち上げたアプリのHINSTANCEから
メインウィンドウのハンドルを取得して
そのウィンドウハンドルを自分のウィンドウの子ウィンドウにするように
ウィンドウスタイル変更したらいいんじゃね?

45デフォルトの名無しさん:2009/02/03(火) 19:17:57
>>43
たしか、消し去りたいときはWM_NULLにしてしまうのではなかったかな?
46デフォルトの名無しさん:2009/02/03(火) 19:25:20
×メッセージフックではメッセージをカットすることはできない
△WH_CALLWNDPROCではではメッセージをカットすることはできない
47デフォルトの名無しさん:2009/02/03(火) 19:38:47
変更可能なのWH_MESSAGEだけじゃね。
あとローレベルフック。
48デフォルトの名無しさん:2009/02/03(火) 20:43:04
LoadImageでL"image\\hoge.png"を渡して
PNGの画像を読み込もうとすると0が返ってくるです。
どうすればいいですか?
49デフォルトの名無しさん:2009/02/03(火) 21:02:54
>>48
まずはMSDNを読め。
50デフォルトの名無しさん:2009/02/03(火) 21:07:48
LoadImageっていつの間にかpngに対応したのか
今日はじめて知ったよ
51デフォルトの名無しさん:2009/02/03(火) 21:10:01
>42
無理じゃないかなー。情報減ってるんで。
52デフォルトの名無しさん:2009/02/03(火) 21:15:57
ヘッダ読んで置換
53デフォルトの名無しさん:2009/02/03(火) 21:35:10
PNG扱いたいなら素直にGDI+使っとけ、で終了。
54デフォルトの名無しさん:2009/02/03(火) 21:49:09
OleLoadPictureFileは対応しているように見えるな。
ファイル名をVARIANT型で渡す必要があるので多少面倒だが。
……PGNという画像形式は流石に無いと信じたい。
55デフォルトの名無しさん:2009/02/03(火) 21:56:19
PGNなんて画像形式聞いた事無いんだが
56デフォルトの名無しさん:2009/02/03(火) 22:11:10
libpng
57デフォルトの名無しさん:2009/02/03(火) 22:23:42
PGNも知らないとかいつの時代の人間だよ……
58デフォルトの名無しさん:2009/02/03(火) 22:27:48
くやしい!…PGN…PGNッ
59デフォルトの名無しさん:2009/02/03(火) 22:31:35
クリムゾンAPI
60デフォルトの名無しさん:2009/02/03(火) 22:36:11
>>51
そうかーありがとう
61デフォルトの名無しさん:2009/02/03(火) 22:40:06
DIBをStretchDIBits関数で描画したときに
YSrcを0,Xsrcを0以外に設定すると
Yの座標がおかしくなるんだけど,そういうもの?
62デフォルトの名無しさん:2009/02/04(水) 00:18:41
PGMじゃなくてPGNか。。
63デフォルトの名無しさん:2009/02/04(水) 00:23:05
ピグモンカワユス
64デフォルトの名無しさん:2009/02/04(水) 00:24:35
libpngは正直言ってお勧めしない
65デフォルトの名無しさん:2009/02/04(水) 00:30:48
>文字列を仮想キーコードに変換できる?
変換テーブルを自前で用意すりゃいいじゃん。
66デフォルトの名無しさん:2009/02/04(水) 00:33:38
日本語文字は?
67名無し募集中。。。:2009/02/04(水) 00:46:40
俺ならSusie Plugin
68デフォルトの名無しさん:2009/02/04(水) 01:02:45
pngのデコードくらい自分で書けばいい
69デフォルトの名無しさん:2009/02/04(水) 01:09:28
イヤイヤマテマテ
BMPならともかく、PNGとかTIFFは相当手間かかると思うんだぜ
70デフォルトの名無しさん:2009/02/04(水) 01:18:13
特に、TIFFは色々対応し始めたらきりがないからな。
画像のデコード自体が目的なら止めはしないけど。
71デフォルトの名無しさん:2009/02/04(水) 02:23:53
>>65
めんどいやん・・
72デフォルトの名無しさん:2009/02/04(水) 02:36:15
MapVirtualKeyしてGetKeyNameTextして一致するやつ探せばええやん
PrtScrとかキーボードによって表記違うやつがどうなるか知らんけど
73デフォルトの名無しさん:2009/02/04(水) 02:39:42
>>69
ガンマとか色空間を捨てればpngは比較的簡単だぞ
74デフォルトの名無しさん:2009/02/04(水) 07:27:16
pngはlibpngあっただろ
75デフォルトの名無しさん:2009/02/04(水) 07:28:23
>>64に戻る

!!↓png以外の話題でお願いします!!
76デフォルトの名無しさん:2009/02/04(水) 09:12:57
ヘッダからVK~を検索して引けばいい
77デフォルトの名無しさん:2009/02/04(水) 11:30:51
78デフォルトの名無しさん:2009/02/04(水) 11:39:46
CLRのPanelコンポーネントに相当するものは何でしょうか?
79デフォルトの名無しさん:2009/02/04(水) 11:57:15
static
80デフォルトの名無しさん:2009/02/04(水) 13:27:05
空のウィンドウ作って包含されるウィンドウの親をそいつにすればいい
81デフォルトの名無しさん:2009/02/04(水) 13:28:04
ちょっと何言ってるかわかんないです
82デフォルトの名無しさん:2009/02/04(水) 14:24:10
それは君の頭が悪いからです
83デフォルトの名無しさん:2009/02/04(水) 14:26:08
どのアプリでもそうなんだが、AdobeReaderからのテキストのドロップが
変になるのはどっちが悪いんですか?
84デフォルトの名無しさん:2009/02/04(水) 14:27:20
AbodeReaberが悪い
8578:2009/02/04(水) 14:29:45
>>80
モードレスダイアログ作ってダイアログプロシージャ作って(ry
ってやつですか?
86デフォルトの名無しさん:2009/02/04(水) 15:04:25
StretchDIBitsで縮小したDIBビットデータにアクセスする方法を教えてください
87デフォルトの名無しさん:2009/02/04(水) 15:21:33
GetDIBits
88デフォルトの名無しさん:2009/02/04(水) 16:12:44
>>87
ありがとうございます。
とりあえずやってみたのですがうまくいきません。。
dwBufferに入ってるデータを縮小してまたdwBufferに戻したいのですが・・・

1440x1080のDIBデータ(dwBuffer)を1280x720に縮小
dwBuffer = new DWORD[1440*1080];
dwBufferにデータをぶち込み
BITMAPINFO bi;
::ZeroMemory( &bi, sizeof( BITMAPINFO ) );
bi.bmiHeader.biSize = sizeof( BITMAPINFOHEADER );
bi.bmiHeader.biWidth = 1440;
bi.bmiHeader.biHeight = 1080;
bi.bmiHeader.biPlanes = 1;
bi.bmiHeader.biBitCount = 32;
bi.bmiHeader.biCompression = BI_RGB;
HDC hdc = ::CreateCompatibleDC( NULL );
HBITMAP hb = ::CreateCompatibleBitmap( NULL, 1280, 720 );
::SelectObject( hdc, hb );
::StretchDIBits( hdc, 0, 0, 1280, 720, 0, 0, 1440, 1080, dwBuffer, &bi, DIB_RGB_COLORS, SRCCOPY );
::GetDIBits( hdc, hb, 0, 720, dwBuffer, &bi, DIB_RGB_COLORS );

突っ込み所満載かもしれませんがどこが悪いのでしょうか・・・
89デフォルトの名無しさん:2009/02/04(水) 16:41:38
GetLastErrorぐらいやってから聞いてるんだろうな?
90デフォルトの名無しさん:2009/02/04(水) 16:47:36
>>89
知らないならレスしないで下さい。ウザイだけです。
91デフォルトの名無しさん:2009/02/04(水) 16:49:17
>>90
知らないならレスしないで下さい。ウザイだけです。
92デフォルトの名無しさん:2009/02/04(水) 16:52:57
CreateCompatibleBitmapにNULL渡したら失敗するだろそりゃ
93デフォルトの名無しさん:2009/02/04(水) 16:53:43
何とCompatible(互換)なんだろうな
94デフォルトの名無しさん:2009/02/04(水) 17:05:26
なにをするためにベタDIBデータ欲してるのか分からんが、多分そもそもCreateCompatibleBitmapじゃなくてCreateDIBSectionじゃないとダメな気がするなあ。
95デフォルトの名無しさん:2009/02/04(水) 17:07:02
DC
96デフォルトの名無しさん:2009/02/04(水) 18:17:10
皆さん色々ご指摘ありがとうございます。

>>94
DWORD *buf;
HDC hdc = ::CreateCompatibleDC( NULL );
HBITMAP hb = ::CreateDIBSection( hdc, &bi, DIB_RGB_COLORS, (void**)&buf, NULL, 0 );
::SelectObject( hdc, hb );
::StretchDIBits( hdc, 0, 0, 1280, 720, 0, 0, 1440, 1080, dwBuffer, &bi, DIB_RGB_COLORS, SRCCOPY );
::GetDIBits( hdc, hb, 0, 720, dwBuffer, &bi, DIB_RGB_COLORS );
で試してみると先ほどは真っ黒だったのが今度は画面半分下から縮小された画像が表示されました。
(CreateCompatibleBitmapでhdcを指定しても真っ黒でした)
ちなみに、StretchDIBitsはhdcにイメージのハンドルを与えてやると
イメージには正常に縮小された画像が表示されていましたので
怪しい部分はそれ以外だとおもいますが・・・
また何処が間違っているかご指摘お願いします
97デフォルトの名無しさん:2009/02/04(水) 18:19:44
bi.bmiHeader.biWidth = 1280;
bi.bmiHeader.biHeight = 720;
::GetDIBits( hdc, hb, 0, 720, dwBuffer, &bi, DIB_RGB_COLORS );
9886:2009/02/04(水) 18:24:11
>>97
早速のお答え有難うございます!!
確かにそれでちゃんと画面の上から書き出しましたが・・・
今度は画像が崩れてしまいました><
でもこれで更に近いところまでくることがでいました!
9986:2009/02/04(水) 18:32:43
すみません。
bi.bmiHeader.biWidth = 1280;
bi.bmiHeader.biHeight = 720;
をしたから画像がくずれたのではなくてその前から崩れた状態でした。。
くずれた状態というのは同じパターンを繰り返してるみたいな・・・
StretchDIBits自体はうまくいってるので他に怪しい所は
CreateDIBSectionとGetDIBitsでしょうか?
100デフォルトの名無しさん:2009/02/04(水) 18:35:05
AABB   AB
AABB -> CD
CCDD
CCDD

AABB   AB■■
AABB -> CD■■
CCDD  ■■■■
CCDD  ■■■■

ビットマップごと小さくしたいのか、ビットマップの大きさは同じで
画像だけ小さくしたいのか
10186:2009/02/04(水) 18:39:19
くぁwせdrftgyふじこl;p

>>97
神様ありがとう!
おもいっきり勘違いしてましたすみません><
GetDIBitsの直前でそれをやればよかったんですね。
ちゃんと表示できました。ありがとうございます。

>>100
いやすみません。
1440x1080のDIBデータだけある状態で
それを1280x720のサイズのDIBデータにしたかったんです><
102デフォルトの名無しさん:2009/02/04(水) 21:16:17
DWORD の次は QWORD かと思ってたら
DWORDLONG という訳の分からないものだった衝撃
103デフォルトの名無しさん:2009/02/04(水) 21:50:18
日記はblogに書いてろクズ
104デフォルトの名無しさん:2009/02/04(水) 21:52:46
       ハ,,ハ
 ((⊂ ヽ ( ゚ω゚ )  / ⊃))
   | L |   '⌒V /
    ヽ,_,/   ヽ_./  お断りします
  __,,/,,   i       お断りします
 (  _     |
  \\_  ̄`'\ \
   ヽ )     > )
   (_/´    / /
         ( ヽ
         ヽ_)
105デフォルトの名無しさん:2009/02/04(水) 22:41:00
basetsd.hに無いDWORDLONGなど邪道。
DWORDの次はDWORD64と決まっておるのだ。
106デフォルトの名無しさん:2009/02/04(水) 22:49:00
タスクトレイにアイコン表示させて右クリックで操作したいんですが
google検索したところ、case WM_TRAYICONMESSAGE: case WM_TRAYICONMESSAGE:
を使うサンプルが出てきました。
Borland C++ Compiler 5.5 で書いてるんですが未定義のシンボルと出て使えませんでした。
Borland C++ Compiler 5.5 での書き方って別にあるんですか?
107デフォルトの名無しさん:2009/02/04(水) 22:51:37
>>106
勝手に定義してるだけだろ。
108デフォルトの名無しさん:2009/02/04(水) 22:52:35
Vista SP1,VC++2008 Win32Projectです。
ウィンドウにツールチップを設定したいのですがうまくいきません。
GetLastErrorは0でした。
主なコードは以下の通りです。

case WM_CREATE:
GetClientRect(hWnd, &ClientRect);
InitCommonControls();
hTool = CreateWindowEx
(
WS_EX_LEFT, TOOLTIPS_CLASS, NULL, TTS_ALWAYSTIP, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hWnd, NULL, hInst, NULL
);
ToolInfo.cbSize = sizeof(TOOLINFO);
ToolInfo.hinst = NULL;
ToolInfo.hwnd = hWnd;
ToolInfo.lParam = NULL;
ToolInfo.lpReserved = NULL;
ToolInfo.lpszText = L"テスト";
ToolInfo.rect = ClientRect;
ToolInfo.uFlags = TTF_SUBCLASS;
ToolInfo.uId = 1;
SendMessage(hTool, TTM_ADDTOOL, NULL, (LPARAM)&ToolInfo);

SendMessageの戻り値がFALSEでうまくいきません。
どこが悪いのでしょうか?
VC++を始めて2ヶ月ちょっとの超初心者なので、調べ方が悪いのか解決方法が分りません。
誰かわかる人がいたら教えてください。お願いします。
109デフォルトの名無しさん:2009/02/04(水) 22:53:10
WM_USER+1
110デフォルトの名無しさん:2009/02/04(水) 22:56:00
>>61を知ってる人いません?
111デフォルトの名無しさん:2009/02/04(水) 23:02:03
>>107>>109
ああ、わかりました。ありがとうございました。
112デフォルトの名無しさん:2009/02/04(水) 23:02:45
>未定義のシンボルと出て使えませんでした。
アプリケーション定義のメッセージだもの、自分で定義しなきゃ使えんよ。

#define WM_TRAYICONMESSAGE WM_APP + 1

とでもしておけ。
113デフォルトの名無しさん:2009/02/04(水) 23:11:44
>>105
なんで QWORD にしないんだろうか・・・
5ワードと区別がつかないからか?
114名無し募集中。。。:2009/02/04(水) 23:19:45
QUAD?
115デフォルトの名無しさん:2009/02/04(水) 23:21:37
クアッドワード
116デフォルトの名無しさん:2009/02/04(水) 23:34:58
自分でQWORDって定義して使ってたけど
WORDLONGなんてあったんだね
117デフォルトの名無しさん:2009/02/04(水) 23:45:52
もうUINT64でいいよ。
118デフォルトの名無しさん:2009/02/04(水) 23:49:18
>>110
DIBは通常BottomToTopなので……まあ、色々あるんだわ、これが。
とりあえず、昔のDIB系のAPI使うより、
CreateDIBSectionから始めたほうが幸せになれる、とだけは言っとく。
119デフォルトの名無しさん:2009/02/04(水) 23:52:40
>>118
thx,幸せになるため変更してみる
120デフォルトの名無しさん:2009/02/05(木) 00:44:50
ウィンドウを毎秒50フレームで再描画してるんですが、ダブルバッファリングしてもどうしてもちらつきが多いです。
GDIとかで描いてる以上チラつきをDirectX並に減らすことは無理です?
121デフォルトの名無しさん:2009/02/05(木) 01:04:28
ちらついてる原因にもよるが。WM_ERASEBKGNDは潰しとけとかその辺は押さえてるか?
122デフォルトの名無しさん:2009/02/05(木) 03:49:12
セカンダリモニタの開始座標位置(左上の座標)を得るにはどうすればいいですか?
そのままプライマリの右に設定されてるときはプライマリの解像度を得たら分かるけど
左,上,下とか微妙にずらして斜め上とかにも設定できちゃうので困ってます。
123デフォルトの名無しさん:2009/02/05(木) 04:10:47
GetMonitorInfo
124デフォルトの名無しさん:2009/02/05(木) 09:32:41
>>120
GDIで50fpsとか、馬鹿ですか?
125デフォルトの名無しさん:2009/02/05(木) 14:27:25
指定した日が祝日かどうかを調べるAPIを教えてくださいよ
126デフォルトの名無しさん:2009/02/05(木) 14:33:08
>>125
面白くない。
もっとがんばりましょう。
127デフォルトの名無しさん:2009/02/05(木) 14:35:49
>>125
ワロタwww腹痛ぇwwwww
128デフォルトの名無しさん:2009/02/05(木) 14:50:56
BOOL WINAPI GetHoliday( time_t /* time */)
{
return TRUE;
}
129デフォルトの名無しさん:2009/02/05(木) 14:52:07
せめてイスラム歴の正月かどうかを調べるAPIぐらいの事言えよ
130デフォルトの名無しさん:2009/02/05(木) 14:52:57
ほら、滑ったw
131デフォルトの名無しさん:2009/02/05(木) 15:20:09
掲示板に僅か50秒で滑ったなんてレスするお前が滑ってるよ
132デフォルトの名無しさん:2009/02/05(木) 15:31:08
どうでもいいよ
133デフォルトの名無しさん:2009/02/05(木) 15:35:23
>>129>>131
笑わせてもらいました。
134129:2009/02/05(木) 16:02:30
ありがとうございます。
135129:2009/02/05(木) 16:05:19
騙り乙
136129:2009/02/05(木) 16:05:24
やめて下さい。知らないならレスしないで下さい。消えてください。
137129:2009/02/05(木) 16:11:16
暇人だな
138129 ◆TTLQTUMllo :2009/02/05(木) 16:15:00
騙りが多いので酉つけました
139129:2009/02/05(木) 16:20:27
先に偽者にトリップ付けられたしw
140129 ◆TTLQTUMllo :2009/02/05(木) 16:40:54
>>139
偽物乙
141129:2009/02/05(木) 16:42:15
しつこいw
142129:2009/02/05(木) 16:43:08
僕がイスラム歴の正月かどうかを調べるAPIです。
143129 ◆TTLQTUMllo :2009/02/05(木) 16:44:41
>>140
オマエが偽者だろw
144129 ◆TTLQTUMllo :2009/02/05(木) 16:46:31
>>143
お前こそ偽者だろw
145129 ◆TTLQTUMllo :2009/02/05(木) 16:48:14
基本的に俺が本物
146129:2009/02/05(木) 16:49:20
トリップ付けて荒らしてる奴は偽者
147129 ◆TTLQTUMllo :2009/02/05(木) 16:49:25
ここまで、全部オレの自演
148129:2009/02/05(木) 16:50:21
もうイスラム歴の正月かどうかを調べるAPIって言わないからこれくらいで勘弁してくれよ
149デフォルトの名無しさん:2009/02/05(木) 16:55:09
ここまで俺の自演
150デフォルトの名無しさん:2009/02/05(木) 16:57:05
2010年の春分の日が決まったばかりだというのに
151129:2009/02/05(木) 16:59:24
せめてイスラム歴の正月かどうかを調べるAPIぐらいの事言えよw
152デフォルトの名無しさん:2009/02/05(木) 17:08:32
EM_GETLINE
The copied line does not contain a terminating null character.

これ作ったやつマジで氏ね!!
153デフォルトの名無しさん:2009/02/05(木) 17:31:32
>>129
荒らすの止めろクズが
154デフォルトの名無しさん:2009/02/05(木) 18:45:30
129大杉ワロタ
155デフォルトの名無しさん:2009/02/05(木) 18:48:40
>>129が悪い
156デフォルトの名無しさん:2009/02/05(木) 19:19:32
>>129の人気に嫉妬
157デフォルトの名無しさん:2009/02/05(木) 19:22:21
ここまでスベったネタを誤魔化すための自演
158デフォルトの名無しさん:2009/02/05(木) 19:24:48
>>129-133
ここら辺が見所ですかね。
159デフォルトの名無しさん:2009/02/05(木) 19:56:03
>>152
Win16時代のAPIに今更ケチ付けてもねえ
160デフォルトの名無しさん:2009/02/05(木) 19:56:39
まあぶっちゃけると>>129-133は全て>>129の自演だけどな
161デフォルトの名無しさん:2009/02/05(木) 19:58:25
その辺にしてくれねーかな
162デフォルトの名無しさん:2009/02/05(木) 20:03:42
>>159
理由になってない。
163129 ◆kwai5Y6kNk :2009/02/05(木) 20:04:37
あぁ
164デフォルトの名無しさん:2009/02/05(木) 20:14:37
Win16時代は速度優先のため大多数のAPIは終端にNULLをつけなかった。
さすがにプログラマーからの苦情が多かったためWin32ではNULLをつけるよう仕様変更した。
しかしEM_GETLINEなど一部は後方互換性を重視して、敢えてNULLをつけていない。

少しはググレカス
165デフォルトの名無しさん:2009/02/05(木) 22:46:07
最近始めましたが、サンプルを見ると以下のように先頭にスコープ解決演算子を
付けているのが多いのですが、付けると何か良いことがあるのでしょうか?
::MessageBox(~);
166デフォルトの名無しさん:2009/02/05(木) 22:47:14
インテリセンスが効くとか。
167デフォルトの名無しさん:2009/02/05(木) 22:47:55
MFCやATLのライブラリで同名を用いていることが多いので、それと区別したい場合に用いる。
または、インテリセンスを効かせようとした跡。
168165:2009/02/05(木) 23:07:03
>>166, 167
どうもありがとうございました。
169デフォルトの名無しさん:2009/02/05(木) 23:10:56
>>121やったつもりが1文字間違っててうまく潰せてなかったみたいでした。
すっごい綺麗にいけました!ありがとうございます。
170デフォルトの名無しさん:2009/02/05(木) 23:31:07
PostMessageにてboost::shared_ptrの値を渡すのは危険でしょうか?
Post先で参照後に勝手に消えてくれるので便利な気がするのですが。
171デフォルトの名無しさん:2009/02/05(木) 23:39:07
PostMessage は非同期だから
Post先にメッセージが届く前に shared_ptr が破棄されているかもしれないので危険
172デフォルトの名無しさん:2009/02/06(金) 00:02:24
わかりました。やめときます。素直にSendMessageTimeout使います。
173デフォルトの名無しさん:2009/02/06(金) 00:02:46
119だが,DIBSectionに変更して幸せになれました.
174デフォルトの名無しさん:2009/02/06(金) 00:10:23
幸せになるくらいなら猿でもなれる
問題は幸せにしてやれるかどうかだ
175デフォルトの名無しさん:2009/02/06(金) 00:28:01
深イイ話くらい中身のない言葉っすね
176デフォルトの名無しさん:2009/02/06(金) 00:30:00
おっぱいがあれば幸せ
177デフォルトの名無しさん:2009/02/06(金) 10:18:26
>>129だけど何か質問ある?
178デフォルトの名無しさん:2009/02/06(金) 10:20:14
ない
17986:2009/02/06(金) 10:57:15
またまたすみませんが・・・
数日前色々教えてもらって縮小はうまくいったのですが今度は拡大がうまくいきません><
1440x1080を1980x1080に拡大
dwBuffer = new DWORD[2048*2048];
dwBufferにデータをぶち込み
BITMAPINFO bi;
::ZeroMemory( &bi, sizeof( BITMAPINFO ) );
bi.bmiHeader.biSize = sizeof( BITMAPINFOHEADER );
bi.bmiHeader.biWidth = 1440;
bi.bmiHeader.biHeight = 1080;
bi.bmiHeader.biPlanes = 1;
bi.bmiHeader.biBitCount = 32;
bi.bmiHeader.biCompression = BI_RGB;
DWORD *buf;
HDC hdc = ::CreateCompatibleDC( NULL );
HBITMAP hb = ::CreateDIBSection( hdc, &bi, DIB_RGB_COLORS, (void**)&buf, NULL, 0 );
::SelectObject( hdc, hb );
::StretchDIBits( hdc, 0, 0, 1980, 1080, 0, 0, 1440, 1080, dwBuffer, &bi, DIB_RGB_COLORS, SRCCOPY );
bi.bmiHeader.biWidth = 1980;
bi.bmiHeader.biHeight = 1080;
::GetDIBits( hdc, hb, 0, 1980, dwBuffer, &bi, DIB_RGB_COLORS );

出力サイズの1280x720を1980x1080に変更しただけなんですが・・・
どうも出力先のサイズが1440で切られてるみたいです。。。
何処が間違ってますか?
180デフォルトの名無しさん:2009/02/06(金) 11:00:35
ダメだこりゃ
次いってみよー
181デフォルトの名無しさん:2009/02/06(金) 11:03:50
>>179
CreateDIBSectionを元画像と同じ大きさで呼んでるからだろ
てか、お前プログラムやめたら?
18286:2009/02/06(金) 11:17:21
あ、ちなみに
::GetDIBits( hdc, hb, 0, 1980, dwBuffer, &bi, DIB_RGB_COLORS );
1980じゃなくて1080ですね。

>>181
そう思って出力先と同じサイズにしたんですが画像がくずれてしまって・・・
18386:2009/02/06(金) 11:21:32
あ、ごめんなさい。激しくわかりました。
僕が馬鹿でした。
言葉は悪いけど>>181が参考になりました。
184デフォルトの名無しさん:2009/02/06(金) 11:43:14
どうでもいい茶々を入れる
1980×1080は1920×1080では?
18586:2009/02/06(金) 12:03:21
>>184
いや1980なんですよねこれが。

おかげで拡大もばっちりいったのですが・・・
グラデーションがかかった画像を縮小すると汚さが目立ちます
オリジナルの1440x1080を1280x720にすると目立つとおもって
1440x1080→1980x1080→1280x720でやっても一緒だったのですが
同じ流れでC++BuilderのTBitmapで行うと綺麗に行くのですが
これなんかパラ指定があるんでしょうか?

ちなみにStretchDIBitsのHDCにTBitmapのハンドルを与えてから拡大縮小してます
186デフォルトの名無しさん:2009/02/06(金) 12:05:51
大元が勘違いして変な数値になったのかなw
187デフォルトの名無しさん:2009/02/06(金) 12:07:08
>>185
SetStretchBltModeじゃね?
18886:2009/02/06(金) 12:56:26
>>187
ありがとうございます。
ちょっと試してみます!
18986:2009/02/06(金) 13:37:18
くぁwせdrftgyふじこlp;

>>187
神様ありがとう!
すげえええええええええです!
一発で綺麗に縮小できました!!
ありがとうありがとう
190デフォルトの名無しさん:2009/02/06(金) 13:54:30
NG推奨:86、129
191デフォルトの名無しさん:2009/02/06(金) 15:29:07
bf.BlendOp = AC_SRC_OVER;
bf.BlendFlags = 0;
bf.AlphaFormat = true;
bf.SourceConstantAlpha = 255;

AlphaBlend関数でBLENDFUNCTIONを上記のように設定すると、画像の完全な透明以外の部分はちゃんと
半透明に表示されますが、完全に透明な部分は何故か白で塗りつぶされてしまいます。これはどう設定しても無理ですか?
192デフォルトの名無しさん:2009/02/06(金) 15:45:06
AlphaBlendは糞
計算式がおかしいのは有名な話
193デフォルトの名無しさん:2009/02/06(金) 15:48:33
AlphaBlendに関してはちょっと前にも同じ言い争いがあったので
反論したい人は穏便にお願いします

Win32API質問箱 Build73
ttp://pc11.2ch.net/test/read.cgi/tech/1227934931/23-76

参考
194デフォルトの名無しさん:2009/02/06(金) 16:34:34
過去ログは見れない人も多いから、煽りじゃないなら参考としては不適切。
195デフォルトの名無しさん:2009/02/06(金) 16:44:55
>>193見ました。
MSは糞。
196デフォルトの名無しさん:2009/02/06(金) 18:41:13
>>174
自分が幸せになれんのに
他人が幸せになれるわけないじゃないか・・・・
チクショー
197デフォルトの名無しさん:2009/02/06(金) 19:28:25
DDCAPS_ALPHAの対応マダァ-? (・∀・ )っ/凵⌒☆チンチン
198デフォルトの名無しさん:2009/02/06(金) 20:27:36
他の人が作成したdllを呼び出すプログラムを作成したんですが
あるdllをLoadLibrary()したらエラーリターンしてエラーコードが998(ERROR_NOACCESS)でした。
なのでdll作成側にDllMainのDLL_PROCESS_ATTACHでメモリ破壊してると、このエラーコードになると報告したのですが
こっちでも呼び出し元に不備がないか調査して日々報告するように言われております。
呼び出し元の不備でこのエラーになるケースはどのようなものが考えらるでしょうか?
動作環境はXPのSP2です
エラーになるdllがなにしてるかは不明で、そのdllをもらうこともできません
199デフォルトの名無しさん:2009/02/06(金) 20:28:30
WH_GETMESSAGEにてのメッセージフックでWM_MOVEを検知して移動先の座標を得ようと
しているんですが、pt.x,pt.yにでたらめな座標が入ってしまいます。何故でしょうか?

LRESULT CALLBACK HookProc(int nCode,WPARAM wParam,LPARAM lParam){
    CWPSTRUCT *cwps;
    cwps=(CWPSTRUCT *)lParam;
    if(nCode<0)
        return CallNextHookEx(hMyHook,nCode,wParam,lParam);;
    if( nCode == HC_ACTION ){
        if(cwps->message==WM_MOVE){
            POINT pt;
            pt.x=LOWORD(cwps->lParam);
            pt.y=HIWORD(cwps->lParam);
        }
    }
    return CallNextHookEx(hMyHook,nCode,wParam,lParam);
}

あと同じようなので
if(cwps->message==WM_WINDOWPOSCHANGED)LPWINDOWPOS pos=(LPWINDOWPOS)cwps->lParam;
もpos->xとかにもでたらめな数字入ってしまう。
MSDNも何度も調べたし、色々な組み合わせを何時間もトライ&エラー繰り返してたんですが
やっぱり分かりません。教えてください
200デフォルトの名無しさん:2009/02/06(金) 20:31:28
>>198
LoadLibraryするだけの単純なプログラムを書いて渡すっていうのじゃダメなの?
それともそれだけでは再現しないの?
201デフォルトの名無しさん:2009/02/06(金) 20:35:32
>>199
マウス座標が cwps->hwnd が示す
ウィンドウ相対だからとか?
202デフォルトの名無しさん:2009/02/06(金) 20:37:21
符号なしの値を符号付きの変数に代入してこけてるとか?
203デフォルトの名無しさん:2009/02/06(金) 20:45:14
>>199
WH_GETMESSAGEでかけたフックのコールバックのlParamはMSG構造体なんだが
204198:2009/02/06(金) 20:47:13
>>200
>>198です。
エラーが発生する条件が不明でエラーの発生頻度もあまり多くないんです
LoadLibrary()するだけのプログラムでも環境しだいでは再現するかもしれないんですが
再現するかもしれないから、ちょっと試してみてください、って言える関係じゃないんです
205デフォルトの名無しさん:2009/02/06(金) 20:50:20
どっかに不定が紛れ込んでいるに1000ペリカ
206デフォルトの名無しさん:2009/02/06(金) 21:45:10
>>202
ありがとうございます。まったくその通りでした。
MSDNに「1 個の 構造体へのポインタ」としか書いてなかったからCWPSTRUCTでいいと思ってた
今後のために教えてください。そういうのってどこに書いてます?
でも、これだとWM_MOVEが引っかからないから他のフックタイプ使うべきなのね
207デフォルトの名無しさん:2009/02/06(金) 21:48:01
>>206
http://msdn.microsoft.com/en-us/library/ms644981(VS.85).aspx

確かに日本語ソースには「1 個の 構造体へのポインタを指定します。」とあるのなww
こやつめハハハ
208デフォルトの名無しさん:2009/02/06(金) 22:05:21
英語の方には書いてあったのね。楽だからついつい日本語の方ばっかり見ちゃうけど
やっぱり英語の方も見たほうがいいですね
209デフォルトの名無しさん:2009/02/06(金) 22:17:05
WH_CBTにしてHCBT_MOVESIZEを見るようにしたらいけました。
このまま教えてもらわなかったらまた何時間も悩み続けるところだったよ。ありがとう
210デフォルトの名無しさん:2009/02/07(土) 01:18:37
なるほど
ありがとうございました
211デフォルトの名無しさん:2009/02/07(土) 04:18:34
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
212211:2009/02/07(土) 04:20:05
あ…スマン…Janeの裏技とか言うのみて試してたら書き込まれた(;´Д`)
213デフォルトの名無しさん:2009/02/07(土) 07:18:02

 ヾヽヽ
 (´▽`) おっさんチュンチュン
  ミ_ノ
  ″″
214デフォルトの名無しさん:2009/02/07(土) 07:28:09
複雑だと思うならつかわなきゃいいんじゃねーの?
なんでアホはあるもの全部使わなきゃ気がすまねーの?
215デフォルトの名無しさん:2009/02/07(土) 08:58:01
216デフォルトの名無しさん:2009/02/07(土) 09:27:24
質問です。
(A)
ツリービューで↓を書くと
   TreeView_InsertItem(HWND hwndTV, LPTVINSERTSTRUCT lpis);
BorlandC++ が
   ”警告 W8019 : コードは効果を持たない”と
と吐くのですが、どういう意味なんでしょうか?

(B) また、
   SendMessage(hwndPB, PBM_SETRANGE, 0, MAKELPARAM(0,files_read));
と書くと
   ”警告 W8084 : 優先順位を明確にするためにカッコの使用を推奨”
と吐きます。どう括弧をつければいいのでしょうか?
217デフォルトの名無しさん:2009/02/07(土) 09:46:22
218デフォルトの名無しさん:2009/02/07(土) 10:48:40
まさか
TreeView_InsertItem(HWND hwndTV, LPTVINSERTSTRUCT lpis);

TreeView_InsertItem(hwndTV, lpis);
ってことじゃないよなw
219デフォルトの名無しさん:2009/02/07(土) 11:27:08
GetDC BeginText
で得たhdcの値は変わることってありますか?
あるとするならどんな時に変わりますか?
220デフォルトの名無しさん:2009/02/07(土) 11:31:57
確保しっぱなしにしようとしてるのかもしれんが
その使い方が間違い
221デフォルトの名無しさん:2009/02/07(土) 12:37:17
普通のウィンドウだと、DCはGetDC等が呼ばれた時にシステムから提供される。
毎回設定がリセットされるのはそのため。
Windows9x系だと、スレッド辺り5つまでしか貰えないから持ちっぱなしはあり得ない。
だがNT系なら多少メモリ喰う程度だけで済むので、今の時代なら構わないのかも。
まあ、CS_OWNDC付けとけばReleaseDCしても設定内容は維持されるから、
そっちを検討した方が良いとは思う。
222デフォルトの名無しさん:2009/02/07(土) 13:18:49
MSDNの日本語版は構造体のページが作成されてないからリンクも貼れない
記述文の中の構造体名ごと一斉に消しちゃってるというやっつけ仕事
文中に「構造体」とあればその前に構造体名が省略されてると見るのが吉
223デフォルトの名無しさん:2009/02/07(土) 14:26:04
ひでーぶー
224216:2009/02/07(土) 14:51:27
>>217 サンクスコ。
>>218 ? 返り値を受け取ってないってことですか? SORTの属性付けてるので返り血は捨ててます。
225デフォルトの名無しさん:2009/02/07(土) 15:04:40
hwndTVとlpisが実引数なら型の記述は要らないってことだろ
226デフォルトの名無しさん:2009/02/07(土) 15:05:11
関数の呼び出しと宣言がごっちゃになってるんじゃないかと言ってるんじゃ?
227デフォルトの名無しさん:2009/02/07(土) 15:11:54
ありがとうございました
228デフォルトの名無しさん:2009/02/07(土) 15:54:59
>>221
お!だからいちいち開放しなきゃいけなかったのか
今更だけど理解した
229デフォルトの名無しさん:2009/02/07(土) 18:11:32
あるチェックボックスをチェックを入れたら

別のチェックボックスのチェックを外すにはどうしたらいいですか?
230デフォルトの名無しさん:2009/02/07(土) 18:14:29
BN_CLICKEDでも見張っててうんちゃらかんちゃらする
231デフォルトの名無しさん:2009/02/07(土) 18:17:47
すなおにラジオボタンを使う
232デフォルトの名無しさん:2009/02/07(土) 19:09:57
全部のチェックが外れた状態も欲しいんです
(常に1個または0個選択)
233デフォルトの名無しさん:2009/02/07(土) 19:14:41
ラジオボタンをチェックする関数の引数に、
チェックするボタンの ID として -1 を指定すれば
全部チェックが外れるよ。
234デフォルトの名無しさん:2009/02/07(土) 19:34:45
ラジオボタンにしてdisable的な項目を増やせば解決するような単純なものではないって事かな
235デフォルトの名無しさん:2009/02/07(土) 20:22:02
押してチェックを外したいのであれば、
ラジオボタンに期待されてるような処理ではないので
チェックボックスにした方がいいかもね。
チェックボックスにも CheckRadioButton 関数って使えるんだっけ?
236デフォルトの名無しさん:2009/02/07(土) 20:47:33
リストボックスのアイテムをダブルクリックするには PostMessage を使うの?
237デフォルトの名無しさん:2009/02/07(土) 21:39:59
いまさらだけどWindows7βで遊んだ。
Windows7のエクスプローラ、
とうとうSysListView32じゃなくなったな
238デフォルトの名無しさん:2009/02/08(日) 00:34:39
アイコンセットは少し気を遣うな
匹数に幼虫異です
239デフォルトの名無しさん:2009/02/08(日) 03:32:09
>>237
な、なんだってー
240デフォルトの名無しさん:2009/02/08(日) 08:40:47
>>236
Mouseを使います。
241デフォルトの名無しさん:2009/02/08(日) 10:35:06
ありがとうございました
242デフォルトの名無しさん:2009/02/08(日) 14:04:06
>>237
タスクバーがTabやToolbarじゃなくなってたのは確認した
そろそろカスタマイズ系の常駐ソフトもお終いか?
243デフォルトの名無しさん:2009/02/08(日) 14:30:08
char tt[256];
byteOutPut=(BYTE)GetPrivateProfileInt(_T("test"),_T("valuets"),1,_T("test.ini"));

wsprintf(tt,"%d",byteOutPut);
MessageBox(NULL,tt,"チェック",MB_RTLREADING);

test.ini
[test]
valuets = 7

としても、値が常に「1」がかえってしまいます。
test.iniに記載されている「7」を取得したいんですが・・。
244デフォルトの名無しさん:2009/02/08(日) 14:33:19
文字コードは~?
245デフォルトの名無しさん:2009/02/08(日) 14:34:14
>>243
説明は省くけどtest.iniをフルパス(C:\...\test.ini)で指定しても駄目かな?
246デフォルトの名無しさん:2009/02/08(日) 14:36:14
>>243

ttp://msdn.microsoft.com/en-us/library/ms724345(VS.85).aspx

>If this parameter does not contain a full path to the file,
>the system searches for the file in the Windows directory.
247デフォルトの名無しさん:2009/02/08(日) 15:36:42
>>243
こういう奴は大人しくレジストリ使っとけばいいのに……
248デフォルトの名無しさん:2009/02/08(日) 19:50:43
文字コードは、マルチバイト文字セットを使用する にしています。
フルパスで指定してもダメです。
_Tをなくしてもダメです。。
249デフォルトの名無しさん:2009/02/08(日) 20:09:46
>>246に答え書いてるのに……
>>245が解決法書いてるのに……
>>247が代替案まで出してるのに……

なにこの子?
250デフォルトの名無しさん:2009/02/08(日) 20:11:54
もうだめだこのスレ
251デフォルトの名無しさん:2009/02/08(日) 20:14:11
自己解決しますた。
252デフォルトの名無しさん:2009/02/08(日) 20:37:04
どの辺りが自己解決なのか…?
事故解決の変換ミス?
253デフォルトの名無しさん:2009/02/08(日) 21:37:27
あなた方では役に立たないので他のサイトで教えてもらいました。
254デフォルトの名無しさん:2009/02/08(日) 21:41:03
どの辺りが自己解決なのか…?
255デフォルトの名無しさん:2009/02/08(日) 21:54:20
×自己で解決
○自己を解決
256デフォルトの名無しさん:2009/02/08(日) 22:19:40
つーか性格悪い奴が多すぎだろ、ここ
257デフォルトの名無しさん:2009/02/08(日) 22:33:13
>>256
例えばどのレス?
多すぎってからには10レスくらいすぐに安価出せるな?
258デフォルトの名無しさん:2009/02/08(日) 22:42:45
このスレ限定でIDが欲しくなるな
259デフォルトの名無しさん:2009/02/08(日) 22:45:14
ネットワークの回線の速度って
どう検出するのでしょうか?

ラン内・ネットのロード量など。
また、よく、ダウンロードのインジケータなど
不思議に感じます。

APIで解決できるのでしょうか?
260デフォルトの名無しさん:2009/02/08(日) 22:59:47
>>257
お前のような奴の事だよ。
261デフォルトの名無しさん:2009/02/08(日) 23:03:01
>>259
速度=単位時間に流れるデータ量
262デフォルトの名無しさん:2009/02/08(日) 23:05:10
>>259
パフォーマンスカウンタ

カテゴリ名:Network Interface
インスタンス名:有効なNIC
カウンタ名:Received Bytes/Sec

とか見れば
263デフォルトの名無しさん:2009/02/08(日) 23:15:58
>>259
APIにこだわるなら
IP Helper Functions
あたり
264デフォルトの名無しさん:2009/02/08(日) 23:17:17
>>260
予想の範疇のレスすんな。
そう突っ込まれるだろうから10レスくらい挙げてみろって加えたんだよ。
265デフォルトの名無しさん:2009/02/08(日) 23:36:28
GetProcessHeap()で取得したヒープハンドルを利用していたら
いきなりハンドルの値が変わってHeapAllocで落ちました。


この現象に心当たりある方はいませんか?
266265:2009/02/08(日) 23:41:06
値を初期化すべきところに初期化してませんでした。

にらんだとおりオーバーフローだったみたいです
267デフォルトの名無しさん:2009/02/08(日) 23:45:34
>>261
>>262
>>263

ありがとうございます。
268デフォルトの名無しさん:2009/02/09(月) 10:20:41
Windowsで一番簡単なディザ処理を行うにはどうすればいいですか?
269デフォルトの名無しさん:2009/02/09(月) 11:03:21
何に対して?
270デフォルトの名無しさん:2009/02/09(月) 11:23:02
向かいのタバコ屋の婆さんに対して
271デフォルトの名無しさん:2009/02/09(月) 11:39:38
タバコ屋の婆ちゃん逃げて! ><;
272デフォルトの名無しさん:2009/02/09(月) 11:46:03
32ビットビットマップに対して1ビット、4ビット、8ビットカラーへのディザ処理。
273デフォルトの名無しさん:2009/02/09(月) 12:03:55
悪いけどそんなもんない
274デフォルトの名無しさん:2009/02/09(月) 12:06:06
settimer が killtimer されたのってどーやって検知すればいいですか?
275デフォルトの名無しさん:2009/02/09(月) 12:07:39
もう一個タイマー作ってイベントが発生し続けてるかどうか見てれば
276デフォルトの名無しさん:2009/02/09(月) 12:54:49
>>275
ありがとうございました。
277デフォルトの名無しさん:2009/02/09(月) 13:01:46
・・・KillTimer するのは自分じゃないのか?
278デフォルトの名無しさん:2009/02/09(月) 13:05:49
そういう突っ込みは、野暮というものだよ
279デフォルトの名無しさん:2009/02/09(月) 22:02:44
→ int i,j;
の様に「→」が表示されるようになってしまったんですが
これをなおすにはどうしたらいいですか?「→」は青っぽいやじるしです

280デフォルトの名無しさん:2009/02/09(月) 22:05:35
>>279
そのコードを書いているソフトのスレで聞きなさい。
281デフォルトの名無しさん:2009/02/09(月) 22:06:09
エスパーさん、出番ですよ
282デフォルトの名無しさん:2009/02/09(月) 22:06:36
不定値のまま色使ってるとか。
283デフォルトの名無しさん:2009/02/09(月) 22:12:06
>>279
→は改行文字が文字化けしてるんだろうね
だとしたら文字コードの問題
284デフォルトの名無しさん:2009/02/09(月) 22:14:48
そのエディタではタブが矢印で表示されるんだろ
>>280だな
285デフォルトの名無しさん:2009/02/09(月) 22:46:47
釣れた釣れた
286デフォルトの名無しさん:2009/02/09(月) 23:31:53
どんなネタでも必ず釣れるスレですね
287デフォルトの名無しさん:2009/02/09(月) 23:36:18
そ・・・壮大な釣りだった。。。
288デフォルトの名無しさん:2009/02/10(火) 01:09:47
簡単に釣れるので、釣りの練習に使うといいよ
特に初心者の釣り師にオススメ
289デフォルトの名無しさん:2009/02/10(火) 01:13:17
ここで釣り釣り言ってるのは小学生かなんか?
釣りの意味分かってないんだろうね

「ぷろぐらみんぐ」は小学生にはまだむずかしいから、おとなしくおうちでかめんらいだーごっこやってな?
290デフォルトの名無しさん:2009/02/10(火) 01:41:24
ここまで俺の自演
291デフォルトの名無しさん:2009/02/10(火) 02:52:50
すっかりキチガイ坊やになつかれたな
どんな糞にも丁寧に罵声を浴びせた結果がこれだ
292デフォルトの名無しさん:2009/02/10(火) 03:42:52
宿題スレでもマルチしてた香具師だな
293デフォルトの名無しさん:2009/02/10(火) 10:21:37
WM_CHAR他WM_IME_CHARから送られてきた文字をUTF-8に変換して保持し、ウィンドウ内に描画するには
WM_CHAR.WM_IME_CHAR

文字コード変換

☆配列等へ保持

☆から文字コード変換

ウィンドウ内に描画
しか方法はありませんか?
294デフォルトの名無しさん:2009/02/10(火) 10:25:42
WM_CHAR時にはバッファに保存とInvalidateだけして後でまとめて描画だな
295デフォルトの名無しさん:2009/02/10(火) 12:45:22
>>293
9xを捨ててUNICODEにしても良ければ、
WM_IMECHAR無視してWM_CHAR 1つでも困らないと思う。

もっと言えば、中でUTF-8にして保持するなら、WM_CHARよりも
UTF-32でやってくるWM_UNICHAR 1つのほうがやりやすいはず。ただしXPからだけど。
それとIMM API関数などを使って変換文字列を取得するのとどっちがいいかは微妙なとこだが。
296デフォルトの名無しさん:2009/02/10(火) 14:17:39
MDIアプリで、フォーカスを持ってる子ウィンドウのハンドルを取得するにはどうすればよいでしょうか。
GetActiveWindow()、GetForegroundWindow()的なのがあるとありがたいのですが…
297デフォルトの名無しさん:2009/02/10(火) 14:23:54
>>296
WM_MDIGETACTIVE
298デフォルトの名無しさん:2009/02/10(火) 14:32:53
>>297
どうもです。
ついでにお願いします。そのメッセージの結果をAPIで取りたいのですがどう呼べばよいでしょうか。
プラグイン的なものからなのでAPIを呼ぶしかできないのです。
299デフォルトの名無しさん:2009/02/10(火) 14:34:25
>>298
SendMessage
300デフォルトの名無しさん:2009/02/10(火) 14:49:38
釣れた釣れた
301デフォルトの名無しさん:2009/02/10(火) 14:54:00

       ___   ━┓
      / ―  \  ┏┛
     /  (●)  \ヽ ・
   /   (⌒  (●) /
   /      ̄ヽ__) /
 /´     ___/
 |        \  
 |        |
302デフォルトの名無しさん:2009/02/10(火) 18:38:01
>>296
HWND hActiveWnd;
// hClient を Client Window Handle として、
hActiveWnd = (HWND)SendMessage( hClient, WM_MDIGETACTIVE, 0, 0);
で、自分は使っている。hClient の意味が分からないなら、「猫でも
分かるプログラミング」を見るように。コードは古いが、意味合いは
分かるでしょう。
303デフォルトの名無しさん:2009/02/10(火) 18:54:26
>送られてきた文字をUTF-8に変換して保持し
どーしても保持する必要があるなら仕方ないが、オレなら必要になった時にUTF-8に変換する
304デフォルトの名無しさん:2009/02/10(火) 22:57:38
UpdateLayeredWindowでULW_ALPHAとULW_COLORKEYを同時に使うって出来ないんですか?
それがダメでも、ピクセル単位で完全透過部分と半透過部分を共存させた1つのウィンドウを作る方法ってありますか?
305デフォルトの名無しさん:2009/02/10(火) 23:03:46
>>304
何のためにHDCとBLENDFUNCTIONが引数にあるのかを考えれば判るだろ
306デフォルトの名無しさん:2009/02/10(火) 23:28:51
>>304
アルファ値が0のピクセルはリージョンのように完全に透過するが。
307デフォルトの名無しさん:2009/02/10(火) 23:36:00
>>108が分る人いませんか?
308デフォルトの名無しさん:2009/02/11(水) 00:06:04
いません
309デフォルトの名無しさん:2009/02/11(水) 00:59:16
>>306例えば完全透過がそのあるビットマップがh_bmpに入ってるとして、どう呼び出したらうまく透過するのか
見せてもらえませんか?家のではどう見ても透過してないんですが・・・
ちなみにこうやってます。

WS_EX_LAYEREDスタイルを追加;
HDC hdc = ::GetDC(NULL);
my_hdc bmpdc = ビットマップのDC;
POINT zero = {0,0};
SIZE bsize = {画像の幅,高さ};
DWORD flags = ULW_COLORKEY|ULW_ALPHA;
COLORREF colkey = RGB(255,255,255);

BLENDFUNCTION bf;
bf.BlendOp = AC_SRC_OVER;
bf.BlendFlags = 0;
bf.AlphaFormat = AC_SRC_ALPHA;
bf.SourceConstantAlpha = 255;

::UpdateLayeredWindow(ウィンドウハンドル,hdc,ウィンドウの左上のPOINT*,&bsize,bmpdc,&zero,colkey,&bf,flags);
::ReleaseDC(NULL,hdc);
310デフォルトの名無しさん:2009/02/11(水) 01:25:29
WS_EX_LAYERED | WS_EX_TRANSPARENT
311デフォルトの名無しさん:2009/02/11(水) 01:28:28
>>309
UpdateLayeredWindow は obsolete
SetLayeredWindowAttributes を使おう
312デフォルトの名無しさん:2009/02/11(水) 01:30:21
313デフォルトの名無しさん:2009/02/11(水) 01:45:21
> UpdateLayeredWindow は obsolete
(゚Д゚)ハァ?
314デフォルトの名無しさん:2009/02/11(水) 01:58:38
>>108
それっぽい情報というとこれくらいかなあ
http://social.msdn.microsoft.com/Forums/en-US/vclanguage/thread/5cc9a772-5174-4180-a1ca-173dc81886d9/

結局原因はよくわからないみたいだけど、
もし、同じ現象なら、文字セットをマルチバイト文字セットにするか、
targetver.h 内の _WIN32_WINNT の定義を

#define _WIN32_WINNT 0x0500

にしてやると回避できるみたいだけど
315デフォルトの名無しさん:2009/02/11(水) 02:04:06
とある知らないEXEがUNICODEビルドなのかANSIビルドなのか区別する方法ってありますか?
316デフォルトの名無しさん:2009/02/11(水) 02:13:49
インポートしてるAPIを見ればある程度推測できる
317デフォルトの名無しさん:2009/02/11(水) 02:21:56
そんなもん区別して何がしたいんだ
318デフォルトの名無しさん:2009/02/11(水) 02:33:22
あとはIsWindowUnicodeとか、EXE(モジュール)単位ではないけど。
319デフォルトの名無しさん:2009/02/11(水) 02:54:12
APIにしまつ
320デフォルトの名無しさん:2009/02/11(水) 08:55:22
>>315
メモ帳で開いて確認しる
終わったら上書き保存をお忘れなく\(^o^)/
321デフォルトの名無しさん:2009/02/11(水) 10:17:23
>>315
最近、ANSIビルドのソフトをいじって、キー入力・表示・コピペはUnicodeに
対応させたものを作った。Unicodeなファイル名は扱えないが、これって
何ビルドだろうね。
322デフォルトの名無しさん:2009/02/11(水) 10:29:00
>>321
ANSIビルドでかまわない。
__wargv
323デフォルトの名無しさん:2009/02/11(水) 10:37:04
>>310それはマウスヒットテストに使うのでは?
>>311実際にどうなります?画像に合わせてウィンドウの形を変えたいんですが・・・?
>>312それらはもう見てその通りにやってるつもりだったんですが・・・うーん
324デフォルトの名無しさん:2009/02/11(水) 10:52:54
>その通りにやってるつもりだったんですが

「プログラムは、間違いなく自分がコーディングした通りに動く。
 しかし、それが自分が想定した通りであるとは限らない。」
325デフォルトの名無しさん:2009/02/11(水) 10:54:00
>>322
それが判断基準?
あ、もちろんIsWindowUnicodeはTRUE返すから。じゃないとWM_CHARで
Unicodeが受け取れない。APIもA/W両方インポートしてる。(が、Win9xでも動く。)
326デフォルトの名無しさん:2009/02/11(水) 11:11:56
>>324そんなこと言うくらいなら指摘して欲しいんですが?
327デフォルトの名無しさん:2009/02/11(水) 11:23:27
うぜぇ
328デフォルトの名無しさん:2009/02/11(水) 11:54:21
やってるつもりだったんならそれでいいじゃん。解決
329デフォルトの名無しさん:2009/02/11(水) 13:37:29
どう考えてもここは324の方がウザイと思うが
お前それ言いたかっただけちゃうんかと
330デフォルトの名無しさん:2009/02/11(水) 13:46:05
反応してる奴もうざい
331デフォルトの名無しさん:2009/02/11(水) 14:32:40
>>329
例の基地害だろ、もう構うな
332デフォルトの名無しさん:2009/02/11(水) 14:48:10
>>325
ハイブリッド、でいいんじゃね?まあ俺もそういうの作ったことあるけど。

例えばXPのEditコントロールはANSIでもUnicodeの動作をするバグがあるので
Win9xでも動くように作ろうとすると、全体的にはANSIだけど部分的にA/W切り替える必要性が出てくるんだよな。

というかこのバグを無視してANSIアプリのくせにVisualStyle対応してるソフトが多すぎ。
333デフォルトの名無しさん:2009/02/11(水) 16:01:14
>>332
バグについて詳しく
334デフォルトの名無しさん:2009/02/11(水) 16:14:02
ググレカス
335カイロ:2009/02/11(水) 16:24:29
シリアル通信の受信プログラムがうまく出来ません。。

<やりたいこと>
COM3:送信側で、Tera Termで、文字を送信
COM4:受信側 コマンドプロンプトで、作ったプログラムを動かして受信し、受信した文字を表示する。

<受信プログラムの流れ>
①COM4をオープン
②通信設定
③受信するまで、待つ
④受信したら、文字を表示。

●受信するまで、待つことが出来ず、フフフ・・・といった文字列が
 表示されてしまいます。
 どうしたら、受信するまで待つように出来るのでしょうか?
336デフォルトの名無しさん:2009/02/11(水) 16:57:44
>>335
フフフ・・・
337デフォルトの名無しさん:2009/02/11(水) 17:00:41
これはウゼェwww
338デフォルトの名無しさん:2009/02/11(水) 17:00:44
待つって日本語で書かれても。
コードさらせないのか、待ってるとこだけでも。
フフフ・・はデバッグ環境での未初期化のバッファ
339カイロ:2009/02/11(水) 17:11:00
返事ありがとうございます。

以下コードの抜粋です。
ReadFileの第5引数(最後の引数)にNULLを入れると、受信するまで待つんだと思ったんですが、
送信していないのに、受信した文字列が表示されます。

☆ポートを開いているところ
int errorCode;
HANDLE handle;

handle = CreateFile("COM4", // ファイル名: COMポート名を指定
GENERIC_READ | GENERIC_WRITE, // アクセスモード: 読み書き
0, // 共有モード: 共有しない
NULL, // セキュリティ記述子: 取得したハンドルを子プロセスへ継承しない
OPEN_EXISTING, // 作成方法: ファイルを開いたときに指定したファイルが存在していなければエラーとする
FILE_FLAG_OVERLAPPED, // 非同期 I/O を許す//☆同期にしてみるFILE_ATTRIBUTE_NORMAL, // ファイル属性: 特に指定しない
NULL // テンプレートファイルのハンドル: 特に指定しない
);

☆通信設定するところ。(省略)

☆受信するところ。
char data[14];
DWORD dwRead;
DWORD dwErrors;
COMSTAT ComStat;

ClearCommError(handle, &dwErrors, &ComStat);
ReadFile(handle, data, sizeof(data), &dwRead, NULL);
printf("受信した文字列%s", &data);
340デフォルトの名無しさん:2009/02/11(水) 17:12:28
IPアドレスコントロールから値を取得するには
どんな関数を使えばいいですか?IPは入力欄が4つあるので、どうやって
取得するんですか?
341デフォルトの名無しさん:2009/02/11(水) 17:15:12
>>339
dwReadを確認してないみたいだけど?
342デフォルトの名無しさん:2009/02/11(水) 17:15:33
>>339
エラーチェックぐらいしろよ
343デフォルトの名無しさん:2009/02/11(水) 17:15:50
IPM_GETADDRESSとか無かったっけ?
344デフォルトの名無しさん:2009/02/11(水) 17:16:14
343は>>340
345デフォルトの名無しさん:2009/02/11(水) 17:17:12
>>340
Win32 and COM Development - User Interface
- Windows Controls - Control Library
とりあえず、WindowsSDKのドキュメントの上記辺りを一通り目を通しておけ。
346デフォルトの名無しさん:2009/02/11(水) 17:20:44
>>345
面倒だから教えてよ
347デフォルトの名無しさん:2009/02/11(水) 17:22:54
やだよばか
348デフォルトの名無しさん:2009/02/11(水) 17:26:28
>>339
待機とは関係ないんだが
FILE_FLAG_OVERLAPPEDを指定したら
ReadFileの最後はNULLじゃ駄目なんじゃないか
349カイロ:2009/02/11(水) 17:28:52
>341
>dwReadを確認してないみたいだけど?

dwReadは、読み取ったバイト数が入るんですよね。
どうやって確認すればいいのでしょうか?
聞いてばかりで、すみません。
350デフォルトの名無しさん:2009/02/11(水) 17:29:01
関係なくはないけどな
351デフォルトの名無しさん:2009/02/11(水) 17:29:35
>>348が真理

つかGetLastErrorぐらいしろ
352デフォルトの名無しさん:2009/02/11(水) 17:32:44
つーかウォッチ式に @err,hr を入れとけ
353デフォルトの名無しさん:2009/02/11(水) 17:38:10
>>349
dwReadが0だったらどうなると思う?
354カイロ:2009/02/11(水) 17:46:09
>>348
>待機とは関係ないんだが
>FILE_FLAG_OVERLAPPEDを指定したら
>ReadFileの最後はNULLじゃ駄目なんじゃないか
調べてみたら、通信プログラムでは、
FILE_FLAG_OVERLAPPEDではなく、
属性なしの FILE_ATTRIBUTE_NORMALを指定するのが正しいようですね。

>>353
>dwReadが0だったらどうなると思う?

0だったら、まだ、受信してない状態ってことですか?
355デフォルトの名無しさん:2009/02/11(水) 18:01:04
FILE_FLAG_OVERLAPPEDはブロッキングしたくない時に使うんだよ。
356デフォルトの名無しさん:2009/02/11(水) 18:08:16
>>354
dataを1バイトにして、dwReadが0以外のときに表示するようにしてみたら?
357カイロ:2009/02/11(水) 18:49:06
>>356
>dataを1バイトにして、dwReadが0以外のときに表示するようにしてみたら?

やってみました。
以下、修正後のソースの一部です。

☆ポートを開いているところ
handle = CreateFile("COM4", // ファイル名: COMポート名を指定
GENERIC_READ | GENERIC_WRITE, // アクセスモード: 読み書き
0, // 共有モード: 共有しない
NULL, // セキュリティ記述子: 取得したハンドルを子プロセスへ継承しない
OPEN_EXISTING, // 作成方法: ファイルを開いたときに指定したファイルが存在していなければエラーとする
FILE_ATTRIBUTE_NORMAL, // ファイル属性: 特に指定しない
NULL // テンプレートファイルのハンドル: 特に指定しない
);
☆受信するところ。
char data[1];
DWORD dwRead;
DWORD dwErrors;
COMSTAT ComStat;

while(1) {
ClearCommError(handle, &dwErrors, &ComStat);
ReadFile(handle, data, sizeof(data), &dwRead, NULL);
if(dwRead != 0) {
printf("%c", data[0]);
}
}
358カイロ:2009/02/11(水) 18:49:39
続き・・・

なんとか、待機するところまでは、うまくいきました。
Tera Termで入力した文字が、表示されました。
ありがとうございます。

ですが、表示された文字が文字化けしていて、以下のような感じで、表示されます。
解決方法をどなたか、教えてください。

��������Bャツ����・�・�������・����������・����・�����������������������������
359デフォルトの名無しさん:2009/02/11(水) 18:55:07
ClearCommErrorって毎回チェックしないといけないんだっけ?
360デフォルトの名無しさん:2009/02/11(水) 18:57:56
マルチバイト文字を送信してるように見える
361デフォルトの名無しさん:2009/02/11(水) 18:59:05
ヌルターミネートしてないからだろ
受信したバイトの最後にゼロ入れとけ
362360:2009/02/11(水) 19:01:20
マルチバイト文字じゃなくて、シングルバイトじゃない文字
363カイロ:2009/02/11(水) 19:15:15
自己解決いたしました!!

テラターム側のボーレートの値が受信プログラムで設定した値と違っていたので、
文字化けしていたようです。

同じ値にしたら、ちゃんとした文字が出るようになりました!!

これで、すべて解決しました!!

みなさま、どうもありがとうございました。

数ヶ月前から、出来ずに困っていたのですが、
なんとか、動くものが出来ました。

よかったです。(TーT)
364デフォルトの名無しさん:2009/02/11(水) 19:16:25
まあオメデトウ
そして死ね
365デフォルトの名無しさん:2009/02/11(水) 19:22:47
>>364
死ねは酷くね?
せめて成仏しろとか永眠しなさいと地獄に落ちろ、位にしといてやれよ。
366デフォルトの名無しさん:2009/02/11(水) 19:34:18
フフフ…
367デフォルトの名無しさん:2009/02/11(水) 19:34:44
ウッゼ
368デフォルトの名無しさん:2009/02/11(水) 19:49:07
釣れた釣れた
369デフォルトの名無しさん:2009/02/11(水) 19:56:01
>>314
ありがとうございます!、出来ました。

#define _WIN32_WINNT 0x0500に変更で解決しました。

本当にありがとうございました。
370デフォルトの名無しさん:2009/02/11(水) 20:27:20
相手のボーレート自動で判断してあわせてくれるシリアル通信ソフトあるけど
合ってるかどうかってどうやって判断してるんだろう
371デフォルトの名無しさん:2009/02/11(水) 20:31:04
IME の前後参照変換に対応するため、WM_IME_REQUEST の IMR_DOCUMENTFEED を
拾うルーチンを書きました。が、XP や Vista + ATOK なら期待通り動作するのですが、
Vista + MS-IME では全く機能しません。

TSF 絡みっぽいところまでは推測がつくのですが、その先がさっぱりです。
そのあたりの仕組みについて記述している資料があれば、教えてください。
372デフォルトの名無しさん:2009/02/11(水) 21:11:37
>>370
分からんけど。
例えば、相手が送ってくるデータが分かっていれば、
ボーレートを色々変えてみて正しく読めるのを探すとか?
373デフォルトの名無しさん:2009/02/11(水) 21:17:10
>>314>>369
それで解決したなら、後からメンバが増えたせいだな。
http://msdn.microsoft.com/en-us/library/bb760256.aspx
_WIN32_NTが0x501以上だとlpReservedメンバが追加されるが、
これはNULLじゃないといけないと書いてある。
ところが、108のコードではそれが欠けていたのでうまくいかなかった。

まあ、良くある話だ。_WIN32_NTほかバージョン定義をきちんと定義して自己防衛するしかない。
374デフォルトの名無しさん:2009/02/11(水) 21:20:27
NULLじゃないといけないReservedなメンバをわざわざ追加して互換性無くすとか
MSが何をしたいのかさっぱり分からん
375デフォルトの名無しさん:2009/02/11(水) 21:34:31
>>371
IMR_DOCUMENTFEED固有の話はないけれど。
http://d.hatena.ne.jp/NyaRuRu/20070308
http://d.hatena.ne.jp/NyaRuRu/20070309
376デフォルトの名無しさん:2009/02/11(水) 21:53:34
>>373
そんな単純な話でもない
もともと>>314の参照先はちゃんと0初期化してて
マルチバイトでは動作するのに、Unicode では
動作しないって質問だし、自分でやってみても
うまくいかなかった
OSはVistaなのでOS側の問題とかはないはずなんだけど
377デフォルトの名無しさん:2009/02/11(水) 22:03:12
>>375
ありがとうございます。なるほど、テキストストアっぽい単語が関係ありそうですね。
378デフォルトの名無しさん:2009/02/11(水) 22:07:09
>>376
うおすまん、リンク先まで読んでいなかった。
379デフォルトの名無しさん:2009/02/11(水) 22:13:08
>>376
manifestが無くてcomctl32.dll ver5系を使ってたってオチだろ
多分ver5系はcbSizeにTOOLINFO::lpReservedのサイズを含めてはいけない
380デフォルトの名無しさん:2009/02/11(水) 22:30:45
>>379
まさにそのとおりでした
なんか昨日から気になってたんだけど、ようやくスッキリした
ありがとう
381デフォルトの名無しさん:2009/02/11(水) 22:33:44
結局、TOOLINFO::lpReservedってそういう時わざと失敗させるために、構造体のサイズを変えるべく入れただけのような気がしてきた
NULL以外の適当な値を入れても動くみたいだし
382デフォルトの名無しさん:2009/02/11(水) 22:37:47
D:→E:のようにドライブレターを変更するにはどうしたらいいんでしょうか?
383デフォルトの名無しさん:2009/02/11(水) 22:41:18
コマンドプロンプトで

D:\> E:

と入力する。
384デフォルトの名無しさん:2009/02/11(水) 22:42:30
つーか板違い
385デフォルトの名無しさん:2009/02/11(水) 22:42:46
>>382
char path[MAX_PATH] = "D:\dokoka";
char drive[MAX_PATH];
char dir[MAX_PATH];
char name[MAX_PATH];
char exp[MAX_PATH];

_splitpath( path, drive, dir, name, exp);
drive[0] = 'E';
_makepath( path, drive, dir, name, exp);


ネタなので反論は許さない。
386デフォルトの名無しさん:2009/02/11(水) 22:47:14
>>385
expって何だよw
エクスプローラの略か?
387デフォルトの名無しさん:2009/02/11(水) 22:53:01
>>386
うっせw 突っ込むなって言ったろw pじゃなくてtだったよ、うろ覚えすぎたw
よく考えたら拡張子だからエクステンションの略なのか。
388デフォルトの名無しさん:2009/02/11(水) 22:55:09
>>382
MSDN Library

Win32 and COM Development

System Services

File Services

File Systems

Volume Management

Volume Management Reference

Volume Management Functions
にお探しのAPIがあると思うよ
389デフォルトの名無しさん:2009/02/11(水) 22:59:42
たまに優しい人が居るスレだ
390デフォルトの名無しさん:2009/02/11(水) 23:18:48
たまに知らないならレスしないでください。ウザイだけですな人がいるスレだ
391デフォルトの名無しさん:2009/02/11(水) 23:20:41
>>385
_splitpath, _makepath
こんなのあったんか、知らんかったぽ
392デフォルトの名無しさん:2009/02/11(水) 23:22:54
これでもイジワルしたつもりなんだ、優しい人なもんか
まず質問者が最低限自分で調べてから質問する人かどうかを見極めるために
>ドライブレターを変更するにはどうしたらいいんでしょうか?
という質問から「api ドライブレターを変更」でググったら上位3件(1件重複あり)全てにAPI名が出てきたんだぞ
ここでイジワル心が働いた

今度はそのAPI名でまたググって英語版MSDN Libraryに飛んで
ツリー形式になってる項目を一つ一つコピペしてrootへ向かってだなあ・・・
393デフォルトの名無しさん:2009/02/11(水) 23:28:16
>>392
お前のツンデレっぷりに感動したので、付き合ってください
394デフォルトの名無しさん:2009/02/11(水) 23:29:41
      ハ,,ハ
     ( ゚ω゚ )  お断りします
    /    \
  ((⊂  )   ノ\つ))
     (_⌒ヽ
      ヽ ヘ }
 ε≡Ξ ノノ `J
395デフォルトの名無しさん:2009/02/11(水) 23:35:54
Linuxユーザーがググった知識を披露するスレになり下がってる。
396デフォルトの名無しさん:2009/02/11(水) 23:38:05
定型レスしかできないクソバカに比べれば100倍マシだからいいよ
397デフォルトの名無しさん:2009/02/11(水) 23:38:09
まともな答えになっていれば別に何ユーザでも構わないでしょ。
ツンデレならWine使いかもしれないし。
398デフォルトの名無しさん:2009/02/11(水) 23:40:35
>>397
>ツンデレならWine使いかもしれないし
詳しく
399デフォルトの名無しさん:2009/02/11(水) 23:47:00
>>398
LinuxでWinAPIを実装してWindowsアプリケーションが動くというやつ。
使ったことないから出来は知らないけど。
400デフォルトの名無しさん:2009/02/11(水) 23:54:22
>>397
使ったこともないのにググった知識で答えるのは無駄だろ。
質問者が一番知識があるという状態をよく目にする。
401デフォルトの名無しさん:2009/02/11(水) 23:56:16
知識のある人が知らないフリして質問して、知ったかで回答する馬鹿を突付いて遊んでるんだよ
402デフォルトの名無しさん:2009/02/11(水) 23:59:28
母無職、弟ニート、俺派遣
3人家族月10万(家賃含)でなんとかしてるけどなあウチは
残りは昔の生活費の借金返済に充てて
403デフォルトの名無しさん:2009/02/12(木) 00:01:46
母無職、弟無職、俺無職
3人家族月0.1万(家賃含)でなんとかしてるけどなあウチは
残りは昔の生活費の借金返済に充てて
404デフォルトの名無しさん:2009/02/12(木) 00:02:46
ここまで人工無能アイちゃんのレス
405402:2009/02/12(木) 00:02:55
ごめんなさい
406デフォルトの名無しさん:2009/02/12(木) 00:35:45
>>402
うわあ…
407108:2009/02/12(木) 00:43:34
>>379
出力ウィンドウのデバック表示で

C:\Windows\winsxs\x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.6001.18000_none_886786f450a74a05\comctl32.dll' を読み込みました
C:\Windows\winsxs\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.6001.18000_none_5cdbaa5a083979cc\comctl32.dll' を読み込みました

と2種類のバージョンのcomctl32.dllを読み込んだように表示されているんですが、これは関係あるのでしょうか?
最近Win32APIプログラミング始めた素人なので変な質問だったらすいません。
408デフォルトの名無しさん:2009/02/12(木) 01:03:24
>>407
Side-by-Sideでググっとけ


てか、内部or外部のXMLで、同名DLLのバージョンを切り替えるなんてアホだろ
誰が考えたんだよ全く・・・
409デフォルトの名無しさん:2009/02/12(木) 01:26:10
>>407
CommonControl 6.0を使用するための具体的な対処ということなら、
以下をstdafx.hあたりに記載しとけばいけるばず

#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
410デフォルトの名無しさん:2009/02/12(木) 01:38:01
>>408
ちなみにお前だったらどういうのがいいと思うのか聞きたい。
411デフォルトの名無しさん:2009/02/12(木) 02:05:23
directxみたいにファイル名を変えとけばいいんじゃねーの?
412デフォルトの名無しさん:2009/02/12(木) 10:45:47
dll heaven状態ですね
413デフォルトの名無しさん:2009/02/12(木) 13:07:34
Direct2DとかWriteってDirectXになるの?
それともWIn32API?
414デフォルトの名無しさん:2009/02/12(木) 14:51:53
1GBくらいのメモリを確保する場合はnewとGlobalAllocどちらがいいですか?
またその他に適した関数はありますか?
415デフォルトの名無しさん:2009/02/12(木) 14:57:59
VirtualAlloc
416デフォルトの名無しさん:2009/02/12(木) 15:01:48
>>415
ありがとうございます~
さっそく調べてみます!
417デフォルトの名無しさん:2009/02/12(木) 15:02:22
そんなに独り占めしてずるいわあ
418デフォルトの名無しさん:2009/02/12(木) 15:24:14
1Gバイトのシリコンメモリ領域を明示的に確保し
それにスワップ無しでランダムアクセスするようなアプリを
動作させることが出来る商用パッケージOSは今のところ無い。
(近い将来出るかも知れないが)

Windowsの場合VirtualAllocとか使って、シリコンメモリに
領域を確保したつもりになってももどうせディスクにスワップ
されるので、1Gバイトのファイルを作成し、それにランダム
アクセスするコードと速度面では大差が無い。
419デフォルトの名無しさん:2009/02/12(木) 15:37:20
>>418
使ったこと無いから詳しくは知らんがAWE APIは?
420デフォルトの名無しさん:2009/02/12(木) 15:45:32
>>418
そうなんですか><


すみません。GlobalAllocもVirtualAllocも500Mくらいを超えたらエラーになってしまうんですが
一度に取ってもダメで500Mを2回に分けても2回目のVirtualAllocでエラーになります。

ちなみにVirtualAllocで1回で取れる最大サイズってなんぼなんですか?
421デフォルトの名無しさん:2009/02/12(木) 15:54:29
>>418
本当に欲しければ、VirtualLockがあるよ。Unix系だってmlockがあるだろう。
果たして使いこなせるかどうかはともかく。
422デフォルトの名無しさん:2009/02/12(木) 16:27:46
>>420
環境によるし、その時のアドレス空間の空き状況にもよる。
423デフォルトの名無しさん:2009/02/12(木) 16:35:09
>>422
そうみたいですね・・・
いちおうメモリは4GBあるのですが、1MBづつ取ると970MBの所でエラーになりました
タスクマネージャの利用可能メモリは3.4GBあるのですが
2GBくらい取れないんですか?
424デフォルトの名無しさん:2009/02/12(木) 16:37:58
なるべくプログラム開始直後にVirtualAllocで予約かけたら、
もうちょっと大きくとれないか?
425デフォルトの名無しさん:2009/02/12(木) 16:38:48
>>423
環境によるし、その時のアドレス空間の空き状況にもよる。
426デフォルトの名無しさん:2009/02/12(木) 17:03:25
特に設定しなければ、ユーザーエリアは最大2GB
そこをプログラムで使用中の上、連続したエリアを取りたいんだろうからそんなもんだな
427デフォルトの名無しさん:2009/02/12(木) 18:40:03
PCに1GBのメモリを確保できるだけの余力がなかったりして。:-)
428デフォルトの名無しさん:2009/02/12(木) 18:43:40
そんな大量に物理メモリを取りたければドライバ書けばいいだろ
429デフォルトの名無しさん:2009/02/12(木) 18:45:44
つーか64bitに移行しろ
430デフォルトの名無しさん:2009/02/12(木) 18:57:29
顧客にそんなこと言えますか? ねぇ、あなた
431デフォルトの名無しさん:2009/02/12(木) 19:00:54
こんなとこでそんな質問すんなよ
432デフォルトの名無しさん:2009/02/12(木) 19:02:39
メモリが少ない別PCの方が多く確保できた
これタスクマネージャのコミットチャージの最大値までしか取れないみたいですが
物理メモリが少ない方のPCはここの値がちょっと大きいのですが
これってどこで調整できますか?まあAPIとは関係ないっぽい話になっちゃいますが・・・
433デフォルトの名無しさん:2009/02/12(木) 19:03:09
32APIスレなのに64ビットに移行しろとか言わなくても
434デフォルトの名無しさん:2009/02/12(木) 19:06:56
>>429みたいな馬鹿はスルーしましょう。
435デフォルトの名無しさん:2009/02/12(木) 19:12:15
>>432
強制的にramdiskとしてメインメモリより1GB搾取して
それをおれおれ専用メモリにしたら?
でも、どうやればよいのしらん
436デフォルトの名無しさん:2009/02/12(木) 19:14:13
うんこしてきます。
しばらくお待ちください
437デフォルトの名無しさん:2009/02/12(木) 19:15:02
>432
合計はスワップファイル+物理メモリでしょ。
438デフォルトの名無しさん:2009/02/12(木) 19:21:46
>>413
そもそもDirectX自体、広義にはWin32 APIの一部分ということはともかく、
DirectXの一部みたいだけど、GDI/GDI+の置き換えとか言っているし、
どっちで質問するのがふさわしいかまだよく分かんないね。
439デフォルトの名無しさん:2009/02/12(木) 19:31:47
ここ → DirectXスレへ行け
DirectXスレ → Win32APIスレへ行け
って言われるんですね、分かります
440デフォルトの名無しさん:2009/02/12(木) 19:34:34
だったらDirect2Dのスレでも立てればいいだけだろうが
441デフォルトの名無しさん:2009/02/12(木) 19:38:20
実装はCOMだろうしここになるとは思えない。
442デフォルトの名無しさん:2009/02/12(木) 19:38:32
>>440
スレ立てできないくせにレスしないで下さい。ウザいだけです。
443デフォルトの名無しさん:2009/02/12(木) 19:42:29
>>441
(´,_ゝ`)プッ
444108:2009/02/12(木) 20:16:11
>>408
ありがとうございます、勉強になりました。
>>409
ありがとうございます。
CommonControl 6.0を使用出来るようになりました。
445デフォルトの名無しさん:2009/02/12(木) 20:21:02
ま、Win7のリボンコントロールもCOMだからな

てかIUIFrameworkでググっても日本語のサイトが1件も出ねぇw
446デフォルトの名無しさん:2009/02/12(木) 20:26:02
これをwin32の質問と見なして良いかどうか微妙ですが、
考えていると脳みそが沸騰して訳が分からなくなったので質問させていただきます。
質問
・VISTAのAero ON でウィンドウを作成する前にそのサイズを知る方法。
開発環境 SDK/VC++ 2005

問題の解決には、通常GetSystemMetrics()かAdjustWindowRectEx()を使うと思います。
ところが、VISTAのAeroが有効なときは奇妙な現象が起こります。
そこで実験してみました。
dwStyleA = (WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_CLIPCHILDREN);
dwStyleB = dwStyleA | WS_THICKFRAME;
の設定で、100,100 (800x600)をAdjustWindowRectEx すると
dwStyleA: 97,76 806x627
border w,h: 3,3
dwStyleB: 92,71 816x637
border w,h: 8,8
という結果が返ります。各borderは、次の式で求めています。
横は(ウィンドウ幅-クライアント幅)/2
縦は(ウィンドウ高-クライアント高-::GetSystemMetrics(SM_CYSMCAPTION))/2
一見して当たり前で、作成されたウィンドウをキャプチャしてサイズを確認した
ところ、確かに2000/Xp/VISTA aero off の時は見た目もこの通りになります。
しかし、VISTAのaeroが有効な環境では、dwStyleAでもdwStyleBでも、
見た目はdwStyleBと同じ(!)になるのです。
しかも、GetSystemMetricsもAdjustWindowRectExもAero on/off で同じ値を返します。
もちろん作成後に GetWindowRect()した場合、AdjustWindowRectEx()と
整合性のある値(つまり見た目とは違った値)を返します。
これがAPIのバグでないとしたら、dwm.exeが独自にウィンドウを装飾している
ものと思われますが、その値を取得する方法がわかりません。

1.Aero on時に見た目通りのウィンドウサイズを取得する方法は?
2.Aero on時のウィンドウサイズは常に thickframeと同じと見なしていいの?
3.2が良いとした場合、Aero on を手軽に知る方法は?
447デフォルトの名無しさん:2009/02/12(木) 20:54:38
Theme系のAPIを使えば、もう少しまともな値が得られそうな予感。
あまりに面倒臭そうで試す気にもならんが。

ちなみに、AdjustWindowRectExは
必要なクライアント領域を確保するのに指定すべきウィンドウサイズを求めるAPIだから、
その周りのフレームについては何の保証もしていないと思う。
448デフォルトの名無しさん:2009/02/12(木) 20:57:20
そもそも2000/XPでもメニューが2段以上になる場合とかは想定してくれないからな
449デフォルトの名無しさん:2009/02/12(木) 21:06:00
>>447
theme系APIというと、uxtheme.dll のあれですね?
チェックしてみます。ありがとうございました。

例えば>>446は、800x600のクライアント領域を指定して、AdjustWindowRect を呼び出すことで
作成されるはずのウィンドウの大きさを取得してチェックしたものですが、問題なのはそれが見た目の
サイズと異なってしまうことなのです。
見た目だけの問題なので、だれも気にしないのかな・・・
450デフォルトの名無しさん:2009/02/12(木) 21:56:02
 小学生の頃
 必死で買ったエロ本を母親に捨てられた
 恥ずかしいから怒る事もできず
 できるだけゴミ箱から回収するように頑張っていた
 しかし母親が何度も何度も捨てるもんだから
 ついに親父がブチ切れた

 切れた親父は母親に
 「これは!この本は!」とエロ本をゴミ箱からすくい上げ
 見せながら力説してくれた
 「これはな!このくらいの年のガキにとっちゃ!
 金払えば買えるもんじゃないんだ!お前はなぜこれを捨てるんだ!」

 俺は感動した

 親父はエロ本を俺に投げつけて
 「もう絶対捨てさせないし隠す必要もないからな!」
 と言ってくれた

 俺は泣いた

 でも次の日にエロ本は親父の部屋にあった
 何か複雑な気持ちだった

451デフォルトの名無しさん:2009/02/12(木) 22:13:29
>>445
COMだとネイティブだけでホストするのめっさめんどくせぇじゃねぇか・・・
452デフォルトの名無しさん:2009/02/12(木) 22:29:42
んなこたーない
WindowProc書いてSendMessage連発する方が面倒
453デフォルトの名無しさん:2009/02/12(木) 22:30:29
>>450
今日VIPでできたコピペじゃないか
454デフォルトの名無しさん:2009/02/12(木) 22:33:19
>>450=>>453
はいはい良かったね
さっさとVIPへ帰れ
455デフォルトの名無しさん:2009/02/13(金) 00:29:23
くけいと読むんだ、たんけいかと思ってた
456デフォルトの名無しさん:2009/02/13(金) 00:37:53
あるある。
457デフォルトの名無しさん:2009/02/13(金) 00:55:29
方形
458デフォルトの名無しさん:2009/02/13(金) 17:59:29
くけいでよかったんだ、ホッとした
459デフォルトの名無しさん:2009/02/14(土) 16:14:29
チョコ欲しくない?
460デフォルトの名無しさん:2009/02/14(土) 16:19:57
くれ
461デフォルトの名無しさん:2009/02/14(土) 16:42:54
チンコほしい
462デフォルトの名無しさん:2009/02/14(土) 17:20:30
ひぃ
463デフォルトの名無しさん:2009/02/15(日) 00:25:44
いま、注目されている劇団のHPの中身。
http://circus.main.jp/next.html

2ちゃんにもスレがあるよ。
http://gimpo.2ch.net/test/read.cgi/drama/1098881123/901-1000
464デフォルトの名無しさん:2009/02/15(日) 01:47:50
465デフォルトの名無しさん:2009/02/15(日) 05:07:59
マルチ乙
466デフォルトの名無しさん:2009/02/15(日) 05:30:18
MAXIMIZEBOXを表示し、且つキャプションバーダブルクリックでの動作をすり替えるにはどうすればいいのでしょうか?
WM_SYSCOMMANDのように最大化動作の直前に知りたいのですが.
467デフォルトの名無しさん:2009/02/15(日) 07:03:31
WM_SYSCOMMAND
468デフォルトの名無しさん:2009/02/15(日) 09:28:32
独自のキャプションバーを作る
469デフォルトの名無しさん:2009/02/15(日) 11:44:50
msg が WM_SYSCOMMAND かつ wParam が 0xf012 の時に摩り替える処理を行って
かつ DefWindowProc にデフォルト処理をさせなけりゃおk
470デフォルトの名無しさん:2009/02/15(日) 11:47:26
間違えた
×0xF012
○0xF032
471デフォルトの名無しさん:2009/02/15(日) 12:10:42
///<summary>
/// Sent when form maximizes because of doubcle click on caption
///</summary>
SC_MAXIMIZE2 = 0xF032,

これですね、ありがとうございます。
膨大で、やりたいことやろうと思うとすごく難しい
472デフォルトの名無しさん:2009/02/15(日) 12:18:12
/// Sent when form maximizes because of doubcle click on caption
///</summary>
SC_RESTORE2 = 0xF122,

これも忘れずになー
473デフォルトの名無しさん:2009/02/15(日) 12:20:52
ダブルクリックの時だけ動作を変えるってどういう状況?
ウィンドウシェードでも実装したいのか?
474デフォルトの名無しさん:2009/02/15(日) 12:30:37
DirectXプログラムで最大化ボタンでフルスクリーンにしようかと.
475デフォルトの名無しさん:2009/02/15(日) 12:35:30
昔の俺と同じ動機だ
当時最大化ボタンにマウスカーソルを合わせた時ツールチップで「フルスクリーン」と出るようにもしたかったけどそっちは挫折した
476デフォルトの名無しさん:2009/02/15(日) 12:41:13
こうやって先人がレールを敷いてくれると助かりますよ、本当に。
477デフォルトの名無しさん:2009/02/15(日) 13:32:27
>>474
普通にWM_SYSCOMMAND/SC_MAXIMIZEが飛んでくるのを処理すればいいし自ら答え出してるだろ

で、SC_MAXIMIZE2とか定義してる馬鹿がいるみたいだけどMSDNをしっかり読もうな

> In WM_SYSCOMMAND messages, the four low-order bits of the wParam parameter are used internally by the system.
> To obtain the correct result when testing the value of wParam, an application must combine the value 0xFFF0
> with the wParam value by using the bitwise AND operator.
478デフォルトの名無しさん:2009/02/15(日) 13:54:51
>>477
最大化ボタンもタイトルバーダブルクリックもmsgはWM_SYSCOMMANDだが
前者のwParamはSC_MAXIMIZE(0xF030)で後者のwParamは0xF032なんだよ
479478:2009/02/15(日) 13:57:20
MSDNも>>477のレスもしっかり読んでなくてごめんなさい
480デフォルトの名無しさん:2009/02/15(日) 14:34:57
memory mapped fileを使う場合の一般的な手順としては、

hFile = CreateFile();
hMap = CreateFileMapping( hFile, ... );
mptr = MapViewOfFile()

mptrへのアクセス

UnmapViewOfFile( mptr );
CloseHandle( hMap );
CloseHandle( hFile );

となると思いますが、↓のように先にファイルハンドルをcloseしても
よいのでしょうか?
CreateFileMappingではhFileの参照カウントをincrementすると思って
いるので、実際にはcloseされないと期待しています。また、実際に試
してみたところ正常に処理できました。
ただ、たまたまうまくいったのか、保証されている動作なのか分からな
いのですが...どうなんでしょうか?

hFile = CreateFile();
hMap = CreateFileMapping( hFile, ... );
mptr = MapViewOfFile()
CloseHandle( hFile );

mptrへのアクセス

UnmapViewOfFile( mptr );
CloseHandle( hMap );
481デフォルトの名無しさん:2009/02/15(日) 14:45:04
hFile = CreateFile();
hMap = CreateFileMapping( hFile, ... );
CloseHandle( hFile );
mptr = MapViewOfFile()
CloseHandle( hMap );

mptrへのアクセス

UnmapViewOfFile( mptr );

でおk
482デフォルトの名無しさん:2009/02/15(日) 14:48:16
CreateFileMapping() は、ファイルがなくても使える。
483デフォルトの名無しさん:2009/02/15(日) 14:55:06
CreateFileMappingでページングファイルの共有メモリを作ったとして
その共有メモリって本当にメモリと同等の速度なの?
ページングファイル(pagefile.sys)に作るなら速度はファイル並み
なんじゃないかと思えてしまうんだけど。
あとページファイル無しに設定したWindows上だと動かないのかな?
484デフォルトの名無しさん:2009/02/15(日) 15:02:14
別にページファイル上に作る訳じゃないし。
485デフォルトの名無しさん:2009/02/15(日) 15:05:44
すると↓って具体的に何やってるんだ?

hFile パラメータで INVALID_HANDLE_VALUE を指定した場合、呼び出し側プロセスは
dwMaximumSizeHigh と dwMaximumSizeLow の各パラメータを使ってマッピングオブ
ジェクトのサイズも指定しなければなりません。この場合、CreateFileMapping は指定
されたサイズのファイルマッピングオブジェクトを作成しますが、ファイルシステム内の
名前付きファイルではなく、オペレーティングシステムのページングファイルに関連付
けます。

ページングファイルが無くても関連付けられるんだろうか。
486デフォルトの名無しさん:2009/02/15(日) 15:07:33
逆に考えるんだ。
mallocなんかで確保したメモリも、ページアウトされればファイル並みの遅さだ。
ナ、ナンダッテー(AAry

さらに逆を言えばくメモリマップドファイルだって、
物理メモリが開いていれば、そこですべて済ませる。
487デフォルトの名無しさん:2009/02/15(日) 15:09:13
物理メモリでやってくれるのね
安心しますた
488デフォルトの名無しさん:2009/02/15(日) 19:14:58
低脳で分からないんですけど、
>>485のINVALID_HANDLE_VALUE を指定して使う時ってどういう場合なの?
単に使用後は不要の要高速アクセスのテンポラリファイルが欲しい時?
489デフォルトの名無しさん:2009/02/15(日) 19:16:49
別プロセスと共有するときとか。
490デフォルトの名無しさん:2009/02/15(日) 19:25:43
一番オーソドックスな使い方じゃないのか
ググって出てくるのも大概これだろ
491デフォルトの名無しさん:2009/02/15(日) 20:57:47
んなこたーない
492デフォルトの名無しさん:2009/02/15(日) 21:11:40
これを同じことをすると白黒で表示されるんだけど
どうすればカラフルになるの?

ttp://www-higashi.ist.osaka-u.ac.jp/~k-maeda/vcpp/sec4-1bmpfile.html
493デフォルトの名無しさん:2009/02/15(日) 21:12:56
16色以上表示可能なモニターに買い換える
494デフォルトの名無しさん:2009/02/15(日) 22:14:09
ここはカラーセロハンの出番だな。
495デフォルトの名無しさん:2009/02/15(日) 23:12:22
マウスカーソルで質問があります
LoadCursorでカスタムカーソルを読み込んでいるのですが
64x64等のサイズで作成したカーソルも32x32のサイズで表示されてしまいます
GetSystemMetricsでマウスサイズを取得すると32x32になってるのですが
どこか別の場所でマウスサイズを設定しないといけないのでしょうか?
496デフォルトの名無しさん:2009/02/15(日) 23:17:30
教えてください。(VC6, Win32)

Win32でメインウィンドウをクラス化してサブクラスで使用していますが、WM_CREATEがサブクラスに届きません。

構築方法は、スーパークラスでWindow作成後にthisをSetPropしておき、
static WndProcでGetPropして、スーパー or サブクラスのウィンドウメッセージを振り分けています。

動かない理由は、ウィンドウ作成時にthisが関連付けられないため、
サブクラスのメッセージ処理が行われないためです。
ここまでは分かりました・・・

これを回避する方法の参考サイト等を教えていただけないでしょうか?
どうぞよろしくお願いします。
497デフォルトの名無しさん:2009/02/15(日) 23:23:17
岡田にそらそうよって200回言って欲しい
498デフォルトの名無しさん:2009/02/15(日) 23:28:30
>>496
CreateWindow(Ex)の最後のほうの引数にvoid*のがあるだろ。そこでthis渡せ。
すると、WM_CRAETEもしくはWM_NCCREATEで
reinterpret_cast<const CREATESTRUCT*>(lParam)->lpCreateParamsとすればそいつが取り出せる。
499デフォルトの名無しさん:2009/02/15(日) 23:29:22
>>492
フルカラービットマップはパレットがないだろ
DIBをごにょごにょしろ
500デフォルトの名無しさん:2009/02/15(日) 23:31:07
・CreateWindow(Ex)の最後の引数
・WM_CREATE時の((LPCREATESTRUCT)lParam)->lpCreateParams
501デフォルトの名無しさん:2009/02/15(日) 23:31:53
俺には早さが足りない
502デフォルトの名無しさん:2009/02/15(日) 23:33:00
画像を256色にすりゃいいじゃん
503デフォルトの名無しさん:2009/02/15(日) 23:36:25
>>495
標準と違う大きさのカーソルを扱ったことがないから上手くいくか知らないけど、
まずは大きさを指定する引数があるLoadImageを試してみたらどう?
504デフォルトの名無しさん:2009/02/15(日) 23:38:42
FreeLibraryしてもメモリに存在するDLLを強制的に排除する方法ありますか。
505デフォルトの名無しさん:2009/02/15(日) 23:45:59
マウスカーソルは32x32がmaxだろ。
SXGA+とかUXGAが当たり前の時代なのに、いい加減もっと大きくしろと思うのだが。
506デフォルトの名無しさん:2009/02/15(日) 23:47:06
何回もFreeLibraryすればそのうちカウント0になる
99%アクセス違反で止まると思うけど
507496:2009/02/15(日) 23:49:51
>>498, 500さん
レスありがとうございます。やってみます!
508デフォルトの名無しさん:2009/02/15(日) 23:54:50
>>503
ありがとうございます。カーソルサイズの変更できました。
509デフォルトの名無しさん:2009/02/15(日) 23:58:14
493 名前:デフォルトの名無しさん[sage] 投稿日:2009/02/15(日) 21:12:56
16色以上表示可能なモニターに買い換える

494 名前:デフォルトの名無しさん[sage] 投稿日:2009/02/15(日) 22:14:09
ここはカラーセロハンの出番だな。
510デフォルトの名無しさん:2009/02/16(月) 06:34:44
スタティックリンクされたDLLはアンロードできないけどね
511デフォルトの名無しさん:2009/02/16(月) 10:45:57
アンロードしたいのはVB6のアドインDLLなんですが、書き出そうとしても、そのDLL自身が使われているので
書き込みできません。アドイン自身で自分自身を検知して、Connect=Falseまではできました。
それでも書き込みできないときがあります。アドインマネージャでいちいちやればできるので、
アンロードする手段があると思います。それが何かと。
512496:2009/02/16(月) 16:23:05
>>498, 500さん
遅ればせながら、処理が完成しました。
WM_CREATE時とそれ以降の処理がちょいと面倒でしたが・・・
また、同じくDialogのテンプレートクラスも完成しました!
本当にありがとうございます。
513デフォルトの名無しさん:2009/02/16(月) 17:01:30
みんな自分のそういうクラス作ってるよね。わざわざ作らずとも自分の気に入るタイプのライブラリ作った人
いたかもしれないけどわかんないから自分でやったよ。そういう個人ライブラリのまとめサイトとかあればいいのに
514デフォルトの名無しさん:2009/02/16(月) 17:10:12
>>513
知らないならレスしないで下さい。ウザいだけです。
515デフォルトの名無しさん:2009/02/16(月) 20:02:03
2つの画像をまとめてメモリデバイスコンテキストに選択して、
「最終的に表示する画面」を先に作る方法を、
どなたか教えていただけないでしょうか。

BitBltひとつに二つの画像を処理させたいんです。
516デフォルトの名無しさん:2009/02/16(月) 20:08:17
>>515
>BitBltひとつに二つの画像を処理
たぶん、なにか誤解している

やりたいことはダブルバッファリングのことだと思うので、ググって
調べてみるのが早い
517デフォルトの名無しさん:2009/02/16(月) 20:12:20
>>516
ありがとうございます。
調べてみます
518デフォルトの名無しさん:2009/02/16(月) 20:57:27
PCIとPCIExpressを区別するにはどうしたら良いでしょうか?
SetupDi系かCM_系ででできるんでしょうか?
519デフォルトの名無しさん:2009/02/16(月) 21:34:03
区別するって事は、既にデバイスのハンドルを取得しているのが前提に見えるけど……
PCI/PCI-Eの判別方法は、WDKのpciprop.h辺りを見れば良いんじゃないかな。
520デフォルトの名無しさん:2009/02/16(月) 21:41:12
質問です
エディット・ボックスの文字列を

GetWindowText(hEdBox,strbuf,len);
snprintf(msgbuf,msgbuflen-1,_T("%s"),strbuf);
SetWindowText(hEdBox,msgbuf);

のようにすると、hEdBox に再表示される文字列の最後の1バイトが
失われるのですが、思い当たることはないでしょうか?
ちなみにパッファ・サイズは十分あり、改行文字は含まれていません。
521デフォルトの名無しさん:2009/02/16(月) 21:46:59
自作アプリが起動中の場合のみ、ファイルの関連付けを変更したいのですが、どうすればよいのでしょうか?レジストリをいじれば可能なのは調べられましたが、アプリが落ちたときのことを考えるとレジストリはいじれません。
522デフォルトの名無しさん:2009/02/16(月) 21:47:58
523デフォルトの名無しさん:2009/02/16(月) 21:48:14
ShellExecute() とか FindExecutable() とかフックしてみれば?
524デフォルトの名無しさん:2009/02/16(月) 22:07:32
構造化例外をきちんとハンドルすれば、
関連付けを元に戻すくらいの余裕は確保できないか?
まあ、アプリが落ちる以前にログオフとかにきちんと対応しないといけないけどな。
WM_ENDSESSIONを最後にプロセス終了、って事もあるぜ。
525デフォルトの名無しさん:2009/02/16(月) 23:12:43
          _,................._
       r::':´:::::;、_;;::::::::::::::::‐-....、_
     r'´:::::::::::::::'ヘ!::::::::::::::::::::::::::::::::::、
    /:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::ヽ
     ,!:::::::::;:- '´  ̄ ̄ ̄` ‐-::、::::::::::::::::i
    ヽ::::;r'         _,_,,,,,_ ヾ::::::::::::::::l
    ./::'':! ,;illliiiiiiiiii;、ヽillll仙lllllllllli;.::::::::::::::::;!
   ノ::::::::l ィ''ヾフヾ :. ;::'` `"`'':ミ';:::::::::::::ヾメ
-='r´:::::::::::l        ;:::.      .:::::::::::::::::::ミヽ
 ヾツ::::::::::::i:,     ( =ー⊃;:.  ...:::::::::::::::::::::::::::i`
  l::::::::::::::::i;;    ,,.:;:' ミ;;;-,,,, .:::::::::::::::::::::::::::::l
.i'__ノ:::::::::::::::::i;;,  ;il'' -―ー''''''';::::::::::::::::::::::::::::::::;!
  /´`〉::::::::::::::'';, "  --‐‐ .::::;::::::::::::::::::::::::::::;ィ!
 ヾヾ:::::::::::::::::::::ツ::、,_   ,.,,.;::::::::::::::::::::::::::::::::::r'
  ーッ;:::::::::::::::::::::::::::::::"::::::::::::::::::::::::::::::::::;rヶノ
    '"ヽ:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::i'

     チョ・プゲラ[Cho Puguera]
    (1928~1967 アルゼンチン)
526521:2009/02/16(月) 23:13:31
ShellExecuteのフックは元の関連付けアプリがわかってればなんとかなりそうですね。
ちょっとやってみます。
527デフォルトの名無しさん:2009/02/16(月) 23:14:39
API をフックするなら、関連づけアプリなんて関係ないだろ?
528デフォルトの名無しさん:2009/02/16(月) 23:22:43
スレが荒れるのでフックの話題厳禁
529デフォルトの名無しさん:2009/02/16(月) 23:23:32
      ハ,,ハ
     ( ゚ω゚ )  お断りします
    /    \
  ((⊂  )   ノ\つ))
     (_⌒ヽ
      ヽ ヘ }
 ε≡Ξ ノノ `J
530デフォルトの名無しさん:2009/02/17(火) 00:18:26
LoadImageで手のカーソル(OCR_HAND)を読み込んでSetCursorしたら、一応変わりはしたんだけど
マウスが止まってる間だけしか絵が変わらない。移動中はノーマルカーソルになってるんですけど、何故でかわかりまっしゅ?
531デフォルトの名無しさん:2009/02/17(火) 00:26:02
>>516
ありがとうございました
無事ちらつきガなくなりました
ありがとうございました
532デフォルトの名無しさん:2009/02/17(火) 00:28:16
>>530
WM_SETCURSOR
533デフォルトの名無しさん:2009/02/17(火) 00:33:27
>>530
動き出したら、マウスカーソルの背後にあるウィンドウに関連付けられたカーソルに変更される。
(正確には、そのウィンドウのクラスの、だが)
ただし、NULLが関連付けられていたら、元に戻らない。

選択肢は2つ。
1. SetCursorではなく、WNDCLASS(EX)もしくはSetClassLongPtrで設定する。
2. 同じ手順でNULLに設定しておき、SetCursorする。
http://msdn.microsoft.com/en-us/library/ms648393.aspx
534デフォルトの名無しさん:2009/02/17(火) 00:34:52
>>532ゲェーーッ!!結構めんどくさいんスね・・・カーソルって・・・
535デフォルトの名無しさん:2009/02/17(火) 00:44:36
フックを教えてください。
世界で戦えるくらいのがいいです。
536デフォルトの名無しさん:2009/02/17(火) 00:46:56
テンプレ
>・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
537デフォルトの名無しさん:2009/02/17(火) 00:48:41
>>533こりゃ便利と思って選択肢1をやってみたら、外枠でカーソルが変わってからクライアントに入ってきた時も
そのままなのね。ゲゲェーッ!
538デフォルトの名無しさん:2009/02/17(火) 01:11:14
テンプレ追加
・高度なことは判らないので質問しないでください。
539デフォルトの名無しさん:2009/02/17(火) 01:12:55
せめて「まともな答えが返ってくることは保証しかねます」くらいにしようぜ。
540デフォルトの名無しさん:2009/02/17(火) 10:04:21
CreateThreadで作った別スレッドの中で
宣言した変数は、そのスレッドが終わると自動的に開放される・・・

という解釈でいい?
541デフォルトの名無しさん:2009/02/17(火) 10:16:15
Win32環境でマルチスレッドの同期の勉強をしています。
クリティカルセクションとかミューテックスとかセマフォとか、
情報処理試験的に考えたら由来や違いはありますけど
Win32APIだとみんな似たようなソースになりますよね?

Windows環境では、多プロセス間で使えるかとか、実行速度が速いか遅いかとか、
そういうことを知っておく方が大事なんでしょうか
542デフォルトの名無しさん:2009/02/17(火) 10:27:46
>>540
よくない。
543デフォルトの名無しさん:2009/02/17(火) 10:36:39
Windows環境に限らず大事だと思うけどw
544デフォルトの名無しさん:2009/02/17(火) 10:43:43
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
545デフォルトの名無しさん:2009/02/17(火) 16:13:18
マウスドライバがいけないのか、コントロールに、
ホイールパットではWM_MOUSEWHEELが来るのに、
マウスのホイールではキャッチできません。

ブラウザなどでは普通にスクロールできる(ホイールとして機能する)のですが、
こういう場合どんなメッセージが送られてきているのですか?
546デフォルトの名無しさん:2009/02/17(火) 16:18:34
つspy++
547デフォルトの名無しさん:2009/02/17(火) 16:23:03
外部アプリのコントロールのテキストを取り込みたい時ってgetwindowtextを使うと思いますが、
例えば、リストボックスに入っている複数行のテキストを取得したい時とかは、
どうすればいいんでしょうか。

教えてください。
548デフォルトの名無しさん:2009/02/17(火) 16:30:08
まずはそのリストボックスのハンドルを取得しろ
549デフォルトの名無しさん:2009/02/17(火) 16:37:04
>>546
存在忘れてました。
そして、何もメッセージが来ていませんでした。

親ウィンドウには来ているようなので、
むしろホイールパットの方が余計にメッセージ送っているようです。

スタティックコントロール(使っているのはピクチャボックスですが)で、
マウスホイールのメッセージを得るにはどのようにすればよいのでしょうか…

NotifyをTrueにしているのですが…
550デフォルトの名無しさん:2009/02/17(火) 16:41:06
そのコントロールがfocus持っていないから WM_MOUSEWHEEL が飛ばないのでは?
551547:2009/02/17(火) 16:43:42
>>548
リストボックスのハンドルは取得できています。
ハンドルが取れればGetWindowTextで複数行のテキストを
取れるってことでしょうか?
だとしたら、も少し自分で調べますのでヒントください。
お願いします。
552デフォルトの名無しさん:2009/02/17(火) 17:05:15
俺も知らなかったが、>>550のいう通りWM_MOUSEWHEELはフォーカス持ちにむけて送られるようだ。
今までキーボードでスクロールするついでにホイール対応することしかやってなかったから気がつかなかった。
553デフォルトの名無しさん:2009/02/17(火) 17:15:45
WM_MOUSEWHEELがカーソルの下じゃなくてフォーカス持ってるウィンドウに飛ぶなんて
マウスでWindows使ってれば常識だが
なんか理由あった気がしたけど忘れた
554デフォルトの名無しさん:2009/02/17(火) 17:34:53
>>551

そもそもCの文字処理分かってるのか?
555デフォルトの名無しさん:2009/02/17(火) 17:39:32
>>551 LB_GETTEXT
556デフォルトの名無しさん:2009/02/17(火) 17:41:01
別プロセスのウインドウへのGetWindowTextは特別なことやってる。
ListBoxのLB_GETSELITEMSとかLB_GETTEXTは別プロセスではうまくいかん。
557デフォルトの名無しさん:2009/02/17(火) 17:48:19
>>553
WM_MOUSEMOVE と同じで (PeekMessage で言う)PM_QS_INPUT系に纏める為?
558557:2009/02/17(火) 17:52:08
意味不明 わーすーれーてー
559デフォルトの名無しさん:2009/02/17(火) 18:01:00
>>554
わからないならレスするなクズ
560551:2009/02/17(火) 18:06:08
なんか、どういう風に質問していいか分からなくなってしまいました。
レスくれた方ありがとうございました。
出直してきます。
561デフォルトの名無しさん:2009/02/17(火) 18:14:44
>>560
・外部アプリのコントロールのテキストを取り込みたい
・具体的なコントロールの対象は ListBox で、item のテキスト

自分自身のアプリ内であれば LB_GETSELITEMS とか LB_GETTEXT を使えば可能である
が、"外部アプリ" ではその手法は使えない。

結論あきらめれ

# スクリーンショットとって OCR するぜ とか DLLインジェクションして云々とか 高級杉
562560:2009/02/17(火) 18:17:59
ありがとうございます。
すっきりしました。
563545:2009/02/17(火) 18:23:24
>>550,552,553
最近ブラウザの表示領域やタブにフォーカス無くても、ブラウザ自体にフォーカスあれば
マウスの位置によってちゃんとホイールする機能が主流になって、
フォーカス必要なことすっかり忘れてました…
えーっとフォーカスってどうやっ(ry
フォーカスなんて全然意識したことないわ…
564デフォルトの名無しさん:2009/02/17(火) 18:51:28
CreateFileMappingで3GBのエリアを確保できたのですが
MapViewOfFileをすると1GBちょいしか取れません。
1つのプロセスで2GBまででなんやかんやでそれくらいになるとおもうのですが
CreateFileMappingをした時点でPF使用量が3GB取られてるので
何とかマッピングできないもんですか?
565デフォルトの名無しさん:2009/02/17(火) 19:05:11
3GB分書き込めば確保されるよん
566デフォルトの名無しさん:2009/02/17(火) 19:10:21
リニアに取りたいの?
32ビット環境ではかなり難しいかと
567デフォルトの名無しさん:2009/02/17(火) 19:12:34
スクロールバーの使用不能 (つまみがない状態) について質問です。

WM_CREATEで
 hVScrollWnd = CreateWindowEx(
  0, "SCROLLBAR", NULL, WS_CHILD | WS_VISIBLE | SBS_VERT,
  rcWrapR.right, 0, 16, rcWrapR.bottom,
  hWnd, (HMENU)ID_VIEW_VSCROLLBAR, appInstance, NULL );
 siView.cbSize = sizeof(SCROLLINFO);
 siView.fMask = SIF_POS | SIF_RANGE | SIF_PAGE | SIF_DISABLENOSCROLL;
 siView.nMin = 0;
 siView.nMax = 0; // ここに siView.nPage - 1 までの値を入れてもだめでした。
 siView.nPage = rcView.bottom / 16; //適当な段数(現在は50付近の値)
 siView.nPos = 0;
 SetScrollInfo( hVScrollWnd, SB_CTL, &siView, TRUE );

上記の通りスクロールバーの設定をして使用不能にしたいのですがスクロールバー全域につまみが表示されます。
このあと別ルーチンで siView.nMax++ したのち SetScrollInfo()を実行すると使用不能になります。
もちろん siView.nMax < siView.nPage を満たさなくなればつまみも出てきます。
1回の操作だけで使用不能にするには上記の手順では何か足りてないのでしょうか?

OS XP 64bit / 32bitコンパイル / PSDK 2003 R2 / VCEE2005
568デフォルトの名無しさん:2009/02/17(火) 19:14:53
>>541

Cの文字列は文字の配列
569デフォルトの名無しさん:2009/02/17(火) 19:15:13
>>565
どうやって書き込めばいいですかね?

>>566
はいリニアに取りたいです。
CreateFileMappingで確保済みなので(ちゃんとPF使用量は3G分増えてる)
何とかなりそうが気がするんですが・・・
CreateFileMappingを10MBづつforでぐるぐる回して取っても、やはり1Gちょいでエラーになりました
570デフォルトの名無しさん:2009/02/17(火) 19:15:48
>>564
マップ開始位置を変更して何度もマップし直す。
あるいは64ビット化する。
571デフォルトの名無しさん:2009/02/17(火) 19:23:18
どうして何とかなりそうが気がしちゃうのかわからない。

>1つのプロセスで2GBまででなんやかんやでそれくらいになるとおもうのですが
これがわかってるのに。
572デフォルトの名無しさん:2009/02/17(火) 19:29:54
>>570
開始位置の計算てGetSystemInfoであれした値の倍数でしたっけ?
それと実際に確保するサイズはちゃんとGetSystemInfoのアレの倍数に収まってないとダメですよね?

>>571
だから実際にPF量はその分とられてるから。
別に3Gの連続エリアが欲しいわけじゃないし
573デフォルトの名無しさん:2009/02/17(火) 19:32:57
ページファイル上に確保されてれば同じだけマップできるなんて誰が保障してんだよw

脳内でだろ
574デフォルトの名無しさん:2009/02/17(火) 19:38:26
そもそもNTのページファイルは物理メモリも仮想メモリもシームレスなものでしょ。
575デフォルトの名無しさん:2009/02/17(火) 19:39:27
>>573
お前もっと大人になれよ?な?
576デフォルトの名無しさん:2009/02/17(火) 19:40:13
子供に指摘されて切れるなよバカw
577デフォルトの名無しさん:2009/02/17(火) 19:44:32
つうか取れないから失敗を返してるんだとなんで考えないんだろう。
578デフォルトの名無しさん:2009/02/17(火) 19:45:36
知らないならレスしないで下さい。ウザいだけです。
579デフォルトの名無しさん:2009/02/17(火) 19:49:50
お前らってほんと文句しか言わないよなw
だから>>578が流行ったんだろうけどw
580デフォルトの名無しさん:2009/02/17(火) 19:52:43
だって脳内ソースでできると言い張られても困るだろ。
581デフォルトの名無しさん:2009/02/17(火) 20:10:09
ガ板にスレが立っていないような言葉を流行ったとは言わない。
582デフォルトの名無しさん:2009/02/17(火) 20:19:22
>>572
まあ1GBとか512MBくらいずつ大きくマップすることにすれば、
まず間違いなくその値の倍数になっているだろうと思う。
583デフォルトの名無しさん:2009/02/17(火) 20:36:27
Apacheスレの役に立たないクズ並みに
インパクトあるからなw
584デフォルトの名無しさん:2009/02/17(火) 20:40:35
>>572

お前はメモリ3GB以上使うようなことしてんの?
メモリ3GB使う使い方を言って見なさい。

ただし、大幅にメモリを使うものではなく、3GBギリギリ使い方を言うように。
つまりだ、この使い方を下回れば3GBで十分とわかるようにってことだよ。
585デフォルトの名無しさん:2009/02/17(火) 21:09:30
めもりをはあどでいすくのかわりにつかうとか
586567:2009/02/17(火) 21:27:49
自己解決しました。
親ウィンドウのShowWindow()以後でないと反映されないみたいです。
申し訳ありませんでした。失礼します。
587デフォルトの名無しさん:2009/02/17(火) 21:41:39
AWE だっけ? PAE だっけ? 使わないと、3G は使えないんじゃないの?
588デフォルトの名無しさん:2009/02/17(火) 21:45:42
マウスのホイールがぐりぐりされたときの処理をしたいんですけど、
何かうまくいかないんです。

ちなみにマウスはWirelessOpticalMouse2000というのを使ってるんですけど
そんなの関係ないですよね・・・
589デフォルトの名無しさん:2009/02/17(火) 21:47:02
せめて、どんなコード書いてどんなことが起きたのかくらい書けよ・・・
590デフォルトの名無しさん:2009/02/17(火) 21:51:17
591デフォルトの名無しさん:2009/02/17(火) 22:05:00
>>587
PEイメージのLargeAddressAwareが有効で、かつ/3GBスイッチでOSが起動されている。
というのが一応条件だったと思う。
ちなみに、/3GBスイッチは 4-Gigabyte Tuning (4GT) と呼ぶらしい。

PAEはx86の機能で、64GBまでの物理メモリにアクセスできる等の拡張。
AWEは、アドレス空間内に窓を確保して、
4GBオーバーの物理メモリ等をそこにマッピングして扱うための仕組み。
592デフォルトの名無しさん:2009/02/17(火) 22:43:42
それで3GB有効でも、モジュール (EXE/DLL)を置いたり、
スタック・ヒープがあるからまるまる3GB使えるわけではないぞ。
一応念のため。
593デフォルトの名無しさん:2009/02/18(水) 00:28:10
ih*∂ψ/∂t=Eψ
594デフォルトの名無しさん:2009/02/18(水) 06:39:27
ウィンドウを常に最前面に表示するようにしてもオンラインゲームをフルスクリーンにしたら
隠れてしまいます

どうすればオンラインゲームの表示より手前に表示できるようになりますか?
595デフォルトの名無しさん:2009/02/18(水) 06:47:29
ウィンドウとかじゃなくて
ビデオメモリに直接描画すればいい
596デフォルトの名無しさん:2009/02/18(水) 06:49:29
>>595が意地悪だな

>>594
ウィンドウを常に最前列に表示したいんだろ?


文房具屋で「マッキーペン」ってのを買ってこい
……あとは分かるな?

欠点は、再描画が不可能なところだけだしな
マジおすすめ
597デフォルトの名無しさん:2009/02/18(水) 06:58:13
PCかディスプレイ2台用意して片方の画面をオンラインゲーム最前面にし、もう片方を計算機最前面にする
598デフォルトの名無しさん:2009/02/18(水) 07:06:37
>>596
シンナー使えば再描画が可能になる
599デフォルトの名無しさん:2009/02/18(水) 07:23:15
windowのフレームを消すにはどうしたらいい?
600デフォルトの名無しさん:2009/02/18(水) 07:24:53
>>599
適切なウィンドウスタイルを設定する
601デフォルトの名無しさん:2009/02/18(水) 07:33:10
>>600
具体的に
602デフォルトの名無しさん:2009/02/18(水) 07:47:41
ウインドウスタイルにフレームを設定しない
603デフォルトの名無しさん:2009/02/18(水) 07:59:01
~キャプション
604デフォルトの名無しさん:2009/02/18(水) 08:28:29
ゲーム画面よりも前面に表示するにはどうすればいいですか?
605デフォルトの名無しさん:2009/02/18(水) 08:32:49
>>604
ちょっと上みりゃ書いてあんだろクズが
>>595-596,598
その答えを得るために何の情報を自分が公開しなきゃいけないかすらわからないならググってろボケ
606デフォルトの名無しさん:2009/02/18(水) 08:42:17
Windows vista
グラボは nVidia GeForce 9500GT

>>605 知らないならレスしないでください、うざいだけです
607デフォルトの名無しさん:2009/02/18(水) 08:42:40
つまんないし、しね
608デフォルトの名無しさん:2009/02/18(水) 08:43:06
>>606追加
チートツールのウィンドウをゲーム画面より常に前面に表示しておくにはどうすればいいですか?
609デフォルトの名無しさん:2009/02/18(水) 08:45:16
>>606
中学生?

>ゲーム画面よりも前面に表示するにはどうすればいいですか?

一体何を?
あほなの?
優しいエスパー待つ暇あったらググれゴミ
610デフォルトの名無しさん:2009/02/18(水) 08:46:05
オンラインゲームを起動すると隠れてしまうので困っています!
時間がないので早く教えてください!!
611デフォルトの名無しさん:2009/02/18(水) 08:48:51
>>610
窓(window)あけるだろ
そこからPCを飛ばす(fly)

この意味すら分からないならPC壊せ
分かったなら即行動しろ
612デフォルトの名無しさん:2009/02/18(水) 08:49:14
自分でゲームを制作して適切なクリッピングを行う
613デフォルトの名無しさん:2009/02/18(水) 08:51:15
>>612
スレ違いの小学生にまともな答えは必要ないだろ
614デフォルトの名無しさん:2009/02/18(水) 09:08:55
createwindowexで作成したウィンドウをゲーム画面よりも前面に表示するにはどうすればいいですか?
topmostしてもゲームより背面になってしまいます
615デフォルトの名無しさん:2009/02/18(水) 09:10:44
ウィンドウの幅は一定以下にはならないのですか?
45を指定しても90を指定しても同じになります
616デフォルトの名無しさん:2009/02/18(水) 09:24:35
SYSMENU や CAPTION 持つと それ以上小さくならない境界があったはず
617デフォルトの名無しさん:2009/02/18(水) 09:31:31
>>616
ありがとうございます
618デフォルトの名無しさん:2009/02/18(水) 09:50:09
もうだめだこのスレ
619デフォルトの名無しさん:2009/02/18(水) 09:58:09
SetWindowPosでHWND_TOPMOSTしたら前面にくるけど
その後すぐゲーム画面に上書きされる
TimerProcで0ミリ秒指定したら一応見えるけどチカチカする

これ回避できませんか?

620デフォルトの名無しさん:2009/02/18(水) 09:58:31
どうして知らない奴って煽ってまでレスしたがるんだろ?
621デフォルトの名無しさん:2009/02/18(水) 10:14:39
>>620 知らないならレスしないでください、うざいだけです

何度も言わせないでください
622デフォルトの名無しさん:2009/02/18(水) 10:18:27
オンラインゲームでチートしようとしてるクソガキにまともな受け答えする必要なし
623デフォルトの名無しさん:2009/02/18(水) 10:32:37
チートw
自作でチートするやつがこんな質問するかよw
624デフォルトの名無しさん:2009/02/18(水) 10:45:20
メイプルストーリー(笑)
のチート(笑)
でも、ネットで買った(笑)
んじゃないの?
625デフォルトの名無しさん:2009/02/18(水) 10:46:17
ちーーーーーーーとwwwwwwwwwwwwww
626デフォルトの名無しさん:2009/02/18(水) 11:05:34
  /\___/\
/ /    ヽ ::: \
| (●), 、(●)、 |    / ̄ ̄ ̄ ̄ ̄ ̄ ̄
|  ,,ノ(、_, )ヽ、,,   |  < まーたはじまった
|   ,;‐=‐ヽ   .:::::|    \_______
\  `ニニ´  .:::/
/`ー‐--‐‐―´´\
627デフォルトの名無しさん:2009/02/18(水) 12:09:30
結局、誰一人として質問に答えられる人間は居なかった

というお決まりのパターンか
628デフォルトの名無しさん:2009/02/18(水) 12:18:15
そんなにチート使うのに必死にならなくてもwwww

かまかけて引き出そうとしても無駄だよ

知ってても教えない奴はこの時間帯にはいない
知らずに叩いてる奴は知らないから答えられない

わかったらさっさとググれ
629デフォルトの名無しさん:2009/02/18(水) 12:23:49
俺は知ってるけど教えない
630デフォルトの名無しさん:2009/02/18(水) 12:39:45
スレタイの質問箱は質問をためる箱なんですね
631デフォルトの名無しさん:2009/02/18(水) 13:09:23
>>619
>>612ですでに答えが出ているだろ。
632デフォルトの名無しさん:2009/02/18(水) 13:17:07
どう考えてもすでに製作されてるゲーム画面の最前に表示だろ
屁理屈やら揚げ足取りみたいなしょうもない事する奴多いな
633デフォルトの名無しさん:2009/02/18(水) 13:21:16
Win32APIの範囲では無理
DirectX9ならプロセスに侵入したうえでIDirect3DDevice9::SetDialogBoxModeを呼び出し
634デフォルトの名無しさん:2009/02/18(水) 13:33:31
って事はスレ違いなんですね
ありがとうございました
635デフォルトの名無しさん:2009/02/18(水) 16:23:16
                   /;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;|;:;:l
                   /;:`丶、、_;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;l;:;:;l
         ,ィヽ       /、;:;:;:;:;:;:;:;:;:``;:ー‐--;、、;:;:;:;:;|;:;:;l
.         / /       /:::::`::`::―--:::z、、;:;:;:;:;:;`'ー-+-┤
        / /       /:::::::::::::::::::::::::::::::ミミ' ` ‐- 、_/_l
.       / /        {::r=、:::::,,ッ'  ヾ三)     r-、 リ
      / /     ,ィヽ  | / !      ゞツヽ / /_`" リ
    ,ィ≦´ ̄ ̄ ` V  /   l〈__ j.          ,.'  l ムツ` ,'
    |  ̄ ̄ ̄ `V  /    ヽ‐'        / l  l    ,'   YES WE ZIP !
    |  ̄ ̄ ̄Vリ Y   _ リ          `ー 、__,、)  /   YOU MUST UP!
    | ´ l ̄ハ l  /_,x</l        /__,,....、__ l ./
____j  .j   'ー' ン::::::::::::j .ヘ      / |‐'‐‐- -''リ/ ,.'
:::::::::::::リ      /:::::::::::::::|  .ヘ     l  ヽュェェェン /
::::::/!     ./ :::::::::::::::::::|   ヘ   ヽ ヽ  ー‐‐"/
/:::::|    ,ィ':::::::::::::::::::::::::∧   ヽ  \    ン'
::::::::::lヽ__/ l::V:::::::::::::::::::::::::∧  /\  >ー "|、
::::::::::l   /:::lハ::::::::::::::::ヽ::::::::l-‐'    ハ  _/___|ハ
::::::::::`ー'---.':/:::::::::::::::::::::l::::::l      l /  l /:::::\
636デフォルトの名無しさん:2009/02/18(水) 18:26:15
>>633
プロセス侵入なんて楽勝だよねw
あとはどうpgrするか
637デフォルトの名無しさん:2009/02/18(水) 19:09:42
>>636
消えろクズ
638デフォルトの名無しさん:2009/02/18(水) 19:36:59
WinAPIで出来る事は完全には.NETでは出来ないんでしょうか?
また、.NETでは出来るけどWinAPIでは出来ないことは、あるんでしょうか?
639デフォルトの名無しさん:2009/02/18(水) 19:41:18
>WinAPIで出来る事
まずは具体例を挙げろ
質問するのに質問内容まで他人に丸投げするな
どれだけ横着者なんだよ、お前は?
640デフォルトの名無しさん:2009/02/18(水) 19:52:29
>>637
わからないならレスしないでください、気持ち悪いです><

>>639
あなたも偉そうなので気持ち悪いです消えてください><
641638:2009/02/18(水) 20:03:40
>>640
このスレはいつからか、こうなってしまいました。


ちょっとまともな回答くるかどうか、適当な質問投下したが、やっぱこのスレはもうダメだな
まぁ、WinAPIなんて、歴史長いしグーグルで9割5部は解決するからいいんだけど
642デフォルトの名無しさん:2009/02/18(水) 20:08:10
>9割5部

643デフォルトの名無しさん:2009/02/18(水) 20:15:17
><
644デフォルトの名無しさん:2009/02/18(水) 20:15:22
ただいまー

>>615
WM_GETMINMAXINFOでどうにかならないかな?
645デフォルトの名無しさん:2009/02/18(水) 20:16:55
>>615
WM_WINDOWPOSCHANGING
で変えられないこともないけど
他にもなんかしないとだめだと思う
646デフォルトの名無しさん:2009/02/18(水) 21:40:58
>>638
暇だから適当にあげつらってみた。
.NETでは無理・困難・実質的に不可: フック、DirectX、シェル拡張
Win32では無理: WPF
647デフォルトの名無しさん:2009/02/18(水) 21:42:58

長い間ご利用ありがとうございました
Win32API質問箱は閉鎖になりました
グーグル先生がこのスレの役割を引き継ぐそうですので
今後はグーグル先生に聞いてください
648デフォルトの名無しさん:2009/02/18(水) 21:53:50
>>646
LL ならOK
Managed DirectX
シェル拡張も可能

ぜんぜんダメじゃん・・・
649デフォルトの名無しさん:2009/02/18(水) 22:07:46
>>684
LLしか出来ないともいえるだろw

シェル拡張はマネージコード使うなって言われるし
650デフォルトの名無しさん:2009/02/18(水) 22:13:26
ロングパス!!
651デフォルトの名無しさん:2009/02/18(水) 22:16:13
マネージコード使うな、って誰に言われんの?
652デフォルトの名無しさん:2009/02/18(水) 22:18:40
誰にってあんた・・・・
653デフォルトの名無しさん:2009/02/18(水) 22:33:17
654デフォルトの名無しさん:2009/02/18(水) 22:50:41
The Oに言われるのですね
655デフォルトの名無しさん:2009/02/18(水) 22:53:15
MS社内のアプリやゲームの開発者に対してに決まっているだろう。
656デフォルトの名無しさん:2009/02/18(水) 22:53:18
モーダルダイアログを表示したあと、親ウインドウにフォーカスを
移そうとすると警告音が鳴りますが、これを鳴らなくすることは
出来ないでしょうか?

モーダルダイアログを表示し親ウインドウクリックでダイアログを
閉じたいので、WM_NCACTIVATE(wParam==FALSE)で閉じるように
しているのですが警告音が鳴ってしまいます
657デフォルトの名無しさん:2009/02/18(水) 22:57:16
モーダルっぽく作り込んだ本当はモードレスとか
658デフォルトの名無しさん:2009/02/18(水) 23:06:49
>>648
Managed DirectXはおしまいの方向みたいだ。
シェル拡張を挙げたのは1プロセスに1バージョンのCLRしか読み込めない制限からだが……、
みんなCLR 2.0使えば解決って流れなのか?
659656:2009/02/18(水) 23:24:06
>>657
それでやってみます
660デフォルトの名無しさん:2009/02/18(水) 23:31:48
Managed DirectXを終わらせたのは.NETだからじゃないだろう
661デフォルトの名無しさん:2009/02/18(水) 23:41:22
>>657,659
「モーダルっぽく作りこむ」必要性もなく、単にモードレスでいいだろw
662デフォルトの名無しさん:2009/02/19(木) 00:35:24
>>644,>>645
ありがとう それで調べてみる
663デフォルトの名無しさん:2009/02/19(木) 01:03:13
Managed DirectXが終わってしまった理由をkwsk
664デフォルトの名無しさん:2009/02/19(木) 01:04:52
目的の異なるXNA Frameworkというものが出て、
いつの間にかDirectX SDKにManaged DirectX関連のものが収録されなくなった。
665デフォルトの名無しさん:2009/02/19(木) 08:49:35
666デフォルトの名無しさん:2009/02/19(木) 09:31:34

667デフォルトの名無しさん:2009/02/19(木) 10:09:07
ケケ
木目
668デフォルトの名無しさん:2009/02/19(木) 10:10:29
SetStretchBltMode はどっちなんだろうか?
669デフォルトの名無しさん:2009/02/19(木) 19:55:54
Managed DirectXが終わってしまったのは箱丸のせいだ!!
670デフォルトの名無しさん:2009/02/19(木) 20:09:03

  ∧_∧  何でもかんでも人のせいにしないの!
 ∩`iWi´∩
 ヽ |m| .ノ
  |. ̄|
  U⌒U
671デフォルトの名無しさん:2009/02/19(木) 20:18:00
もともとManaged DirectXなんていらないだろう…
ここはWin32APIのスレだぜ?w
672デフォルトの名無しさん:2009/02/19(木) 20:41:01
64bit環境でもWin32APIとな!?
673デフォルトの名無しさん:2009/02/19(木) 20:52:39
だって、system32 フォルダだし・・・
674デフォルトの名無しさん:2009/02/19(木) 21:06:49
SysWOW64 ってのもあるぜ!
中身は32ビット用だけど。
675デフォルトの名無しさん:2009/02/19(木) 21:13:47
わざわざ糞重い.NETでゲームを作ろうとする馬鹿が少なかったってことだろ。
676デフォルトの名無しさん:2009/02/19(木) 21:17:14
XNAが.NETの拡張なんだからどうでもいいだろ
677デフォルトの名無しさん:2009/02/19(木) 21:21:59
MSは自分自身では.NET対応の市販アプリを開発しない。
MSは自分自身では.NET単体もXNAを利用したゲームも作らない。

つまり売り物にならないことはMS自体がよくわかっている。
678デフォルトの名無しさん:2009/02/19(木) 21:37:32
>>672
一応気にしているように思える。
Overview of the Windows API
http://msdn.microsoft.com/en-us/library/aa383723(VS.85).aspx
> (Note that this was formerly called the Win32 API.
> The name Windows API more accurately reflects its roots in 16-bit Windows and its support on 64-bit Windows.)
679デフォルトの名無しさん:2009/02/19(木) 21:57:08
2DエロゲくらいならXNA使った方が良いと思うけどな…
680デフォルトの名無しさん:2009/02/19(木) 22:30:40
2Dユーザーは思うほど存在しない現実
681デフォルトの名無しさん:2009/02/19(木) 22:41:52
2Dエロゲなら昔から使っているエンジン使い回すだけだろ
682デフォルトの名無しさん:2009/02/19(木) 22:52:24
Fate程度動くゲームってDirectX使わないと無理?
683デフォルトの名無しさん:2009/02/19(木) 22:56:22
保険に入るなら保険屋が売りたい保険ではなく、保険屋自身が入っている保険を選べ。
ゲームを作るならMSが使わせたい環境ではなく、MS自身が使っている環境を選べ。
684デフォルトの名無しさん:2009/02/20(金) 02:50:42
解説サイトでよく目にする「新しいコモンコントロール」が
全然新しく感じないのはなぜですか
685デフォルトの名無しさん:2009/02/20(金) 03:10:05
主観だから
686デフォルトの名無しさん:2009/02/20(金) 03:15:08
こんな時間に何やってんだ・・・ あーねみぃ
687デフォルトの名無しさん:2009/02/20(金) 03:29:33
>>682
エロゲーのFateのことならDirectXは表示には使用されてないぞ。
688デフォルトの名無しさん:2009/02/20(金) 04:09:22
>>674
System32が64ビットなんだね。
689デフォルトの名無しさん:2009/02/20(金) 09:05:59
>>679
客層が糞スペック揃いらしいぞ
楽したいなら汎用紙芝居エンジンでも使った方が無難だろう
690デフォルトの名無しさん:2009/02/20(金) 12:01:11
実行中に動的にANSIコードページを変えたいんだがCRTのロケール関数とフォントオブジェクトとの関係がわかりまえん
コードページ番号でロケール変えた後にフォント作成でテキスト出力が反映される?
でもロケールの影響を受けるのは一部のCRT関数のみとか・・・
691デフォルトの名無しさん:2009/02/20(金) 12:26:37
わかりまえん
692デフォルトの名無しさん:2009/02/20(金) 13:07:38
>>690
ロケールなど無関係に目的の言語のフォントを選べばいいだけだろ。
いったい何を言っているんだ?
693デフォルトの名無しさん:2009/02/20(金) 13:30:39
でっていう
694デフォルトの名無しさん:2009/02/20(金) 20:13:02
CreateThreadではCランタイムライブラリの関数を使うことを想定していないとのことですが、
C++の標準ライブラリもこれに含まれるのでしょうか。
695デフォルトの名無しさん:2009/02/20(金) 20:13:49
もちろん
696デフォルトの名無しさん:2009/02/20(金) 20:23:07
ありがとうございます。
助かりました。
697デフォルトの名無しさん:2009/02/21(土) 00:04:19
>>684
新しいといったって、ほとんどはIE 4/5やWindows 98/2000/XPの出た頃だ。
その中で一番新しいXPでさえもう7年前。
新しいと感じなくても仕方ないかもしれない。

というわけで、Vistaや7からのものならもう少し新しく感じるかも。
698デフォルトの名無しさん:2009/02/21(土) 01:40:34
>>690
Win32 APIのとCRTのとは別関係。
setlocaleしてもこっちに影響は及ばないし、逆もまた然り。

GDIのテキスト出力がどうなるかは、A関数で出力するなら
フォントを作るときの文字集合の指定(LOGFONT::lfCharSetなど)が重要。
W関数を使うなら関係ない。

コンソールならSetConsoleCP。ANSIではなくOEMコードページという罠に注意。
これもW版なら関係ない話だ。
699デフォルトの名無しさん:2009/02/21(土) 07:55:55
>>697
Windows7のリボンコントロールが最も新しい
が、IUIFrameworkで日本語サイトに絞ってググってもまだこのスレだけ
MFCのCMFCRibbonBarでググってもMSサイトと2chのスレ等が数件見つかる程度

何だかなあ・・・
700デフォルトの名無しさん:2009/02/21(土) 08:43:43
リボンはコモンコントロールじゃないから
701デフォルトの名無しさん:2009/02/21(土) 09:28:35
リボンもコモンコントロールの扱いでいいよ
702デフォルトの名無しさん:2009/02/21(土) 11:20:20
VC2005でGDI+のプログラミングをしてるのですが、
void InitGraphics(Graphics* g, Bitmap* bmp,int width, int height, Color color)
{
 bmp = new Bitmap(width,height);
 g = new Graphics(bmp);
 g->Clear(color);
}

というGraphicsの初期化用関数を作って

static Graphics* screen;
static Bitmap* screenbitmap;
static pen* pen;

InitGraphics(screen, screenbitmap, 800, 600, Color::White);

pen = new Pen(Color::Black, 1);
screen->DrawLine(pen,0,0,100,100); //座標は適当

というような感じで呼び出しても実行時にDrawLineでエラーが発生してしまいます。
どう書いたらいいのでしょうか?
703デフォルトの名無しさん:2009/02/21(土) 11:21:48
>>702
C++の基礎から勉強しろ
704デフォルトの名無しさん:2009/02/21(土) 11:27:54
>>703
可愛いなぁ

void InitGraphics(Graphics* &g, Bitmap* &bmp,int width, int height, Color color)
{
 bmp = new Bitmap(width,height);
 g = new Graphics(bmp);
 g->Clear(color);
}
705デフォルトの名無しさん:2009/02/21(土) 11:52:41
カレントスレッドのスタックサイズを取得したいんだけど、どうすればよい??

具体的にいうと、sp 最小値のアドレスを取得したいんです。
706デフォルトの名無しさん:2009/02/21(土) 12:00:11
作る時に覚えておけば
707デフォルトの名無しさん:2009/02/21(土) 12:02:59
>>705
__try~__exceptした上で例外が飛んでくるまで_allocaを呼びまくる
708デフォルトの名無しさん:2009/02/21(土) 12:29:21
>>706
DLL から拾いたいんだよね。

>>707
その方法も考えたんだけど、最終的な方法かな・・・とw
でもスタックの先頭アドレスと最終アドレスを取得して、みたいな方法よりも
よっぽど簡単なのかな。
Win32API で ESP の範囲を取得できるものないですか><
709デフォルトの名無しさん:2009/02/21(土) 12:34:10
レジスタの値がほしいだけならインラインアセンブラで簡単にとれるぞ
710デフォルトの名無しさん:2009/02/21(土) 12:38:58
>>709
話を理解してない馬鹿はレスしないで下さい
711デフォルトの名無しさん:2009/02/21(土) 12:41:16
>>709
ごめん、表現が悪かった。
esp 値がほしいのではなく、esp の範囲が知りたい。

常にスタックフレーム(ebp)が最大値ではないし、
単純に PE ヘッダのスタックサイズを ebp から引いても最小の esp 値が
取得できないので、何かほかの方法を探しています。

712デフォルトの名無しさん:2009/02/21(土) 12:52:20
コンパイル結果をアセンブラ出力して、
自分のコンパイラのスタックチェックの方法みれば
最終アドレスの参照方法とか分からないの?
713デフォルトの名無しさん:2009/02/21(土) 13:08:38
>>712
それは>>707の方法だから質問者は分かってるだろ。
714デフォルトの名無しさん:2009/02/21(土) 13:14:22
・C/C++を理解してない奴の質問
・回答者のスキルが質問者よりずっと低い


最近ってホントこの2つのパターンだなw
715デフォルトの名無しさん:2009/02/21(土) 13:16:44
NT_TIB::StackBase
NT_TIB::StackTop
NtCurrentTeb()

Win32スレなのに何故誰も出さないんだ?
716デフォルトの名無しさん:2009/02/21(土) 13:18:58
>>712
スタックチェック処理って自分の exe に含まれる??
それならアウトプットで見れるけど、_alloca ならデバッガで追わないといかんね。
ちょっとデバッガで追ってエラーチェックしているところを探してみるけど、
カーネルAPIだったらどうしよう…orz
ドライバなんて作れないYO><
717デフォルトの名無しさん:2009/02/21(土) 13:21:32
>>715
キター!!!!!
ちょっとやってみる!!
みんなthx!!
718デフォルトの名無しさん:2009/02/21(土) 13:31:48
>>715
NT_TIBにStackTopなんてあるか?
719デフォルトの名無しさん:2009/02/21(土) 13:33:36
>>705
スレッドのNT_TIBを調べればいい

任意のスレッドのスタックアドレスとサイズを取得するコード
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200503/05030004.txt
720デフォルトの名無しさん:2009/02/21(土) 13:36:03
試してみたけどNT_TIBではESPの最小値は取れなかったぞ。
721デフォルトの名無しさん:2009/02/21(土) 13:41:04
スキル低い知ったか厨ばっかw
722デフォルトの名無しさん:2009/02/21(土) 13:46:55
>>718
すまん、思いっきりStackLimitと書き間違えた。
723デフォルトの名無しさん:2009/02/21(土) 13:55:14
>>715
>>719
NT_TIB に確かに StackLimit があったんだが、

void a(){
  __asm{
    mov dwLastESP,esp
  }
  a();
}

を呼び出したとき、

StackLimit : 0x00226000
StackBase : 0x00230000
dwLastESP : 0x001330c8

になっていた。スタック拡張をすっかり忘れていたああああorz
この拡張も含めたリミットはさすがに計算しないと出ませんか?
Windows のバージョンにも依存すると思いますが・・・
724デフォルトの名無しさん:2009/02/21(土) 13:57:28
http://ml.tietew.jp/cppll/cppll/article/13312
とか見ると
スタックは自動拡張されるので
TIB#StackLimit
自体、値が随時変化していくみたいだけど
725デフォルトの名無しさん:2009/02/21(土) 14:07:59
1ページずつ拡張してったらどうなるのかな
726デフォルトの名無しさん:2009/02/21(土) 14:34:12
だから>>707で答え出てるだろが
727デフォルトの名無しさん:2009/02/21(土) 14:39:29
無知ばっかw
728デフォルトの名無しさん:2009/02/21(土) 16:14:30
ロクに調べもしないで無知を晒す馬鹿って何なの?

他所の掲示板ならポイント稼ぎが目的でそういう奴が多いのは分かるけど
2chにはそんなシステム無いんだし
729デフォルトの名無しさん:2009/02/21(土) 16:39:56
匿名だからこそ嘘を教えても評価下がらないし、わからない馬鹿が答えてしまうというw
730デフォルトの名無しさん:2009/02/21(土) 18:54:23
>>728
>ロクに調べもしないで
ここで調べて回答しているすごいのいるのか
じゃね、程度だろ

>>705のあげ基地は自分で調べるか、ちゃんと調べて回答してくれる回答者がいっぱいいる掲示板で
聞くように。そんな掲示板ではちゃんと質問しろよ。
731デフォルトの名無しさん:2009/02/21(土) 18:56:07
ロクに調べもしないで質問する馬鹿って何なの?
732デフォルトの名無しさん:2009/02/21(土) 18:59:31
もうだめだこのスレ
733デフォルトの名無しさん:2009/02/21(土) 19:06:36
>>731-732
ロクに調べもしないで質問する基地と戯れたり、そのネタでワイワイするスレ
だからいいんだよーーーー
だから、だめなことはない。超有意義に機能しているすばらしいスレだ。
そして、ここはおっさん憩いのスレでもある。
だろ?
734デフォルトの名無しさん:2009/02/21(土) 19:12:55
>>730 その他
わからないならレスしないで下さい気持ち悪いです
735デフォルトの名無しさん:2009/02/21(土) 19:15:08
>>730-734
こいつらが無知を晒した馬鹿共ですね、わかります
736デフォルトの名無しさん:2009/02/21(土) 19:20:43
用途不明な質問する奴ってロクなのがいないね
「単なる興味本位です」みたいな
737デフォルトの名無しさん:2009/02/21(土) 19:36:15
WM_SIZEのメッセージが来た時に、新しいウィンドウのサイズは
lParam(4つ目の引数)に、
幅(下位16ビット)+高さ(上位16ビット)
という形で入ってるのですか?なので、幅と高さをとろうとすると、
UINT width = LOWORD(lParam);
UINT height = HIWORD(lParam);
としないとだめですか?
738デフォルトの名無しさん:2009/02/21(土) 19:46:17
>>737
こういう馬鹿を見るとわざとやってるんじゃないかって思う
739737:2009/02/21(土) 19:49:49
すいません、C++は使い始めてちょっと(1年くらい)経ったんですが、windows環境が
分かってません。どうかよろしくお願いします。
740デフォルトの名無しさん:2009/02/21(土) 19:52:07
WORD値を返すようなメッセージの値は信用せずに、
例えばこの場合はGetWindowRectを使った方がいいよ。
窓のサイズが16bit以上になることはまずないだろうけど。
741デフォルトの名無しさん:2009/02/21(土) 20:00:01
>>740
出ました!無知の恥晒し

WM_SIZEのlParamに相当するのはGetClientRectだよ
742デフォルトの名無しさん:2009/02/21(土) 20:03:47
>>739
君が分かってないのはC++やWindowsではなくて、インターネットの使い方(=検索して調べる)
743デフォルトの名無しさん:2009/02/21(土) 20:25:48
>>739
>C++は使い始めてちょっと(1年くらい)経ったんですが
1年も経験あるのに、経験のないwinプログラムとは言えwinプログラム1週間レベルの
質問するようじゃマとしての適正ないから、もっと適正のある別なことをやったほうがい良いよ
プログラム開発10年やってもマとして伸びそうにないね
趣味なら下手の横好きでも良いが、職業マになったら人生を後悔をする。
744デフォルトの名無しさん:2009/02/21(土) 20:29:25
批判しか出来ないクズは黙ってろ
745デフォルトの名無しさん:2009/02/21(土) 20:37:11
すげーな、ここまでたたかれるのかw
746デフォルトの名無しさん:2009/02/21(土) 20:42:24
一応職業マです。
「君はプログラマとして入ったんだよね?」とか上司には言われましたが、、、
WM_SIZEの時はlParamに縦横のサイズが入ってるというのは正しいですよね?

最近入った後輩は、自分が苦労してようやくちょっと分かりつつあるソースを与えられて、
構造体同士の関係とかもう自分より把握してます。自分はソースをプリントして時間かけて
最初から読んだのに、後輩はエディタでじっと読むだけなんです。あと、自分は時間がかかるので、
まだソースのアプリが起動する所までしか追えてないのですが、後輩はそのあとの重要そうな処理
まで結構見てるみたいです。周りから見ると進捗の違いがはっきりしてると思うので、
つらいです。

747デフォルトの名無しさん:2009/02/21(土) 20:44:29
まあとりあえず MSDN 読もうぜ。
まずはそれからだ。
748デフォルトの名無しさん:2009/02/21(土) 20:46:41
>746
天職について考えても良いと思う。
749デフォルトの名無しさん:2009/02/21(土) 20:47:25
能力は誰でも同じではない。
向いている人間、向いていない人間がいる、ただそれだけの話。
750デフォルトの名無しさん:2009/02/21(土) 20:59:14
>WM_SIZEのメッセージが来た時に、新しいウィンドウのサイズは
>lParam(4つ目の引数)に、
>幅(下位16ビット)+高さ(上位16ビット)
>という形で入ってるのですか?
という疑問を仮に俺が持った場合

まずはMSDNへ

「WM_SIZE Notification」のページへ

ParametersのlParamの項目を読む

>The low-order word of lParam specifies the new width of the client area.
>The high-order word of lParam specifies the new height of the client area.

なるほどThe low-order word of lParam specifies the new width of the client area.なんだな
なるほどThe high-order word of lParam specifies the new height of the client area. なんだな

解決
751デフォルトの名無しさん:2009/02/21(土) 21:03:57
今の会社はようやく見つかった会社なので、転職とかは考えてません。
とりあえずMSDN読んでみます。

でも、自分は上司と頻繁に会議とかやって10時とか11時とかまで会社にいるのに、
後輩は8時9時にはいなくなるし、進捗は向こうのほうがいいし、結構難しめの部分を
任せられたりして、上司の進捗管理も彼に対しては緩めだし。。。

とりあえず彼はC++はあまり使ったことないみたいなので(Cは得意で組み込み系が好きらしい)、
自分はC++を使えるようになろうとしてます。
なんだか長く書いてしまいました。
すいません。
752デフォルトの名無しさん:2009/02/21(土) 21:06:51
まあ、なんだ
とりあえずPezoldでも読めば幸せになれるんじゃないかな…
C++だったらそこからMFCか。試練の道だ
753デフォルトの名無しさん:2009/02/21(土) 21:54:07
・ 調べる能力
・ 理解しようとする能力
・ 本質を探ろうとする能力

これが重要だな。
一挙手一投足にいたるまで、
この3点を意識しながら行動するといい。

例えば
・ MSDN 読むのは最低限やらなくてはいけないこと。
・ 検索するにしても、検索語の選択を吟味する。
  どうすれば目的の結果が得やすいか考える。
・ エラーメッセージをあまり文字通りに受け取ってばかりいてはいけない。
  なぜそのエラーメッセージが出るのか、その裏を考えること。
など。
754デフォルトの名無しさん:2009/02/21(土) 22:10:49
>>737
GET_X_LPARAM/GET_Y_LPARAMおすすめ。
まあ、>>740-741のいうとおりGetClientRectもありだけど。
755デフォルトの名無しさん:2009/02/21(土) 22:17:33
GDI+で、実行ファイル中のアイコンリソースをBitmapとして取得したいのですが、どうにもうまくいきません。
以下の方法を試してみたのですが、何処が良くないのでしょうか・・・orz

1. Bitmap::FromResource(hinstance, IDI_TEST); -> InvalidParameter
2. Bitmap::FromHICON(LoadIcon(hinstance, MAKEINTRESOURCE(IDI_TEST))); -> Okとなるものの、DrawImageなどしても何も表示されない

誰かお助けください・・・
756デフォルトの名無しさん:2009/02/21(土) 22:19:41
ごめんなさい。こちら側のミスでしたorz
2. の方法で読めていたみたいです。
757デフォルトの名無しさん:2009/02/21(土) 23:08:49
>>751
WM_SIZEのlParamの意味を知ってなくても、全然気にする必要なんてない。
本当のことを言おう。みんなそんなもんなんだ。
たとえば、これは俺の学生時代にあった話だが、教師がWM_CLOSEで
メッセージボックスを出すプログラムについて説明していた。
その教師はメッセージボックスに応答した後にウインドウが破棄され
ずに、学生の前で必死になって試行錯誤していた。そして、ある生徒が
「return 0じゃなくてbreakですよ」と言ったら、問題は解決された。
先生(会社の上司とかも含めて)ならそれくらい知っておけよと思うが、
やっぱりそいつは知らないし、他にも知らないことは一杯ある。
これが真実だ。

じゃあ、実力を判断する基準というのは一体何なんだ。
企業の場合であれば、それは経験(実務経験)だ。
年数を経てば、そいつは上司からも外部からも多少はできると思われる。
ただし、後輩からみればそいつは本当に実力があるのかと思うし、
実際のところ実力はない。これも真実だ。

多分あなたもこういう経験あるだろう。
分らないところがある→上司や先輩に聞こうと思う→聞いても
答えられないだろうと予測→相手に恥を欠かせないために自分で
調べる→そしてこうした掲示板にたどりつく。
758デフォルトの名無しさん:2009/02/21(土) 23:25:12
>>757>>751 の文の感じって違うな
>>757 なんか、PG(技術屋)っぽい文
>>751 なんか、小説っぽい文
759デフォルトの名無しさん:2009/02/21(土) 23:48:57
TCHAR型の文字が制御コードかどうか判別するAPIてあるの?
.NETのIsControl()とかJavaのCharactor.isISOControl()みたいな感じでつかえるやつ。

やっぱcharにしてiscntrl()するしかない?
760デフォルトの名無しさん:2009/02/21(土) 23:51:01
>>759
<tchar.h>の_istcntrl
761デフォルトの名無しさん:2009/02/22(日) 02:28:57
Windows フォトギャラリーで露出とかコントラスト調整するとものすごく速いんですが、
これってどういう風に実装されてるんでしょうか?

どんな API を使ってるかご存じのかたがいらしたら教えてください。
762デフォルトの名無しさん:2009/02/22(日) 03:23:15
32ビットで背景が0x00ffffffなビットマップがあるです。
表示すると背景はただの白くなります。
どうするですか?
763デフォルトの名無しさん:2009/02/22(日) 03:34:53
どうもしない
764デフォルトの名無しさん:2009/02/22(日) 03:40:04
キーロガーどうやってつくるのか教えて
765デフォルトの名無しさん:2009/02/22(日) 04:04:33
WM_CHARを監視すれば良いんじゃね?
766デフォルトの名無しさん:2009/02/22(日) 08:50:43
>>764
そんなあなたにはコレをおすすめ

#include <windows.h>
#define GET_KEY_STATE(a,b) Beep(a,b)
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
int key[3]={5,6,7};

for(int kb=0;kb<2;kb++)
{
for(int i=0;i<3;i++)
{
GET_KEY_STATE(key[i]*100,i==3?i*10:10);
}
GET_KEY_STATE(key[1]*100,10);
GET_KEY_STATE(key[0]*100,kb==0?30:10);
}
GET_KEY_STATE(key[1]*100,40);

return 0;
}
767デフォルトの名無しさん:2009/02/22(日) 11:27:09
>>754
GET_X_LPARAM/GET_Y_LPARAMを使うのは負の値になり得る場合。(WM_LBUTTONDOWNなど)
クライアント領域が負の値になる可能性は無いのでWM_SIZEの場合はHIWORD/LOWORDを使う。
768デフォルトの名無しさん:2009/02/22(日) 11:32:50
32bit値であってもlParamには下位16bitしか渡されない、
とかわざわざ書いてあるところをみると、
一応GetClientRectが推奨なのかなあ。
769デフォルトの名無しさん:2009/02/22(日) 11:55:00
vb.netでこれ↓
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)

を使用してメッセージを監視してるんですが
他のウィンドウをアクティブにするとメッセージを取得してくれなくなってしまいます。

他のウィンドウがアクティブになっていてもメッセージを取得できるようにするには
どうしたらいいですか?
770デフォルトの名無しさん:2009/02/22(日) 11:56:22
実際にメッセージ来てないだけじゃ?
771デフォルトの名無しさん:2009/02/22(日) 12:05:07
>>770
ブレークポイントを打っても
他のウィンドウがアクティブだと反応しません
772デフォルトの名無しさん:2009/02/22(日) 12:14:54
>>769
スレ違い

VBスレ若しくは.NETスレヘどうぞ
773デフォルトの名無しさん:2009/02/22(日) 12:15:43
>>772
すいません
774デフォルトの名無しさん:2009/02/22(日) 12:36:44
他アプリのキーフォーカスのあるコントロールハンドルを取得して
SendMessage、EM_REPLACESELをするとうまく文字列を
挿入することが出来るんですが、エクセルやワードではうまくいきません。
エクセルやワードのシートに文字列を送るにはどうやったらいいのでしょうか?
クリップボードを利用して、keybd_event、SendInputで「cntrl + v」等するとうまくいくんですが
できればクリップボードは使いたくありません。
775デフォルトの名無しさん:2009/02/22(日) 12:39:48
そもそもターゲットウインドウが標準コントロールじゃないので、
各アプリの仕様に沿って作るしかない。
Office用のSDKを使う話なので、そもそもスレ違い。
776デフォルトの名無しさん:2009/02/22(日) 14:50:51
SelectObjectの第2引数にNULLを指定したらどうなるんでしょうか?
MSDNにも載ってませんが、ひょっとして「何も指定しない」状態になるの?
777デフォルトの名無しさん:2009/02/22(日) 15:00:35
>>776
GetCurrentObjectで調べよ
778デフォルトの名無しさん:2009/02/22(日) 15:29:03
>>777
の、載ってません・・・
779デフォルトの名無しさん:2009/02/22(日) 15:31:28
>>778
文献を探すんじゃなくて、SelectObjectでNULLを指定してGetCurrentObjectで調べてみる、
という意味じゃないの?
780デフォルトの名無しさん:2009/02/22(日) 15:42:24
>>779
そういう意味ですか
でも今度はGetCurrentObjectの第2引数に指定する引数がわかりません・・・
781デフォルトの名無しさん:2009/02/22(日) 15:44:09
782デフォルトの名無しさん:2009/02/22(日) 15:44:37
MSDNに載ってない=不定

と思っとけ
783デフォルトの名無しさん:2009/02/22(日) 15:44:40
と、いうことはつまりSelectObjectにNULLを指定しても何もしないということですかね?
784デフォルトの名無しさん:2009/02/22(日) 15:48:15
不定=鼻から悪魔が出てくるかもしれない、ってことだよ
785デフォルトの名無しさん:2009/02/22(日) 15:54:29
>>784
すみませんレス見る前にレスしてました
不定と思っておきます
786デフォルトの名無しさん:2009/02/22(日) 15:57:33
Server 2008でやってみた。戻り値は0だった。

http://msdn.microsoft.com/en-us/library/aa932923.aspx
> If an error occurs and the selected object is not a region, the return value is NULL. Otherwise, it is HGDI_ERROR.

つまりエラーとして扱われたようだ。
個人的には、9xでやったら死ねそうだと思う。
787デフォルトの名無しさん:2009/02/22(日) 16:05:22
GetCurrentObjectの第二引数はUINT型
つまりNULLはWinDef.hで0として定義されてるからUINT型の0が渡され
更にWinGDI.hで定義されているOBJで始まる定数名の一覧には
定数として0が含まれていないから
関数は失敗してNULLが返る

と動作が予測される
788デフォルトの名無しさん:2009/02/22(日) 16:05:36
>>786
9xと言えどその程度(NULLを渡す)では死なない
789デフォルトの名無しさん:2009/02/22(日) 16:06:43
>>787
久々に 話を全く理解してない馬鹿 を見たw
790デフォルトの名無しさん:2009/02/22(日) 16:07:26
GetCurrentObjectは関係ない?
791デフォルトの名無しさん:2009/02/22(日) 16:11:42
>>787
人の話を聞かない上に偉そうに薀蓄語るタイプか
迷惑な人間の教科書みたいな奴だな

どこをどう読めばGetCurrentObjectの第2引数にNULLを指定するなんて話になるのやら
792デフォルトの名無しさん:2009/02/22(日) 16:13:41
>>789
Select
793デフォルトの名無しさん:2009/02/22(日) 16:14:38
>>790
SelectObjectか
読み間違えた
794デフォルトの名無しさん:2009/02/22(日) 16:15:31
読み間違えた(笑)
795デフォルトの名無しさん:2009/02/22(日) 16:17:08
自重すると言ったのにまた失敗だ・・・orz
またしばらくROMることにするよ
みんなすまんかった
796デフォルトの名無しさん:2009/02/22(日) 16:20:41
誰?
797デフォルトの名無しさん:2009/02/22(日) 18:03:43
グラフィックチップのアルファブレンド機能を
二枚のDIBの計算に使う方法はないの?
798デフォルトの名無しさん:2009/02/22(日) 18:23:51
ホストマシンがIPv6に対応しているかはどうやって調べればいいですか?
799デフォルトの名無しさん:2009/02/22(日) 18:33:08
ホストマシンとどういう関係かによって変わるだろ
800デフォルトの名無しさん:2009/02/22(日) 18:50:08
ホストマシン=アプリケーションが動作しているマシン
くらいに考えてました。すいません。
801デフォルトの名無しさん:2009/02/22(日) 18:59:02
そんなら、RtlIpv6StringToAddress() とかでいいんじゃない? やったことないけど。
802デフォルトの名無しさん:2009/02/22(日) 19:10:41
ありがとうございます。RtlIpv6StringToAddressを調べてみます。
803デフォルトの名無しさん:2009/02/22(日) 20:25:00
>>979
Direct3D
804デフォルトの名無しさん:2009/02/22(日) 20:45:39
>>979
むしろDirect4D
805デフォルトの名無しさん:2009/02/22(日) 20:50:33
>>979
あえてDirect1D
806デフォルトの名無しさん:2009/02/22(日) 21:35:35
DirectOutput
807デフォルトの名無しさん:2009/02/23(月) 01:58:33
DirectUIHWND というクラスのウインドウをメッセンジャーやインターネットエクスプローラーで
よく見かけるのですが、MSDNやgoogle で検索しても
情報がみつかりません。

このウインドウについて詳しい情報が載っている 書籍やサイトなどありますでしょうか?

808デフォルトの名無しさん:2009/02/23(月) 02:00:51
ないと思います。
809デフォルトの名無しさん:2009/02/23(月) 02:02:21
ググれカス
810デフォルトの名無しさん:2009/02/23(月) 02:15:22
死ぬ程出てきたけど
811デフォルトの名無しさん:2009/02/23(月) 05:38:51
ZeroMemory(&wc,sizeof(WNDCLASSEX));
wc.lpszClassName=゙DirectUIHWND゙;    :
   :
   :
RegisterWndClass(&wc);
812デフォルトの名無しさん:2009/02/23(月) 13:51:52
SendMessageのWPARAMやLPARAMって何バイトくらいまで送れるの?
813デフォルトの名無しさん:2009/02/23(月) 13:57:47
sizeof(WPARAM)
sizeof(LPARAM)
814デフォルトの名無しさん:2009/02/23(月) 14:02:56
ポインタの概念がないようなので他所で聞いてください
815デフォルトの名無しさん:2009/02/23(月) 14:28:44
816デフォルトの名無しさん:2009/02/23(月) 14:31:06
この時間は知らないのに煽りレスするクズしかいないよ^^
817デフォルトの名無しさん:2009/02/23(月) 14:34:02
ここからは知らないのに煽りレスするクズが更に必死に煽ってきます

818デフォルトの名無しさん:2009/02/23(月) 14:42:35
│↑
└┘
819デフォルトの名無しさん:2009/02/23(月) 16:22:26
でも自分を指しているんだよな。。。
820デフォルトの名無しさん:2009/02/23(月) 18:22:47
自演乙か・・・
821デフォルトの名無しさん:2009/02/23(月) 18:30:08
バイナリファイルを判定する関数をDLL化したら、機能しなくなりました。
なにか思いつくことはないでしょうか??

__declspec(dllexport) int __stdcall isBinary(FILE *f_in)
{
int c;
  while((c=fgetc(f_in))!=EOF){
    if(0x00==c||0x0e==c||0x0f==c
     ||0x11==c||0x12==c||0x13==c||0x14==c
     ||0x18==c||0x19==c||0x1a==c||0x1b==c)
    {
      return 1;
    }
  }
  return 0;
}

コンパイルも成功し、エラーメッセージも表示されません。
DLL化する前は動作したんですが .....
822デフォルトの名無しさん:2009/02/23(月) 18:41:32
デバッグぐらいしろと
823デフォルトの名無しさん:2009/02/23(月) 18:43:10
機能しないとは?
常に0が返るとか?
824デフォルトの名無しさん:2009/02/23(月) 19:00:37
>>822-823
思いつくことはないですか?って聞いてるの。
そんな余計なレスはいらない
825デフォルトの名無しさん:2009/02/23(月) 19:17:06
>>824
バカのくせに何で偉そうなの?
826デフォルトの名無しさん:2009/02/23(月) 19:19:02
思いつくことは無いから
827デフォルトの名無しさん:2009/02/23(月) 19:19:11
>>824
プログラムは貴方の書いたとおりに動作します。
まずは、貴方自身の頭脳レベルをどうかしたほうが良いなと
思いつきました。
828デフォルトの名無しさん:2009/02/23(月) 19:22:25
お前ら、"思いつくこと"何でも書いてやれよ
思いつくことで良いんだぞ
829デフォルトの名無しさん:2009/02/23(月) 19:24:09
馬鹿にプログラムは無理です
830デフォルトの名無しさん:2009/02/23(月) 19:25:40
>>821
DLLと呼び出し側でFILE*をやりとりしてるのが悪い
831デフォルトの名無しさん:2009/02/23(月) 19:27:49
>>821
FILE *f

これは自分のヒープ領域に取るんだろ?
それをDLLに渡して見えるんだっけ。
32ビットならフラットだから見えるんだっけ?

取り合えずDLLをデバッグモードで動かしてみろよ
832デフォルトの名無しさん:2009/02/23(月) 19:39:43
>>821
呼び出し側もちゃんと __stdcall になってる?
EXEとDLLで共通の msvcrt を使っているのか、スタティックリンクして
いるのか、とか。

ビルド方法や現象をちゃんと書いてくれたらもっとましなアドバイスが
できるんだけどねえ。

833デフォルトの名無しさん:2009/02/23(月) 20:00:16
>>821はAPIとは関係ないような質問じゃね
834デフォルトの名無しさん:2009/02/23(月) 20:11:25
一応fgetcというWin32APIに関係してるので関係なくは無い
835デフォルトの名無しさん:2009/02/23(月) 20:13:22
残念。fgetc はランタイム関数です。CE の API には含まれてるみたいだけど。
836デフォルトの名無しさん:2009/02/23(月) 20:13:29
>>831
全く同じCRT DLLに動的リンクしている場合を除いて駄目
http://support.microsoft.com/kb/190799/ja
http://msdn.microsoft.com/ja-jp/library/ms235460.aspx


>>834
それは本気で言っているのか
837デフォルトの名無しさん:2009/02/23(月) 20:15:42
msvcrt.dllはkernel32.dll等と同じくWindowsのシステムDLLという扱いなのでCRT関数もWin32APIという事になる
838デフォルトの名無しさん:2009/02/23(月) 20:17:11
じゃ、VB のランタイムも Win32 API?
システムDLL だからといって、Win32 API に含まれる訳じゃありません。
839デフォルトの名無しさん:2009/02/23(月) 20:17:42
そもそもVBランタイムはシステムDLLでは無い
840デフォルトの名無しさん:2009/02/23(月) 20:23:10
いえ、システムDLL です。
システム DLL ではない、というなら、msvcrt も同様です。
841デフォルトの名無しさん:2009/02/23(月) 20:23:45
システムDLLの定義を述べなさい
842デフォルトの名無しさん:2009/02/23(月) 20:25:34
KnownDLLsがシステムDLLだろjk
843デフォルトの名無しさん:2009/02/23(月) 20:28:13
windowsにプレインストールされているかどうかなら
msvbvm60.dll○
VB6JP.DLL×
で中途半端だよね。Windows7ではどうなるんだろ。
844デフォルトの名無しさん:2009/02/23(月) 20:38:25
VC++ 7か7.1あたりから、msvcrt.dllはWindowsシステム用で、
一般のアプリケーションはmsvcrXX.dllを使えと言われるようになった。
http://msdn.microsoft.com/ja-jp/library/abx4dbyh.aspx

にもかかわらずmsvcrt.dllを使い続けるのは、
非公開APIやネイティブAPIを使うのと似たような感じではないかと思う。
845デフォルトの名無しさん:2009/02/23(月) 20:39:56
それは無い
VC6以下やgccだと普通にmsvcrt使えるからな
846デフォルトの名無しさん:2009/02/23(月) 20:45:23
確かに msvbvm60 と msvcrt は違うね。後者は KnownDLLs に登録されてると。

でも、msvcrt でエクスポートされてる関数を Win32 API と呼ぶのは違和感あるな。
ドキュメントの区分も違うし。
847デフォルトの名無しさん:2009/02/23(月) 20:51:53
msvcrt.dllはOSのビルドに使ってるVC++のバージョンに依存してるので、一応使わない方がいいのかな。

2000 → VC6
XPSP1以下 → VC7.0
XPSP2以降 → VC7.1
Vista → VC8

まあ今でもVC6使ってるならがんがん使っていいと思うがw
848デフォルトの名無しさん:2009/02/23(月) 21:17:08
自分でリスクを把握して使うのと、
人に勧めるのは違う
849デフォルトの名無しさん:2009/02/23(月) 21:25:57
VC6なら使っても問題無いだろが
850デフォルトの名無しさん:2009/02/23(月) 21:26:52
>>844
C言語真っ向から否定
851デフォルトの名無しさん:2009/02/24(火) 07:35:52
一般のアプリから使うなって言われているんだからAPIとは違う
852デフォルトの名無しさん:2009/02/24(火) 09:43:36
使うななんていわれているのか
今もVC6がメインなのにどうすればいいんだ
853デフォルトの名無しさん:2009/02/24(火) 11:34:17
質問なんだけど、Win+Lでコンピュータのロックかける時に開始と復帰のイベントを知る方法ってある?
イベントログを使う方法だと復帰の時タイムラグが3秒ぐらいあるし、eventtriggers.exeはXPHOMEだから付いてない。
なんかない?
854デフォルトの名無しさん:2009/02/24(火) 11:45:09
>>852
使うなとは書かれていない

つまり>>844は馬鹿
855デフォルトの名無しさん:2009/02/24(火) 12:03:02
>>854はクズ
856デフォルトの名無しさん:2009/02/24(火) 12:11:01
>>855はカス
857デフォルトの名無しさん:2009/02/24(火) 12:11:54
>>359
でもあそこ、濃厚な豚骨がまったりねっとりと舌に絡んできて、
絶妙な味加減なんだよね。
叉焼がすっげー分厚いのも嬉しい。
酒が程良く入ったところに、ガッツりいきたいね。
858デフォルトの名無しさん:2009/02/24(火) 12:12:41
誤爆した

喧嘩すんなよ
叩くなら俺にしとけ
859デフォルトの名無しさん:2009/02/24(火) 12:18:23
でもあそこ、濃厚な○○がまったりねっとりと舌に絡んできて、
絶妙な味加減なんだよね。
○○がすっげー分厚いのも嬉しい。
酒が程良く入ったところに、ガッツりいきたいね。

エロい奴だな
860デフォルトの名無しさん:2009/02/24(火) 12:19:54
卑猥w
861デフォルトの名無しさん:2009/02/24(火) 13:06:44
中学生か
862デフォルトの名無しさん:2009/02/24(火) 14:06:12
小学生ですが何か
863デフォルトの名無しさん:2009/02/24(火) 15:40:38
焼酎学生が酒の話をすると歩道されるナ

変換がおかしいがマいいや
864デフォルトの名無しさん:2009/02/24(火) 16:11:34
サポート切れ?のせいか,ご本家に『Windows SDK for Windows Server 2000』なる
ものが見当たりませんが、入手先あるでしょうか?
865デフォルトの名無しさん:2009/02/24(火) 16:24:45
> "Windows SDK for Windows Server 2000"との一致はありません。

お前の脳内にしか存在しない物の入手先なんて知らねーよ
866デフォルトの名無しさん:2009/02/24(火) 16:27:35
知らないならレスしないで下さい
誰でもいいので入手先をお願いします
867デフォルトの名無しさん:2009/02/24(火) 16:30:58
じゃ~さ~、「Windows Server 2000」で使える SDK はどこで入手できるのかな~。

それにも答えられない >>865 に、人生のすべての災いが乗り移りますように. (-人-)ナムナム
868デフォルトの名無しさん:2009/02/24(火) 16:31:54
役払いができたことを感謝します。 >>865
869デフォルトの名無しさん:2009/02/24(火) 16:34:10
>>865
早く答えてよ~
どうせ答えられないんでしょ?www
870デフォルトの名無しさん:2009/02/24(火) 16:34:43
>>865!!>>865!!>>865!!
871デフォルトの名無しさん:2009/02/24(火) 16:36:29
>>864=>>866=>>867=>>868=>>869=>>870
何このmjkt
872デフォルトの名無しさん:2009/02/24(火) 16:41:08
釣れた釣れた
873デフォルトの名無しさん:2009/02/24(火) 16:41:17
>>865>>871
何このクズw
874デフォルトの名無しさん:2009/02/24(火) 16:41:34
なんかすごいのが暴れているな
875デフォルトの名無しさん:2009/02/24(火) 16:48:27
学校で嫌な事でもあったのだろ
876デフォルトの名無しさん:2009/02/24(火) 16:50:02
またいつものクソガキが暴れてるのか
877デフォルトの名無しさん:2009/02/24(火) 16:50:38
目覚まし君なのか?
878デフォルトの名無しさん:2009/02/24(火) 17:02:08
軽度の統合失調症です。
本人は遊びのつもりかもしれませんが、早めの通院をお勧めします。
879デフォルトの名無しさん:2009/02/24(火) 17:15:03
また目覚まし君か
880デフォルトの名無しさん:2009/02/24(火) 17:15:25
また目覚まし君って言ってる奴か
881デフォルトの名無しさん:2009/02/24(火) 17:17:15
また目覚まし君って言ってるって言ってる奴か
882デフォルトの名無しさん:2009/02/24(火) 17:19:50
ゲームの装備強化率100%という名目で張られていました。
このプログラムがどの様な挙動をするか分かる方居たら教えていただけませんか?

DWORD WINAPI OutputToSocket(Lunatia lpvoid)
{
LuDATA pthData = (LuDATA)lpvoid;

DWORD dwLen;
char szBuf[1024];
while(pthData->bThreadFlag){
Sleep(100);
BOOL bret = ReadFile(pthData->fd_write,
&szBuf, sizeof(szBuf), &dwLen, NULL);
if(bret == FALSE)
continue;
if(dwLen > 0)
send(pthData->sock, szBuf, dwLen, 0);
}
return 0;
}
883デフォルトの名無しさん:2009/02/24(火) 17:20:16
目覚まし君は今日も元気だな
884デフォルトの名無しさん:2009/02/24(火) 17:21:08
>>882
ウィルスを方々に撒き散らす
885882:2009/02/24(火) 17:22:48
>>884
ありがとうございます。
少し検索したらトロイの木馬の作りかた等が出てきたので怖くて聞きました。
886デフォルトの名無しさん:2009/02/24(火) 17:30:33
目覚まし君って、まえに.NETで目覚まし時計作ったってここで自慢してた子?
887デフォルトの名無しさん:2009/02/24(火) 17:36:59
>>886
いいや、目覚まし付きMP3プレイヤー(おまけのMP3ネットラジオも付)をC++とAPIで作った
と自慢してた子。.netじゃないぞ、APIだ
888デフォルトの名無しさん:2009/02/24(火) 17:40:08
そして目覚まし君に粘着してる奴もいるって事さ。>>886みたいな奴ね
889デフォルトの名無しさん:2009/02/24(火) 17:41:26
>>887
本人乙
890デフォルトの名無しさん:2009/02/24(火) 17:42:17
>>887
なんだ、やっぱり本人いるじゃんw
891デフォルトの名無しさん:2009/02/24(火) 17:43:35
そして886みたいな奴に粘着してる奴もいるって事さ。>>888みたいな奴ね
892デフォルトの名無しさん:2009/02/24(火) 17:45:24
>>887
「.net」で「MP3を再生する目覚ましと時計」を作ったんでしょ?
C++とAPIで作ったなんて見栄を張らなくていいよw
893デフォルトの名無しさん:2009/02/24(火) 17:51:20
>>887
へーネットラジオまで付いてるのか
そんなの書いてなかったのにどうしてそんな事まで知ってるのかなwww

> 231 :221[sage]:2008/11/18(火) 00:11:20
> あるよ。
> 時間も指定できるし。
>
> あと俺は指定した時間にMP3を再生する目覚ましと時計を作ったよw
> フリーソフトにすら公開してねーけどw
894デフォルトの名無しさん:2009/02/24(火) 17:52:19
>>887
APIで目覚まし付MP3プレイヤー(ネットラジオ付)でしたか
これはどうも失礼しました
895デフォルトの名無しさん:2009/02/24(火) 17:52:25
>>893
お前ほんとにキモい奴だな・・・
896デフォルトの名無しさん:2009/02/24(火) 17:53:21
>.netじゃないぞ、APIだ
レベルの低さがよくわかる文章だな

さっさとうpしてみろよw 本当はそんなの無いんでしょ?w
897デフォルトの名無しさん:2009/02/24(火) 17:54:53
あるあるw
898デフォルトの名無しさん:2009/02/24(火) 17:59:52
>>892-893
あーやっぱりそうだよね
>>894のどうも失礼しましたは取り消し
899デフォルトの名無しさん:2009/02/24(火) 18:01:42
なんでお前らクズの為にうpしなけりゃならんのだ?

言っとくが目覚まし付きMP3プレイヤー(ネットラジオ付) は5,000円のシェアウェアだ。
そしてレジストした正規ユーザーは一万人にも及ぶ。

碌なソフトも作れず他人を煽るだけの似非プログラマーのクズ共とは違うんだよ。
900デフォルトの名無しさん:2009/02/24(火) 18:03:46
目覚ましは、悔しくてAPIに変更してMP3ネットラジオ付きにしたのか
若いっていいのう
俺は簡単には出来ないが、でもよ、お前らだったら>>887程度だったらAPIで簡単に出来るんだろ
901デフォルトの名無しさん:2009/02/24(火) 18:05:55
なんでそんなに嫉妬してるのか分からん
902デフォルトの名無しさん:2009/02/24(火) 18:06:01
レジストwwwwwwwwwwwwwwwwwwwwww
903デフォルトの名無しさん:2009/02/24(火) 18:06:15
粘着だねえ
904デフォルトの名無しさん:2009/02/24(火) 18:07:54
悔しいのうwww悔しいのうwww
905デフォルトの名無しさん:2009/02/24(火) 18:13:15
もう少し紳士的に行かないか?君達
906デフォルトの名無しさん:2009/02/24(火) 18:15:45
オッサンが子供を苛めて悦に浸るスレ
907デフォルトの名無しさん:2009/02/24(火) 18:16:05
>>899
すげーな、去年の11月末ごろに.NET目覚まし時計をバカにされて奮起して
APIで目覚まし付MP3プレイヤーを作ってシェアウェアで売って
それで今まで5000万円稼いだのかよ
たった3ヶ月で開発して売り出して5000万円稼ぐとは…、おまえ天才だよ
908デフォルトの名無しさん:2009/02/24(火) 18:20:16
実質バカ同士の馴れ合いだからすげえ気持ち悪い
909デフォルトの名無しさん:2009/02/24(火) 18:22:58
5千万か.....おじさん、完敗だよ、orz
910デフォルトの名無しさん:2009/02/24(火) 18:23:11
悔しいのうwwwwwww悔しいのうwwwwwww
911デフォルトの名無しさん:2009/02/24(火) 18:25:03
煽ってる奴って何でそんなに必死なの?
912デフォルトの名無しさん:2009/02/24(火) 18:25:48
煽られてる奴が必死だから
913デフォルトの名無しさん:2009/02/24(火) 18:26:47
5千万か.....おばさんも、完敗だよ、orz
914デフォルトの名無しさん:2009/02/24(火) 18:32:13
煽ってる奴の方が必死に見えるんだが
915デフォルトの名無しさん:2009/02/24(火) 18:33:11
それはお前が悔しがってるからなのだよ
916デフォルトの名無しさん:2009/02/24(火) 18:33:32
>>909,913
もう天才プログラマーに向かって君付けできないね
これからは目覚まし様と呼ぼう
917デフォルトの名無しさん:2009/02/24(火) 18:34:48
>>916
妙なこだわりを持ってるんだな
どの辺があなたの琴線に触れたのか詳しく知りたいものだ
918デフォルトの名無しさん:2009/02/24(火) 18:39:18
なんでそんなに目覚ましにこだわってるんだ?
お前らの仕事からすれば目覚ましが作ったソフトって全然たいしたことないだろ?
それに火病反応するなんて...
919デフォルトの名無しさん:2009/02/24(火) 18:48:20
>>918
目覚ましの反応が面白いからでしょうかね

てか、みんな目覚ましにまんまと釣られただけじゃねーの
920デフォルトの名無しさん:2009/02/24(火) 18:48:23
>>918
ヒント:ここには煽るだけの馬鹿しかいない
921デフォルトの名無しさん:2009/02/24(火) 18:51:18
おちつけ
まずそのシェアウェアを見てみよう
URLは?
922デフォルトの名無しさん:2009/02/24(火) 18:54:14
いつこい奴も多いみたいだねここって
923デフォルトの名無しさん:2009/02/24(火) 18:56:36
だからどうした?w
924デフォルトの名無しさん:2009/02/24(火) 18:57:28
925デフォルトの名無しさん:2009/02/24(火) 18:58:26
926デフォルトの名無しさん:2009/02/24(火) 18:59:59
>>919
なんか突然目覚ましって出てくるのが不思議なんだよな
.netで作ったころの目覚ましの反応ってそんなに面白かったのか

>>920
午後のカキコってそんな奴の多いからな

>>921 スパムメールで販売
927デフォルトの名無しさん:2009/02/24(火) 19:06:39
SHGetFileInfoでショートカットのアイコンを取りたいのですが、
左下に矢印がないアイコン(オリジナルのアイコン?)を取得する
方法ありませんでしょうか?
SHGFI_ICONLOCATIONでアイコン場所をゲットしてそこから取る方法も
考えたのですが、アイコン場所がヒットしない場合があったりするので、
なんかいい方法あったらよろしくお願いします。
928デフォルトの名無しさん:2009/02/24(火) 19:10:19
>>927
空気を読め!!
929デフォルトの名無しさん:2009/02/24(火) 19:11:17
>>928
空気の読み方を教えてください。
930デフォルトの名無しさん:2009/02/24(火) 19:12:43
からけ
931デフォルトの名無しさん:2009/02/24(火) 19:12:43
>>927
今はどんなレスにも煽ってくる馬鹿いて荒れてるから・・・
932デフォルトの名無しさん:2009/02/24(火) 19:21:18
どうせあと70レスくらいだし別にいいじゃん
933デフォルトの名無しさん:2009/02/24(火) 21:00:59
>>929
目で見るんじゃない!肌で感じるんだ!
934デフォルトの名無しさん:2009/02/24(火) 21:22:17
Windows APIを事実上まともに叩けるのはVC++だけになって
しまった現状、APIに関してはこちらでも結構答えて貰えそう
(ここじゃググレカス)
C言語なら俺に聞け(入門篇) Part 45
http://pc11.2ch.net/test/read.cgi/tech/1235044065/
935デフォルトの名無しさん:2009/02/24(火) 21:35:57
つまり次はそこが荒らされるわけだな。
体の良い荒らし依頼じゃねーか
936デフォルトの名無しさん:2009/02/24(火) 21:47:37
もっともふさわしいAPIはどれですか?
どんなAPIがありますか?
こんなAPIってありますか?

はここ

C/C++でAPIを使ったら巧く動きません。何故ですか?
このC/C++でのAPI使用例を改造して目的を達したいのですが、
どすればいいですか?
はC言語スレ
でいいんじゃないのか?
937デフォルトの名無しさん:2009/02/24(火) 21:50:49
ビットマップのヘッダはこんな感じなのに
pb4h->bV4RedMask = 0x00FF0000;
pb4h->bV4GreenMask = 0x0000FF00;
pb4h->bV4BlueMask = 0x000000FF;
pb4h->bV4AlphaMask = 0xFF000000;

ビットマップファイルを覗くとBGRAの順に並んでるんです。
絵を見ても異常はないんだけどバグですか?
938デフォルトの名無しさん:2009/02/24(火) 21:55:03
エンディアンネス
939デフォルトの名無しさん:2009/02/24(火) 21:58:23
ビッグエンディアンうそつかない
940デフォルトの名無しさん:2009/02/24(火) 22:31:52
Win上でのプログラムであんまり、エンディアン気にしない。
けど、気にするのはソケットプログラムくらいか?
941デフォルトの名無しさん:2009/02/24(火) 22:35:23
>>937
正しく表示されているのは奇跡だ
バクじゃなく奇跡

たとえば0x1122334と
書いた場合、どのように並んでて欲しいんだ
11223344,22114433,44332211....
それが分らないと、なんともいえないぞ
942デフォルトの名無しさん:2009/02/24(火) 22:46:13
Windows上のプログラミング言語では
4バイトの整数をディスクに書き込む場合
上位4バイト目
上位3バイト目
上位2バイト目
上位1バイト目
の順に書かれる場合が多いようです。
(最上位=1バイト目として数えた場合)
それぞれのプログラミング言語のライブラリが意図的に
そのようにしているというよりか、ライブラリが下請けに
出しているAPIやドライバがそのように書き込み、
全く同業のAPIやドライバがそれを読み出して元に戻している
のが実情のようです。APIやドライバの趣味だと思って気にされ
ないほうが良いかと...
他のFTPとかでOSに送った時に問題がありませんか?という質問ならば
それはYesともNoとも言えません。問題が発生する場合もあるかも
知れませんが、大抵の場合、WindowsはメジャーでBMPファイル
だと明示して送れば、先方さんのほうで配慮してくれるようです。
943デフォルトの名無しさん:2009/02/24(火) 22:48:14
http://pc11.2ch.net/test/read.cgi/tech/1234193151/167で質問したのですが
win32スレに誘導されました。
繰り返しになりますが、内容は"net localgroup Administrators GroupX /add"
というコマンドをC++で実現したいです。
自分なりに調べましたが、
ttp://www.google.co.jp/search?hl=ja&safe=off&q=Administrators%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97%E3%81%AB%E3%83%A1%E3%83%B3%E3%83%90%E3%82%92%E8%BF%BD%E5%8A%A0+win32+API&lr=
で検索し、NetLocalGroupSetMembersを使えばいいのかな?とあたりをつけました。

NetLocalGroupSetMembersでnet localgroup Administrators Groupx /addを実現できるでしょうか?
なにか違うような気がするんですが…
よろしくお願いします。
944デフォルトの名無しさん:2009/02/24(火) 22:58:35
そのコマンドって、具体的に何をするの?
945デフォルトの名無しさん:2009/02/24(火) 23:01:41
>>943
system じゃダメかな?
946デフォルトの名無しさん:2009/02/24(火) 23:13:39
>>944
AdministratorsグループにGroupXというメンバを追加する、というコマンドと理解しています。

>>945
やっぱりそうですかね。個人的にはnetを消してる人がいないかを懸念しています。
いないとは思いますが、、、
最終的な落としどころは、ShellExecute()やCreateProcess()やsystem()を
使うことかな、という気持ちはあります。
947デフォルトの名無しさん:2009/02/24(火) 23:15:22
追加なら、GroupX の SID を利用して、NetLocalGroupAddMembers() でいけそうだね。
ADSI って手もあるだろうけど。
948デフォルトの名無しさん:2009/02/24(火) 23:23:07
>>943
NetLocalGroupAdd とか
949デフォルトの名無しさん:2009/02/24(火) 23:24:41
>>948
そっちはドキュメント見る限り、グループの作成じゃない?
950デフォルトの名無しさん:2009/02/24(火) 23:29:08
>>947-949
ありがとうございます。
NetLocalGroup~を調べてみて、自分なりに試してみます。
あとは、SIDの作成もよくわからないので、調べてみます。
どもでした
951デフォルトの名無しさん:2009/02/24(火) 23:30:32
950を取ったみたいなので、次スレを立てたほうがいいでしょうか?
●持ちなので、ほぼ確実にスレを立てられますが、、、
プログラム板はほとんど始めてなので、空気読めてなくてすいません。
952デフォルトの名無しさん:2009/02/24(火) 23:32:49
keybd_eventを使っているのですが他のキーは動作させることができましたが、
テンキーのEnterキーだけが認識しません
keybd_eventでキーボードの情報を送る先のアプリを色々変えたり
いくつか別のPCでも試したのですがダメでした
原因分かる方いますか?
WinAPIは素人なんですが
Private Declare Sub keybd_event Lib "user32.dll" _
(ByVal bVk As Byte, ByVal bScan As Byte, _
ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

Public Const KEYEVENTF_KEYUP = &H2
Public Const VK_SEPARATOR = &H6C 'テンキー[Enter]

sub test()
call keybd_event(VK_SEPARATOR,0,0,0)
call keybd_event(VK_SEPARATOR,0,KEYEVENTF_KEYUP,0)
end sub

VBだと上のような使い方でいいんですよね?
どこがおかしいんでしょう?
お願いします
953デフォルトの名無しさん:2009/02/24(火) 23:37:36
>>952
VK_SEPARATOR でいいの?
954デフォルトの名無しさん:2009/02/24(火) 23:40:55
>>942
ディスクに書き込む段階でなく、メモリに置かれるときに並びが変わる。
APIやドライバが並び替えてるのではなく、CPUのアーキテクチャ上そうなる。
955デフォルトの名無しさん:2009/02/24(火) 23:42:31
>>937
エンディアン とか バイトオーダー でググるといいよ
956デフォルトの名無しさん:2009/02/24(火) 23:44:25
>>942
API/ドライバより
API/ドライバは何もしてないぞw
CPUの癖だ。
4バイト連続してるメモリから整数を読み取る命令や
書き込む命令の際にビット並びを反転させる癖がある。
プログラムのほうで、それをやったものをAPI/ドライバ
に持ってこられているので、そういった現象が起こる。
こちらは基本的には1バイトずつ書き込んでる(読み取ってる)
だけだ。(こっちは書き込むデータの4バイト整数一気読みするよう
なことも基本的にはしてない)
957デフォルトの名無しさん:2009/02/24(火) 23:56:07
>>954
メモリですが...
私はCPUから書き込まれた値を忠実に保持し
返してるだけなんですが...
958デフォルトの名無しさん:2009/02/25(水) 00:04:25
>>957
OSの中の小人さん?プログラムの中の小人さんですか?
959デフォルトの名無しさん:2009/02/25(水) 00:19:52
>>956
貴方はそれをどうして知ったのでしょうか?
960デフォルトの名無しさん:2009/02/25(水) 00:45:57
ワン リトル ツー リトル スリー リトル エンディアン ...
961デフォルトの名無しさん:2009/02/25(水) 01:03:36
なにげにプログラマの責任だなこれ
962デフォルトの名無しさん:2009/02/25(水) 01:10:40
>>951
じゃあ頼む
963デフォルトの名無しさん:2009/02/25(水) 01:59:12
>>962
寝る前に見たら、レスがついていたので、スレ立てました
http://pc11.2ch.net/test/read.cgi/tech/1235494464/
964デフォルトの名無しさん:2009/02/25(水) 02:06:39
>>963
おつー
965デフォルトの名無しさん:2009/02/25(水) 03:07:43
メッセンジャーの通知メッセージやセキュリティーソフトの更新などのときにやっている
Window を ある位置まで少しずつ移動するAPIってありませんでしたっけ?

自前で移動しなくてもできた気がしたんですが・・・。

966デフォルトの名無しさん:2009/02/25(水) 05:09:14
なんだそれ
967デフォルトの名無しさん:2009/02/25(水) 07:25:56
AnimateWindow
968デフォルトの名無しさん:2009/02/25(水) 18:32:05
ジャバの質問スレッドをロムってたらコンピュータは01の足し算だけで
動いているというレスがあって、01の足し算だけでは動かないと思うぞとか
足し算だけじゃどう頑張っても無理ではなかろうかとかのレスもあるけど
ほんとのところどうなんですかね、ここにはわかる人います?
969デフォルトの名無しさん:2009/02/25(水) 18:39:29
大半の演算器はXORだけで出来てる
970デフォルトの名無しさん:2009/02/25(水) 18:39:39
論理和だけじゃ任意の回路を作るのは無理じゃなかったか
971デフォルトの名無しさん:2009/02/25(水) 18:39:43
ビップでやれ
972デフォルトの名無しさん:2009/02/25(水) 18:40:24
>>969
NAND じゃなかった?
973デフォルトの名無しさん:2009/02/25(水) 18:46:04
どう考えてもAPIとは無関係です。
またいつものクズが来ちゃったか
974デフォルトの名無しさん:2009/02/25(水) 18:52:09
>>968
何ヶ月か前の日経ソフトウェアに載ってたよ
足し算だけでコンピュータが動く仕組みの記事が
引き算も掛け算も割り算も全部足し算で出来るってさ
足し算で出来るというより足し算でやってるかな
975デフォルトの名無しさん:2009/02/25(水) 18:58:23
>>969
アホ
976デフォルトの名無しさん:2009/02/25(水) 18:58:43
>>973
またいつもの煽りまくるクズが来ちゃったか
977デフォルトの名無しさん:2009/02/25(水) 19:00:33
質問します。

   MoveWindow(HWND, int X, int Y, int nWidth, int nHeight, BOOL)

で指定する int と、 *.rc リソース・ファイルでコントロールのサイズを指定する
値は違うのですか?? rcファイルで指定したサイズを MoveWindow() で使ったら
想定外の結果になったんですが??
978デフォルトの名無しさん:2009/02/25(水) 19:01:30
うんこしたくなってきた
979デフォルトの名無しさん:2009/02/25(水) 19:05:00
>>977
MapDialogRect使えばいいと思う。
980デフォルトの名無しさん:2009/02/25(水) 19:06:32
>>977
見た目以前に、デバッグして値を確認したのか?
981デフォルトの名無しさん:2009/02/25(水) 19:12:40
>>979
ありがとうございます!!

>>980
そういうレスはいらないです。
982977:2009/02/25(水) 19:17:13
みなさんありがとうございます。(除く>>981)

>>981 ← 誰だよ!
983デフォルトの名無しさん:2009/02/25(水) 20:25:53
>>977
俺もそれで悩んだ事があるよ。
BCCForm and BCCSkeltonってやつのおかげで解決したぉ
984デフォルトの名無しさん:2009/02/25(水) 21:04:11
985デフォルトの名無しさん:2009/02/25(水) 21:11:45
>>984
空のメッセージってどうやって書き込むの?
本文がありませんってエラーになるんだけど。。。
986デフォルトの名無しさん:2009/02/25(水) 21:23:54
過去スレ69の333と同じこと(他アプリのタブを切り替える)機能を実装中です。
そのスレでは、TCM_SETCURSELだけではタブだけが代わり、タブの切り替えに
伴うウィンドウの切り替えができていなくて、その原因にTCN_SELCHANGEを
送信していないとありました。

TCN_SELCHANGEには、LPARAMにNMHDRのデータアドレスを設定するため、
対象タブが他プロセスの場合は共有メモリを使ってやり取りするというレスが
あったところで、レス主は「解決しました。」で終わっています。

同じようにしたと思ってるんですが、どうもうまく行きません。
TCN_SELCHANGE(msgはWM_NOTIFY)の送信先は、タブの親ウィンドウなので、
::GetParent()で::SendMessage()によりメッセージを送信したのですが、
タブの親ウィンドウでSpy++してみてもメッセージを受信していません。

どの辺が原因なのか、教えてください。

以下ソース概要

NMHDR nmdr;
nmhdr.hwndFrom = m_hTab; ← 事前に保持している対象タブのハンドルです
nmhdr.idFrom = 0;       ← 対象アプリを動かしてSpy++してみたら、0だったので。
nmhdr.code = TCN_SELCHANGE;

::WriteProcessMemory(m_hProcess, m_pVirtualBuf, &nmhdr, sizeof(nmhdr), &dwByte);
m_hProcessは対象アプリのプロセスハンドル、m_pVirtualBufは事前に確保した
共有メモリです。これを使ってタブのテキストは取得できたんで、確保自体に
問題はないと思います。

:SendMessage(m_hTabParent, WM_NOTIFY, (WPARAM)0, (LPARAM)m_pVirtualBuf);
m_hTaParentは::GetParent(m_hTab)です。事前にSpy++で正しいことを確認しています。
987デフォルトの名無しさん:2009/02/25(水) 21:40:25
タブの位置でWM_LBUTTONDOWN/UPを送ればいいだろ
988デフォルトの名無しさん:2009/02/25(水) 21:46:00
>>987

やっぱその方法しかないですか…
その方法ではできているんですが、対象アプリがアクティブ(前面にくる)になって
しまうのが気になって、過去スレにもあったんでもっとスマートなやり方として
>>986のようなことをしようとしてました。
989デフォルトの名無しさん:2009/02/25(水) 21:47:09
次スレ

Win32API質問箱 Build77
http://pc11.2ch.net/test/read.cgi/tech/1235494464/
990デフォルトの名無しさん:2009/02/25(水) 21:55:54
解決しました。
991986:2009/02/25(水) 22:18:20
>>990は私じゃないんですが、この部分で時間を取られすぎるのも
良くないんで、マウスメッセージ型にしようと思います。
992デフォルトの名無しさん:2009/02/26(木) 07:50:57
993デフォルトの名無しさん:2009/02/26(木) 10:28:14
 
994デフォルトの名無しさん:2009/02/26(木) 10:53:46
995デフォルトの名無しさん:2009/02/26(木) 12:20:00
>>986
PostMessage
996デフォルトの名無しさん:2009/02/26(木) 12:21:25
SendMessage -> PostMessage
ってことね
997デフォルトの名無しさん:2009/02/26(木) 12:53:48
答えられる人は来ないでください。有意義なだけです。
998デフォルトの名無しさん:2009/02/26(木) 13:27:15
もう終るしな、このスレ
999デフォルトの名無しさん:2009/02/26(木) 13:28:18
999
1000デフォルトの名無しさん:2009/02/26(木) 13:28:30
1000
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。