Win32API質問箱 Build35

このエントリーをはてなブックマークに追加
1Omoti@世界一の大金持ち ◆rzOmotimAo
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんたちが答えてくれるかも。

  ∧_∧
 ( ´∀`) < 0x22

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

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

-前スレ
Build34:http://pc8.2ch.net/test/read.cgi/tech/1122723009/
2Omoti@世界一の大金持ち ◆rzOmotimAo :2005/09/05(月) 01:08:56
3Omoti@世界一の大金持ち ◆rzOmotimAo :2005/09/05(月) 01:09:50
4Omoti@世界一の大金持ち ◆rzOmotimAo :2005/09/05(月) 01:10:39
5デフォルトの名無しさん:2005/09/05(月) 01:10:54
スレ立て乙・・・と思ったらウザスOmotiかよ。
6デフォルトの名無しさん:2005/09/05(月) 01:12:20
0x22ってどういう意味なの?
7デフォルトの名無しさん:2005/09/05(月) 01:14:21
>>6
34...
8デフォルトの名無しさん:2005/09/05(月) 01:14:53
-おまけ
dat落ちしている過去スレが見れるかも。Part19が見たい人、余裕のある人は●でも買ってやってくれ。
http://makimo.to/cgi-bin/search/search.cgi?q=Win32API&andor=AND&sf=2&H=&view=table&shw=&D=tech
9デフォルトの名無しさん:2005/09/05(月) 01:24:25
Omotiの名前の由来は何ですか?
10デフォルトの名無しさん:2005/09/05(月) 01:31:35
>>9
当時、W3CとかGNUとかの翻訳をやったり
ウルティマオンラインの外国サーバーで遊んだりとか
IRCでアメリカ人としゃべったりDiabloで外人と遊んだりとか
インターネット時間の95%を外人と過ごしていたので、彼らにも
覚えやすく、タイプしやすく、短めの名前で日本風のもの、ということで
つけました 昔はあんまりネットに日本人はいなかった 外人向けの名前ということです
11デフォルトの名無しさん:2005/09/05(月) 01:46:52
MessageBox(NULL, TEXT("乙"), TEXT(">>1"), MB_OK);
12デフォルトの名無しさん:2005/09/05(月) 02:04:29
なんでマイクロソフトはMSDNの日本語化を進めないんだ?
13デフォルトの名無しさん:2005/09/05(月) 02:05:35
金かかるし誤訳多いし
14デフォルトの名無しさん:2005/09/05(月) 02:42:54
せめて検索機能をONにしてください
誰かMSDN専用検索サイト立ち上げてよ
15デフォルトの名無しさん:2005/09/05(月) 02:50:42
日本語版があるに越したことは無いが、MSDNの資料ぐらい英語のままでも問題ないだろ
下手に誤訳が有る上に更新の遅い資料読むぐらいなら、大元の資料読んだ方がいい
16デフォルトの名無しさん:2005/09/05(月) 02:57:07
誤訳以前にサイト内検索にひっかからないのをどうにかしてほしい。
たどりつくのが大抵googleからとか、喪前らほんとにそれでいいのかと小一時間(ry
17デフォルトの名無しさん:2005/09/05(月) 03:12:30
>>16
今みてみたら見当たらないが、この間は日本語版は検索できなくなってて
直してるから待てと告知されてたが
英語版は正常に機能してるし、問題ないだろ
18デフォルトの名無しさん:2005/09/05(月) 03:26:59
なんで10年も前から存在するAPIすらまともに検索できないんだよ
英語版だと日本の単語で検索できないのが問題
英語が得意でも和英は答えが一つじゃない
対訳表もなしにやってられるか
19デフォルトの名無しさん:2005/09/05(月) 03:39:49
>>17
2、3年前からひっかかってない気がするんだが、まだ直らないのか・・・・。
まあ本気で読みたければローカル版読めばいいから俺個人は別にいいんだが。
20デフォルトの名無しさん:2005/09/05(月) 03:52:43
Omotiはそんな昔からPC触ってんのにいまだにそんなアホなんか
21デフォルトの名無しさん:2005/09/05(月) 04:12:19
最新の日本語版の情報が無いのは良いとして、
Win95で実装されたAPIのドキュメントで英語版しか
無い物があるなんて…
「VisualStudio ver x.xx "日本語版"」って
もう何年前のドキュメントだよ?
Microsoft Japanは仕事する気あるのかなぁ??
22デフォルトの名無しさん:2005/09/05(月) 05:38:41
前スレ1000が爆弾発言wwww

>1000 :デフォルトの名無しさん [sage] :2005/09/05(月) 02:21:24
>0x3E8だったら秀丸超えるテキストエディタ作る
23デフォルトの名無しさん:2005/09/05(月) 06:29:11
日本語ヘルプが更新されないことに加えて、MSDN ONLINEから
Win32APIのカテゴリがごっそり抜け落ちてたり、メジャーなAPI関数
ですらサイトの検索でヒットしないところを見ると、これは日本法人の
意図が働いていると見るのが妥当だろう。

で、その意図が何かと読み解くと、日本の場合、Win32APIの日本語
ヘルプが充実してしまうと、Borland製品の売れ行きが良くなってしまう
のでは?という仮説に行き着く。

かつて、その圧倒的な生産性の高さから、口コミなどもあって日本では
Delphiの旋風が吹き荒れていた。その名残は数多くのフリーソフトが
Delphi製という形で残ってはいるのだが、そのDelphiも2.0までだったかは
Win32APIの日本語ヘルプが付いていた。
24デフォルトの名無しさん:2005/09/05(月) 07:08:49
MSDN見てるとアンケートが出てくることあるでしょ?
あれが出たら書いとこうな。
適当な英語でもきっと通じるから。
I want more documents translated into Japanese.
とか。
25デフォルトの名無しさん:2005/09/05(月) 08:50:27
MSDNのWM_CREATEの記述って間違っていませんか?

ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windows/windowreference/windowmessages/wm_create.asp

 >Return Value
 >If an application processes this message, it should return zero to continue creation of the window. If the application returns A?A?1, the window is destroyed and the CreateWindowEx or CreateWindow function returns a NULL handle.

WM_CREATEが飛んできたときにゼロを返すと、ウインドウが生成されないのですが。
で、0以外(-1も含む)を返すと生成されます。
26デフォルトの名無しさん:2005/09/05(月) 08:56:09
>>25
コード出せや。エスパーに答えてもらいたいんか?
27デフォルトの名無しさん:2005/09/05(月) 09:21:37
>>25
間違ってません。
return 0;でちゃんと作成されます
return -1;でちゃんと破棄されます

おかしいのはアンタのコード
28デフォルトの名無しさん:2005/09/05(月) 09:22:28
>25
あなたのプログラムがおかしい可能性が非常に高いです。
CreateWindowに渡す引数等を見直してみてください。
コールバック関数はちゃんと__stdcallになってますか?
2925:2005/09/05(月) 09:49:02
あれ、普通に書いたらうまくいった。
なぜかメッセージクラッカーを使った場合だけ失敗する。

やはりどこかおかしかったみたいです。
30デフォルトの名無しさん:2005/09/05(月) 09:49:09
前スレ990ですが、
メモリ上でビットマップを重ね合わせるような
ことが可能なのですか?
31デフォルトの名無しさん:2005/09/05(月) 09:51:49
>>29
おかしいのは藻前

メッセージクラッカーの定義を読め
32デフォルトの名無しさん:2005/09/05(月) 09:59:19
>>23
BCB6でも付いてるぞ > Win32API日本語ヘルプ
3325:2005/09/05(月) 10:02:19
>>31
なるほどOrz
34デフォルトの名無しさん:2005/09/05(月) 10:05:52
>>30
はい
35デフォルトの名無しさん:2005/09/05(月) 10:19:44
>>30
ていうか、メモリ上で処理できんかったら画像処理がなんもできん
36デフォルトの名無しさん:2005/09/05(月) 10:31:26
ビットマップなんて所詮はただのRGB値の入ったメモリ配列じゃないか
37デフォルトの名無しさん:2005/09/05(月) 10:36:41
そうとも限らないけど
3830:2005/09/05(月) 11:29:05
すみません。質問の仕方が遠まわしすぎました。
読み込んだビットマップをメモリDC上に
座標を指定して貼り付けることはできますか?
3930:2005/09/05(月) 11:30:33
スマソ追記
あるなら、その方法を教えてください。
40デフォルトの名無しさん:2005/09/05(月) 11:31:33
BitBlt
4130:2005/09/05(月) 12:16:01
>>40
ありがとうございます。そうなんですが…。
BitBltの前にSelectObjectでビットマップを当てはめるDCを指定しなくちゃならないので
hBuf2 = CreateCompatibleDC(hdc);
SelectObject(hBuf2 , hBitmap);
BitBlt(hBuf , 0 , 0 , 400 , 200 , hBuf2 , 0 , 0 , SRCCOPY);
の様にhdcに互換するメモリDCを二種類用意しなくてはいけないと思うのですが、
これっていいんですか?
42デフォルトの名無しさん:2005/09/05(月) 12:17:18
それでよし。
4330:2005/09/05(月) 12:33:17
>>42
ありがとうございます。助かりました。
44デフォルトの名無しさん:2005/09/05(月) 15:50:07
フォルダの内容が変更されたことを検出するにはどうしたらよいのでしょうか?
45デフォルトの名無しさん:2005/09/05(月) 15:55:55
FindFirstChangeNotification
46デフォルトの名無しさん:2005/09/05(月) 17:28:38
WH_CBTタイプのローカルフックで質問です。

HCBT_CREATEWNDを調べてCreateWindow関数や
DialogBoxParam関数で設定したアプリケーションデータを
取得したいのですが、ダイアログボックスの時だけ取得出来ません。

アプリケーションデータは
CBT_CREATEWND→CREATESTRUCT→lpCreateParams
に入ってる筈なのですが。

ちなみにウィンドウの時は取得できましたが、ダイアログボックスの時はNULLが入ってました。
47デフォルトの名無しさん:2005/09/05(月) 17:31:30
>>46
DialogBoxParamのパラメータはWM_INITDIALOGで受け取るからそれでは無理なのでは?
4846:2005/09/05(月) 17:49:03
>>47
DialogBoxParam関数のヘルプを見るとCreateWindowEx関数を使って
ダイアログボックスを作ってると書いてあるんですよね。

つまり、ウィンドウで出来るなら、ダイアログボックスでも出来るんじゃないかと
思ってるんですが…。
49デフォルトの名無しさん:2005/09/05(月) 18:05:02
SetWindowsHookExでは駄目なのか?
50デフォルトの名無しさん:2005/09/05(月) 18:05:47
…間違ったorz
WH_MSGFILTERでは駄目なのか?
51デフォルトの名無しさん:2005/09/05(月) 18:07:29
>>48
> HCBT_CREATEWND
> 1 個のウィンドウが作成されようとしています。
> システムは、このウィンドウへ WM_CREATE または
> WM_NCCREATE メッセージを送信する前に、
> このフックプロシージャを呼び出します。

「DialogBoxParamはCreateWindowExを使ってるし、それならウィンドウでできるんだからダイアログでもできるハズ」
なんて身勝手な妄想する前にヘルプをちゃんと読め

HCBT_CREATEWNDでフックできるのはWM_CREATE or WM_NCCREATE
これらは普通のウィンドウへ送られるメッセージ

DialogBoxParamに限らず、ダイアログが作られるときに送られるのはWM_INITDIALOG
そもそもメッセージが違うのにフックできるわけが無い
5246:2005/09/05(月) 19:07:01
>>51
でも、HCBT_CREATEWNDでダイアログボックスが作成されたのを知る事ができ、
そのダイアログボックスのハンドルも取得できるんですよ。

それに、CREATESTRUCT構造体のlpCreateParams以外の値はちゃんと
入っていました。lpCreateParamsだけNULLなのが何故なのかなぁと思いまして。
53デフォルトの名無しさん:2005/09/05(月) 19:36:12
OCXを作ってます。
ブラウザに貼り付けた時にMOUSEWHEELを感知できません。
どうやら、ブラウザ本体の方にメッセージが取られて
OCXのプロシージャに到達していないようです。
ちなみに、ACCESSのフォームに貼ったら感知しました。
で、フックを使おうと思い、WH_MOUSEで待ってみると
0x20Aを探知できて、ホイールイベント自体は行えるようになったのですが
ホイールの移動方向の情報が来ません。
しょうがないので、WH_GETMESSAGEで待ってみると0x20A自体が来ませんでした。
WH_MOUSE_LLを使うとDLLを作らないといけないらしいので躊躇しています。
ご存知の方いましたら、解決方法を教えてください。
54デフォルトの名無しさん:2005/09/05(月) 19:38:29
>>51
ダイアログボックスはウィンドウクラス(WNDCLASS)がシステム定義のものってだけで
通常のウィンドウと何ら変わりない。

>>52
lpCreateParamsを使わずにパラメータ渡してるんだろ。
55デフォルトの名無しさん:2005/09/05(月) 19:47:29
1000 デフォルトの名無しさん sage 2005/09/05(月) 02:21:24
0x3E8だったら秀丸超えるテキストエディタ作る


よろ
56Mathiz@前スレ1000 ◆Ho9erQuSOQ :2005/09/05(月) 19:56:52
半年待ってね :-)
必ず作ってこのハンドルで公開宣言します。
57デフォルトの名無しさん:2005/09/05(月) 19:58:33
そう言って何人もが消えていったよ…。
ガンガレw
5846:2005/09/05(月) 20:01:41
>>54
> >>52
> lpCreateParamsを使わずにパラメータ渡してるんだろ。

やっぱりそういう結論になりますよね。何でlpCreateParams使ってくれないんですかねぇ。
まぁそれはそれとして、どうも回答有難うございました。
5999:2005/09/05(月) 20:14:11
60デフォルトの名無しさん:2005/09/05(月) 20:15:15
>>54,58
おまいらはWM_INITDIALOGをMSDNで調べたりしてないのか?
61デフォルトの名無しさん:2005/09/05(月) 20:17:58
>>52
取得できてんのは内部的に呼び出されたCreateWindowExがダイアログを作成した時の
WM_INITDIALOGとDialogBoxParamに伴うlParamのデータはその後でDialogBoxParamから送られる
CREATESTRUCTの中に入ってるわけが無い

>>54
おいおい・・・
62デフォルトの名無しさん:2005/09/05(月) 20:44:13
>>60
だから何?
63デフォルトの名無しさん:2005/09/05(月) 20:58:29
>>62
ちゃんと調べてたら、DialogBoxParamを使ってるのにCREATESTRUCTだの、
その中のlpCreateParamsだの見ても必要なデータが取得できないと分かるはずだからだろ
6446:2005/09/05(月) 20:58:35
>>61
つまり、DialogBoxParam関数に伴うlParamのデータは
WM_INITDIALOGメッセージの時に取得できるもの。
      ↓
HCBT_CREATEWNDではWM_CREATEやWM_NCCREATEをフックする。
      ↓
DialogBoxParamに伴うlParamのデータはWM_INITDIALOG時に取得
出来るものだから、WM_CREATEやWM_NCCREATEフック時には取得できない。

と、いうことですか?
65デフォルトの名無しさん:2005/09/05(月) 21:00:15
>>64
そういうこと、あと渡される構造体データもまったく違う
6646:2005/09/05(月) 21:28:17
>>65
どうも有難うございました。理解できました。
67デフォルトの名無しさん:2005/09/05(月) 21:52:35
>>56

どんな点で秀丸を超えるつもりなんだ?

値段か? アイコンのセンスか?
アイコンのセンスなら結構簡単そうだぞ。

ユーザー数とかなら不可能だ。
68デフォルトの名無しさん:2005/09/05(月) 22:06:05
名前の駄目さとかでも至難の業だな。
69デフォルトの名無しさん:2005/09/05(月) 22:21:51
値段も簡単じゃね?
いっそフリーにしてしまえばいいし
70デフォルトの名無しさん:2005/09/05(月) 22:22:46
値段で秀丸を超えるなら1本1万とかにしないと
71デフォルトの名無しさん:2005/09/05(月) 22:26:07
有料の場合、最低1人は本当に払った価格でないと。
言うだけならタダだからナ
72Mathiz ◆Ho9erQuSOQ :2005/09/05(月) 22:26:54
儲けるつもりは無いのでフリーで、ソースも公開しようと思います。
73デフォルトの名無しさん:2005/09/05(月) 22:29:53
スレ違いだから新しくスレを立てれ。応援してやるよ
74デフォルトの名無しさん:2005/09/05(月) 22:33:05
秀○

伏せれてねぇー
75デフォルトの名無しさん:2005/09/05(月) 22:34:03
いや、ダイレクトな字じゃないから一応伏字だw
76デフォルトの名無しさん:2005/09/05(月) 23:11:43
AT○K
77デフォルトの名無しさん:2005/09/05(月) 23:21:07
○157
78デフォルトの名無しさん:2005/09/05(月) 23:35:09
WIND○WS
79デフォルトの名無しさん:2005/09/05(月) 23:43:12
何で伏字スレになってるんだw
しかもわかりやすーw
80デフォルトの名無しさん:2005/09/06(火) 00:06:32
9xでも使えるText○utW。
81デフォルトの名無しさん:2005/09/06(火) 01:07:07
82デフォルトの名無しさん:2005/09/06(火) 02:07:11
DirectInputを使わずにゲームPADの入力を得たいのですが、
検索のためのキーワードとなる単語や関数名など教えて頂けませんか。
83デフォルトの名無しさん:2005/09/06(火) 02:19:39
84デフォルトの名無しさん:2005/09/06(火) 02:29:56
うお、素晴らしい!ありがとうございます。
85デフォルトの名無しさん:2005/09/06(火) 11:08:41
3つのウィンドウから成るアプリケーションを作っています。
最小化ボタンなどを持つメインウィンドウが1つ、
残り2つはボタンを一切持たないタイトルバーだけのサブウィンドウという位置付けです。
メインとなるウィンドウ以外から終了させたくないので、
メインとなるウィンドウだけをタスクマネージャの
アプリケーションタブに表示させるにはどうしたら良いのでしょうか?
よろしければ、教えて下さい。
86デフォルトの名無しさん:2005/09/06(火) 11:26:42
>>85
サブウィンドウをメインウィンドウの被所有ウィンドウにすればいいんでね?
87デフォルトの名無しさん:2005/09/06(火) 11:27:56
88デフォルトの名無しさん:2005/09/06(火) 11:35:04
>>86
被所有ウィンドウとは、サブウィンドウをメインウィンドウの
子ウィンドウとするという事でしょうか?
89デフォルトの名無しさん:2005/09/06(火) 11:52:54
90デフォルトの名無しさん:2005/09/06(火) 13:19:51
親子関係と所有被所有関係を混同してる人大杉
91デフォルトの名無しさん:2005/09/06(火) 13:48:09
だって日本語訳みたらわかんないよ
「オーナーウィンドウ」と「親ウィンドウ」って同じような感じだし
親からみたら子は所有してるわけだし
92デフォルトの名無しさん:2005/09/06(火) 13:51:04
オーナーと親の区別もつかんとは・・・
93デフォルトの名無しさん:2005/09/06(火) 13:55:17
親は所有者を兼ねるというか、
所有者が親である可能性(複雑な家庭事情)もあるとか
94デフォルトの名無しさん:2005/09/06(火) 14:02:17
そこで義母さん登場ですよ
95デフォルトの名無しさん:2005/09/06(火) 14:10:49
■結論■
>>85はDelphiかC++Builder使いなさい。
96デフォルトの名無しさん:2005/09/06(火) 14:46:00
>>89
解決しました。
メインウィンドウを親にしてみたら、
サブウィンドウのZオーダーが上に来てしまったので、
ダミーの透明親ウィンドウを作って回避しました。
助言、どうもありがとうございました。
97デフォルトの名無しさん:2005/09/06(火) 14:47:27
メモリの無駄だな
98デフォルトの名無しさん:2005/09/06(火) 15:15:48
メモリはこれから1Gがデフォになるからモウマンタイ。
99デフォルトの名無しさん:2005/09/06(火) 15:20:24
何もしない状況で指定した時間(たとえば30秒)が経過したら
自動バックアップを取るアプリを考えています。
が、MSDNによるとOnIdleはの第一引数lCountは
アイドル状態になって呼ばれるごとに増えるカウンタですよね?

このOnIdleが呼ばれる時間間隔はどのように取得できるのでしょうか?
それとも他の方法を考える必要があるのでしょうか?

ご助言頂けると幸いです。
100デフォルトの名無しさん:2005/09/06(火) 15:21:12
タイマー使えよ
101デフォルトの名無しさん:2005/09/06(火) 15:22:20
MFCスレ逝け
10299:2005/09/06(火) 15:28:46
スレ違い失礼しました。
逝ってきます。
103デフォルトの名無しさん:2005/09/06(火) 23:01:29
今課題でチャットプログラム作っていて困っているんで教えてください。
メインとなるウインドウ(文字などが表示されるウインドウ)と
チャットを打つためのウインドウで構成されているんですが
チャットのほうがアクティブになるとメインウインドウのほうがアクティブではなくなってしまい
こまっています。チャットウインドウがアクティブの時でもメインウインドウがアクティブになっていてほしいのです。

なんかわかりづらい文章ですいませんが、よろしければ教えてください。
104デフォルトの名無しさん:2005/09/06(火) 23:43:56
両方アクティブってできんの?
常に前面に出すのじゃだめ?

あと質問
AddIPAddressってのあるけどSetしたいときはどうすんの?
105デフォルトの名無しさん:2005/09/06(火) 23:51:05
Releaseで実行ファイルを作って動作を確かめると
プログラムが落ちてしまいます。

落ちるのは、リッチエディットを使った時なのですが、
Releaseするときは、使用しているライブラリriched32.dllなどは
用意しないといけないのでしょうか。
106デフォルトの名無しさん:2005/09/06(火) 23:59:04
>>105
そんなことないから安心してデバッグしろ。
107デフォルトの名無しさん:2005/09/07(水) 00:36:06
>>103
そのメインウィンドウが非アクティブで困る事って何?
108デフォルトの名無しさん:2005/09/07(水) 06:02:52
自前のウインドウからコンソール画面を出さずにコンソールアプリを起動させて
その出力結果などを自前のウインドウ内で表示(Visual Studioの下の方に出るみたいな形)
させるには、どういうアプローチで取り組めば良いのでしょうか?
検索をするにも何がキーワードとなるのかが分かりません。
109デフォルトの名無しさん:2005/09/07(水) 06:20:38
>>108
子プロセスの標準出力を横取りしたい場合
 パイプ:CreatePipe()

子プロセスのコンソールアプリを、コンソールなしで実行したい。
 CreateProcess()について調べる。
 STARTUP構造体のwShowWindowあたりかな。
 9x系サポートしないならdwCreationFlagsもありかと思うけど。
110デフォルトの名無しさん:2005/09/07(水) 06:29:07
wShowWindowで消すと見えないコンソールウィンドウが残って
どんどんリソースが減ってく危険がある
111109:2005/09/07(水) 06:34:55
それってコンソールアプリが終了しなかった場合?

あと訂正

×STARTUP構造体
○STARTUPINFO構造体
112デフォルトの名無しさん:2005/09/07(水) 07:24:25
コンソールを表示させないといえば、DETACHED_PROCESSだろ。
2k以上ならCREATE_NO_WINDOWもあるけどな。
113105:2005/09/07(水) 08:23:23
>>106
ありがとうございます。

解決しました。
Debugではエラーチェックを通過しているところがありました。
114デフォルトの名無しさん:2005/09/07(水) 12:00:54
マウスカーソルの下にあるウィンドウの水平垂直スクロールバーのハンドルを取得したいですが、どのようなAPIを使えばよいでしょうか?
115デフォルトの名無しさん:2005/09/07(水) 12:03:18
垂直スクロールバーにハンドルがあるとは限りません
ハンドルがあったとしたら、逆に「どのウィンドウの」という結びつきはありません。
116114:2005/09/07(水) 12:10:38
>>115
なるほどそうなのですか。
やりたいことは、マウスカーソルの下にあるウィンドウのスクロールバーを動かしたいということだったのですが、
こういうケースではどのようにするものなのでしょうか?
117デフォルトの名無しさん:2005/09/07(水) 12:17:48
118114:2005/09/07(水) 12:31:11
>>117
ウィンドウハンドルさえ取れればメッセージを送ってなんとかなるだろうと思っていたのですが、甘いようですね。
とても参考になります。ありがとうございます。
ただ大変恐縮なのですが、それ以前に「マウスカーソルの下にあるウィンドウを取得」する方法がわからないのです・・・
119デフォルトの名無しさん:2005/09/07(水) 12:38:33
>>114
ChildWindowFromPoint
WindowFromPoint
120114:2005/09/07(水) 13:06:59
>>119
ソレダ!
ありがとうございます!
121デフォルトの名無しさん:2005/09/07(水) 16:19:58
質問です。
自分のコンピューターが参加している
ワークグループ名またはドメイン名を
取得したいのですが、そのような情報を
取得するAPIはありますか?
122デフォルトの名無しさん:2005/09/07(水) 16:42:14
123デフォルトの名無しさん:2005/09/07(水) 20:16:22
こんばんは、よろしくお願いいたします。
ListView を2つwindow に引っ付けているのですが、
どちらのListViewが、選択されているかを知りたいのですが、
どうすれば分かるのでしょうか・
ListView_GetItemState(HWND,item,LVIS_FOCUSED)
でしらべても、両方のリストから、選択されてしまうのです。
124デフォルトの名無しさん:2005/09/07(水) 20:22:24
GetFocus();
125デフォルトの名無しさん:2005/09/07(水) 20:23:59
>>123
Form1.ActiveControl
126デフォルトの名無しさん:2005/09/07(水) 20:25:13
スマン 激しくスレ勘違い。
>>123 どっちも選択されてない場合もあるかもよ
127デフォルトの名無しさん:2005/09/07(水) 20:51:01
>>123です
>>124-126さんありがとうございます。
GetFocus()でできました。
他は、試してないのですが。
128デフォルトの名無しさん:2005/09/07(水) 20:53:20
他は試す必要なし
GetFocusで十分
>>125なんぞVB.NETじゃし
129デフォルトの名無しさん:2005/09/07(水) 21:20:15
>>128
Form1って名前から察するにVCLのTCustomForm.ActiveControlじゃね?
130デフォルトの名無しさん:2005/09/07(水) 21:36:45
じゃDelphiかよ。
Delphiスレに引きこもってろ。こっちにまで出てくんな
131デフォルトの名無しさん:2005/09/07(水) 21:38:14
MS謹製の開発環境を使ってきた俺にしたら
Form1って言われたら真っ先にVBが出てくら

あの糞VB、新規プロジェクト作ったら問答無用でForm1とかダサい名前付けやがんの
132デフォルトの名無しさん:2005/09/07(水) 21:41:53
133デフォルトの名無しさん:2005/09/07(水) 21:43:11
よそでやれや
134デフォルトの名無しさん:2005/09/07(水) 22:04:14
質問です。
LineToで線をメモリDCに書き込んで表示しようと思ったんですが、
表示できないみたいなんです。仕様ですか?
135デフォルトの名無しさん:2005/09/07(水) 22:15:29
表示されないのなら、貴方のやり方が悪いだけです
136デフォルトの名無しさん:2005/09/07(水) 22:29:06
>>134
メモリDCに書くだけじゃ表示しない
137134:2005/09/07(水) 22:43:15
スマソ。説明不足でした。
hBitmap = CreateCompatibleBitmap(hdc , 400 , 500);
hBuf = CreateCompatibleDC(hdc);
SelectObject(hBuf , hBitmap);
こんな感じでビットマップに描画してます。
なぜ描画されないんでしょうか?
138デフォルトの名無しさん:2005/09/07(水) 22:46:53
    /\___/ヽ
   /        :::\
  . | (○),  、(○)、 .:|
  |     |_,     .:::|
.   |    r―-、   .:::::::|   ・・・
   \  `ニニ´  .:::::/
   /`ー‐--‐‐―´\
139134:2005/09/07(水) 22:52:19
ああ。もういいわ。
自分でもよく分からん様なってきた。
逝ってきます。
140デフォルトの名無しさん:2005/09/07(水) 22:59:22
(‥;)レスも読めんのか
141デフォルトの名無しさん:2005/09/07(水) 23:00:58
LineToはどこへ消えた
142デフォルトの名無しさん:2005/09/07(水) 23:02:23
>>111
9xでDOSプロセスを走らせたコンソール窓は
中のDOSプロセスが終了しててもキーを押すまで閉じなかったような。
もちろん隠してたら閉じられない
143デフォルトの名無しさん:2005/09/07(水) 23:05:34
>>142
DOS窓上でEXEを指定して実行したならそうだが、
EXEをダブルクリックで開いたDOS窓なら勝手に消える
144デフォルトの名無しさん:2005/09/07(水) 23:32:23
質問です。Windows XP で、IsWindowUnicode() で FALSE が返るような
コモンコントロール(リストビュー等)を作成する方法がありましたら教えてください。
一般的には RegisterClassExA() と RegisterClassExW() のどちらで
ウィンドウクラスを登録したかで決定されるということですが、システムが
用意しているウィンドウクラスについてはどのような扱いになっているのでしょう。
UNICODE が #define されていたら、自動的に CreateWindowExA() が呼ばれて、その結果
ANSI 版のコントロールが作成されると思っていたのですが、どうやらそうではないようで…。
145デフォルトの名無しさん:2005/09/07(水) 23:45:41
>>143
いや、コマンドプロンプトに戻るのを言ってるんじゃなくて
「この窓を閉じるには何かキーを押してください…」とか何とか出て
止まった記憶があるんだが。
.pifファイルの設定によるんだっけ
146デフォルトの名無しさん:2005/09/08(木) 00:04:24
>>144
無理なんじゃない?
NT系では全てUNICODEとして作られてると思うよ。
147146:2005/09/08(木) 00:07:54
やっぱ無理だわ。
comctl32.dllのインポートテーブル見てみたけどRegisterClassExA自体無かった。
148144:2005/09/08(木) 00:28:06
>>146 >>147
な、なるほど。そういうことですか…。
どうもありがとうございました。
149デフォルトの名無しさん:2005/09/08(木) 03:11:08
>>139
WM_PAINT で呼ばれたウインドウに対して、BeginPaint() を始めたとき
その HDC に、作っておいたビットマップの絵を移せばイイのでは。

BeginPaint() の度に LineTo() とかするのは鬱陶しいので、動画でない
なら予め絵を作っておいて、ウインドウの GWL_USERDATA に持たせておいて
WM_PAINT のときはその絵を取り出して移すと、作った絵であろうと読み込んだ
絵であろうと WM_PAINT の処理が簡単になる。
150デフォルトの名無しさん:2005/09/08(木) 10:59:42
>>147
バカ?
RegisterClassExはuser32だ・・・
そんでもってWもAも両方とも有るわ・・・

>>148
UNICODEのCreateWindowやら使ってやればIsWindowUnicodeはTRUEを返す
ANSIの関数使って作ればIsWindowUnicodeはFalseを返す
151デフォルトの名無しさん:2005/09/08(木) 11:16:14
>>150
すごく勘違いしてるぞ。
152デフォルトの名無しさん:2005/09/08(木) 11:17:45
Win32APIの日本語訳が充実すると一番うれしいのが
ボーランドとすれば、ボーランドがカネをだして
日本語訳をすすめればいいんだ
それくらいのカネはあるだろう
153デフォルトの名無しさん:2005/09/08(木) 11:50:19
DrawTextやTextOutで表示する文の途中で色を変えたいのですが
GetTextExtentPoint32を使って座標を調整しながら色ごとに分けた文を
順番に表示していくしかないですかね…?
例えば、"あいうえお"の"あい"を青、"う"を赤、"えお"を黒で表示したい時です。
154デフォルトの名無しさん:2005/09/08(木) 11:53:54
それしかないです
155デフォルトの名無しさん:2005/09/08(木) 11:57:06
そうですか。どうもありがとうございます。
156デフォルトの名無しさん:2005/09/08(木) 13:00:52
>>150 インポ
157デフォルトの名無しさん:2005/09/08(木) 16:20:17
APIからはちょっと外れるかと思うんですが、次の「URLDownloadToFileW」のコールバック処理について教えてください。
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/apippc/html/ppc_urlmon3_cnxd.asp
コードは、次のような感じで実装しています。
URLDownloadToFileW( NULL , L"data.dat" , L"http://SAVE_URL" , 0 , NULL ) ;
一応これで機能は果たすんですが、エラーや回線の状況などを考慮してコールバックして状況を取得したいんですが、
その方法がわかりません。
サンプルなど、参考になりそうな情報がありましたら、教えてください。
よろしくお願いします。
158デフォルトの名無しさん:2005/09/08(木) 16:22:25
あぁ〜。もういいわ。
自分でもよく分からん様なってきた。
逝ってきます。
159デフォルトの名無しさん:2005/09/08(木) 16:41:47
>>157
COMインタフェイスの実装の仕方はわかる?
160デフォルトの名無しさん:2005/09/08(木) 16:46:00
>>157
・IBindStatusCallbackを実装する
・そいつのインスタンスをURLDownloadToFileの最後に引数に渡す
・ダウンロード経過に応じてIBindStatusCallback::OnProgressが呼ばれるので、そこで好きにする
161157:2005/09/08(木) 17:14:13
159さん
160さん
レスありがとうございます。

>160
>・IBindStatusCallbackを実装する
>・そいつのインスタンスをURLDownloadToFileの最後に引数に渡す
>・ダウンロード経過に応じてIBindStatusCallback::OnProgressが呼ばれるので、そこで好きにする

「IBindStatusCallback」インスタンス化する方法がわかっていません。
とりあえず次のような感じで書いてみましたが・・・

#include <atlfile.h>
class CURLDownloadCB : public CBindStatusCallback<CURLDownloadCB>
{
}

compileしますと、次のようなエラー出てしまい先に進めずにいます。
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\atlctl.h(3403) : error C2039: '_ThreadModel' : 'CURLDownloadCB' のメンバではありません。
c:\prj\test.h(121) : 'CURLDownloadCB' の宣言を確認してください。
c:\prj\test.h(122) : コンパイルされたクラスのテンプレートのインスタンス化 'ATL::CBindStatusCallback<T>' の参照を確認してください
with
[
T=CURLDownloadCB
]
(このあとエラーが続きます)

恥ずかしながら、C++のテンプレートの理解が乏しく解決できずにいます。
参考になりそうなサンプルコードなどがどこかにありましたら紹介いただけないでしょうか。
よろしくお願いします。
162デフォルトの名無しさん:2005/09/08(木) 23:47:04
SHGetFileInfoで取得したシステムイメージリストの中から、マイコンピュータやデスクトップなどのアイコンのインデックスを取得したいです。
マジックナンバー的な定数とかありますか?
もし無い場合、取得する方法はありますか?
よろしくお願いしますえろいお兄さん。
163160:2005/09/09(金) 19:07:28
>>161
私はATLを使わずに自前でIBindStatusCallbackを実装したクラスを作りました。
class CBindStatusCallbackImpl : public IBindStatusCallback {.…}
使うときはnewしたオブジェクトをAPIに渡すだけです。

ATLのCBindStatusCallbackを使ったサンプルであればMSDNにあるようです。
私は使ったことがありませんが、一度見てみてはどうでしょうか。

ASYNC サンプル : データの非同期ダウンロード
ttp://www.microsoft.com/japan/msdn/library/ja/vcsample/html/_sample_atl_ASYNC.asp?frame=true
164デフォルトの名無しさん:2005/09/09(金) 21:29:41
165デフォルトの名無しさん:2005/09/10(土) 13:23:34
SetWindowsHookExでコンソールアプリがフックできないんですけど????
注意点とかあれば教えてください。
166デフォルトの名無しさん:2005/09/10(土) 13:28:08
フックの仕方が悪いだけじゃろ
167名無しさん@そうだ選挙に行こう:2005/09/10(土) 17:35:28
>>165
たしかスレッド単位でフックしたと思ったから理論上はコンソールアプリにでもフックできる…はずだが
キーボードとかマウスメッセージなんてのをフックしようとしてないだろうな
そもそも単なるコンソールアプリだけであればメッセージそのものが無関係というか…

あと、SetWindowsHookExするのはDLLですよってのは大丈夫だな、きっと。
168名無しさん@そうだ選挙に行こう:2005/09/10(土) 18:48:11
>>167
もちろんDLLを作ってる。
コンソールアプリでなければフックできてる。
169名無しさん@そうだ選挙に行こう:2005/09/10(土) 19:28:09
ウィンドウの外にマウスカーソルが出たとき、
ドラッグ中だったらそれを解除することがやりたいのですが
なにかいい方法はありませんか。
170165:2005/09/10(土) 19:57:26
そーすうp
http://with2ch.net/up/data/1126349655.zip

GetProcAddressをAPIフックします。
GetProcAddressが呼ばれたときにOutputDebugStringで出力するだけのものです。
実行すると、タスクトレイに入り、左クリックでメニューを出して終了するまで常駐し続けます。
しかし、コンソールアプリには効果がありません。
どうにかできませんかね。
171名無しさん@そうだ選挙に行こう:2005/09/10(土) 23:27:29
>>168
user32.dllを使わないプロセスはSetWindowsHookExやAppInit_DLLsでは
フックできません。CreateRemoteThreadでどうぞ
172名無しさん@そうだ選挙に行こう:2005/09/10(土) 23:29:24
>>169
ドラッグ開始時にSetCaptureすればその後のマウスメッセージはすべて
キャプチャしたウィンドウに来るのでWM_MOUSEMOVEでウィンドウ外に出たかどうか
判定できます。
173165:2005/09/11(日) 00:29:37
>>171
WindowsMEで使う予定です。
CreateRemoteThreadが使えません。

WriteProcessMemoryでターゲットを書き換えて、
LoadLibraryでuser32.dllをロードさせた後ならSetWindowsHookEx
でフックできるでしょうか。
174名無しさん@そうだ選挙に行こう:2005/09/11(日) 00:46:23
>>173
> WindowsMEで使う予定です。
じゃああとはDebugActiveProcessくらいしかないなあ。
デバッガを切り離せないからDebugActiveProcessはダメなら
コンソールプログラムをフックできる移植性のある公開された方法はないと思う。
> LoadLibraryでuser32.dllをロードさせた後なら
どうやるつもりなのか知らんけどuser32.dllをロードさせられるんだったら
そこで直接ターゲットのDLLをロードしたほうが早いんじゃない?
175デフォルトの名無しさん:2005/09/11(日) 06:24:46
質問です。
wavを鳴らそうと思ったのですが、再生した瞬間だけがくっと処理落ち(?)します。
mciSendCommand, WaveOut〜, PlaySoundをそれぞれ試してみたのですが、同じように処理落ちしました。
またマルチスレッドも使ってみましたが、やはり処理落ちしました。
試しにHSPで似たようなことをすると、ちゃんと処理落ちせずに再生できるようなので環境の問題ではないかと思うのですが、
具体的にどうしたら処理落ち回避できるのか見当もつかず途方にくれているしだいです。
処理落ちを回避するにはどうしたらいいでしょうか? よろしくお願いします。
176名無しさん@そうだ選挙に行こう:2005/09/11(日) 06:56:45
>>172

>WM_MOUSEMOVEでウィンドウ外に出たかどうか 判定
SetCapture()の後、WM_MOUSEMOVE中にPtInRect()を使ったらできました。
ありがとうございます。

WM_MOUSEMOVEに色々処理を書くと動作が重くなったり
CPUの使用率が上がってしまうと思うんですが
これはしょうがないんでしょうか。
177名無しさん@そうだ選挙に行こう:2005/09/11(日) 07:59:05
WM_MOUSEMOVEに書いたらとか関係無いから
178名無しさん@そうだ選挙に行こう:2005/09/11(日) 09:29:51
>>175
SND_MEMORYフラグ立ててやれば処理落ちせんと思うが‥‥
179178:2005/09/11(日) 09:32:59
VCL混じりのコードでいえばこんな感じな

void __fastcall TForm1::PlayResourceSound(const AnsiString& name)
{
//TODO: この下にコードを追加してください
TResourceStream* resource = new TResourceStream(reinterpret_cast<int>(HInstance), name.c_str(), "WAVE");
sndPlaySound(reinterpret_cast<char*>(resource->Memory), SND_MEMORY | SND_SYNC);
delete resource;
}
180名無しさん@そうだ選挙に行こう:2005/09/11(日) 09:48:08
>>179
あらかじめTMemoryStreamに読み込んでおいたらどうなるの?
181名無しさん@そうだ選挙に行こう:2005/09/11(日) 10:00:45
GetWindowText()であるウィンドウの文字列を受け取ることができますが、
文字列を受け取らずに、文字の長さだけ受け取りたい場合のapiはありますか?
182名無しさん@そうだ選挙に行こう:2005/09/11(日) 10:08:44
全然探してないだろ
MSDNでその1つ2つ下にあるAPIが見えませんか?
183名無しさん@そうだ選挙に行こう:2005/09/11(日) 11:35:06
>>180
TResourceStreamもTMemoryStreamもTCustomMemoryStreamの派生クラスだろうが。
MemoryプロパティはTCustomMemoryStreamのメンバだし。
184175:2005/09/11(日) 12:55:32
sndPlaySound(lpSound, SND_MEMORY | SND_ASYNC);
SND_MEMORY | SND_SYNC
SND_MEMORY | SND_ASYNC | SND_NOSTOP
SND_MEMORY | SND_SYNC | SND_NOSTOP
とか多少いじくってみましたが変化なしでした。
ただSND_MEMORY | SND_ASYNC | SND_LOOPで最初に一回だけ再生してやると
でれれれれれれれって感じでスムーズに連続再生されます。

もしかしてPlaySoundの連続使用は拙かったでしょうか?
185175:2005/09/11(日) 13:30:26
VC6.0なのですがreleaseでF5キーでデバッグ実行をしていたのがまずかったようで、
ctrl+F5で普通に実行するとがくがくすることもなく綺麗に再生されました。
うーん。

大変お手数をかけて申し訳ありませんでしたorz
ちなみにdebugモードで実行すると処理落ちどころか目も当てられな
186名無しさん@そうだ選挙に行こう:2005/09/11(日) 13:32:17
    _, ._
  ( ゚ Д゚)   ガシャ
  ( つ O. __
  と_)_) (__()、;.o:。
          ゚*・:.。
187名無しさん@そうだ選挙に行こう:2005/09/11(日) 15:34:34
        /つ_∧
  /つ_,∧ 〈( ゚д゚)
  |( ゚д゚) ヽ ⊂ニ) こりゃひどい
  ヽ__と/ ̄ ̄ ̄/ |
   ̄\/___/ ̄ ̄
188名無しさん@そうだ選挙に行こう:2005/09/11(日) 16:59:51
システムで設定されている警告音を鳴らすAPIってあるんでしょうか?
コントロールパネルのサウンドで設定している「メッセージ(警告)」とかのアレです。
189名無しさん@そうだ選挙に行こう:2005/09/11(日) 17:02:21
MessageBeep
190188:2005/09/11(日) 17:05:37
>>189
どうもありがとう
191名無しさん@そうだ選挙に行こう:2005/09/11(日) 19:15:00
VS.NET2003、リソース関係の質問なのですが、
IDR_IMAGE1 IMAGE "p1.pic"
で組み込んだリソースにアクセスしようと思い
FindResource(hInstance, TEXT("IDR_IMAGE1"), TEXT("IMAGE"));
と書いたのですが NULL が返って来てしまいました

その後、試行錯誤で
第1引数を hInstance -> NULL に
第2引数を TEXT("IDR_IMAGE1") -> MAKEINTRESOURCE(IDR_IMAGE1)
第3引数を TEXT("IMAGE") -> RT_RCDATA
としたのですが、未だ有効なリソースハンドルを取得できないでいます
実行ファイルのサイズからは、p1.pic は組み込まれているとは思うのですが、何か他に必要な事柄があるのでしょうか?

あと VS.NET2003 は jpg をリソースの中に入れようとすると強制的に 256 色 BMP に変換するのがウザイです
192名無しさん@そうだ選挙に行こう:2005/09/11(日) 19:43:57
.picってなんだ?
193191:2005/09/11(日) 19:55:08
jpg で入れると 256 色 BMP に変換されてしまうんで、適当な拡張子に変えて回避したんです
194名無しさん@そうだ選挙に行こう:2005/09/11(日) 20:01:07
TEXT()じゃなくて _TEXT() じゃなかったか?
195191:2005/09/11(日) 20:05:50
TEXT の筈。TEXTA(quote) が L##quote で TEXTW(quote) が quote に置換されるマクロ。
文字列直接入れてる解説サイトもあったんで、これが直接の原因ではないとは思うんですが……

……ソース UP した方が良いですか?
196名無しさん@そうだ選挙に行こう:2005/09/11(日) 20:17:29
IDR_IMAGE1がresource.hで#defineされてるんだろ
197名無しさん@そうだ選挙に行こう:2005/09/11(日) 20:21:11
ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vccore/html/_core_generic.2d.text_mappings_in_tchar..h.asp

        どちらも定義無し _MBCS      _UNICODE
_TCHAR      char      char        wchar_t
_TINT        int       int         wint_t
_TSCHAR     signed char  signed char   wchar_t
_TUCHAR     unsigned char unsigned char  wchar_t
_TXCHAR     char       unsigned char wchar_t
_T または _TEXT 影響なし    影響なし     L(次の文字または文字列を対応する Unicode に変換する)


OK?
198名無しさん@そうだ選挙に行こう:2005/09/11(日) 20:25:13
>>193
これじゃね?
拡張子変えてもファイルの内容が変わるわけじゃないのはわかってるよね?
199191:2005/09/11(日) 20:28:44
>>197
ttp://66.102.7.104/search?q=cache:j-h9rzifXsUJ:www2.ocn.ne.jp/~cbmaho/homepage/vc/Help/WINDOWSH.htm+%22%23define+TEXT(quote)%22&hl=ja&inlang=ja
大丈夫。だとおもう。

>>198
だから .jpg でリソースのインポートをすると bmp に変換されちゃうんだって
任意のファイル形式を入れられるんだから、ファイル名を変えても動作しなくちゃおかしい筈
200191:2005/09/11(日) 20:35:14
>>195
ごめん。TEXTA と TEXW が逆だった……ってかもしかしたら直接 _TEXT を定義してたかも知んないけど
201名無しさん@そうだ選挙に行こう:2005/09/11(日) 20:43:34
とりあえず、自身のリソース内にあるのなら、第一引数は自分のHINSTANCE

FindResource(hInstance, TEXT("IDR_IMAGE1"), TEXT("IMAGE"));
これを
FindResource(hInstance, TEXT("IDR_IMAGE1"), RT_RCDATA);
でやって見てくれる?
202名無しさん@そうだ選挙に行こう:2005/09/11(日) 21:17:16
RT_BITMAPでもだめ?
203名無しさん@そうだ選挙に行こう:2005/09/11(日) 21:18:37
複数のディレクトリを監視して、どちらかに指定のファイルが生成されたら・・・ってのをやりたいんですが、どうすればいいでしょうか。
ReadDirectoryChangesW, FindFirstChangeNotification + WaitForMultipleObjects など見てみましたが、どうも複数ディレクトリに指定したファイルを・・・には向かないような感じです。

FindFirstFile, FindNextFile をぐるんぐるんまわすのが楽そうなんですが、これだと処理的に無駄が増えてしまうんでしょうか?
この場合、検索にワイルドカードは使用しません。
204191:2005/09/11(日) 21:18:50
だめですた orz

ソース上げてみます
ttp://www2.ranobe.com/test/src/up2724.zip.html
205名無しさん@そうだ選挙に行こう:2005/09/11(日) 21:25:01
>>203
>どうも複数ディレクトリに指定したファイルを・・・には向かないような感じです。

そう感じた理由は?
206名無しさん@そうだ選挙に行こう:2005/09/11(日) 21:33:24
あ・・・すみません、シングルスレッドでやってるので、
ReadDirectoryChangesW の場合片方のディレクトリしか監視できず、
FindFirstChangeNotification の場合ファイルが見つかった後また別のファイルを監視したい時に間が生じるのではないかと。
できればスレッド一つで済ましたいんですが、スレッド増やしたほうが現実的でしょうか。
207名無しさん@そうだ選挙に行こう:2005/09/11(日) 21:40:25
ttp://nienie.com/~masapico/api_ReadDirectoryChangesW.html
見る限りでは、スレッド1つでも平気なような気がするけど
208名無しさん@そうだ選挙に行こう:2005/09/11(日) 22:55:00
>>204
HRSRC hImgRc = FindResource(NULL, MAKEINTRESOURCE(IDR_IMAGE1), "IMAGE");
でやってみな?
209名無しさん@そうだ選挙に行こう:2005/09/11(日) 23:03:01
>>208
thx。やっと有効なハンドルが取得できました m(_ _)m

"IDR_IMAGE1" じゃ駄目だったのか……
ちなみに "IMAGE" を RT_RCDATA や RT_BITMAP に変えたらアウトでした
相変わらず挙動が不明ですな orz
210デフォルトの名無しさん:2005/09/12(月) 02:10:59
質問です。
VB6でメモリ上にテキストを描画してそれをフォーム上にコピーしてるんですが
ビットマップ作成時のサイズを設定するためにGetTextExtentPoint32を行うと
フォーム上に表示されたテキストにアンチエイリアスがかかりません。
GetTextExtentPoint32を行わないとアンチエイリアスがかかります。
なぜなんでしょうか?

hMemDC = CreateCompatibleDC(Form1.hdc)
SetBkMode hMemDC, OPAQUE
SetBkColor hMemDC, RGB(255, 0, 0)
SetTextColor hMemDC, RGB(255, 255, 0)
hFont = CreateFont(48, 0, 0, 0, _
             FW_NORMAL, 0, 0, 0, _
             DEFAULT_CHARSET, _
             OUT_DEFAULT_PRECIS, _
             CLIP_DEFAULT_PRECIS, _
             ANTIALIASED_QUALITY, _
             DEFAULT_PITCH Or FF_DONTCARE, _
             "MS Pゴシック")
SelectObject hMemDC, hFont
GetTextExtentPoint32 hMemDC, txt, LenB(txt), udtSIZE
hBitmap = CreateCompatibleBitmap(Form1.hdc, udtSIZE.cz, udtSIZE.cy)
SelectObject hMemDC, hBitmap
TextOut hMemDC, 0, 0, txt, LenB(StrConv(txt, vbFromUnicode))
BitBlt Form1.hdc, 0, 0, udtSIZE.cx, udtSIZE.cy, hMemDC, 0, 0, SRCCOPY
211デフォルトの名無しさん:2005/09/12(月) 02:56:05
textやRichEditに表示されている任意サイズのフォントの高さを得るにはどうすれば良いでしょうか?
212デフォルトの名無しさん:2005/09/12(月) 03:45:12
GetTextMetrics
213デフォルトの名無しさん:2005/09/12(月) 06:51:43
>>209
不明じゃないだろ
TYPE IMAGEのリソースとして取り込んでるんだから、
RCDATAやらBITMAPやら他のタイプ指定してもダメなんは当たり前だよ

ちゃんとIDR_IMAGE1で登録してるのに、名前指定で取れないのが不思議だが
まぁ、文字列での指定より整数識別子での指定を推奨してるし、いいんじゃね?
214デフォルトの名無しさん:2005/09/12(月) 20:41:38
GetTextMetricsはフォントを変更するとデータが成城じゃなくなるからダメですた。

RichTextで行間変えるにはどーすればいいんですかね
215デフォルトの名無しさん:2005/09/12(月) 20:58:57
PARAFORMAT2
216デフォルトの名無しさん:2005/09/12(月) 21:17:59
>210
よくわからないが、GetTextExtentPoint32を無効にしたときの
コードを出せ、といいたい。
217デフォルトの名無しさん:2005/09/12(月) 22:06:10
>>216
無効にしたときのコードは、
GetTextExtentPoint32をコメントにして
CreateCompatibleBitmapの第2、3引数に
数値を直接入れてやりました。
218デフォルトの名無しさん:2005/09/13(火) 02:18:08
拡張子に関連付けられたアイコンのファイル名とインデックスを取得するにはどうすればいいでしょうか?
219デフォルトの名無しさん:2005/09/13(火) 04:44:06
・メモリ使用量
・メモリ使用量デルタ
・最大メモリ使用量
・ページフォルト
・ページフォルトデルタ
・仮想メモリサイズ
・ページプール
・非ページプール

タスクマネージャにて見られる、これらの項目について解説してる文書などはありますか?
220デフォルトの名無しさん:2005/09/13(火) 08:15:36
221デフォルトの名無しさん:2005/09/13(火) 08:54:59
>>218
SHGetFileInfo
222デフォルトの名無しさん:2005/09/13(火) 15:46:41
USB仮想COMポートをハブ経由でPCに接続して、CreateFileでOpenすると
8割方エラーになり、最悪ハング(フリーズ)します。
ハブ接続故にCOMポートからのレスポンスに遅れがある為?ではないかと
思うのですが、何か好い解決策はありませんか?

ちなみに、ハブ無しでPCに直接接続した場合はエラーしません。
(あたりまえですが。。。)
223デフォルトの名無しさん:2005/09/13(火) 16:16:21
ハブ入れても動くと思うけどなー
ハブかそのデバイスがなんかおかしいのかね・・・

ハブを変えてみるとか、
バスパワーハブなら、セルフパワーにしてみるとかで、様子は変わらない?
224218:2005/09/13(火) 16:22:15
>>221
SHGetFileInfo('C:\Hoge.txt', 0, sfi, SizeOf(sfi), SHGFI_ICONLOCATION);
としても、sfi.szDisplayName は空(szDisplayName[0] が NULL) でした。
与えるパスがフォルダの場合は成功するのですが・・・
225デフォルトの名無しさん:2005/09/13(火) 16:27:45
>>222
そのハブが悪い。別ので試してみ?
226デフォルトの名無しさん:2005/09/13(火) 16:49:18
>>223さん
>>225さん

レス、ありがとうございますm(__)m

使っているハブはELECOM社のU2H-G4SSVと、LOAS社のUH-284Wで、
ELECOMの方が若干エラーする確率が低いような気がしますが、
どちらも基本的には同じ状況です。
また、どちらともセルフパワーで使用しており電流容量的には
問題無しです。

何か他に試してみることありますか?
227デフォルトの名無しさん:2005/09/13(火) 17:15:51
OSが98/ME使ってるなら、2k/XPにしてみるとか
メーカーのサイトに、新しいドライバないかとか

テキトーなことしか言えないなー、スマソ
228デフォルトの名無しさん:2005/09/13(火) 18:47:07
ListViewの拡張スタイルで表示した罫線の色は変えれませんか?

ListView_SetExtendedListViewStyleで
拡張スタイルにLVS_EX_GRIDLINESです
229デフォルトの名無しさん:2005/09/13(火) 18:48:22
BITMAPリソースを読み込むにはLoadBitmapがありますが
JPGを読み込むにはどうすればよいでしょうか?
230デフォルトの名無しさん:2005/09/13(火) 18:50:31
ペゾルド本について質問させてください。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/922.txt
上の本に載っていたソースを忠実に打ったのですが、WM_PAINTメッセージの処理を無限に行ってしまいます。
何度も見ながらチェックしていますがどこを打ち間違えたのかさっぱりわかりません....。
どなたかどこが異なっているか指摘をお願いします。
231デフォルトの名無しさん:2005/09/13(火) 18:54:47
打つから間違うんだ。
コピーしろ。
232デフォルトの名無しさん:2005/09/13(火) 18:59:20
caseのdefaultが抜けてる
233デフォルトの名無しさん:2005/09/13(火) 19:09:52
>>229
OleLoadPictureとかGDI+とか
234デフォルトの名無しさん:2005/09/13(火) 19:13:02
>>230
オリジナルとかなり違ってるな
メッセージループの間違いが致命的
235デフォルトの名無しさん:2005/09/13(火) 19:31:54
>>229
TResourceStream* res = new TResourceStream(HInstance, "JpegImg1", "RT_RCDATA");
TJpegImage::LoadFromStream(res);
236230:2005/09/13(火) 19:36:09
かなり根本的なミスをしていました....。
DispatchMessageが抜けていました。
ありがとうございました。
237デフォルトの名無しさん:2005/09/13(火) 22:43:07
日本語入力するときとかって、
最初にひらがながわらわら出てきて、
スペースを押して、変換を確定しますよね。
私が知りたいのは、その変換を確定したこ
とを知らせるWM_XXXです。

MSDNで調べているのですが、なかなか知
りたい情報にたどり着けません。

なにか検索のヒントとなる単語を教えていただけませんか?
238デフォルトの名無しさん:2005/09/13(火) 22:46:12
WM_IME_XXX
239デフォルトの名無しさん:2005/09/13(火) 22:47:39
確定するとWM_CHARがわらわらとやってきます。
240デフォルトの名無しさん:2005/09/13(火) 23:07:46
WM_IME_COMPOSITION
WM_IME_NOTIFY
WM_IME_ENDCOMPOSITION
WM_IME_SETCONTEXT

とりあえず、こんだけ見つけてきました。
これから調べてきます。
ヒントありがとうございました。
241デフォルトの名無しさん:2005/09/13(火) 23:22:34
SetFilePointer( hFile, 0, NULL, FILE_END ) とやると、ファイルポインタはファイルの最後に
移動する、という理解でいいんだよね?(実際、やってみると、そうなっているようだし)

いや、MSDNには
>Note You can use SetFilePointer to determine the length of a file. To do this,
>use FILE_END for dwMoveMethod and seek to location zero.
とあって、「seek to location zero」(←先頭に移動???)ってのが気になって...
242デフォルトの名無しさん:2005/09/13(火) 23:35:35
ちゃんと訳して理解しろ。
243デフォルトの名無しさん:2005/09/13(火) 23:40:41
ちゃんと訳すと、どうなるん?
244デフォルトの名無しさん:2005/09/13(火) 23:44:26
ちゃんと訳さないとこうなる。

MSDNの日本語訳
>SetFilePointer 関数を使って、ファイルの長さを判断することもできます。
>この場合、dwMoveMethod パラメータで FILE_END を指定し、
>位置 0(ファイルの先頭)への移動を行います。

FILE_ENDの0位置だから、ファイルの最後が正しいと思われ。
245デフォルトの名無しさん:2005/09/13(火) 23:45:02
お前が見当違いな注釈に悩んでいるのがわかる。
246デフォルトの名無しさん:2005/09/13(火) 23:56:39
脳みそに焼き付けろですぅ おまえはそのファイルの長さを測定するするため、SetFilePointerを使うことが可能なのですーぅ
dwMoveMethodにFILE_ENDを指定、そしたら位置0へシークするですぅ

キモイ訳を考えてるうちに先を越されるは、MSDN日本語版に掲載されてるわで散々ですわ
http://www.microsoft.com/japan/msdn/library/ja/jpfileio/html/_win32_setfilepointer.asp
247デフォルトの名無しさん:2005/09/13(火) 23:59:23
修行が足りないな
248デフォルトの名無しさん:2005/09/14(水) 00:00:24
うーむ、【ファイルの先頭】 の注釈は、どこから湧いてきたんだろ('A`)
249デフォルトの名無しさん:2005/09/14(水) 00:03:08
>>248
訳した人が>>241と同レベルだったんじゃね?
250デフォルトの名無しさん:2005/09/14(水) 00:04:58
日本語版でおかしな訳が乗るのは、もう変わることのない仕様です。

何を訳しているのか知らない人に外注出してんだろーねー
251デフォルトの名無しさん:2005/09/14(水) 00:29:10
訳す人もある程度Win32知ってないとだめだね
252デフォルトの名無しさん:2005/09/14(水) 01:22:54
昔はMSの新入社員に訳させていた。余りにも誤訳が多いので、外注するようになった。
根本的な解決になっていないらしい。
253デフォルトの名無しさん:2005/09/14(水) 02:21:53
>>252
新入社員にやらせることじゃないだろ…
本国はMSDNを新人に書かせてたり社外に丸投げしてるのか? そんなわけないだろうに
254デフォルトの名無しさん:2005/09/14(水) 04:19:06
スクロールバー、なんかもう、なんかもう、ああぁぁぁ......っ。
ごちゃごちゃごちゃっ............................................。
255デフォルトの名無しさん:2005/09/14(水) 05:09:10
windowsにwinsockはありますか?
256デフォルトの名無しさん:2005/09/14(水) 05:20:56
   ∩___∩         |
   | ノ\     ヽ        |
  /  ●゛  ● |        |
  | ∪  ( _●_) ミ       j
 彡、   |∪|   |        J
/     ∩ノ ⊃  ヽ
(  \ / _ノ |  |
.\ “  /__|  |
  \ /___ /
257デフォルトの名無しさん:2005/09/14(水) 05:28:53
可哀相に、winsockが何かもわかって無いんだな
258デフォルトの名無しさん:2005/09/14(水) 05:31:07
Windows Socket
259デフォルトの名無しさん:2005/09/14(水) 07:40:44
windowsにマインスイーパはありますか?
260デフォルトの名無しさん:2005/09/14(水) 08:30:03
windowsにWINAPIはありますか?
261デフォルトの名無しさん:2005/09/14(水) 09:01:07
WindowsにC言語はありますか?
262デフォルトの名無しさん:2005/09/14(水) 09:21:12
Windowsに真心はありますか?
263デフォルトの名無しさん:2005/09/14(水) 09:50:38
>>255 >>259-262
すべてあります。
264デフォルトの名無しさん:2005/09/14(水) 10:04:28
>>261
標準では付いていません。
>>262
相性問題が多発しているのでサポート外です。
265デフォルトの名無しさん:2005/09/14(水) 11:10:12
Windowsにバグはありますか?
266デフォルトの名無しさん:2005/09/14(水) 11:11:26
Windowsにバグはありません。すべて、仕様です
267デフォルトの名無しさん:2005/09/14(水) 12:14:21
Windowsにマニフェストはありますか?
268デフォルトの名無しさん:2005/09/14(水) 12:21:58
あるよ

今日からあなたもLUNAスタイル!! 月に代わっ(ry
269237 == 240:2005/09/14(水) 14:13:29
ttp://www.ne.jp/asahi/oh/landd/prog_html/prog64.html
ここから見つけてきました。

>IME関連のメッセージで
>開始と終了を示すのは以下のふたつです。

>WM_IME_STARTCOMPOSITION
>変換を開始した時のみこのメッセージが送られます。

>WM_IME_ENDCOMPOSITION
>変換を終了した時のみこのメッセージが送られます。

変換終了メッセージは
WM_IME_ENDCOMPOSITION
なんですね。
ためになりました。
270デフォルトの名無しさん:2005/09/14(水) 14:19:54
ダイアログボックスから浮動小数を取得するにはどうすればよいのですか?
整数を取得するには GetDlgItemInt を使用すればいいのですが
浮動小数がわからなくて
271デフォルトの名無しさん:2005/09/14(水) 14:24:29
>>270
APIは用意されてない

GetDlgItemTextで文字列として取得して変換
272270:2005/09/14(水) 15:25:58
>>271
答えてくれてありがとうございました。

>GetDlgItemTextで文字列として取得して変換
とあるのですが、C言語の atof のようなAPIはあるのでしょうか?
答えてもらって今までずっとググっていたんですが 見つけられなくて
273デフォルトの名無しさん:2005/09/14(水) 15:27:20
>>218
ExtractAssociatedIcon()ってのがある。
バグ持ちなのか、期待通りの動作をしてくれないんで使えないけどな。
結局、同等の関数を自作して実装してるよ。
274デフォルトの名無しさん:2005/09/14(水) 15:44:24
>>272
atof使えば良いかと・・・
275デフォルトの名無しさん:2005/09/14(水) 16:05:04
Cを使ってるとは限らないぞ
276274:2005/09/14(水) 16:20:02
>>275
それもそうだな

>>272
ともあれ、atofのようなAPIはないはずなんで、
何とか自分でがんがれ
277デフォルトの名無しさん :2005/09/14(水) 16:27:41
Outlook Express のメールを総て.DBXから.emlに変換をするアプリを作りたいです。
アドレス帳も.wabファイルを読み込んで、アドレスだけテキストに変換したいのです。
こういうプログラムを作りたいのですが、どうやって良いのかさっぱり分かりません。
手動で出来るのは分かるのですが、プログラムだとどうやるのでしょう?
278デフォルトの名無しさん:2005/09/14(水) 16:28:32
Cを使ってるとは限らないが、
相当するAPIなぞ無いのだから、
どのみちatofのような各言語に用意された型変換関数を使うしかあるまい
279デフォルトの名無しさん:2005/09/14(水) 16:29:22
DBXやWABの構造をグーグルやら駆使して暴き出せ
280270:2005/09/14(水) 17:18:33
全部 masm で作ろうかなと思ってプログラミングしてたんですけど
API には atof のようなものはないんですね・・・

281デフォルトの名無しさん:2005/09/14(水) 17:29:36
masm使ってるとは思えないヘタレ発言
282デフォルトの名無しさん:2005/09/14(水) 18:31:55
ReadProcessMemoryで数千byteの中身を4byteずつみていきたいんですが、
for(i=0;i<1000;i++){
ReadProcessMemory(hProcess, (LPVOID)dwPtr, &dwMl, 0x4, NULL);
printf("%x\",dwMl);
dwPtr = dwPtr + 0x4;
}
こんな感じにするとめちゃめちゃメモリにアクセスする回数増えるので
ReadProcessMemory(hProcess, (LPVOID)dwPtr, &dwMl, 0xFA0, NULL);
って感じに一気に読み込んでから4byteずつ見た方がいいかなーって思ってるんですが、
どうやって4byteずつ読み込んでいくかわかりません。
なんかうまいやり方ありませんか?
283デフォルトの名無しさん:2005/09/14(水) 18:35:28
ポインタ知らない人かと思ったら
ポインタ使ってるじゃないか
284デフォルトの名無しさん:2005/09/14(水) 18:58:10
考えてみればDWORDじゃ0xFA0分の中身読み込めないから戻り値0になってましたorz
char[4000]とかにして4文字ずつとってatoiすればいいのかな・・・
285デフォルトの名無しさん:2005/09/14(水) 19:02:02
そーゆーのはもうWin32APIの質問じゃありませんから。
286デフォルトの名無しさん:2005/09/14(水) 19:05:29
すんません。自分で何とかします。
287デフォルトの名無しさん:2005/09/14(水) 20:07:30
cpuの温度を返す関数ってありますか?
288デフォルトの名無しさん:2005/09/14(水) 20:14:54
GetTemp
289デフォルトの名無しさん:2005/09/14(水) 20:16:49
ごめん低脳スレとまちがえた
290デフォルトの名無しさん:2005/09/14(水) 22:15:03
WMIで出来ないかな?
291218:2005/09/15(木) 02:01:41
>>273
取得したいのはアイコンハンドルではなくて、アイコンのファイル名とインデックスです。
292273:2005/09/15(木) 03:25:15
>>291
おまいさんはMSDNに目を通したのかと小一時間(ry

If the icon is extracted from an associated executable file,
the function stores the full path and file name of the executable file in the string pointed to by lpIconPath,
and stores the icon's identifier in the WORD pointed to by lpiIcon.

って書いてあるだろ。

・・・まぁ、>>273の通りなんで、結局は役に立たないけどな。
293287:2005/09/15(木) 07:02:21
WMI・・面白いと思ったけど温度の関数ないなぁ・・もう少し調べてみます
294デフォルトの名無しさん:2005/09/15(木) 09:34:28
>>277
たとえばMAPI?

見てないけど。
FILE: Windows Address Book (WAB) Documentation
http://support.microsoft.com/default.aspx?scid=kb;en-us;266347
295デフォルトの名無しさん:2005/09/15(木) 12:35:09
>>287
それで何をしたいのか?
もし、CPUの温度を表示する様なツールを作りたい、と言う事なら、
電子温度計のセンサ部分を直接CPUに付けた方が便利だと(以下略
296デフォルトの名無しさん:2005/09/15(木) 14:17:52
マウスホイールのチルトに対応するにはどのメッセージを捕まえればよいのでしょうか?
297デフォルトの名無しさん:2005/09/15(木) 14:46:29
win98 での話で気が引けるが、StretchDIBits() で 2240x1488 から 73x49 に
縮めようとすると失敗する。(winXP ではOK)
拡大ではバグの資料が MSDN に見つかったが、縮小では見つからない。
どれくらいの比率の縮小で失敗するか、ご存知の方どうか教えて下さい。
(失敗したら自分で SetPixel() で間引いて HDC に移しているが遅い。
尚、縮小はサムネイルを作るため。写真の枚数でサイズを決めて縮小して
いるが、たまたま写真の枚数が多くて、不具合がばれた。)
298デフォルトの名無しさん:2005/09/15(木) 15:06:55
>>295
そんなことしなくても、たいていのCPUには
温度センサーついてるだろw
299デフォルトの名無しさん:2005/09/15(木) 15:11:58
マザーボードによって取得方法が違うからねぇ
300デフォルトの名無しさん:2005/09/15(木) 16:09:41
>>297
知らんがドライバ次第だったりするんじゃないか?

つか、せめて自分で画像いじるときはDIBSectionぐらい使おうぜ。
301287:2005/09/15(木) 17:53:53
>>295
いや、熱暴走が気になるから表示できて警告できるソフトみたいなのつくろうかなーとか思っただけなんですが・・

>298
そなの?
302デフォルトの名無しさん:2005/09/15(木) 18:03:10
普通にMBMとか使えばいいだけじゃないのか?
303デフォルトの名無しさん:2005/09/15(木) 18:07:03
あのDLLってソース公開されてたはず

あれだよあれ、名前が出てこない・・・もう歳か・・・・
304デフォルトの名無しさん:2005/09/15(木) 18:42:51
>>301
MotherBoardMonitorでぐぐれ。その方が早い。
305デフォルトの名無しさん:2005/09/15(木) 18:51:23
スレ汚しすみません。

親ウィンドウと子ウィンドウを作って、それぞれのWM_CREATEに入った回数を数えてみたのですが、
親のWM_CREATEにはなぜか二回も入るのに、子のやつには一回も入りません orz
両方とも一回ずつ入るようにしたいのですが、
これは子ウィンドウの作り方が決定的に間違っているのでしょうか?

すみませんが、どなたかお願いします m(__)m

http://aploda.com/dl.php?mode=pass&file_id=0000028955
306デフォルトの名無しさん:2005/09/15(木) 19:07:08
同じウィンドウプロシージャを使っていたりしませんか?
307306:2005/09/15(木) 19:09:14
あ、ソースアップされていましたね...。
308デフォルトの名無しさん:2005/09/15(木) 19:09:55
>>305
同じWinProcを参照してるから。
子のWinProcを使いたいなら、フックするのではなく、
子のWinProcを登録したウィンドウクラスを作成し、それでCreateしてみれ。
309305:2005/09/15(木) 19:12:51
もしかして子のWNDCLASS構造体を作って
色々ぶち込むんですかね?

さっそくやってみまっす!!
310306:2005/09/15(木) 19:12:59
同じウィンドウクラスを使っていますよ。
311デフォルトの名無しさん:2005/09/15(木) 19:13:13
memcpyと置き換えができるAPIはありますか?
312デフォルトの名無しさん:2005/09/15(木) 19:14:00
初心者な質問でごめんなさい。
最近APIの勉強を始めて練習がてらにウィンドウをスクリーンの端などに持っていった時に
自動に端に引っ付かせる(例:WINAMPなど)方法を考えているのですがうまくいきません。
WM_WINDOWPOSCHANGEDやWM_MOVEで特定座標に来たらSetWindowPos()で端に
移動させてみたのですが、それではそれらのメッセージ前に一度マウスで指定した座標のところに
一瞬ウィンドウを描写してから端に描写するので困っています。
ウィンドウを移動不可にする関数もしくはスタイル(?)など探しているのですが小生の力では探せず・・・
どなたかヒントだけでも教えていただけないでしょうか?
お願いします。
313デフォルトの名無しさん:2005/09/15(木) 19:14:21
説明が足りなかったかもしれんので、追記

ソースでは親のWinProcを登録したWNDCLASSを作成し、
そのWNDCLASSでもって両方のウィンドウをCreateしてる。

その後子のWinProcをSetWindowLongで設定しているが、
CreateWindowが完了して時点で、対象のウィンドウには
WM_CREATEは既に送信されている。
このため、親のWinProc上でWM_CREATEが2回呼ばれている。

なので、>>308のようにしなさいということ。
314デフォルトの名無しさん:2005/09/15(木) 19:20:31
すいません、
キー入力について教えていただきたいんですが、
ハードウェア的に直接キーボードを入力したのとまったく変わらない状態を作り出せる
そんなAPIはありませんでしょうか?
315287:2005/09/15(木) 19:26:17
>>304
結構いいかも、ありがと♪
316デフォルトの名無しさん:2005/09/15(木) 19:26:50
>>314
SendInput
317デフォルトの名無しさん:2005/09/15(木) 19:29:24
>>312
MFCのCControlBarのソースを参考に
318デフォルトの名無しさん:2005/09/15(木) 19:31:38
>>312
WM_WINDOWPOSCHANGING
319デフォルトの名無しさん:2005/09/15(木) 19:44:09
>>311
静的なら CopyMemory
動的なら RtlMoveMemory
320305:2005/09/15(木) 19:49:47
できた?かも。
http://aploda.com/dl.php?mode=pass&file_id=0000028985

>>310 >>313
大変大変参考になりました。
どうもありがとー m(__)m

InitWndClass()という関数でWNDCLASS構造体を作るようにしました。
子は親と違うクラスネームですが、これはいいんですかね?
あと、子のプロシージャの戻り値は親と同じようにDefWindowProc()関数にしてるんですが、
これで親と同じようにWM_TIMERとか使えば
子が消滅するまで無限ループ?すると考えていいんでしょか?
321312:2005/09/15(木) 20:13:50
レスありがとうです。
>>318
なるほど、このメッセージで送られるWINDOWPOSポインタの座標を変更すればできました。
すっかり見落としてました。
スレ汚しすみません。

>>317
MPCですか・・・今度時間があれば参考程度に見てみます。
322321:2005/09/15(木) 20:16:35
ごめんなさい、訂正

>WINDOWPOSポインタの座標
WINDOWPOSポインタ先に格納されてるXY座標
323311:2005/09/15(木) 20:16:55
>>319
静的だったのでCopyMemoryを使いうまくいきました
ありがとうございます
324デフォルトの名無しさん:2005/09/15(木) 21:44:29
>>323
CopyMemoryは最終的にはmemcpyが呼び出される。
MoveMemoryも結局はmemmoveの呼び出しになる。(が、一応kernel32.dllにエントリもある)

少なくともVCでは/Oiを指定するとmemcpyはインライン展開されCランタイムライブラリは不要になるはず。
325デフォルトの名無しさん:2005/09/15(木) 21:53:38
なんでそんな物をAPIに求めるのかねえ。
326デフォルトの名無しさん:2005/09/15(木) 22:30:46
現在ダイアログを作成して、ダイアログ上にエディットボタンを置いています。
ダイアログ上のエディットが操作された事を
WM_COMMANDを取得することで知っているのですが、
エディットボタンに送られてくるWM_メッセージを全て盗みたいと思っています。
何かいい方法はないでしょうか?
327デフォルトの名無しさん:2005/09/15(木) 22:31:59
>>326
サブクラス化
328デフォルトの名無しさん:2005/09/15(木) 22:37:17
>>311
一応貼っとく。
[SDK32] C ランタイム関数の Win32 で対応する関数一覧
ttp://support.microsoft.com/default.aspx?scid=kb;ja;99456
329デフォルトの名無しさん:2005/09/15(木) 22:38:47
>>328
ありがとうございます!!!
330デフォルトの名無しさん:2005/09/15(木) 22:42:10
>>325
たとえばCPUに応じて最速のコピー命令を使えるとか。
関数呼び出しのオーバーヘッドが誤差の範囲になる程度のまとまった量の
コピーじゃないと意味ないけど
331デフォルトの名無しさん:2005/09/15(木) 22:43:20
>>328
おぉ、テンプレに入れてもいい気がする。
332デフォルトの名無しさん:2005/09/15(木) 23:16:15
>>328
ちょっと感動した
333デフォルトの名無しさん:2005/09/16(金) 00:42:42
さっそくブックマーク
334デフォルトの名無しさん:2005/09/16(金) 01:55:55
ちなみに言うとVC++で最適化するとDWORD単位でのブロック転送に置き換えられる。

てか、APIコールのオーバーヘッドのほうがでかいから。
本当に高速なコピーができることが重要な場面では、とりあえずスタートアップ時に
cpuidで判定して、movdqaなりmovqなりを使うルーチンに関数ポインタをセットする。

Intel C++だとわざわざ自作しなくとも専用のmemcpyが自動的にリンクされたような。
335デフォルトの名無しさん:2005/09/16(金) 09:27:04
>>328
久しぶりに感動した
336デフォルトの名無しさん:2005/09/16(金) 13:44:56
マウスを使うゲーム今作ってるんだけど頻繁にウインドウの外にでてちょっとうざったいのです。
マウスカーソルをウインドウの中に閉じ込めることってできますか?
337デフォルトの名無しさん:2005/09/16(金) 14:06:44
質問しないとわからんことか?
338デフォルトの名無しさん:2005/09/16(金) 14:08:05
ヒント
デスクトップもウインドウ
339デフォルトの名無しさん:2005/09/16(金) 14:17:29
>>336
出来ないことは無いが、そのプログラムを終わらせないとタスク切り替えもままならなくなる。
そんな糞プログラムにするくらいなら設計し直せ。
340デフォルトの名無しさん:2005/09/16(金) 14:19:21
VirtualPCが確かそんなことをやってた気がする。
マウスの移動をチェックしてウインドウの外に出たらウインドウの中に強制的に移動じゃちょっと違うのかな。
341デフォルトの名無しさん:2005/09/16(金) 14:36:19
ClipCursor
342デフォルトの名無しさん:2005/09/16(金) 16:10:51
環境は VC.net sdk で作成しています。
質問なのですが、現在ヘッダーコントロールを勉強しているのですが、
指定した位置にヘッダーコントロール表示はできたのですが、ヘッダーを指定した位置から
動かさないで中身のみスクロールさせたいのですが、有効なAPI御存じないでしょうか?
MoveWindowでスクロールさせると指定位置から動いてしまうので困っています。
343デフォルトの名無しさん:2005/09/16(金) 16:17:55
まずは日本語をやり直せ。逆接が4つもある
344342:2005/09/16(金) 16:30:24
質問です。現在ヘッダーコントロールを勉強してます。
指定した位置にヘッダーコントロールの表示はできました。
しかし、ヘッダーを指定した位置から動かさないで中身のみ
スクロールさせたいのですが、よくわかりません。
MoveWindowでスクロールさせると指定位置から動いてしまうので
困っています。上記の目的に有効なAPIありますか?
環境は VC.net sdk です。

…で、答えは↓の辺りかな?
ttp://www.kumei.ne.jp/c_lang/sdk3/sdk_294.htm
345デフォルトの名無しさん:2005/09/16(金) 16:54:00
Windowsが管理している全てのウィンドウの内、
キーボードフォーカスを持つウィンドウのハンドルを取得したいのですが、
WindowFromPoint
ChildWindowFromPoint
を使うのが普通で簡単なのでしょうか?
346デフォルトの名無しさん:2005/09/16(金) 16:59:38
>>344
返事ありがとうございます。
kumeiさんのHPは、よく勉強させていただいてます。
でも、指定位置からのヘッダースクロールの解決方法はありませんでした。。
347デフォルトの名無しさん:2005/09/16(金) 17:09:05
http://jbbs.livedoor.jp/bbs/read.cgi/game/14836/1125989416/

「RGSS+Win32API」のスッドレをしたらばに立てました。
RGSSとWin32APIの両方に興味のある方は
どうぞごりようください
348デフォルトの名無しさん:2005/09/16(金) 18:20:01
どうしてここでは名無しなんだOmoti
349デフォルトの名無しさん:2005/09/16(金) 18:22:25
名前出さないほうが人が呼べると踏んだんだろう。馬鹿なりに考えて。
350デフォルトの名無しさん:2005/09/16(金) 18:41:13
RGSSなんてわけのわからん略語使うな
ブラクラ踏んじまったじゃないか
351デフォルトの名無しさん:2005/09/16(金) 18:52:24
そして被害者がまた一人…
352デフォルトの名無しさん:2005/09/16(金) 20:29:30
ダイアログボックスの様なタスクに表示されない
普通のウィンドウ(MDIではない子ウィンドウ)を作りたいのですが、可能でしょうか?
もし、そうならばその方法を教えてください。
353デフォルトの名無しさん:2005/09/16(金) 20:49:15
>>399
Alt+Tab、知ってますか?
354287:2005/09/16(金) 21:05:46
>>399
ふぁいと
355デフォルトの名無しさん:2005/09/16(金) 21:06:30
ぉ、名前ミス
356デフォルトの名無しさん:2005/09/16(金) 21:14:38
名前だけか?
357デフォルトの名無しさん:2005/09/16(金) 21:15:17
>>353
知りませんでした…この機能
が、意図するものが見えません。スマソ。教えてください。
>>354
誰だか知らないけどありがとう?
358デフォルトの名無しさん:2005/09/16(金) 21:24:40
>>357
>>399を読めばなにを意図しているか分かるよ
359357:2005/09/16(金) 21:28:35
>>358
気長に待つしかないのでつか・・・。
360353:2005/09/16(金) 21:44:41
どうやったら>>349と399を間違えるんだ俺!!
361デフォルトの名無しさん:2005/09/16(金) 21:45:50
>>349じゃなくて>>339だし・・・
362357:2005/09/16(金) 22:25:40
スマソ。猫でもに載ってたorz。
363デフォルトの名無しさん:2005/09/16(金) 22:34:12
>>353
Alt+TabやAlt+Escで出来ても、見えてるのにマウスカーソルが動かないClipCursorとか
マウスのボタンを押してもないのに続くSetCaptureとかは、使う側はストレス溜まるだろう。
364354:2005/09/16(金) 22:34:32
いや、399のレスが楽しみだなってw
365デフォルトの名無しさん:2005/09/16(金) 22:36:49
>>345
座標とフォーカスに何の関係があるんだ?
366デフォルトの名無しさん:2005/09/16(金) 22:39:30
ゲームなんだからいんじゃね >ClipCursor
オプションにしてもいいし。
367デフォルトの名無しさん:2005/09/16(金) 22:44:26
>>366
ClipCursorとか使う位ならフルスクリーンで動いた方がいい
368デフォルトの名無しさん:2005/09/16(金) 22:50:32
そのを操作中は一切マウスがウィンドウの外に出ず、
Alt+Tabやらでアプリを切り替えれば普通に全体にマウスを持っていけるゲームなぞ掃いて捨てるほどありますがね
369デフォルトの名無しさん:2005/09/16(金) 22:52:32
そんなゲームプレイする側からすれば鬱陶しいだけだ。
370デフォルトの名無しさん:2005/09/16(金) 22:53:17
掃いて捨ててください。
371デフォルトの名無しさん:2005/09/16(金) 22:56:16
>>367
個人的な好みじゃねぇかw
俺も個人的な好み言うなら、別にゲーム中にクリップされても全然構わんし、ゲーム内容によってはそのほうがいいだろうし。
フルスクリーンもそれはそれで希望してる人がいれば取り込めばいいわけだ。
372デフォルトの名無しさん:2005/09/16(金) 23:11:59
あるダイアログ1上からダイアログ2を呼び出します。
ダイアログ2上でユーザーに文字列を入力してもらい、
その文字列のエラーチェックをし、エラーでなければ
ダイアログ1に入力された文字列を渡したいと思っています。

今はexternを使い、char *ポインタを共用することで
問題を解決していますが、ダイアログ上でバイナリ
データのやり取り、または引数としてポインタを渡す
ことは可能でしょうか?
もし可能でしたらその方法を教えてください。
373デフォルトの名無しさん:2005/09/16(金) 23:21:31
DialogBoxParam()
374デフォルトの名無しさん:2005/09/16(金) 23:21:38
>>369
個人の趣味で「側」を語らないでくださいね^^
375デフォルトの名無しさん:2005/09/17(土) 00:01:01
>>374
お断りしますね^^
376デフォルトの名無しさん:2005/09/17(土) 01:52:53
ゲームだなんだの話は他所でやれ。
377デフォルトの名無しさん:2005/09/17(土) 02:03:45
ゲ製作技術
http://pc8.2ch.net/gamedev/
378デフォルトの名無しさん:2005/09/17(土) 08:14:46
>>375
断るとか関係ありませんよ^^
379デフォルトの名無しさん:2005/09/17(土) 18:54:06
>>378
そんなことありませんよ^^
380デフォルトの名無しさん:2005/09/17(土) 22:25:05
どなたかAdobansd Windows 下さいよ
381デフォルトの名無しさん:2005/09/17(土) 22:27:11
VisualStudio2005が出たら、.net academicpack漏れはどうなるの?w
382デフォルトの名無しさん:2005/09/17(土) 22:28:01
.net academicpackの漏れは
383デフォルトの名無しさん:2005/09/17(土) 22:28:17
どなたか〜
384デフォルトの名無しさん:2005/09/17(土) 22:28:36
academicpackな漏れは
385デフォルトの名無しさん:2005/09/17(土) 22:30:05
意味深
386デフォルトの名無しさん:2005/09/17(土) 22:31:20
一万円もするコンピュータの本買ったって言ったら、彼女びっくりするよ
387デフォルトの名無しさん:2005/09/17(土) 22:31:40
>>380
advanced じゃなくて?
388デフォルトの名無しさん:2005/09/17(土) 22:32:54
>>387
それですよ〜ww
389デフォルトの名無しさん:2005/09/17(土) 22:35:51
2005からVC++/CLI っていうのが強化されたらしいんだけど。
どうなんかな?
390デフォルトの名無しさん:2005/09/17(土) 22:40:58
Win32APIとは何の関係もないな
391デフォルトの名無しさん:2005/09/17(土) 22:45:39
頑張ってterapadでコーディングしてください
392デフォルトの名無しさん:2005/09/18(日) 00:51:21
これからWin64になるの?
393デフォルトの名無しさん:2005/09/18(日) 06:10:13
WinFXになるってエロイ人がいってたお(^^)
394デフォルトの名無しさん:2005/09/18(日) 16:33:58
Winsock LSPの詳しい資料ってどっかにありませんか??
散々探したけど、全然見つかりません・・・
395デフォルトの名無しさん:2005/09/18(日) 16:59:54
C++でWin32APIを使ってるのってもう古い?
C#に移行したほうがいいのかな
396デフォルトの名無しさん:2005/09/18(日) 17:01:23
397デフォルトの名無しさん:2005/09/18(日) 17:02:09
>>396>>394宛ね。
>>395御好きにどうぞ。
398デフォルトの名無しさん:2005/09/18(日) 17:08:38
>>395
VS2005だとdllimportだらけになるなあ。
ま作るものによるんだけど
399394:2005/09/18(日) 17:46:41
>>396
dクス。
400デフォルトの名無しさん:2005/09/18(日) 18:38:18
ところで400ゲット
401デフォルトの名無しさん:2005/09/18(日) 20:54:20
MAX_PATH廻りで

char path[MAX_PATH + 1];
Win32Api(path, MAX_PATH)
とやっている人と
char path[MAX_PATH];
Win32Api(path, MAX_PATH)
とやっている人がいますが、
どちらが正しいのですか?

Win32ApiはGetModuleFileNameやらGetFullPathNameやらその他もろもろです。
402デフォルトの名無しさん:2005/09/18(日) 20:55:28
+1 しとけば安心
403デフォルトの名無しさん:2005/09/18(日) 21:05:07
またそのネタか
404デフォルトの名無しさん:2005/09/18(日) 21:53:01
TCHAR path[MAX_PATH + 2];
405デフォルトの名無しさん:2005/09/18(日) 21:57:58
なんで2を足してるの?
406デフォルトの名無しさん:2005/09/18(日) 21:59:13
TCHARを理解していないから
407デフォルトの名無しさん:2005/09/18(日) 22:33:49
TCHARくらい理解してますよ^^
408デフォルトの名無しさん:2005/09/18(日) 22:35:04
>>407
は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?
は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?
は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?
は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?
は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?
409デフォルトの名無しさん:2005/09/18(日) 23:01:30
TCHARというよりC言語の配列を理解してないんじゃ
410デフォルトの名無しさん:2005/09/18(日) 23:02:54
malloc()とゴッチャになっている、に一票
411デフォルトの名無しさん:2005/09/18(日) 23:34:41
ひょっとして、Buiild33 の >>323 の再来ですか?
412デフォルトの名無しさん:2005/09/18(日) 23:35:47
Buiild33 ⇒ Build33 だ、スマソ
413デフォルトの名無しさん:2005/09/18(日) 23:43:36
質問です。Windows XP の互換モード(exeファイルのプロパティの「互換性」で
設定できるやつ)によって起動されたことを検出する方法があれば教えてください。
もしくは、互換モードの設定情報が保存されている場所を教えてください。
414デフォルトの名無しさん:2005/09/19(月) 01:14:30
ダイアログボックスを作成し、
その作成されたダイアログボックスのハンドルを取得したいのですが
何かいい方法はありませんでしょうか?

現在はWPARAMに子のハンドルを格納して子から親へメッセージを送り
親側ではWPARAMを基に子にメッセージを送信するということにしています。

WM_DIALOGINIT時に親に自分のハンドルを教えているのですが、
上のような方法はあまり賢くないような気がします。
415デフォルトの名無しさん:2005/09/19(月) 07:09:13
>>414
CreateDialogの戻り値がそうだろ。
まさか、モーダルでハンドル取ろうなんて考えてる訳じゃないだろ?
416デフォルトの名無しさん:2005/09/19(月) 09:55:35
>>395
GDI+用のラッパーどっかにいいの落ちてないか?
面倒臭くて面倒臭くて・・・
417デフォルトの名無しさん:2005/09/19(月) 11:45:23
自分で作れば?
418デフォルトの名無しさん:2005/09/19(月) 13:06:39
gdiplusクラスはすでにラッパーなわけだが、それをさらにラップしてどうするんだろ。
419デフォルトの名無しさん:2005/09/19(月) 13:16:46
C#と手間も変わらんよな
420デフォルトの名無しさん:2005/09/19(月) 16:12:24
どのあたりが面倒?
421デフォルトの名無しさん:2005/09/19(月) 16:32:10
CreatePopupMenu()をして
InsertMenu()で状況に応じたメニューを表示したいのですが、
選択したメニューの処理は、あらかじめID等を決めておいて
前もって作っておくしかないのでしょうか。
422not 416:2005/09/19(月) 16:44:12
>>420
多分DC->Gdiplus::Graphics変換とかRECT→Gdiplus::Rect変換とかが
しょっちゅう必要で一段余計に手間が増えてウザイ、とかじゃまいか
423デフォルトの名無しさん:2005/09/19(月) 17:25:40
>>421
当然だろ
実行中にプログラムを作って動かすことなどできんのだから
それに、状況に応じたっていっても、無限じゃないだろ?
もし無限ならそんなのできません
424デフォルトの名無しさん:2005/09/19(月) 17:42:48
普通はメニューと処理は1対1だけど
「IEのお気に入り」や「最近使ったファイル」なんかは
複数のメニューをまとめて1つの処理でやってる
425デフォルトの名無しさん:2005/09/19(月) 18:52:03
Delphiのメニューと処理はあらかじめIDで結び付けられてるわけじゃないぞ
あれをWin32APIだけ使って真似するのは大変だと思うが
426デフォルトの名無しさん:2005/09/19(月) 19:22:02
>>424
ありゃあどんなリンクだろうとやる処理が同一だからだろ
427421:2005/09/19(月) 20:11:34
>>423
ありがとうございます。

右クリックしたとき関数呼んででCreatePopupMenu()、
しているのですが関数終了時にDestroyMunu()は、したほうが
いいんでしょうか。
428デフォルトの名無しさん:2005/09/19(月) 21:05:48
関数無いで無条件にCreatePopupMenuしてるんなら関数終了時にDestroyした方がええじゃろう
429デフォルトの名無しさん:2005/09/19(月) 21:07:17
関数無い→関数内
430デフォルトの名無しさん:2005/09/19(月) 23:11:25
>>395
あたりまえだろ
431デフォルトの名無しさん:2005/09/19(月) 23:15:47
winsockは64ビットですか?
432421:2005/09/20(火) 08:19:29
>>428
レスどうもです。

DestroyMenu()をしないとわずかづつ
メモリ使用量が増えていました。
433デフォルトの名無しさん:2005/09/20(火) 08:36:09
>>421
どういう状況かわからんが、
スクリプト処理系でも作ればいいんじゃないか?
処理内容を機械に作らせたい、となればまた別の話だけど。

予めIDを決めなければいけない、ってことはない。
WM_MENUSELECTとGetMenuStringとかでなんとかなるんじゃないか?
同じメニューストリングのメニューが無限にあるとかなら知らんが。

といっても普通はIDで事足りるかと。
さすがに「お気に入り」なんかでも6万もないだろ。
434デフォルトの名無しさん:2005/09/20(火) 11:15:48
>>416
Managed C++ または C++/CLI
他にも色々まとめてラップしてくれるぜ
435デフォルトの名無しさん:2005/09/20(火) 11:26:30
イェアイェアチェケラッチョ
436デフォルトの名無しさん:2005/09/20(火) 17:06:38
WS_EX_LAYEREDを立てて、ウインドウを作るとWM_KEYDOWN、WM_KEYUPなどのキーイベントが取得出来なくなってしまいます。
(キーを押すとシステムの警告音が鳴ってしまう「カン、カン・・・」って感じの)
何とか回避する方法ご存じな方いらっしゃいませんでしょうか。
よろしくお願いします。
437デフォルトの名無しさん:2005/09/20(火) 17:09:19
>>436
バグを直す。
438421:2005/09/20(火) 20:06:36
>>433
メニュー項目で選択した文字列を関数の引数にしたかったんです。

TrackPopupMenu()のnFlagにTPM_RETURNCMDオプションを設定して
返り値の番号からどの文字列が選択されたか判断することで解決しました。
439デフォルトの名無しさん:2005/09/21(水) 00:25:22
メタファイルに関して質問があります。
プリンタへ印字するためのメタファイル作成で詰まっています。

現在CreateEnhMetaFileでメタファイルを作成しているのですが、
第一引数がNULLの状態からDPIを変更することは出来るのでしょうか?
SetWindowExやらSetViewportExやらでいじっても何も変わらなかったり、
真っ白になったりします。

第一引数がNULLでは出来ない場合、プリンタのDCを
取得せずにする方法はあるんでしょうか?

440436:2005/09/21(水) 12:02:41
>>437
レスありがとうございます。

>バグを直す。
これは、WS_EX_LAYEREDを立ててウインドウを作る事とキーイベントが取得出来なくなる事に関係は無いという事でしょうか?
441デフォルトの名無しさん:2005/09/21(水) 16:50:41
他にどういう意味があると?
442439:2005/09/21(水) 18:22:18
一部解決しました。MapMode換えると座標系も変わるのか…
プロパティのDPIは変わりませんが…
443デフォルトの名無しさん:2005/09/21(水) 21:21:17
こんばんは、よろしくお願いいたします。

ダイアログボックスに、ウィンドウを引っ付けて、
文字を書き込んでいますが、そのフォントサイズを変えたいのです。
そんなことできるのでしょうか。
444デフォルトの名無しさん:2005/09/21(水) 21:25:47
できます。
445デフォルトの名無しさん:2005/09/21(水) 21:47:26
やったねっ
446初心者:2005/09/22(木) 13:56:45
質問があります。
現在、ボーランドでプログラムを作っているのですが、
TransparentBlt()関数が読み込めないらしく、
 Error: 外部シンボル 'TransparentBlt' が未解決
と出てしまいます。

何かをインクルードし忘れているからでしょうか?
windows.hだけをインクルードしているのですが。
447デフォルトの名無しさん:2005/09/22(木) 13:57:08
>>446
Msimg32.libをリンク
448初心者:2005/09/22(木) 14:02:25
>>447
ありがとうございます。
すいませんが、リンクはどのようにするのでしょうか?
449デフォルトの名無しさん:2005/09/22(木) 14:12:17
返れ
450デフォルトの名無しさん:2005/09/22(木) 14:12:30
>>448
コマンドプロンプトからコンパイルしているのなら、
たぶんbcc32の引数にソースファイルと共にmsimg32.libを並べればいいはず。
451デフォルトの名無しさん:2005/09/22(木) 14:12:38
     /\___/ヽ
   / -‐'  'ー-  \
  . | (●),(、_,)、(●) ::|
  |    /,.ー-‐、i  :::::|
  |    //⌒ヽヽ  .::|
  |    ヽー-‐ノ  :::::|
   \    ̄   ...::/
   /`ー‐--‐‐―´\
452デフォルトの名無しさん:2005/09/22(木) 14:15:48
>>448
BCC5.5.1の事を言っているんなら、コマンドラインに単に msimg32.lib を
付け加えるだけでは?
453デフォルトの名無しさん:2005/09/22(木) 14:23:43
>448 >450 >452
返れ
454初心者:2005/09/22(木) 14:25:39
ダメでした。いろいろなところに入れてみたのですが。
455デフォルトの名無しさん:2005/09/22(木) 14:25:44
返れって何?帰れならわかるけどwwww
日本語わかりまちぇんか??
456デフォルトの名無しさん:2005/09/22(木) 14:26:39
>>454
荒れてるようだからこっち言って聞いた方がいいかも。

タダで使えるBorland C++ Part4
http://pc8.2ch.net/test/read.cgi/tech/1091066805/
457初心者:2005/09/22(木) 14:29:10
>>456
どうもです。行ってきます。
458デフォルトの名無しさん:2005/09/22(木) 14:30:48
多分PlatformSDKをインストールしてないってオチだろうな。
459デフォルトの名無しさん:2005/09/22(木) 14:32:40
>>458
bccは必要ない。ヘッダとインポートライブラリすべて同梱
460初心者:2005/09/22(木) 14:39:35
それは何でしょうか。
ぜひインストールしたいものです。
461デフォルトの名無しさん:2005/09/22(木) 14:51:05
>>460
PlatformSDKは最新のWindows.hなどが入っている。
プログラムの実行が早くなったりするわけじゃないから、
インストールするのは必要に迫られてからでいい。
462デフォルトの名無しさん:2005/09/22(木) 14:52:31
下手に最新のPSDK入れたりすると、古いコンパイラでコンパイル出来なく
なったりするんだな、これが。
463デフォルトの名無しさん:2005/09/22(木) 14:56:12
PlatformSDKも知らんとWindowsプログラムやっとんのか・・・
恐ろしい世の中じゃのう
464デフォルトの名無しさん:2005/09/22(木) 15:19:53
>>455
返れ
465デフォルトの名無しさん:2005/09/22(木) 15:42:28
ファイルの上書き確認をするメッセージボックスを出したいのですが、
普通のメッセージボックスではなく、
「はい」「いいえ」だけでなく、「すべて」「中止」のボタンを付けなければなりません。
それで、Win32APIのメッセージボックスじゃ出来ないと思い、メッセージボックスを自作したのですが、
メッセージボックスのように、処理を中断させるのをどうすればいいかわかりません。
そういうことできる関数ありませんか?
466デフォルトの名無しさん:2005/09/22(木) 15:54:28
DialogBox
467デフォルトの名無しさん:2005/09/22(木) 15:54:55
モーダルダイアログ、モードレスダイアログ
で検索してみれ
468デフォルトの名無しさん:2005/09/22(木) 15:57:30
MessageBoxじゃダメなのか?
469デフォルトの名無しさん:2005/09/22(木) 16:09:32
MessageBoxに「すべて」ボタン作る引数なんてないだろ
470デフォルトの名無しさん:2005/09/22(木) 16:10:05
>>465
関数でなきゃ「厭ねっ」なのかっ!
あぁん!
471デフォルトの名無しさん:2005/09/22(木) 16:11:48
デスクトップアイコンを非表示にするAPIを知りませんか?
472デフォルトの名無しさん:2005/09/22(木) 18:49:26
>>465
CodeProjectにこんなのがあった。
ttp://www.codeproject.com/dialog/xmessagebox.asp
473デフォルトの名無しさん:2005/09/22(木) 19:26:27
>>443です
>>444さんありがとうございます。
CreateFontを使ってできました。
474デフォルトの名無しさん:2005/09/22(木) 22:58:58
すみません、ペゾルド本について質問させてください。
本書において DrawBezier (hdc, apt) ;というコードがありますが、ビルドするとエラーが発生してしまいます。
PSDKのドキュメントを探してもこんな引数を取る GDIファンクション は見当たりませんでした。
しかしながら、付属CDのプロジェクトをビルドした場合、エラーなくビルドすることが出来ました。これは何かをリンクする必要があるのでしょうか?
475デフォルトの名無しさん:2005/09/22(木) 23:40:01
>>474
へえーそういうのがあるんかとぐぐって見たら、こういうのがあったが、
この引数の関数型はユーザ定義じゃないの? 引数の数が多いのも同名の関数で
出てくる。はずしていたらごめん。
ttp://www.cmlab.csie.ntu.edu.tw/~yichin/WindowsProgramming/aslin/222324.htm
476デフォルトの名無しさん:2005/09/22(木) 23:57:30
>>474
おまいさんが持ってるのが第五版ならP.191に載ってるコードをちゃんと上から下まで見ろ。
477Mathiz ◆Ho9erQuSOQ :2005/09/22(木) 23:57:57
>>475
わざわざ調べていただいてありがとうございます。
よくソースを見直したら定義していた関数をまるっきり見落としていました....。
これもGDIファンクションかと勝手な思い込みをしてコーディングしていました。ご迷惑をかけてごめんなさいです..。
478477:2005/09/22(木) 23:59:25
474は477です....orz
479デフォルトの名無しさん:2005/09/23(金) 07:33:16
>>471
こういうことか?

Win32API質問箱 Build28
http://pc8.2ch.net/test/read.cgi/tech/1108199304/

271 名前: デフォルトの名無しさん Mail: sage 投稿日: 05/02/20(日) 15:43:18

>>267
こんなもんでどう?検証で書いたからそのまま載せる。

HWND hWnd = NULL;
hWnd = ::FindWindow( "Progman", "Program Manager" );
hWnd = ::GetTopWindow( hWnd );
hWnd = ::GetTopWindow( hWnd );
::ShowWindow( hWnd, SW_HIDE ); // to hide
// ::ShowWindow( hWnd, SW_SHOW ); // to show

あとは、SPYで該当ウィンドウの意味を調べて自分なりにアレンジしてくらさい。


276 名前: デフォルトの名無しさん Mail: sage 投稿日: 05/02/20(日) 16:06:10

とりあえず場所はここのようです
HKEY_CURRENT_USER
Software
Microsoft
Windows
CurrentVersion
Explorer
Advanced
HideIcons
480デフォルトの名無しさん:2005/09/23(金) 17:00:14
すいません、質問です。
VC7でプロジェクトを新規に作成する際に使われている
ディレクトリを選択するためのダイアログと同じものを出したいのですが
よくわかりません。
ttp://with2ch.net/cgi-bin/pict/image-box/img20050923165516.png

OPENFILENAMEとGetOpenFileNameあたりを使うのではないかとあたりをつけて
いろいろ試してみましたが通常のファイルを保存するダイアログにしかなりません。
(ファイル名、ファイルの種類を指定するものあがあるやつです)

何か情報がありましたら、よろしくお願いします。
481デフォルトの名無しさん:2005/09/23(金) 17:35:58
あれはMSオリジナル
482デフォルトの名無しさん:2005/09/23(金) 18:24:33
質問なのですが、デスクトップ上に複数のウィンドウ(インターネットエクスプローラーやら、ペイントとか色々)
を出した状態で、それらのウィンドウの内、特定のウィンドウだけをスクリーンショットとして取りたいの
ですが、どうすればよいのですか?
483デフォルトの名無しさん:2005/09/23(金) 18:34:00
「Alt + PrintScreen」後にペイントに貼り付けじゃダメなの?
484デフォルトの名無しさん:2005/09/23(金) 18:35:57
>>483
それだといかんのです。
バックグラウンドにあるウィンドウとかをフォアグラウンドにもってきて
撮影するとかそういう感じでやりたいのですが、どうすりゃいいのかさっぱり・・・・
485デフォルトの名無しさん:2005/09/23(金) 18:45:02
特定のウィンドウはどうやって指定するんだよ
クリックしたら最前面にくるんだから最前面にあるウィンドウを撮影するのが
楽に決まってると思うんだが何をやりたいのかさっぱり
486デフォルトの名無しさん:2005/09/23(金) 18:47:32
>バックグラウンドにあるウィンドウとかをフォアグラウンドにもってきて撮影
1:バックグラウンドにある特定のウィンドウを見つける
2:フォアグラウンドに持ってくる
3:撮影

撮影はデスクトップの DC 持ってきて BitBlt で平気だったような気がする
ちなみにタイマー撮影を使うと1〜2が省略できて良いよ
487デフォルトの名無しさん:2005/09/23(金) 18:50:30
>>486
タイマー撮影というのを詳しく教えてください。

とりあえずBitblt関数を使ってキャプチャ作ってみます
488デフォルトの名無しさん:2005/09/23(金) 18:55:40
>>487
ちょうどカメラのセルフタイマーみたいな機能
これがあると、撮影ボタンを押した後に撮影したいウィンドウを最前面にもってこさせる操作ができる
489デフォルトの名無しさん:2005/09/23(金) 19:08:42
だからさ、自分で最前面に持ってくるんだったらそのときAlt+PrintScreenも
押すのではあかんの? プログラムを作ること自体が目的化してない?
490471:2005/09/23(金) 19:49:16
>>479
レスありがとうございます。
いろいろテストしてみたら、以下のコードで出来ました。

Public Declare Function ShowWindow Lib "user32" (ByVal hwindow As Long, ByVal cmdshow As Long) As Long
Declare Function FindWindowEx Lib "user32.dll" Alias "FindWindowExA" (ByVal hwndParent As Long, ByVal hwndChildAfter As Long, ByVal lpszClass As String, ByVal lpszWindow As String) As Long

hWndProgman = FindWindow("Progman", "Program Manager")
hWndProgman = FindWindowEx(hWndProgman, 0, "SHELLDLL_DefView", vbNullString)
hWndProgman = FindWindowEx(hWndProgman, 0, "SysListView32", vbNullString)
ShowWindow hWndProgman, SW_HIDE

ありがとうございました。
491デフォルトの名無しさん:2005/09/24(土) 01:52:34
ドラッグ アンド ドロップの質問です。
IEから、<a>タグで指定されてるリンクをドラッグして、
自分のプログラムにドロップしたいのですが受け付けてくれません。
どうやったらいいんでしょうか?
492デフォルトの名無しさん:2005/09/24(土) 03:06:42
>>491
OLE D&D
493デフォルトの名無しさん:2005/09/24(土) 06:20:33
>>491
IDropTarget
494461:2005/09/24(土) 07:09:50
Win32コンソールアプリへのキー入力をインターセプトし、加工するにはどうしたらいいですか?
495デフォルトの名無しさん:2005/09/24(土) 12:44:38
  |
  |
  J
496デフォルトの名無しさん:2005/09/24(土) 15:00:39
バックバッファにDrawText等で描画した複数の文字列をBitBltで一気に画面に出力する手法を
以下のように記述したのですが何も表示されません。
何がまずいのでしょうか…。

HDC hdc, cdc;
PAINTSTRUCT ps;
RECT rect;

GetClientRect(hwnd, &rect);
hdc = BeginPaint(hwnd, &ps);
cdc = CreateCompatibleDC(hdc);

DrawText(cdc, "Hello,", -1, &rect, DT_LEFT);
DrawText(cdc, "2ch.", -1, &rect, DT_CENTER);

BitBlt(hdc, 0, 0, rect.right, rect.bottom, cdc, 0, 0, SRCCOPY);
DeleteDC(cdc);
EndPaint(hwnd, &ps);
497デフォルトの名無しさん:2005/09/24(土) 15:03:21
あるウィンドウをフォアグラウンドに持ってくるのに、
ttp://techtips.belution.com/ja/vc/0012/
この方法をやってみたのですが、
元のフォアグラウンドがタスクマネージャーで見ると「応答なし」のウインドウだと、上手くいきません。

ALT+TABなら目的のウィンドウに切り替えることはできるので、
この状態でもフォアグラウンドを変更する方法はあると思うのですが、
どのあたりのAPIを使えば良いでしょうか?
498デフォルトの名無しさん:2005/09/24(土) 15:22:16
>>496
RECTは使った事が無いから違うかもしれないけど、
HBITMAPと同じように関連付けを行わないとダメかも。

RECT rectOld;

***

cdc = CreateCompatibleDC(hdc);
rectOld = SelectObject(cdc, rect); //関連付け

BitBlt(hdc, 0, 0, rect.right, rect.bottom, cdc, 0, 0, SRCCOPY);

SelectObject(cdc, rectOld); //元に戻す
DeleteDC(cdc);

***
499デフォルトの名無しさん:2005/09/24(土) 15:28:44
>>498
RECT を関連付けしてどうする
500デフォルトの名無しさん:2005/09/24(土) 15:29:11
>>498
SelectObjectの第二引数にRECTは指定できないとエラーが出てしまいます。
&rectにすると一応実行は出来ますがやはり何も表示されないようです。
この場合何を関連付けたらいいのかを調べてみます。
レスありがとうございました。
501デフォルトの名無しさん:2005/09/24(土) 15:31:45
>>500
CreateCompatibleBitmapつかってビットマップ作って
SelectObjectで関連づけないと色データ持ってないから
BitBltできんだろ

BitBlt
ビットブロック転送を行います。
コピー元からコピー先のデバイスコンテキストに、
指定された長方形内の各ピクセルの色データをコピーします


502デフォルトの名無しさん:2005/09/24(土) 15:32:11
SelectObjectでRECT関連付けてる奴初めて見た。
503デフォルトの名無しさん:2005/09/24(土) 15:33:50
>>501
あー、なるほど。そういうことなんですか。
勉強不足でした。ありがとうございます。
504デフォルトの名無しさん:2005/09/24(土) 15:58:19
CreateCompatibleDCしただけで描画できるほど甘くは無いのだよ
キミはシャーペンを渡されただけで、紙も無く絵が書けるかな?
505デフォルトの名無しさん:2005/09/24(土) 15:59:16
かけるさ
506デフォルトの名無しさん:2005/09/24(土) 16:01:44
505 スゴスw
507デフォルトの名無しさん:2005/09/24(土) 16:02:09
シッ
相手にしちゃいけません!
508デフォルトの名無しさん:2005/09/24(土) 16:09:21
シャーペンと紙があっても描けない・・・
509デフォルトの名無しさん:2005/09/24(土) 17:01:07
大概のシャーペンにゃ最初から芯入っとるじゃろがー
510デフォルトの名無しさん:2005/09/24(土) 17:03:37
俺の買ったシャーペンは芯がなかったことがあるな
511デフォルトの名無しさん:2005/09/24(土) 17:14:01
適当なシャーペンには入っているがマジな奴には入ってないね。
512デフォルトの名無しさん:2005/09/24(土) 17:14:50
一本千円のシャーペン使ってる。
513デフォルトの名無しさん:2005/09/24(土) 17:15:41
芯の太さって何使ってるよ?俺0.4mm
514デフォルトの名無しさん:2005/09/24(土) 17:16:42
文具板池
まあ向こうは文具の使い方間違ってる香具師も多いがw
515デフォルトの名無しさん:2005/09/24(土) 17:24:36
>>514
詳しく
516デフォルトの名無しさん:2005/09/24(土) 17:27:11
先端で栗を突付いたり、柄の方で穿ったり。
517デフォルトの名無しさん:2005/09/24(土) 17:27:24
>>514
kwsk
518デフォルトの名無しさん:2005/09/24(土) 17:28:50
シャーペンは回すためのもの
519デフォルトの名無しさん:2005/09/24(土) 17:56:23
穿つには細いな
もっと太いもので穿たなくては
520デフォルトの名無しさん:2005/09/24(土) 18:01:51
IShellFolder::EnumObjects、IEnumIDList::Nextを使って、フォルダのアイテムIDリストを列挙しています。
ところが再び同じIShellFolderオブジェクトからアイテムIDリストを列挙しようとすると、
そのフォルダの内容に変化はない筈なのに、前回と異なるアイテムIDリストが返ってくる場合があります。
これらのメソッドで取得したアイテムIDリストは一時的なもので保存しておくべきではないのでしょうか?
521デフォルトの名無しさん:2005/09/24(土) 18:09:39
Win32APIじゃない質問する人はお引き取りください
522デフォルトの名無しさん:2005/09/24(土) 18:24:48
>>520
前回と異なるアイテムIDリスト、とは?
IEnumIDListインターフェースのポインタ値が違うということ?
523デフォルトの名無しさん:2005/09/24(土) 18:44:24
>>520
IEnumIDList::Next から返って来たアイテムIDリストのアドレスが違う、と解釈。

IEnumIDList::Next は動的にメモリを確保して、アイテムIDリストをコピーし、そのポインタを第2引数に返す、と言う動作。
取得するたびにポインタの値が変わるのは当然。
保存しておいても構わないが、ちゃんと開放を忘れずに。
524520:2005/09/24(土) 19:05:23
>>522-523
違うのはIEnumIDList::Nextメソッドから取得したITEMIDLIST構造体の中身です。

具体的には↓のような感じです。

@IShellFolder::EnumObjects、IEnumIDList::NextからITEMIDLIST構造体を列挙。
A取得したITEMIDLISTを新たなIShellFolderオブジェクトにバインドさせてIShellFolder::EnumObjects。
B再び@でITEMIDLISTを列挙するとAの操作を行ったITEMIDLISTは異なる内容になっている場合がある。(必ずではない)

ITEMIDLISTの比較は以下のように行っています。

BOOL IsEqualItemID(LPCITEMIDLIST pID1, LPCITEMIDLIST pID2)
{
if(pID1->mkid.cb != pID2->mkid.cb)
return FALSE;

return !memcmp(pID1, pID2, pID1->mkid.cb) ? TRUE : FALSE;
}
525デフォルトの名無しさん:2005/09/24(土) 20:28:13
Win32APIで戻り型が構造体のAPIってありますよね?(たぶん)

それってどうやって受け取ればよいでしょうか?
普通のBOOLとかのレジスタに収まる戻り値はEAXで受け取ると思いますが、
構造体を返す(__stdcallみたいな)規約ってあるんでしょうか?

それとも戻り型が構造体のWin32APIはない?
526デフォルトの名無しさん:2005/09/24(土) 20:30:40
あ、
DWORDLONG Int64ShrlMod32(Value, ShiftCount);

というのがありますね。
これは64bit値で、構造体とはまた違いますが、
これはどうやって返してるんでしょうか?
EDXとEAXでしょうか。

では64bit以上の値はどうなるんでしょう?
527デフォルトの名無しさん:2005/09/24(土) 20:31:26
あったかどうか知らんが、
あるとしたら、構造体へのポインタじゃね?
528デフォルトの名無しさん:2005/09/24(土) 20:34:53
>>525
戻り値が構造体の関数はWin32APIにはおそらくない。
ほとんどは操作が成功したかどうかを表すためにBOOLを返す。
構造体は戻り値にする代わりに引数にポインタを受け取るようになっている。

ただ、__cdeclや__stdcallでは戻り値が構造体型の関数を作ってアセンブリを出力させてみると、
同じように戻り値を格納するポインタを指定する引数が密かに追加されるようになっていた。
529デフォルトの名無しさん:2005/09/24(土) 20:38:39
>>526
そいつはDLLにはなくヘッダに直接マクロとインラインアセンブラを使ったインライン関数が両方書いてある。
インライン関数版を見るとやはりeax/edxを使っているようだ。
530デフォルトの名無しさん:2005/09/24(土) 21:02:45
検証してみました。(VC6)

>>529さんがおっしゃる通り、
64bitまでの構造体戻り型の受け渡しはEDX, EAXを使っている様です。

ただし、それ以上のサイズの構造体について、不可解なことをしていました。
呼び出し側で、戻り値用の一時的な変数へのアドレスを
最後にpushしているようなのです。
したがって、関数は実際の引数よりも1つ多く受け取っているようです。

呼ばれ側は、そのアドレスに対して値を格納していました。
そしてそのアドレスをEAXにセットしてret。

そして呼び出し側に戻ったとき、EAXのアドレス(一時変数)から
呼び出し側で受け取る変数へコピーするということみたいです。

EDX使ったり、一時変数使ったりなんか統一してほしいですね。
自作言語作ってる側としては困ります。
531デフォルトの名無しさん:2005/09/24(土) 21:06:05
ちなみに呼ばれ側を__stdcall、__cdeclを指定しても動作は変わりませんでした。
構造体を返す関数をDLL公開すると、どういうことになるんだろう・・
532528:2005/09/24(土) 21:07:50
>>530
俺が書いたとおりじゃないか。

あと、場合にもよるけど一時変数を使わずとも、戻り値の変数のアドレスを直接隠し引数に渡せると思う。
533デフォルトの名無しさん:2005/09/24(土) 21:11:50
DLL化を試しました。

DLL公開しても呼び出しシーケンスは変わりませんでした。
構造体を返す関数は互換性がないか、
この(EDXもしくは一時変数渡し)プロトコル?を使うみたいです。
534デフォルトの名無しさん:2005/09/24(土) 21:13:38
>>532
そのようですね。
最適化をすると、そういうコードになるみたいです。
535デフォルトの名無しさん:2005/09/24(土) 21:15:47
まあ自作言語を作っているのならDLL関数の戻り値に構造体・クラスなんかは指定できないという仕様にしてしまえば済む。
536デフォルトの名無しさん:2005/09/24(土) 21:18:17
構造体の受け渡しについて自分なりに納得ができました。
お付き合いくださった皆さんありがとうございました。
537デフォルトの名無しさん:2005/09/24(土) 21:28:46
自作言語ってのがネイティブコンパイラならどっかからVC++のABI仕様書を探してきて調べるしかないと思うが。
538デフォルトの名無しさん:2005/09/25(日) 14:38:27
ログオン前に確実にプログラムを起動する方法ってありますか?
1分くらいかかる初期化処理も終わらせることが前提です。
サービスで作ってみたんですが、ログオンできてしまって、
ステータスは「開始中」になってしまいました。
539デフォルトの名無しさん:2005/09/25(日) 14:46:38
>>538
フェイクのログオン画面を表示しt(ry
540デフォルトの名無しさん:2005/09/25(日) 14:56:49
>>538
NT系にはログオンスクリプトってのが無かったか?
あれなら、認証が終わった時点で処理されるはず
541デフォルトの名無しさん:2005/09/25(日) 14:59:48
スタートアップにショートカットを作成汁
542デフォルトの名無しさん:2005/09/25(日) 15:21:44
ログオン前ですよ。ログオン前。
ログオン直後じゃないです。
543デフォルトの名無しさん:2005/09/25(日) 15:33:50
OSよりも先に処理をしようってんだから
APIじゃなくてアセンブラを使うしかないんじゃあるまいか?
APIって暗黙の了解でログオン後の処理となってないかい?
544デフォルトの名無しさん:2005/09/25(日) 15:39:36
サービスプログラムはログオンより前に動きます。
ただ>>538で言ったように、長い初期化処理を入れると
ログオン画面が先に出てきてしまうのです。
545デフォルトの名無しさん:2005/09/25(日) 15:50:53
GINA使えば。
546デフォルトの名無しさん:2005/09/25(日) 16:02:48
タスクの優先順位
547デフォルトの名無しさん:2005/09/25(日) 16:16:43
autoexec.batに書いておけばいいじゃない
548デフォルトの名無しさん:2005/09/25(日) 16:34:00
ttp://desktop.google.com/support/bin/answer.py?answer=12374&topic=198

"保存、閲覧、移動などを行うと、デスクトップ検索のインデックスはすぐに更新されます"
とかいてあるのですが、CreateFileとかWriteFileとかにフック?のようなものを
仕掛けて監視しているのでしょうか.どうすればそのようなことができるのか教えてください
549デフォルトの名無しさん:2005/09/25(日) 16:42:16
[autoexec.bat]
538.exe
win.com
[EOF]
550デフォルトの名無しさん:2005/09/25(日) 17:41:32
//この前にMessageBox()などを呼び出しておくと、期待通りの結果が返ってくる。
HMODULE hModule = GetModuleHandle(_T("user32.dll")) ;

なぜかNULLが返ってきます。
これをする前に、MessageBoxなどを呼び出しておくと、うまくいくのですが。
実際に使うまで、モジュールは読み込まれないのでしょうか?
551デフォルトの名無しさん:2005/09/25(日) 17:48:11
DLLがDLLたるゆえんの一つじゃないか
552デフォルトの名無しさん:2005/09/25(日) 17:48:25
その「後」でMessageBoxなどを呼び出してもうまくいくはず
(わざわざdelayloadを使っていなければ)
553デフォルトの名無しさん:2005/09/25(日) 17:53:02
>>552
本当だ。
ありがとうございます。
554デフォルトの名無しさん:2005/09/25(日) 17:58:33
だめだこりゃ・・・
555デフォルトの名無しさん:2005/09/25(日) 18:00:26
うちの Win2000 にて
WinMain 直後に GetModuleHandle してもハンドル取れたけど。
556555:2005/09/25(日) 18:01:05
リロードしてなかった
すまん。
557デフォルトの名無しさん:2005/09/25(日) 18:27:30
>>538
厳密にログオン前ということならGINAが妥当だろう。
ログオン〜シェル起動の微妙な間なら、USERINITかシェルを
すげかえるとか。
558デフォルトの名無しさん:2005/09/25(日) 18:33:16
サービスのままじゃダメなのか
ショック
559デフォルトの名無しさん:2005/09/25(日) 18:35:04
フォーカスを一度リストボックスやスタティックに移すとWM_CHARがきません
リストボックス上やスタティック上のキーの入力を捕まえるのにはどうしたらいいでしょうか?
560デフォルトの名無しさん:2005/09/25(日) 18:38:58
WM_KEYDOWN
561559:2005/09/25(日) 18:53:07
自己解決しました

リストボックスのスタイルにLBS_WANKEYBOARDINPUTを指定してWM_KEYTOITEMでキーの入力ができました

>>560
書き忘れましたが WM_KEYDOWNもきませんでした、すみません
562デフォルトの名無しさん:2005/09/25(日) 19:26:48
キーの入力ができました?
キー入力をトラップするんだろ?
プログラム上から入力するのか?
563557:2005/09/25(日) 20:03:46
>>558
ちょっと調べてみたがグループポリシーに
(コンピュータ)スタートアップスクリプトとかいうのがあるな。
同期実行らしいから使えるかもな?
まあ他にも何かしら方法はあるかもよ。ネットワークのサービスは
先に起動してるんじゃないかとか。
564デフォルトの名無しさん:2005/09/26(月) 09:24:30
DirextXを使わずに半透明で描画する方法はありませんか?
565デフォルトの名無しさん:2005/09/26(月) 09:26:37
あります。
566デフォルトの名無しさん:2005/09/26(月) 09:34:38
ヒント:猫でもわかる
567デフォルトの名無しさん:2005/09/26(月) 12:41:38
思い出せなくて安直な質問になりますが、dos の system() に相当する win32 の
API は何でしょうか。system() で可能なのですが、途中で dos 窓が出てちょっと
いやらしいもので。
568CreateProcess:2005/09/26(月) 12:48:35
>>567
思い出せないってのは嘘だろ。素直にげろしろよ。
それから、system()はdos固有の関数ではないぞ。
569デフォルトの名無しさん:2005/09/26(月) 12:48:40
>>567
CreateProcess()
プロンプト表示させたくなかったら引数指定な。
570デフォルトの名無しさん:2005/09/26(月) 13:18:45
すいませんソケットAPI関連なんですが、、
使用言語はC++言語で、コンパイラにはBCC5.5を使用しています。

1.ソケットを作成する(socket関数)
2.サーバに接続を確立する(connect関数)
3.コマンドを送信する(send関数)
4.送ったコマンドに対しての応答を読み込む(recv関数)
この手順で

3に
"GET パス名 HTTP/1.0"
""
を送れば任意のページが応答として返されるとか何とかあるのですが、recvで読み込むときに
そのままプログラムがビジー状態になってしまいます。

文字のコードはASCIIなはずですし、無論send関数で指定する文字列バッファはchar型です。
もしかして送信する文字列もリトルエンディアンからビッグエンディアンに変換する必要があるのでしょうか・・
なんでビジー状態になるのか、その原因そのものも分からないので何卒お願いします。。

ソースコードはこちらとなっております。
ttp://nijibox.ohflip.com/futabafiles/001/src/sa31147.zip

571デフォルトの名無しさん:2005/09/26(月) 13:24:43
>>567
ShellExecuteだと関連付け起動もできる。
572デフォルトの名無しさん:2005/09/26(月) 13:31:05
>>570
改行(\r\n)が無いようだが?
573デフォルトの名無しさん:2005/09/26(月) 13:37:36
>>572
おお、送信するべき文字列に\r\nを加えたらHTMLを読んでくれました!!
いやはや一応RFCやら各種書籍を読んだツモリだったのでしたがお騒がせしました(´・ω・`;)
574デフォルトの名無しさん:2005/09/26(月) 13:39:20
ごめぽ、
本当の事を言うと英語読めないからRFCは途中で投げ出して、書籍もまだ読み途中です(っд`:)
575デフォルトの名無しさん:2005/09/26(月) 14:09:49
forkって内の?
576デフォルトの名無しさん:2005/09/26(月) 14:24:45
>>575
ファイバーでがまんしろ。
577デフォルトの名無しさん:2005/09/26(月) 14:28:53
>>575
cygwinでも使え
578567:2005/09/26(月) 14:39:12
>>569, >>571
ありがとうございます。
571 さんへ、ShellExecute() も使っていますが、関連付けでなく、アプリケーションを
指定したかったもので。(関連付けると元に戻すとか出てくるし)
579デフォルトの名無しさん:2005/09/26(月) 14:48:06
580デフォルトの名無しさん:2005/09/26(月) 14:49:33
Windowsプログラムでよく
関数プロトタイプがなかったり、ウィンドウプロシージャの引数部分を WndProc (HWND, UINT, WPARAM, LPARAM) ;
といった書き方をするソースを見ることがあるのですが、

WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) ;

上記のように明示的に関数プロトタイプを示してはならないのでしょうか?
581デフォルトの名無しさん:2005/09/26(月) 15:04:01
>>580
(それに戻り値の型をつければ)全然問題ない。

C/C++では名前を使うより前にその名前の宣言がなければならない。
で、WndProcの定義をファイルの先頭に書けば、それが宣言にもなってプロトタイプを書かなくてすむ。
WndProcの定義をファイルの後ろのほうで書くのなら、
WinMainなんかで使うより前に宣言を書いてWndProcの存在を知らせておく必要がある。
582580:2005/09/26(月) 15:07:48
>>581
回答ありがとうございます。
安心できました。:-)
583デフォルトの名無しさん:2005/09/26(月) 16:59:41
ttp://www.vector.co.jp/soft/win95/personal/se037902.html
↑こんな感じのツールを作っているんですが、
タスクバーには表示されないけど Alt + Tab のリストには表示される、
というウィンドウを作る方法はありますか?

CreateWindowEx で WS_EX_TOOLWINDOW を指定すると、
タスクバー表示は無くなりますが Alt + Tab でフォーカスを移せなくなってしまいます。
他のオプションもいろいろ試してみたんですが、どうもうまくいきません。
584デフォルトの名無しさん:2005/09/26(月) 18:07:33
めっちゃ初歩的な質問ですみません。
ウィンドウサイズを変える関数ってありませんか?
585デフォルトの名無しさん:2005/09/26(月) 18:17:53
あります。
586デフォルトの名無しさん:2005/09/26(月) 18:18:34
>>584
SetWindowPos
587デフォルトの名無しさん:2005/09/26(月) 18:26:56
>>584
MoveWindow or SetWindowPos

>>583
ファイルやフォルダのプロパティウィンドウがそれっぽいから
Spyとかでウィンドウスタイルを調べてみてはどうだろうか
588デフォルトの名無しさん:2005/09/26(月) 18:28:30
>>585-586
スマソ。事故解決しますた・・・orz
MoveWindow
589584:2005/09/26(月) 18:36:02
>>587
お手数かけさせてスマソ。逝ってきます
590デフォルトの名無しさん:2005/09/26(月) 18:36:50
>>583
WS_EX_APPWINDOWはダメだった?

1. GetWindowLongで拡張スタイル取得
2. (SWP_NOACTIVATE | SWP_HIDEWINDOW) でSetWindowPos
3. 拡張スタイルから WS_EX_APPWINDOW を外してSetWindowLong
4. (SWP_NOACTIVATE | SWP_SHOWWINDOW) でSetWindowPos

ってな感じで。
Alt+Tabの方も出なくなるかもしれないけど・・・
591デフォルトの名無しさん:2005/09/26(月) 21:12:00
後はITaskbarList::DeleteTabなんてのもあるな。
592デフォルトの名無しさん:2005/09/26(月) 23:22:33
ttp://wisdom.sakura.ne.jp/system/winapi/win32/win66.html
ココの一番最後のプログラムなんですけど
実行してアプリケーションを動かしてみると、メモリ使用量がどんどん増えていきます。
原因はなんでしょうか・・
593デフォルトの名無しさん:2005/09/27(火) 00:49:31
WndProc (EN_UPDATE)
malloc()
SetWindowText

WndProc (EN_UPDATE)
malloc()
SetWindowText

(略)
594デフォルトの名無しさん:2005/09/27(火) 01:02:22
いやでもfreeでしっかりメモリは解放されてますよ?
595デフォルトの名無しさん:2005/09/27(火) 06:16:07
>>590
やってみましたが、やっぱりタスクバーと Alt + Tab 表示が連動してしまっているようです。

>>587
ウィンドウエクスプローラで調べて CreateWindowEx してみましたが駄目でした。
どうもウィンドウスタイルの問題じゃ無いみたいです。

で、
「〜のプロパティ」ダイアログは StubWindow32 という不可視ウィンドウが親らしいので、
まさかと思っていろいろ試してみたら、
どうやら DialogBox() や PropertySheet() を呼び出すときに、
不可視ウィンドウを親に指定すれば Alt + Tab のリストに表示されることがわかりました。
何なんだこの仕様…。

ということで無事解決できました。
助言してくださった方々、ありがとうございました。
596デフォルトの名無しさん:2005/09/27(火) 06:49:18
>>595
前々から、タスクバーに表示されないウィンドウを出す方法として言われてますけどね
597デフォルトの名無しさん:2005/09/27(火) 06:55:27
>>594
だがそのあたりしかありえん
もう一度自分の書いたプログラム確認してみれ
598デフォルトの名無しさん:2005/09/27(火) 07:42:39
>>594
増えていくのはあたりまえ

メモ帳で1Gのテキスト開いたのと
空っぽの状態のメモ帳のメモリ使用量を考えるといい
599デフォルトの名無しさん:2005/09/27(火) 08:23:29
>>592
malloc()だけがメモリ使用量を増やすわけではない。つまり、>598。
>>597
自信満満に乙。
600デフォルトの名無しさん:2005/09/27(火) 08:30:34
ソース見ても問題なさそうだし、
全部コピペしてビルドして確認してみても
メモリがどんどん増えていく現象は起きないな

もし問題あるようならウイルス、トロイ、キーロガーとか他のソフトが原因かも
601デフォルトの名無しさん:2005/09/27(火) 09:13:44
>>600
文字を書いていくと増えていく
602デフォルトの名無しさん:2005/09/27(火) 09:36:09
editコントロールのデフォルトの上限は約32kバイトでそれが2つだから
増えるっていってもせいぜい64kぐらいじゃないですか?
その他にコピーしたりでいろいろ浪費したとしても知れてると思うけど

Allocating a Text Buffer
When the system creates an edit control,
it automatically creates a text buffer,
sets its initial size, and increases the size as necessary.
The size can be up to a predefined limit of approximately 32 kilobytes
for single-line edit controls.
603デフォルトの名無しさん:2005/09/27(火) 11:40:21
Windowsが消費してんだろ。
604デフォルトの名無しさん:2005/09/27(火) 12:01:23
はぁ、やはりコントロールが消費してましたか・・
最初はコントロールが消費するだろうとは踏んでたのですが、文字を全て消してもメモリの使用量が減らないままで・・
605デフォルトの名無しさん:2005/09/27(火) 12:03:11
でも、増え続ける訳ではないだろ?うちでは16MB程度で頭打ちになったが。
つか、最小化して戻したりすると、減ってない?
606デフォルトの名無しさん:2005/09/27(火) 12:34:25
起動直後 2352KB
入力終り 2616KB(キーボード押しっぱなしで15分ぐらいで打ち止め)
最小化 132KB
元に戻す 980KB

秀丸へコピペしてテキストファイルへ保存、サイズ確認
29.2 KB (30,000 バイト)
607デフォルトの名無しさん:2005/09/27(火) 12:37:57
>>604
そもそも、freeしたからと言って、
すぐにメモリ使用量が減るわけではない事くらい、
プログラマなら覚えておけよ。
608デフォルトの名無しさん:2005/09/27(火) 14:27:22
Get ProcessWorkingSet Size
なのか、ちょっと悩んでしまった。
609セェンロン ◆89nOjCFiLI :2005/09/27(火) 15:38:43
誘導されて来ました。質問です。
http://kuroneko-upload.no-ip.info/uploader/upbd/updir/aaa.jpg
この真中のリストビューみたいなのを作りたいんですが、どうやったらいいんでしょうか?

リストビューのフラグいじったら出来ると思ってたんだけど、出来ずに困ってます。
教えてクダサイ。お願いしますです。
610デフォルトの名無しさん:2005/09/27(火) 15:40:37
つSpy++
611デフォルトの名無しさん:2005/09/27(火) 15:53:24
612デフォルトの名無しさん:2005/09/27(火) 15:55:18
質問です。
w2kでSetProcessWorkingSetSizeをPowerUserで実行しようと
以下のように書いてみたんですが
ProsHandle = OpenProcess(PROCESS_SET_QUOTA, TRUE, GetCurrentProcessId());//@
if(ProsHandle == NULL) return -1;
if(FALSE == OpenProcessToken(ProsHandle,TOKEN_QUERY|TOKEN_ADJUST_PRIVILEGES, &TknHandle)) return -2;//A
if(FALSE == LookupPrivilegeValue(NULL, SE_INCREASE_QUOTA_NAME, &Luid)) return -3;//B
NewState.PrivilegeCount = ANYSIZE_ARRAY;
NewState.Privileges[0].Luid = Luid;
NewState.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
if(TRUE != AdjustTokenPrivileges(TknHandle, FALSE,&NewState, sizeof(OrgState), &OrgState, &Length)) return -4;
Result= SetProcessWorkingSetSize( hProcess, processMinSize, processMaxSize );
if( !Result ){ asdf=GetLastError();}

@行 PROCESS_SET_QUOTAをPROCESS_ALL_ACCESSにしないと
AのOpenProcessTokenでerrorになります。
BのSE_INCREASE_QUOTA_NAMEもあっているのかどうかわかりません。
助けてください。
613セェンロン ◆89nOjCFiLI :2005/09/27(火) 16:05:19
>>611
このツールはVBで作られていたのかw
もっさり感といい、うっすらとそんな予感はしてましたが、本当にそうだったとは。。
ありがとうです。
違う方法で同じようなのを作ってみます。
614デフォルトの名無しさん:2005/09/27(火) 16:12:35
>>613
コントロールはActiveXコントロールだろ?
>>611のページがVBでの使い方を書いてるだけじゃん

そのツールとやらは知らんので、
それがVBで作ってあるかどうかは何ともいえんが
615デフォルトの名無しさん:2005/09/27(火) 16:22:48
見た感じが同じ
616デフォルトの名無しさん:2005/09/27(火) 18:04:46
VBのコントロールってC+から使えないの?
617デフォルトの名無しさん:2005/09/27(火) 18:21:38
>>564じゃないけど、半透明の描画方法が分かりません。
猫でもに見当たらないんですが、誰か教えてください。
618デフォルトの名無しさん:2005/09/27(火) 18:29:21
BitBltでSRC_PAINTとかで描画すればいいのでは。
619デフォルトの名無しさん:2005/09/27(火) 18:52:03
>>616
ActiveXコントロール貼り付けでいけそう
その後でクラスウィザード起動したらCMSFlexGridというクラスが追加された
620デフォルトの名無しさん:2005/09/27(火) 18:53:56
>>618
dクス!
621デフォルトの名無しさん:2005/09/27(火) 20:20:51 0
初歩的ですみませんが質問です。
Win32API を利用してフォントの情報を取得するにはどうすればよいでしょうか。
ウインドウや HDC が存在すれば LOGFONT を利用して取得できますが、
それらを使わずに取得したいと思います。

具体的にはフォントファミリーを指定することで、フォントが等幅かどうか知りたいのですが。

622デフォルトの名無しさん:2005/09/27(火) 20:29:31 0
素直にメモリDC使え。
623621:2005/09/27(火) 21:14:47 0
>>622
CreateCompatibleDC がこのように使えるとは知らなかったです。
どうもありがとうございました。
624セェンロン ◆89nOjCFiLI :2005/09/27(火) 21:31:37 ID:0
>>614
おおおお。ホントだ。試しにやってみます。
検索したら、少ないけど登録の仕方が出て来ました。
サンクッス。
625デフォルトの名無しさん:2005/09/27(火) 21:37:25 ID:0
>>612
まずは落ち着いてMSDNちゃんと読め。
626548:2005/09/27(火) 22:00:58 ID:0
よろしくおねがいします
627デフォルトの名無しさん:2005/09/27(火) 22:30:48 ID:0
>>624
FlexGridはVisualStudio6には標準でサブセット版がつくけど、VC7.1にはつかないので要注意。
その場合、FlexGridProを買うか、MSOfficeをインストールしていればExcel由来のGridControlを使うことになると思う。
628デフォルトの名無しさん:2005/09/27(火) 23:12:44
>>548
FindFirstChangeNotification
とかじゃないか?
629548:2005/09/27(火) 23:25:31
おお, こんなAPIがあったとは
628さん ありがとうございます
630デフォルトの名無しさん:2005/09/28(水) 01:36:56
>>617
最後まできちんと探せよw
631デフォルトの名無しさん:2005/09/28(水) 01:49:28
タイトルバーやメニュー部分まで
オリジナルのデザインのウインドウというのはどうやって作っているのでしょうか?
ポップアップウインドウにして
ポインタの座標を取って地道に処理の追加をやっていくのでしょうか?
632デフォルトの名無しさん:2005/09/28(水) 01:51:14
だね
633631:2005/09/28(水) 02:03:58
>>632
やっぱりそうですか
どうもでした
634デフォルトの名無しさん:2005/09/28(水) 03:58:51
>>631
タイトルバーは WM_NC* をごにょごにょするんだと思うお。
メニューは知らん。
635デフォルトの名無しさん:2005/09/28(水) 13:22:31
>>631
メニューもある程度ならオーナードローできる。
メニューウィンドウを非矩形にしたいとかなら、自分で
メニューエミュレートだと思う。
636デフォルトの名無しさん:2005/09/28(水) 14:59:00
APISPY32系のツールでお勧めはありますか?
637デフォルトの名無しさん:2005/09/28(水) 15:07:13
APISPY32
638デフォルトの名無しさん:2005/09/28(水) 16:43:33
自分のウィンドウのが表示されているときのクライアントエリアに相当する部分の
非表示時のビットマップデータを取得する簡単な方法はありますか?

目的はリアルタイムにビットマップを取得してその都度加工して表示することです
現在考えている方法はSetWindowPos-SWP_HIDEWINDOWとして
デスクトップのDCを取得し、BitBltでメモリDCに保存してウィンドウ復元>加工>描画と言うものですが
ウィンドウをSetWindowPosの度に再描画されてあまりスムーズに見えなそうな気がしています
639デフォルトの名無しさん:2005/09/28(水) 17:34:36
ダイアログの上にリストビューを作ったんですが、クリックしても全く反応しません。
どうやったらいいのでしょうか?教えて下さい。
640デフォルトの名無しさん:2005/09/28(水) 18:20:49
どうやったらいいんでしょうねえ。
641デフォルトの名無しさん:2005/09/28(水) 18:45:07
>>639
デバッグする
642デフォルトの名無しさん:2005/09/28(水) 18:56:55
よく再起動のメッセージなどで、「30秒後にwindowsを終了します」みたいなメッセージボックスが出て
カウントダウンされていくのがありますが、普通のメッセージボックスでもできるのですか?

643デフォルトの名無しさん:2005/09/28(水) 19:08:17
>>639
諦めろカス!
644デフォルトの名無しさん:2005/09/28(水) 19:13:27
>>638
クライアントエリアのビットマップを取るのになぜデスクトップのDCと思うのがすっげー不思議

>>639
リストビューを作ったけどなにもデータ入れてないとかじゃねーの?
645デフォルトの名無しさん:2005/09/28(水) 19:42:32
>>644
> 自分のウィンドウのが表示されているときのクライアントエリアに相当する部分の
> 非表示時のビットマップデータを取得する簡単な方法はありますか?
646デフォルトの名無しさん:2005/09/28(水) 19:47:47
>>644
取得したいのは背景にあたる部分です

↓はめ込み合成によるイメージ
ttp://vista.x0.com/img/vi04827.png
647デフォルトの名無しさん:2005/09/28(水) 19:47:53
>>645
(゚д゚)?
648デフォルトの名無しさん:2005/09/28(水) 19:49:27
>>646
それはあれ?
ただ背景をクライアント領域に表示するのが目的?
それとも、DCとか使ってクライアント領域が隠してる背景を取得するのが目的?
649デフォルトの名無しさん:2005/09/28(水) 19:52:18
>>648
後者ですね、フィルタをかけて表示するつもりです
650639:2005/09/28(水) 19:53:14
>>644
データは入っています。

それと、操作を受け付けない原因が分かりました。
タブコントロールの上に乗っていたのが問題だったようです。
どうやったら解決するかはまだですが、やっと前に進んだ・・・・・
651デフォルトの名無しさん:2005/09/28(水) 20:44:03
タスクバーに表示されないウィンドウとそのオーナーウィンドウを表示する
プログラムですが、子供のウィンドウ(タスクバーに表示されない方)を削除すると
なぜかオーナーウィンドウが最小化されてしまいます。
ttp://chise.s25.xrea.com/cgi-bin/up/source3/No_1385.txt
コードが長いのでうpしました(ほとんど猫でものコピペです。スマソ)
なぜでしょうか。教えてください。
652デフォルトの名無しさん:2005/09/28(水) 20:48:18
>649
それはレイヤードウインドウでは解決できない?
653デフォルトの名無しさん:2005/09/28(水) 21:30:41
かけたいフィルタにも寄るかと
654デフォルトの名無しさん:2005/09/29(木) 04:48:35
>>651
よくわからんのだが、削除ってのはどのタイミング?
WM_CLOSEの処理?それともDestroyWindow(hChdWnd)呼んだとき?

ウチのWin2kSP4だと再現しないなあ。
バックグラウンドにはなるけど、これは自力で処理しない限りどうしようもないはず。

ChildProcのWM_CLOSEの処理の表示メッセージと処理内容が
一致してないけどいいのかな?
少なくとも最小化はしない。
現象をもう一度確認して、デバッガで追っかけてみては?
655デフォルトの名無しさん:2005/09/29(木) 16:10:27
リストビューでLVS_EDITLABELSを指定し編集をする時、iSubItemの0番目しか編集出来ないのでしょうか?
656655:2005/09/29(木) 16:24:44
ロクに調べずごめんなさい。自己解決しました。
ググったら、出来ないって出てきました。
リストビューを編集したい分だけ並べて、見た目は1つに見えるようにします。
657デフォルトの名無しさん:2005/09/29(木) 17:31:42
>>656
メッセージをうまくトラップして任意のカラムを編集できるように見せかける応用はCodeGuruを探すと出てきますよ。
私も作ったし。
#但しMFC。
658デフォルトの名無しさん:2005/09/29(木) 17:34:58
>>656
頭いいなお前
659651:2005/09/29(木) 18:16:37
>654
スマソ。早とちりでした。
最小化ではなく非アクティブになって他のウィンドウに
隠れてしまうという現象でしたが、
SetActiveWindowでなんとかなりました。
原因はよく分かりませんが、ありがとうございました。
660デフォルトの名無しさん:2005/09/30(金) 04:44:19
スレ違いのような気もしますが妥当なスレがないのでここで質問させてください。
*.def ファイルを書いて *.dll から *.lib ファイルを作りたいのですが、
複数の *.dll ファイルを指定する方法はありますでしょうか?

LIBRARY の行を複数書いたり、複数の dll を指定したりするとエラーを吐いてしまいます。
661デフォルトの名無しさん:2005/09/30(金) 05:01:26
複数DLL>単一LIBを作成するってこと?
それなら出来ないんじゃないの。

複数DLL>複数LIBならやりようはいくらでもあるだろうけど。
662デフォルトの名無しさん:2005/09/30(金) 05:18:17
うーん・・・
某所で入手した lib ファイルを覗いてみると複数の dll の関数名が書いてあるようなので
できるとは思うんですが。
663デフォルトの名無しさん:2005/09/30(金) 06:08:33
なんでその某所を書かないんだ
664デフォルトの名無しさん:2005/09/30(金) 07:22:46
timeGetTimeが常に同じ異常な値($B??????? 詳しくは忘れました)を返すのは、
どういった原因が考えられますか?



665660:2005/09/30(金) 07:46:43

http://hp.vector.co.jp/authors/VA028375/d/windows.h.html
の windows.h for D のアーカイブの中にある win32.lib です。
666デフォルトの名無しさん:2005/09/30(金) 10:44:02
>>664
timeGetTimeの戻り値を確認するのに文字列っておかしくないか?
どんな確認方法よ。
667デフォルトの名無しさん:2005/09/30(金) 12:43:55
>>664
それって、正しいDWORD値のダンプを見ているだけジャマイカ。
戻り値はmsec単位だから下のほうはすぐ変わっても上のほうはそうそう変わらんわけだし。
668デフォルトの名無しさん:2005/09/30(金) 14:54:13
ACPIからCPU温度を取ってくる方法って誰か知らない?
669デフォルトの名無しさん:2005/09/30(金) 19:16:50
誰か教えてください。
今、デュアルディスプレイで、スクリーンショットを取るプログラムを
作ろうと思っているのですが、どうもプライマリディスプレイだけしか
スクリーンショットがとれないのです。
セカンダリディスプレイとプライマリディスプレイ両方の画面情報を
一つの画像としてとる方法ないですか?
670デフォルトの名無しさん:2005/09/30(金) 21:27:42
プライマリとセカンダリは別の解像度に設定できるが
その場合どうするつもりだね?
671デフォルトの名無しさん:2005/09/30(金) 22:08:57
>>665
それはD言語のライブラリアンが作る独自形式。
拡張子は同じでも互換性はまったくない。
672デフォルトの名無しさん:2005/09/30(金) 22:14:11
>>670
基本的には同じ解像度でやりたいと思ってます。
できれば違った解像度に設定された場合についても教えてもらえたらうれしいのですが
673デフォルトの名無しさん:2005/09/30(金) 23:53:37
IME の変換中の背景色を変える方法をご存知の方、教えていただけませんか?
RichEdit では出来るようなのですが、自前の View でやりたいのです
674デフォルトの名無しさん:2005/09/30(金) 23:57:12
>>672
GetDC(NULL)で全仮想スクリーンのDCが取れる
675664:2005/10/01(土) 00:07:12
>>666
えっと、戻り値を16進数の文字列でデバッグしたのです。

>>667
$B??????? msほど長時間使ってませんし、 いつ呼び出しても常に同じ値が返ってきたのです。
再コンパイルしても同じでした。
ゲームでこれでフレームレートの管理をしていて、無限ループに陥りました。
でも、次にPCを起動したら直っていて、再現できません。
あと、色々やってた中で、 GetTickCount の方は正しい値を返してたと記憶してます。
676660:2005/10/01(土) 01:53:05
>>671
そうですか・・・
どちらも def ファイルに書くので互換性があるかもと思ったのですが。
面倒にはなりますが複数 lib をつくれば済む話なのでそうしようと思います。
どうもありがとうございました。
677デフォルトの名無しさん:2005/10/01(土) 04:33:25
>>673
IME周りのメッセージをDefWindowProcに渡さずに自前描画。

>>675
ってことは再現してないのか…
timeBeginPeriod/timeEndPeriodは?
678デフォルトの名無しさん:2005/10/01(土) 06:05:20
メニューみたいなものを作りたいと思っています。
ところがポップアップウインドウを表示すると、フォーカスを奪ってしまうため親ウインドウが非アクティブ状態になってしまいます。
このような挙動をしないウインドウを作成するためにはどうすればよいでしょうか。
WS_POPUP、 WS_EX_TOOLWINDOW、 WS_EX_TOPMOST あたりを試してみましたがうまくいきません。

679デフォルトの名無しさん:2005/10/01(土) 08:22:29
コントロールにすれば?
680デフォルトの名無しさん:2005/10/01(土) 10:28:51
>>678
普通にメニュー使えよ
681デフォルトの名無しさん:2005/10/01(土) 10:38:29
WM_WINDOWPOSCHANGINGハンドラでSWP_NOACTIVATEフラグを立てる
682デフォルトの名無しさん:2005/10/01(土) 12:26:45
ツールバーにする。
683デフォルトの名無しさん:2005/10/01(土) 15:54:20
ある画像ファイルがあります。この画像ファイルは
64×64ピクセルの正方形の画像です。

この画像ファイルを90度時計回りに回転させて
表示するにはどうしたらよいのでしょうか?

「┳」を90度時計回りに回転させて「┫」のように表示したいのです。

あらかじめ回転させておいた画像を別に用意することも考えましたが、
90度、180度、270度と別に用意する画像があり、画像の容量が4倍に
なってしまうため、画像を別に用意するのは止めにしました。
684デフォルトの名無しさん:2005/10/01(土) 16:13:40
>>683
自前でビットデータを配置しなおしてください
685デフォルトの名無しさん:2005/10/01(土) 16:15:38
>>683
素直にgdiplusのgraphicsクラスなどを使う。
686デフォルトの名無しさん:2005/10/01(土) 17:07:19
>>683
PlgBltを使う
687デフォルトの名無しさん:2005/10/01(土) 17:16:12
>>683
D3DXMatrixRotationZとかglRotateとか
688デフォルトの名無しさん:2005/10/01(土) 18:11:01
BitBltでぐるっと回す
689デフォルトの名無しさん:2005/10/01(土) 18:16:54
BitBltだけで回転などできませんよm9(^д^)プギャー
690デフォルトの名無しさん:2005/10/01(土) 18:44:42
ディスプレイを回す
691デフォルトの名無しさん:2005/10/01(土) 18:49:03
>>690
天才
692デフォルトの名無しさん:2005/10/01(土) 18:55:59
>>690
WinAPIにディスプレイを回す関数はないぞ。
693デフォルトの名無しさん:2005/10/01(土) 19:05:37
いきなり回ったらマジコワスw
694デフォルトの名無しさん:2005/10/01(土) 19:09:45
CDトレイ勝手に開くだけでも怖いのにディスプレイまで回ったら俺のちんちんおっきしちゃうよ
695デフォルトの名無しさん:2005/10/01(土) 19:44:43

開け方教えてくれ

696デフォルトの名無しさん:2005/10/01(土) 19:48:48
ACPI
697デフォルトの名無しさん:2005/10/01(土) 19:52:15
mciSendStringか。おもれーww
698デフォルトの名無しさん:2005/10/01(土) 20:01:17
マウスを自走させる為の規格でも策定してみるかい?
699デフォルトの名無しさん:2005/10/01(土) 20:04:20
お前らそんなに俺を勃起させたいのか
700デフォルトの名無しさん:2005/10/01(土) 20:13:03
>>699を勃たせるAPIをおしえてください!><
701デフォルトの名無しさん:2005/10/01(土) 20:18:52
とりあえずCD開閉ネタはジョークアプリで使おうっと。
702デフォルトの名無しさん:2005/10/01(土) 20:19:41
>>701
使い古されてて嘲笑されるぞ
703デフォルトの名無しさん:2005/10/01(土) 20:20:44
そうなの?
疑似シリーズあたりでは見たこと無い。
704デフォルトの名無しさん:2005/10/01(土) 20:25:59
>>698
自走型マウスはどっかで見た。
この際だから TCP/IP 上でマウス動かすプロトコル作って、RFC に投稿するとか。
705デフォルトの名無しさん:2005/10/01(土) 20:29:11
http://www.paken.org/aaf/running-mouse/

キタ━━━━━━(゚∀゚)━━━━━━ !!
706デフォルトの名無しさん:2005/10/01(土) 21:20:57
inpo DoBokki(inpo, inpo, ...);
707デフォルトの名無しさん:2005/10/01(土) 21:47:35
inpoだと多分コンパイルエラー。
708デフォルトの名無しさん:2005/10/01(土) 21:49:24
void Erect(chinpo);
だろ
709678:2005/10/01(土) 21:55:23
>>681
情報サンクスです。
でもその通りにしてもやっぱりフォーカスを奪ってしまいます。
SWP_HIDEWINDOWやそのほかのフラグはちゃんと動作するのに・・・
710デフォルトの名無しさん:2005/10/01(土) 21:58:12
SendMessage(hWnd699, WM_VIAGRA, NULL, NULL);
711デフォルトの名無しさん:2005/10/01(土) 22:21:23
Netscapeみたいに起動直後にタイトル(タスクバーに表示されないウィンドウ(?))を
どーんと出す方法を教えてください。
712デフォルトの名無しさん:2005/10/01(土) 22:28:46
どーん!
713デフォルトの名無しさん:2005/10/01(土) 22:41:45
>>711
ヒント:スプラッシュ
714デフォルトの名無しさん:2005/10/01(土) 22:44:47
>>711
ヒント:過去ログ
715711:2005/10/01(土) 22:58:50
>713-714
サンクスです!
716デフォルトの名無しさん:2005/10/01(土) 23:01:58
FlashPlayerCodeSDKは一般人には触らせてもらえないんですか?

http://www.macromedia.com/software/flashplayer_sdk/
↑orz
717デフォルトの名無しさん:2005/10/01(土) 23:32:12
一般人てことは会社員だろ、自分の会社名で申し込めばいいじゃん。
自称一般人なら、自分の会社でっちあげたら?どうせ海外だしそこまで調べねぇよ。
718デフォルトの名無しさん:2005/10/01(土) 23:40:19
parsonalとでもかいとけば?
719デフォルトの名無しさん:2005/10/01(土) 23:42:28
personal だろ
720デフォルトの名無しさん:2005/10/01(土) 23:53:47
>>678
WS_VISIBLEを指定しないでウィンドウをCreateし、
その後、SWP_SHOWWINDOW と SWP_NOACTIVATE を指定してSetWindowPosしたらどう?
721664:2005/10/02(日) 00:02:15
>>677
プログラム起動時に
timeBeginPeriod(1);
とし、終了時に
timeEndPeriod(1);
とやってます。

あと、思い出した事は、
別のプロジェクト(ゲーム)でも無限ループに陥ってました。

念のため、起動時にtimeGetTimeが正常に動作するか確認するかどうかで迷ってます…。
722678:2005/10/02(日) 05:02:19
>>720
できました!どうもありがとうございました。
723683:2005/10/02(日) 09:09:23
>684-688
の皆さんありがとうございます。
BitBltと回転行列で実現できそうです。

690さんは・・・
724デフォルトの名無しさん:2005/10/02(日) 09:28:07
ATi CATARYSTの左90度回転機能実行させるAPIとDell UltraSharp2001FP HASを左90度回転させるAPIを教えてくだしあうぇrtふygbhにmじょk、l。「;
725デフォルトの名無しさん:2005/10/02(日) 10:53:06
>>723
Direct3Dを使わずDC経由でのみ画像にアクセスするアプリなのであれば、GDI+を使うべきだと思うよ。
アンチエイリアス効果が使えるので、縮小拡大画像も綺麗に見せることができる。
726デフォルトの名無しさん:2005/10/02(日) 11:13:08
GDI+はハードウエア支援が絶望的だけどね
727デフォルトの名無しさん:2005/10/02(日) 11:23:56
DC経由で操作する古典的なアプリで、ハードウェア支援とか言い出すのもどうかと思う。
728デフォルトの名無しさん:2005/10/02(日) 11:27:50
>>726
君は詳しそうだね。
まずは、ハードウェア支援があるDC用のWin32API関数を列挙してくれない?
729デフォルトの名無しさん:2005/10/02(日) 11:54:58
ハードウエア支援=ハードウエア依存
という現実を無視する>>726に幸あれ。
730デフォルトの名無しさん:2005/10/02(日) 12:00:51
俺は、ビデオドライバの入替や、最新DirectXのインストールをユーザに求める度胸はないな。
俺はプロフェッショナルな>>726と違って腰抜けなので、配布物にgdiplus.dllを添付する仕様にするね。
731デフォルトの名無しさん:2005/10/02(日) 12:23:00
スタティックリンク出来るならGDI+使ってあげてもいいのに
732デフォルトの名無しさん:2005/10/02(日) 12:23:44
>>728
特定条件下ではビットマップがビデオメモリ上に取られたり
BitBltがハードウェアで行われるとか聞いたことがある。

と探してたらあった。
ttp://www.sun-inet.or.jp/%7Eyaneurao/intensive/diw1.html
733デフォルトの名無しさん:2005/10/02(日) 12:40:16
vistaからはGDIは全てソフトウェア処理になるそーだ
GDI+もそうなんだろうか
734デフォルトの名無しさん:2005/10/02(日) 12:46:36
DirectX10でググってたらこんなの出てきたよ

If your graphics card is using the new Vista driver model then
GDI/GDI+ has *NO* hardware acceleration. In practise this shouldn't
be a big deal since the CPUs are so darn fast these days.

ハードウェアアクセラレートがあるっていうから勉強してたのに
もうGDI+使わねーよヽ(`Д´)ノウワァァン
デマ流してた奴でてこーい
735690:2005/10/02(日) 12:52:05
>>723
褒め称えてくれてかまわんよw遠慮すんなってww
さてはツンデレか?
736デフォルトの名無しさん:2005/10/02(日) 13:09:25
BitBltの速度検証はエロゲ葱板で数年前に検証してたはず。
結論はビデオカードにによって速度が全然違ってたような‥‥
737デフォルトの名無しさん:2005/10/02(日) 13:11:47
ドライバ次第
738デフォルトの名無しさん:2005/10/02(日) 13:14:40
日進月歩のこの世界で数年前の検証の意義は微妙じゃね?
739デフォルトの名無しさん:2005/10/02(日) 14:08:56
>>734
その訳だと、「現状のvistaドライバは未対応だ。」って言ってるようにもみえるね。
ま、どっちにしろCPUが高速になっているから、2D環境でのハードウェア支援はあまり要らんだろ。
740デフォルトの名無しさん:2005/10/02(日) 14:40:08
>>739
「新しいvistaのドライバモデルでは」じゃないの?
741デフォルトの名無しさん:2005/10/02(日) 14:58:56
Vistaドライバモデルではハードウェア支援を受けられないけど
最近のCPUは高速になってるから大したこと無い。
ってことか。
742デフォルトの名無しさん:2005/10/02(日) 15:01:43
LDDMのことですね
ゲームの場合だと古いドライバモデルを使ったほうが速いなんてことも発生するのかな
743デフォルトの名無しさん:2005/10/02(日) 15:53:00
一番重要なのは、GDI+だけでなくGDI全体がソフトウェア処理されるって部分だろ。
つまり、DirectXを使わないアプリは、すべてソフトウェアレンダリングってこった。
744743:2005/10/02(日) 15:55:38
あ・・WindowsMedia関連はどうなるのかねぇ。
WindowsMediaはDirectXやDirectShowとは別の独立した存在だし。
どっちにしろGDIじゃないからハードウェアサポートありだろうけど。
745デフォルトの名無しさん:2005/10/02(日) 15:56:13
低スペックPCにVISTA入れる奴が悪い
746デフォルトの名無しさん:2005/10/02(日) 15:57:29
そもそもVistaではGDI切り捨てるというか、2Dは切り捨てだと言ってなかったっけ?
全てを3Dに移行するというのを見た記憶があるが
747デフォルトの名無しさん:2005/10/02(日) 16:01:26
>>746
2D切り捨てたらビジネスアプリはどうなる?
2D描画も3Dハードウェアで描画するってだけだろ。
748デフォルトの名無しさん:2005/10/02(日) 16:06:48
>>747
ビジネスアプリに限らず、HDC型を用いるレガシーのAPI全般が影響を受けるでしょ。
749デフォルトの名無しさん:2005/10/02(日) 16:14:25
>>747
だからそう書いてるじゃまいか
誤解したなら俺の書き方が悪かった
750デフォルトの名無しさん:2005/10/02(日) 16:20:21
豊かなユーザー・エクスペリエンスをもたらすWindows Vista時代のAPIセット「WinFX」
ttp://www.atmarkit.co.jp/fdotnet/insiderseye/20050928pdc2005/pdc2005_01.html

WinFXは.NET Framework 2.0の延長線上にある基本クラス・ライブラリである。
前回のPDC 2003では、Windows VistaでWin32 APIはWinFXへと完全に移行するかのようにいわれていたが、
現在ではWindows Vistaの持つ新機能はWinFXとWin32 APIのどちらでも同じようにアクセスできることが
マイクロソフトから明言されている。
751デフォルトの名無しさん:2005/10/02(日) 16:27:58
>>749
つまりは、排他フルスクリーンでないアプリケーション全てってことになるな。
752673:2005/10/02(日) 16:37:43
>>677

レスありがとうございます。
自前ですか・・・。頑張ってみます。
753デフォルトの名無しさん:2005/10/02(日) 17:17:53
>>728
何か勘違いしているようだが、GDIは元々ハードウェア支援がある。
S3全盛期の頃はビデオカードの機能といえば、GDIのアクセラレーションだった。
DDBなんて面倒な方式を使っているのは、そのためでもあるんだし。
754デフォルトの名無しさん:2005/10/02(日) 17:22:16
スレ違いと知りつつ言ってみるが、UNIXのX Window Systemで
ハードウェアアクセラレーションをオフにすると、2D描画も
非常に遅い。2D描画もVGAチップの恩恵を受けてる。
755デフォルトの名無しさん:2005/10/02(日) 18:12:08
そもそもOSが違う
帰れ
756デフォルトの名無しさん:2005/10/02(日) 18:43:49
んじゃディスプレイのプロパティ>設定タブ>詳細ボタン>トラブルシュートタブ>アクセラレートOFFにしてみれ
757デフォルトの名無しさん:2005/10/02(日) 18:46:14
こりゃ遅い
758デフォルトの名無しさん:2005/10/02(日) 19:34:05
>>756
m9(^д^)PGYAAAAAAAAAA
759デフォルトの名無しさん:2005/10/02(日) 20:52:04
>>753
S3とか懐かしい・・・初めて買ったマシンが864だったよ。
メモリなくてDOSでしか使ってなかったけど。

>>756試してみたが、あんまり遅くならんな。

セーフモードで起動したxpはウィンドウがうねるのが見えてたが、
標準VGAドライバはアクセラレーション全部OFFなのかな?
760デフォルトの名無しさん:2005/10/02(日) 21:11:42
XPのセーフモードで、高解像度になるなら、それはVESA BIOSを使ってるわけで、
解像度の変更と、フラットメモリアクセスくらいしか提供されない。
761デフォルトの名無しさん:2005/10/03(月) 00:31:35
あるWindowの子Windowをスクロールさせる処理を作っているんだけど、SetWindowEx()に
SW_SCROLLCHILDを指定すると表示がちらつく。
メッセージを追いかけてみると、WM_ERASEBKGNDが送られている。
Windowの表示位置が変わるとシステムがWM_ERASEBKGNDを送ってしまうらしいんだが、
これを抑止する方法知ってたら教えて。
762デフォルトの名無しさん:2005/10/03(月) 00:33:18
>761
> あるWindowの子Windowをスクロールさせる処理を作っているんだけど、SetWindowEx()に
> SW_SCROLLCHILDを指定すると表示がちらつく。
すまん。間違えた、
ScrollWindowEx()にSW_SCROLLCHILDRENを指定すると
だった。
763デフォルトの名無しさん:2005/10/03(月) 00:53:31
子WindowのクラスのCS_HREDRAWとCS_VREDRAWはもちろんオフだよね?
764デフォルトの名無しさん:2005/10/03(月) 00:57:25
>763
CS_HREADRAW,CS_VREDRAWは指定してないです。hbrBackgroundにもNULLを入れてます。
765デフォルトの名無しさん:2005/10/03(月) 04:36:44
質問です。あるアプリのラッパDLL内で
親アプリのウィンドウハンドルに関連付けてAVISaveOptionsを呼んだら
http://rerere.servebeer.com/src/up20317.jpg
こんな感じにデフォルトでウィンドウが画像ベース?になってしまい
特定のコーデックの設定画面が切れてしまいます。
そこで試しにDLL内でDLLのインスタンスを使ってCreateWindowExをして
空のウィンドウAを作り、そのウィンドウハンドルに関連付けて
AVISaveOptionsを呼んでみたのですが、変わらず↑のような画面が出てきてしまいます
(ShowWindowでウィンドウAを出して見たところ、画像ベースでない普通のウィンドウでした)
おそらく親アプリが事前に何か悪さしてるのであろうと考えているのですが、
MSDN内を探したりgoogle先生に聞いてみたりしましたが、解決法を見つけることができませんでした。
↑のように作ったウィンドウを自動で画像ベースにするようなAPIは存在するのでしょうか?
766デフォルトの名無しさん:2005/10/03(月) 06:43:01
>>761
WM_ERASEBKGNDでぐぐれ
767デフォルトの名無しさん:2005/10/03(月) 06:52:54
>>765
さっぱりわからないが勘で答えてさしあげよう
それはテーマってやつでテーマをOFFにすれば解決だね。
768デフォルトの名無しさん:2005/10/03(月) 15:41:49
test
769デフォルトの名無しさん:2005/10/03(月) 16:03:58
すいません、質問です。

http://aploda.com/dl.php?mode=pass&file_id=0000034649

↑のプログラムは左を押したら vk_left が増えて
その結果を表示するものです。
しかし、作成した「意味無し」ボタンをクリックした後ふたたび左を押すと
なぜか入力を受け付けなくなってしまいます。

わかりにくい文章で申し訳ありませんが、
どなかたお願いします。
770デフォルトの名無しさん:2005/10/03(月) 16:51:02
フォーカスがボタンにいってるから
試しに他のウィンドウクリックして戻ってから左押してみて。
771769:2005/10/03(月) 17:18:50
>>770さん、どうもありがとうございます。
一度ほかのウィンドウに行ってから戻ってくるとキー入力復活しました!

でも毎回この操作をやるわけにもいかないし、
キーボードとボタンの併用は相性悪いんでしょうか・・

フォーカスでググったら
::SetForegroundWindow(hWnd);
って関数が見つかったので色んなところで呼んでみたのですが、
どうもうまくいきませんでした。

ボタンの処理が終わった後、フォーカス?をボタンから離す方法はありませんか?
連続質問ですみませんが、どうかお願いします m(__)m
772デフォルトの名無しさん:2005/10/03(月) 17:25:16
フォーカス移動させるのもいいけど
ボタンのサブクラス化したら?
773デフォルトの名無しさん:2005/10/03(月) 17:43:22
>>617ですが、マスク画像を半透明に描画したいのです。
どうすればいいでしょうか?
ラスタオペレーションで何とかなりませんか?
774デフォルトの名無しさん:2005/10/03(月) 17:43:37
なりません
775デフォルトの名無しさん:2005/10/03(月) 17:52:51
>>773
半透明用のマスク作って、ANDとかXORのROPをかければいいんじゃない?
776769:2005/10/03(月) 17:56:04
>>772
サブクラス化でググってみましたけど、
私のレベルでは難しそう (T_T
フォーカス移動は
::SetActiveWindow(hWnd);
関数でも無理でした orz

>>773
私は使ったことありませんが、
::AlphaBlend()関数で半透明になるという噂が。。
嘘情報だったらすみません。
あ、あと、DIB作って貼り付け先画像と合成すれば半透明は可能ですよ。
777775:2005/10/03(月) 17:56:57
ちと修正。
・半透明用のマスク→画像とは別の半透明用のビットパターン
778デフォルトの名無しさん:2005/10/03(月) 17:58:05
SetFocusくらい察知できるようになろーぜ
779769:2005/10/03(月) 18:00:51
>>778
キタ*・゜゚・*:.。..。.:*・゜(゚∀゚)゚・*:.。. .。.:*・゜゚・*!!!!!
うあ、できました! 激しく激しく感謝!!

ボタンの終わりに呼んでしまってもいいんですよね。
780773:2005/10/03(月) 18:53:43
>>775
BitBlt(hMem , 100 , 10 , 32 , 32 ,
hBkMem , 96 , 0 , SRCAND);
BitBlt(hMem , 100 , 10 , 32 , 32 ,
hBkMem , 64 , 0 , SRCINVERT);
SRCANDの方にはグレーの半透明用のマスクが、
SRCINVERTの方にはその画像が指定してありますが
色が反転してしまってしまいます。
どうすればいいでしょうか?

>>776
AlphaBlend()調べて使ってみましたが、
ラスタオペレーションの設定が分かりません。
半透明になってちょっと感動しましたが、
マスク画像は表示できないのでしょうか?
781デフォルトの名無しさん:2005/10/03(月) 19:34:52
反転させたいからSRCINVERTにしてんじゃないの?
782デフォルトの名無しさん:2005/10/03(月) 19:36:41
全力で間違えた。馬鹿な>>781に触らないであげてくださいorz
783773:2005/10/03(月) 19:40:49
DirectX(DirectDraw)ならマスク画像を半透明にする事もできますかね?
784デフォルトの名無しさん:2005/10/03(月) 19:44:11
>>773
だからBitBltでラスタオペレーションじゃ無理だって言ってるだろ
半透明=アルファブレンドしたいんなら、上で出てるAlphaBlend関数だ
んで、AlphaBlendにはラスタオペレーションは無い

DirectDrawはマスク画像など使わない
785デフォルトの名無しさん:2005/10/03(月) 19:50:14
>>773
>マスク画像は表示できないのでしょうか?

発想の転換というものをしてみましょう
透過処理をするのだから、マスクしたいところをアルファ0で描画すればいいだけだろ?
786773:2005/10/03(月) 20:03:29
>>784
分かりました。
率直な回答ありがとうございます。

>>785
つまり1ピクセルずつピクセルビットから
読み込んで表示汁という事ですか?
787デフォルトの名無しさん:2005/10/03(月) 20:14:24
透過色(抜き色)ではいかんの?
788773:2005/10/03(月) 20:21:02
>>787
具体的にどういう事ですか?
くやしく教えてください。お願いします。
789デフォルトの名無しさん:2005/10/03(月) 20:27:56
>>786
アナタ、32bitBITMAPデータというものを知りませんか
ていうか、アルファブレンドって何かわかってますか
790773:2005/10/03(月) 20:36:41
>>789
すみません。AlphaBlendは軽く調べただけで
どういう事ができるのか、どういう機能が備わってるのか
具体的には分かりません。
正直ぐぐっても、丁寧な説明が少なくてよく分からず、最後の引数に
至ってはほとんど何も分かりませんでした。
791デフォルトの名無しさん:2005/10/03(月) 20:49:00
あれだろ、あたらしいブレンド米の名前だろ?
792デフォルトの名無しさん:2005/10/03(月) 20:52:36
違う。ネスカフェ・アルファブレンド。
793デフォルトの名無しさん:2005/10/03(月) 21:07:13
794773:2005/10/03(月) 21:08:36
空気読めなくて悪いけど
AlphaBlendなら可能って事ですね。
お世話になりました。
795773:2005/10/03(月) 21:15:10
>>793
うはwwwwwすみませ。ありがとうございます
796デフォルトの名無しさん:2005/10/03(月) 22:06:12
>>762
WS_CLIPCHILDRENは?
797デフォルトの名無しさん:2005/10/04(火) 04:10:50
ああなるほど。背景ブラシがNULLなのにWM_ERASEBKGNDのせいでチラつくって
なんかおかしいと思ってた
798762:2005/10/04(火) 19:32:14
>796
WS_CLIPCHILDRENを指定してます。
>797
いや、背景ブラシがNULLなのは親Windowなんですよ。
子WindowにWM_ERASEBKGNDが飛んでいて、子Windowが背景を消去している。
「スクロールして新たに現れた領域」だけを再描画すればよいのに、なぜか子Window全体の
再描画指示がOSから送られてくるので、どうしたもんかと。
799デフォルトの名無しさん:2005/10/05(水) 00:05:18
>>798
思い出したが昔、子ウィンドウを一緒にスクロールさせるのに、
クライアントの上にもう一枚スクロールサイズと同じ大きさのウィンドウを被せて
その上に子ウィンドウを配置して、
スクロールさせるときは、クライアントに被せたウィンドウをMoveWindowなんかで動かす
と言うことをした覚えがある。
これだと子ウィンドウがちらつくことは無かった筈…なんだがもううろ覚え
800ハーピィ:2005/10/05(水) 01:32:14
E・∇・ヨノシ <800ゲット♫
801デフォルトの名無しさん:2005/10/05(水) 08:48:58
>799
なるほど。試してみます。
802デフォルトの名無しさん:2005/10/05(水) 19:29:23
CreateThread関数(_beginthreadex)なんですけど、
_beginthreadex(NULL,0,thread,NULL,0,&thID);
で、関数に渡すスレッドの引数のパラメータを第4引数に指定するとあるのですが、
どうやって渡せばいいのでしょうか・・

unsigned __stdcall thread(FILE *in);

main(){
FILE *in
_beginthreadex(NULL,0,thread,in,0,&thID);と指定してもエラーを吐いてしまいます('A
803デフォルトの名無しさん:2005/10/05(水) 19:33:45
>>802
unsigned __stdcall thread(void *in);
にしてみれ
804デフォルトの名無しさん:2005/10/05(水) 20:07:40
InitializeCriticalSectionAndSpinCount の使い方を教えてください。
スピンカウント?
805デフォルトの名無しさん:2005/10/05(水) 20:12:50
そんなもん不要
ポーリング最強
806デフォルトの名無しさん:2005/10/05(水) 21:08:45
>>802
キャストしてしまえばいい。
_beginthreadex(NULL, 0, (unsigned (__stdcall *)(void *))thread, in, 0, &thID);
807デフォルトの名無しさん:2005/10/05(水) 21:17:48
>>806
キャストを薦めるのはどうかと。
特に>>802のような人には悪影響与えそうだ。
808デフォルトの名無しさん:2005/10/05(水) 21:22:08
>>802
まぁ、あれだ。
まだマルチスレッド使うのは時期そうしょう(なぜか変換できない)ってことだ。
ちゃんとC勉強してからにしろ、な。
809デフォルトの名無しさん:2005/10/05(水) 22:49:35
>>808
総称、創傷 他変換できるぞ
810デフォルトの名無しさん:2005/10/05(水) 22:58:13
>>809
それはネタで言ってるのか?
811デフォルトの名無しさん:2005/10/05(水) 23:04:45
尚早
812デフォルトの名無しさん:2005/10/05(水) 23:15:48
ATOKなら「じきそうしょう」でも変換できるけどな。
813664:2005/10/05(水) 23:28:11
>>664-722
timeGetTimeが常に同じ値を返す問題ですが、 再現性がありましたので報告いたします。
timeGetTime が返す値は 0xBFE561FD で、 これは timeGetTime の開始アドレスでした。
timeGetDevCaps の TimeCaps.wPeriodMax は 0xBFE56225 で、 timeGetDevCaps の
開始アドレスでした。

再現方法ですが、 先ず、 DirectX と MMTimer を使うアプリと、
MMTimer のみ使うアプリがあるとします。

OS起動後、MMTimer のみを使うアプリを先に一度でも実行すると、
その後どちらのアプリでも timeGetTime は正常なのですが、

DirectX と MMTimer を使うアプリを先に実行すると、
どちらのアプリでも timeGetTime は自身の開始アドレスを返すようになります。
814デフォルトの名無しさん:2005/10/05(水) 23:42:56
正常な時のtimeGetTimeのアドレスと異常な時のtimeGetTimeのアドレスは同じ?
何かヘンなdll呼んでないかなぁ…
ちなみにdllのロードは静的?動的?
815デフォルトの名無しさん:2005/10/05(水) 23:47:34
>>810
そう言うのは改めて聞くものではないぞ
816デフォルトの名無しさん:2005/10/06(木) 01:03:18
>>813
printf("%X", timeGetTime);
じゃねーだろーな?
817664:2005/10/06(木) 03:16:16
>>814
アドレスは同じで、DLLは静的ロードです。
読み込んでいるDLLも動いているプロセスも、正常時と異常時で同じでした。

また色々したところ、DirectXを使わなくても異常になりました。
再起動しても異常だったり、正常だったりします。
関数の開始アドレスを返すのは確実なので、これで色々探してみます。
818デフォルトの名無しさん:2005/10/06(木) 04:18:06
>>803
なるほど渡す型はLPVOIDですから、受け取る側もLPVOIDにしなければならないのですね。
void* inに修正した所、無事受け取れたのですが・・
inはFILE*ですけど、関数に渡す時にはvoid*と表現されてますんで、例えばin=fopen("test.txt","r");
とする場合(FILE*)inとキャストしなければならないのです。

これはもう宿命でしょうね・・
819デフォルトの名無しさん:2005/10/06(木) 04:51:06
>>818
それは仕方ない。スレッドで受け取る引数は絶対使う型にキャストしないといけない。
820デフォルトの名無しさん:2005/10/06(木) 07:34:48
>>804
マルチプロセッサじゃないと意味ないばかりかCPUの無駄
821デフォルトの名無しさん:2005/10/06(木) 08:15:59
>>818
最初にFILE *の変数に代入してしまえばいい。
unsigned __stdcall thread(void *Param)
{
    FILE *in = (FILE *)Param;
822デフォルトの名無しさん:2005/10/06(木) 08:26:01
>>817
そんな話初めて聞いたから、君のプログラムがしょうもない
間違いをしているのではないかと思うが。
823デフォルトの名無しさん:2005/10/06(木) 14:02:04
先生_beginthreadexなんですが、、('A`)
MSのヘルプでは・・・
unsigned long _beginthreadex( void *security, unsigned stack_size, unsigned ( __stdcall *start_address )( void * ),
void *arglist, unsigned initflag, unsigned *thrdaddr );
んでarglistに渡す引数のリスト(無い場合はNULL)とあるのですが、
void* arglistというのは抽象過ぎて意味がわかりません。
いろいろ調べて考えて弄ったんですが、やっぱり意味がわかりません('A`)..

これはスレッドに渡す引数は配列にしなさいよーっつーことですか?
824デフォルトの名無しさん:2005/10/06(木) 14:04:13
すみません、問題も抽象過ぎました
スレッドが扱う関数に複数の引数を渡したいのです
825デフォルトの名無しさん:2005/10/06(木) 14:06:23
cのmainのargvと同じだろ
826デフォルトの名無しさん:2005/10/06(木) 14:10:42
構造体にでもまとめて、そのアドレス渡す。
827デフォルトの名無しさん:2005/10/06(木) 14:15:39
はぁ、構造体で渡しますか..
イマイチスレッドは扱いにくいですね
828デフォルトの名無しさん:2005/10/06(木) 14:42:45
構造体で渡した方が融通利くと思うが…。
扱いにくいかねえ。
829デフォルトの名無しさん:2005/10/06(木) 14:56:46
構造体をスタックに置いたりして
830デフォルトの名無しさん:2005/10/06(木) 14:57:00
別に配列でもいいけどな
まぁ、まとめて渡せってこった
831デフォルトの名無しさん:2005/10/06(木) 14:57:36
だから引数の「リスト」なんだろ
832デフォルトの名無しさん:2005/10/06(木) 14:58:23
ホイールマウスのホイールの回転の取得法を教えてください。
833デフォルトの名無しさん:2005/10/06(木) 14:59:33
arg = 引数
list = リスト
834デフォルトの名無しさん:2005/10/06(木) 15:04:47
>>832
メッセージがくるからそれを見ろ
835デフォルトの名無しさん:2005/10/06(木) 15:09:57
>>834
ありがとう
836デフォルトの名無しさん:2005/10/07(金) 01:15:46
>>820
シングルプロセッサだと無視されるから無駄にはならん。
まあ、最適な回数は、実際に試してみるしか、確実な方法がないのだけれど。
837デフォルトの名無しさん:2005/10/07(金) 03:20:27
マルチスレッドでVfWを扱いたいのですが
どうもAVIFileInit()が内部的にCOMを使ってるみたいでうまくいきません。
流れ的には

親プログラム開始→AVIFileInit→特定のキーが押されるとスレッドAを作成 →フラグAがOnになるまでループ
 →フラグAがOnになったらスレッドAのハンドルを閉じてAVIStreamWriteでデータを書き込み→全部書き込んだらAVIFileExitして終了

スレッドA開始→AVIFileOpen&AVIFileCreateStreamで書き込む為のストリームを形成
 →AVISaveOptionsで圧縮設定を受け取る→AVIMakeCompressedStreamで圧縮ストリームを作成
 →フラグAをOn→終了

こんな感じなんですが(エラー処理とかは端折ってます)このままだとスレッドAのAVIFileOpenで
CoInitializeは呼び出されてませんと怒られて失敗し、次のAVIFileCreateStreamでエラー起こします。
そこで親プログラムの最初のAVIFileInitをスレッドAの最初に持っていったのですが、
今度は親プログラムのAVIStreamWriteでCoInitializeは(ryと怒られて割と八方塞がりです。
838デフォルトの名無しさん:2005/10/07(金) 03:37:24
>>837
あー最初俺もそれでハマッタなぁ。
複数のファイルストリームに同時に書き出すの作ってて。
結局VfW関係は専用のスレッドに全ての処理を集めて作ったよ。
全て外部からのシグナルで制御するようにしてた。

その後DirectShowでリライトしたけど、
最初からDirectShow使って置けばよかったと後悔した。
839デフォルトの名無しさん:2005/10/07(金) 06:26:22
for (iYPos = bmpInfo.bmiHeader.biHeight - 1 ; iYPos >= 0 ; iYPos--) {
 for (iXPos = 0 ; ; iXPos++) {
  if (iXPos > (bmpInfo.bmiHeader.biWidth - 1)) {
   iCount = iLine * WIDTH_BYTE;
   iLine++;
   break;
  }
  if(bPixelBits[iCount + 2] == 0 &&
     bPixelBits[iCount + 1] == 0 &&
     bPixelBits[iCount] == 0)
   iCount += 3;
  else {AlphaBlend( hMem,iXPos , iYPos,1,1,hBkMem,iXPos , iYPos,1,1,bf);
   iCount += 3; }
 }
}
AlphaBlendを使った半透明処理なんですが、
BITMAPを1ピクセルずつ確認して黒なら無視、それ以外ならAlphaBlendで描画
というコードです。
AlphaBlendを何十回と呼び出しているので、動作も遅いと思います。
これ以上早いマスク画像の半透明描画があるなら教えてください。お願いします。
840デフォルトの名無しさん:2005/10/07(金) 06:59:15
>>837
CoInitializeEx?
841デフォルトの名無しさん:2005/10/07(金) 07:02:20
>>839
おまえそれ、1ピクセルずつ処理するんならAlphaBlendなんか使う必要無いだろ
842デフォルトの名無しさん:2005/10/07(金) 08:04:50
すいません、
BitBltで画面をキャプチャーするソフトを作っているのですが、
どうしてもマウスカーソルがキャプチャーされないのです。

どなたかマウスカーソルもキャプチャーする方法をご存知の方いらっしゃいませんでしょうか?
843デフォルトの名無しさん:2005/10/07(金) 08:48:12
キャプチャ時に現在のカーソル位置と形状取得して自分で描け。
844デフォルトの名無しさん:2005/10/07(金) 08:51:09
BitBltでマウスもキャプチャーは無理
845デフォルトの名無しさん:2005/10/07(金) 09:04:08
>>843
それだと使っているアイコンの種類によってはちがうもの書いてしまうこともあるでしょうし、

>>844
BitBltつかっちゃうと無理ってことは、
たとえば操作説明用にマウスカーソル付きで画面キャプチャー撮るソフトって
どうやってやってるのか分かりませんか?
846デフォルトの名無しさん:2005/10/07(金) 09:14:55
>>845
GetCursor
847デフォルトの名無しさん:2005/10/07(金) 09:49:14
>>846
それだとCursor関数を使って独自のマウスカーソルを表示していた場合
GetCursorはあくまでもハンドルを返すのでそれと同じものを描画できなくないですか?
848デフォルトの名無しさん:2005/10/07(金) 10:11:50
>>836
EnterCriticalSection による STATUS_INVALID_HANDLE 例外の
防止にも使えるんじゃない?
849デフォルトの名無しさん:2005/10/07(金) 10:42:26
Win32 APIのGetPrivateProfileStringについて
質問があります。
GetPrivateProfileStringを続けて2回コールした場合に
GetPrivateProfileStringの最後の引数のファイル名が
勝手に拡張子を除去して引数のファイル名を返却してくるので
2回目のGetPrivateProfileStringのコールでエラーとなってしまいます。

(引数のファイル名は変数にファイル名を格納したものを渡しています。)

GetPrivateProfileStringは引数のファイル名を勝手に拡張子をはずして返す仕様になっているのでしょうか?
Win32 APIの宣言で引数のファイル名はByValになっているのですが。
ご存知のかた解決方法をご教授願います。
850デフォルトの名無しさん:2005/10/07(金) 10:54:47
>>847
GetCursor()+DrawIconEx()


しのごの言わずに、まずは試してみろ。
851デフォルトの名無しさん:2005/10/07(金) 10:58:53
> GetPrivateProfileStringは引数のファイル名を勝手に拡張子をはずして返す仕様になっているのでしょうか?

んなわきゃない。LPCTSTRだから、変更しないのが仕様。
変数のサイズが悪いんじゃないか?プログラムを疑え
852デフォルトの名無しさん:2005/10/07(金) 11:35:36
>>850
DrawIconEx frmAAA.Picture1.hdc, 0, 0, GetCursor, 0, 0, vbNull, 0, 3
これでためしましたがやはりデフォルトのマウスカーソルが表示されるだけでしたね

http://ad-soft.hp.infoseek.co.jp/
ここのHPのマウスもキャプチャーというツールはしっかりキャプチャーできているようですが
APIだけではやはりむずかしいもんなんでしょうかねぇ
853デフォルトの名無しさん:2005/10/07(金) 12:04:13
854デフォルトの名無しさん:2005/10/07(金) 12:29:46
855デフォルトの名無しさん:2005/10/07(金) 13:17:56
>>849

>GetPrivateProfileStringの最後の引数のファイル名が
>勝手に拡張子を除去して引数のファイル名を返却してくるので
しません。

>(引数のファイル名は変数にファイル名を格納したものを渡しています。)
ソース晒して味噌。

>>851
VBらしいよ。
856デフォルトの名無しさん:2005/10/07(金) 13:52:29
>>854
VBに書き直して使ってみたらばっちりできました!!!
助言ありがとうございました^^
857デフォルトの名無しさん:2005/10/07(金) 15:09:19
ちょっと重い処理中は、WM_MOUSEMOVEの発行が途切れ途切れになりますよね。

そのためWM_MOUSEMOVE時の値を使って何かしていると、
その処理がマウス座標的に「コマ落ち」になってしまい困っています。

これを何て言うかシューティングゲームで言うところの「処理落ち」にしたいのですが、
何か良い方法があったら教えて頂けないでしょうか。

今のところ思いついたのは、途切れ途切れのマウス座標をスプラインにして補間、くらいです。
が、バカなので出来れば複雑な処理は避けたいところです。
858デフォルトの名無しさん:2005/10/07(金) 15:21:29
重い処理はなるべく別のできれば相対的に優先度の低いスレッドに処理させましょう。
859デフォルトの名無しさん:2005/10/07(金) 15:23:06
なるほど、別スレッドを使えば良いんですね。早速やってみます。
シンプルかつ有効な回答ありがとうございます。
860デフォルトの名無しさん:2005/10/07(金) 15:39:09
>>838
うーんやっぱりそれしかないですかね。
VfWはマルチスレッドに対応してないとこでも
もう古臭い技術なのかもしれませんね…
861デフォルトの名無しさん:2005/10/07(金) 15:57:23
case WM_CLOSE:
 id = MessageBox(hWnd,
  "終了してもよろしいですか",
  "確認",
  MB_YESNO | MB_ICONQUESTION);
 if (id == IDYES) {
  if(!KillTimer(hWnd , 1))
   MessageBox(hWnd , TEXT("Error") , TEXT("KillTimer Error") , MB_OK);
  DestroyWindow(hWnd);
  }
 break;


wsprintf(str , TEXT("gametime %d") , gameTime);
TextOut(hMem , 200 , i*5 , str , lstrlen(str));

終了時のメッセージに"終了してもよろしいですか"とあるのですが
結果はメッセージボックスの本文に"ime 0"と表示されてしまいます。
なぜでしょうか? 教えてください。お願いします。
862861:2005/10/07(金) 16:37:34
スマソ。事故解決しますた。
mallocでメモリの確保してなかったぽいです。
863デフォルトの名無しさん:2005/10/07(金) 16:47:21
タイマー処理にてCreateTimerQueue()やCreateWaitableTimer()を使用したいのですがコンパイル時、リンクエラーとなってしまいます。
下記MSDNを見るとkernel32.libを使用とありますので特にリンクオプションは付けてません。

http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpdllpro/html/_win32_CreateTimerQueue.asp

念のため「cl test.c /link kernel32.lib」としてもリンクエラーとなってしまいます。
(コンパイルはCLを直接使ってます)

因みにサーバーの開発ですが、MAX1000スレッド程度のタイマーを同時に
張っても問題ないでしょうか。

当方、Unix屋さんでWindowsは余り経験がありませんので苦労しています。
誰か詳しい方、他にいい方法などあればご教示願います。

環境はWin2000(SP4)、Visual Studio 6.0(SP6)です。

864デフォルトの名無しさん:2005/10/07(金) 16:50:27
>>863
kernel32.libやらの有るディレクトリにパスは通ってるのか?
865デフォルトの名無しさん:2005/10/07(金) 16:50:39
>>863
比較的新しいAPIだからPlatform SDKを入れないといけないんジャマイカ。
866デフォルトの名無しさん:2005/10/07(金) 17:05:46
Platform SDK February 2003までだよな、VC6.0対応は。
867デフォルトの名無しさん:2005/10/07(金) 18:18:14
少なくとも、CreateTimerQueueはWin2kからのサポートだろ。
#define WINVER 0x500 なり
#define _WIN32_WINNT 0x500 はやってあるんだろうね?
868デフォルトの名無しさん:2005/10/07(金) 18:20:56
追加
CreateWaitableTimerはNT4.0からのサポート(MSDNより)
こちらは最低限
#define _WIN32_WINNT 0x400 が必要なはず。
869デフォルトの名無しさん:2005/10/07(金) 18:34:42
キャプチャ野郎は正直な話スパイウェアを作ってんじゃないかとハラハラしている俺がいる。
870デフォルトの名無しさん:2005/10/07(金) 18:38:36
>867, >868
ありがとうございます。
CreateWaitableTimer()はリンクできましたが、CreateTimerQueue()は駄目でした。
winbase.hを見るとCreateWaitableTimer()はあるのですが、CreateTimerQueue()は
はないみたいです。
もう一度、SDK入れてやってみます。
ちなみに、CreateWaitableTimer()とCreateTimerQueue()の違いって何でしょう?
違いがないならCreateWaitableTimer()でもいいかと。
871839:2005/10/07(金) 19:18:04
>>841
1ピクセルずつならアルファ値を指定できる描画処理があるんですか?
872デフォルトの名無しさん:2005/10/07(金) 19:25:46
>>871
1ピクセルずつ処理するんなら自前で透過処理書いた方が速いだろ、ってこと。
アルファ付きビットマップ使えばAlphaBlend一発だ。
873デフォルトの名無しさん:2005/10/07(金) 19:37:37
誰か>>863のMAX1000スレッドという部分にツッコミをいれるべきじゃないのか?
874デフォルトの名無しさん:2005/10/07(金) 19:41:03
スレッド1000個作ろうが個人のかってだろ
875デフォルトの名無しさん:2005/10/07(金) 19:52:41
それ以前に、ハンドル待機関数の同時待機数が、
MAXIMUM_WAIT_OBJECTS 個に制限されている悪寒。
WaitFor〜()、MsgWaitFor〜()が該当する。
MAXIMUM_WAIT_OBJECTS の定義値は64。
876839:2005/10/07(金) 19:58:44
>>872
すみません。言ってることがわけわかめ。
アルファ付きビットマップなんて聞いたことないし、
自前で透過なんていったら1ピクセルずつ判別して描画するくらいしか思いつきません。
AlphaBlendにそんな機能ありました?
877デフォルトの名無しさん:2005/10/07(金) 19:59:30
>>876
MSDNを100回でいいから読んでくれ
878デフォルトの名無しさん:2005/10/07(金) 20:21:32
>873
1000スレッドと言うのは適当です。
要はサーバーですからある程度スレッドが上がることになりますが、
MAXどれくらいタイマーを同時に張れるのかが知りたいのです。
システム上制限があるのであれば、APIを使わずに自分でやるとか
他のやり方を検討する必要があるかなと。

自分で出来るのであればそれでも構わないのですが、
他にやり方あれば教えて下さい。


879デフォルトの名無しさん:2005/10/07(金) 20:31:00
>875
すみません。
WSAWaitForMultipleEvents()も同じく64個の制限なのでしょうか。
880デフォルトの名無しさん:2005/10/07(金) 20:31:22
>>878
もうMSDN百回読んだのか。早いな。
881デフォルトの名無しさん:2005/10/07(金) 20:33:06
>>878
>MAXどれくらいタイマーを同時に張れるのかが知りたいのです。

ドキュメントに制約は書かれていない。
したがって、君が人柱になって報告するべき。
882デフォルトの名無しさん:2005/10/07(金) 20:58:24
>>876
おまえさんそりゃあ、教えてもらおうという態度じゃないべ

わからんならわかるように勉強しなされ
聞いたこと無いって言っても、そりゃ「アナタが聞いたこと無い」だけ
32bitビットマップでグーグル検索してみれ
883デフォルトの名無しさん:2005/10/07(金) 21:00:38
>>879
今のヘッダは確か、こうなっている

#define WSA_MAXIMUM_WAIT_EVENTS MAXIMUM_WAIT_OBJECTS
884839:2005/10/07(金) 21:48:35
>>882
ごめんなさい。リアルで知らんかったです。
今まで苦労してBITMAPINFO構造体とか学んできただけあってか
アルファのあるビットマップが存在するとは思いませんでした。
ありがとうございます。吊ってきます。
885デフォルトの名無しさん:2005/10/07(金) 22:44:19
>>884
そりゃあおまいさん、疑問を抱く姿勢というものが無いな
BITMAPINFO構造体知ってるんなら、多少疑問が出てきそうなもんだがな
RGBQUADのとこで
886デフォルトの名無しさん:2005/10/07(金) 22:53:33
とりあえず、879は、WinsockFAQを見た方がいいな。
887839:2005/10/07(金) 23:30:01
>>885
え? 間違ってたらごめんなさい。
アルファ値ってRGBQUADのrgbReservedに指定するんですか?
0固定じゃ…くぁwセdrftgyふじこlp;@:「
888デフォルトの名無しさん:2005/10/07(金) 23:34:58
889デフォルトの名無しさん:2005/10/07(金) 23:35:41
>>887
RGBQUADの構成で考えると0固定だがな
実際のビットマップファイルのビットデータ構造見たことないのか?
BITMAPINFOではRGBQUADで書かれてるけど、
実際の構造はRGBTRIPLEで24bit構造
アルファ値加えて32bitにしたら、RGBQUADのReservedに相当する領域しか無いだろう?
890デフォルトの名無しさん:2005/10/08(土) 00:03:33
CreateWindowEx でつくったウインドウの×ボタンを無効にするにはどうすればよいですか?
dwExStyle や dwStyle で指定できるものなんでしょうか?
それともウインドウをつくった後に、×ボタンへDisableメッセージを送って実現したりするんでしょうか?
891890:2005/10/08(土) 00:04:30
ちなみに dwStyle に WS_SYSMENU を指定しないと確かに×ボタンはなくなりますが、
一緒に最大化・最小化ボタンもなくなっちゃうので、これ以外の解決策でお願いします。
892デフォルトの名無しさん:2005/10/08(土) 00:15:07
>>890
EnableMenuItem( GetSystemMenu( hWnd, FALSE ), SC_CLOSE , MF_BYCOMMAND | MF_GRAYED );
みたいな
893デフォルトの名無しさん:2005/10/08(土) 00:17:26
894デフォルトの名無しさん:2005/10/08(土) 00:18:37
> それともウインドウをつくった後に、×ボタンへDisableメッセージを送って実現したりするんでしょうか?

いや、システムメニューに EnableMenuItem で Disable する
895890:2005/10/08(土) 00:19:54
>>892-894
うほー皆様ありがとうございます。
>>893様のおっしゃる通り、ぐぐればすぐに見つかりましたね。。。
おかげさまで実現できました。ありがとうございました!
896デフォルトの名無しさん:2005/10/08(土) 05:24:49
http://homepage2.nifty.com/spw/software/hideseek/
こういうツールってどういった仕組みで実現してるんでしょうか?

HideSeekでは、次のデータの表示及び削除が可能です
・OutlookExpressのアカウント情報(メール [POP3・HTTP・ IMAP]・ニュース・ディレクトリサービス)
・Outlookのアカウント情報(同上)
・ダイアルアップ接続(アカウント名・ユーザ名・パスワード・電話番号・デバイス・利用者)
・InternetExplorerの認証パスワード(アドレス・タイトル・ユーザ名・パスワード)
・InternetExplorerのフォーム入力データ(フィールド名・入力文字・アクセス日時)
・InternetExplorerのURL履歴(URL・タイトル)
・InternetExplorerの一時ファイル(ファイル名・サイズ・アクセス日時・アドレス)
・InternetExplorerのクッキー(ドメイン・アクセス日時・サイズ・ユーザ)
・最近使用したファイル及びプログラム

基本的にこういうのってあんまり簡単にゲットできてほしくないんだけど。
897デフォルトの名無しさん:2005/10/08(土) 05:27:48
APIフックやりたいんだが
AdvencedWindowsのサンプルプログラムXPじゃちゃんと動かねーよ。
898デフォルトの名無しさん:2005/10/08(土) 05:31:44
"API Hook" でためしにぐぐってみた。
スゲーいっぱい出てきた。
899デフォルトの名無しさん:2005/10/08(土) 05:36:23
>>こういうツールってどういった仕組みで実現してるんでしょうか?
実現方法をここに書く。そこで見た人間全てが取得方法を知る。

>>基本的にこういうのってあんまり簡単にゲットできてほしくないんだけど。
簡単にゲットされたくないんだろうから、仕組みは書かないほうがいい。

さぁどっち?
900839:2005/10/08(土) 07:20:38
>>888-889
ありがとうございます。
しかし、D-Pixedで編集した画像をバイナリエディタで改変したのですが
いくらReservedの値を変えても変化はありませんでした。
なんででしょう? orz。
901デフォルトの名無しさん:2005/10/08(土) 08:18:50
ダメだこいつ・・・
ファイルの仕様はおろか、使ってるアプリの仕様すら理解してないな
902デフォルトの名無しさん:2005/10/08(土) 08:31:12
>>901
馬鹿ですみません。
ttp://49uper.com:8080/html/img-s/86709.jpg
ピンクの部分がアルファ値になるという事ですか?
903デフォルトの名無しさん:2005/10/08(土) 08:33:50
>>902
だからダメだこいつってんだ
ファイルの構造も、アプリの仕様も理解してねぇじゃん
出直してこい
904デフォルトの名無しさん:2005/10/08(土) 08:34:42
ついでだ、
ビットマップ使うんなら、いくらフリーだからってD-Pixedなんか使うな
905デフォルトの名無しさん:2005/10/08(土) 08:38:22
鼻血吹いた
906デフォルトの名無しさん:2005/10/08(土) 08:52:04
まずファイル構造を勉強したほうがいいかと・・・
907902:2005/10/08(土) 09:04:13
すみません。お世話になりました。
自分で何とか調べてみます。
908デフォルトの名無しさん:2005/10/08(土) 09:04:56
>>907
そんなこと言うなよ寂しいじゃないか馬鹿。一回り大きくなって戻ってこいよ。
909デフォルトの名無しさん:2005/10/08(土) 09:08:37
>>896
IEやOEがやってるのと同じことをしてるだけ
910デフォルトの名無しさん:2005/10/08(土) 10:02:09
インターフェースを公開している時点でMSにも責任はあると思う
911デフォルトの名無しさん:2005/10/08(土) 10:07:26
ファイルの構造ってか、基礎だよな。
Windowsをブラックボックス扱いしすぎてるんじゃないか?
912デフォルトの名無しさん:2005/10/08(土) 10:41:09
>>910
しなけりゃしないで「秘密のAPI云々」と叩かれるし
913デフォルトの名無しさん:2005/10/08(土) 11:45:47
フォルダを開きたいんですけど、関数とかないのでしょうか?
ググっても出てきません。
WINAPIじゃないのかとも思ったのですが、あれは間違いなくWINAPIですよね。

あの、解凍ツールとかで、解凍したらフォルダのウィンドウが自動で開くじゃないですか。
あんなのをやりたいんです。
914デフォルトの名無しさん:2005/10/08(土) 11:47:26
>>913
2コンのマイクに向かって「フォルダ開け!!!」と大声で叫ぶとOK
915デフォルトの名無しさん:2005/10/08(土) 11:49:21
>>913
1.ShellExecute()を使う。
2."explorer.exe <フォルダ名>" でCreateProcess()かsystem()する。
好きな方をどうぞ
916913:2005/10/08(土) 12:01:54
>>914
2コンがありません。

>>915
ありがとうございます。
それを調べてやってみます。
917デフォルトの名無しさん:2005/10/08(土) 15:58:01
>>897
欄外の注意事項もちゃんと読もう。
たしかWin2000の注意だったが、XPも一緒。
918デフォルトの名無しさん:2005/10/08(土) 18:16:32
>>896
WNetEnumCachedPasswordsとかで検索してみ。
あとは芋づるにでてくる。
919デフォルトの名無しさん:2005/10/08(土) 19:56:54
>>918
どうもありがとうございました。
・OutlookExpressのアカウント情報(メール [POP3・HTTP・ IMAP]・ニュース・ディレクトリサービス)
・Outlookのアカウント情報(同上)
・InternetExplorerの認証パスワード(アドレス・タイトル・ユーザ名・パスワード)
・InternetExplorerのフォーム入力データ(フィールド名・入力文字・アクセス日時)
の4つは分かりました。
最近使ったファイル、履歴、一時ファイル、クッキーなどは
普通にフォルダ内のファイルを列挙しているだけなのでしょうか?
IEの履歴とかはイマイチ取得方法が分からないのですが。
920デフォルトの名無しさん:2005/10/08(土) 22:06:53
COM
921デフォルトの名無しさん
リストコントロールにエクスプローラ等からD&Dで
アイテムを追加するのをIDropTargetを使って実装してますが
リストコントロールの端の方にドラッグした時リストコントロールを自動でスクロールさせたいです。
そこでDragOverでDROPEFFECT_SCROLL捕まえてやれば出来るかと思いましたが
DROPEFFECT_SCROLLが発生しません。
何が問題なのでしょうか。