Win32API質問箱 Build51

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

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

■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。英語版(http://msdn.microsoft.com/library/)の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
2デフォルトの名無しさん:2007/03/21(水) 03:46:45
3デフォルトの名無しさん:2007/03/21(水) 03:47:45
30 ttp://pc8.2ch.net/test/read.cgi/tech/1112345886/
29 ttp://pc8.2ch.net/test/read.cgi/tech/1110281860/
28 ttp://pc5.2ch.net/test/read.cgi/tech/1108199304/
27 ttp://pc5.2ch.net/test/read.cgi/tech/1106103119/
26 ttp://pc5.2ch.net/test/read.cgi/tech/1104109858/
25 ttp://pc5.2ch.net/test/read.cgi/tech/1101393155/
24 ttp://pc5.2ch.net/test/read.cgi/tech/1098967135/
23 ttp://pc5.2ch.net/test/read.cgi/tech/1095534704/
22 ttp://pc5.2ch.net/test/read.cgi/tech/1092524669/
21 ttp://pc5.2ch.net/test/read.cgi/tech/1090422324/
20 ttp://pc5.2ch.net/test/read.cgi/tech/1088140233/
19 ttp://pc5.2ch.net/test/read.cgi/tech/1084697545/
18 ttp://pc5.2ch.net/test/read.cgi/tech/1081702990/
17 ttp://pc5.2ch.net/test/read.cgi/tech/1077470361/
16 ttp://pc2.2ch.net/test/read.cgi/tech/1073830065/
15 ttp://pc2.2ch.net/test/read.cgi/tech/1069339866/
14 ttp://pc5.2ch.net/tech/kako/1065/10653/1065328397.html
13 ttp://pc5.2ch.net/tech/kako/1059/10595/1059549320.html
12 ttp://pc5.2ch.net/tech/kako/1056/10560/1056033645.html
11 ttp://pc5.2ch.net/tech/kako/1052/10526/1052651750.html
10 ttp://pc5.2ch.net/tech/kako/1047/10478/1047819779.html
9 ttp://pc5.2ch.net/tech/kako/1044/10449/1044929160.html
8 ttp://pc5.2ch.net/tech/kako/1040/10409/1040964626.html
7 ttp://pc3.2ch.net/tech/kako/1036/10366/1036654893.html
6 ttp://pc3.2ch.net/tech/kako/1032/10325/1032548635.html
5 ttp://pc3.2ch.net/tech/kako/1028/10285/1028580373.html
4 ttp://pc3.2ch.net/tech/kako/1023/10233/1023361418.html
3 ttp://pc.2ch.net/tech/kako/1017/10170/1017072275.html
2 ttp://pc.2ch.net/tech/kako/1006/10067/1006783012.html
1 ttp://pc.2ch.net/tech/kako/991/991576947.html
4デフォルトの名無しさん:2007/03/21(水) 03:48:16
5デフォルトの名無しさん:2007/03/21(水) 03:48:47
MSDN日本語版は誤訳があったり、一部欠けていたりするなど不完全なため、英語版推奨。
http://msdn.microsoft.com/library/
http://msdn2.microsoft.com/en-us/library/

おまけ;Windows SDK for Windows Vista RC1の文書。
http://windowssdk.msdn.microsoft.com/en-us/library/

MSDN ライブラリ 2006年8月版
http://www.microsoft.com/downloads/details.aspx?FamilyID=6671F8DA-B0CB-41DE-AD93-798FC71D344D&displaylang=ja

Microsoft® Windows® Software Development Kit for Windows Vista™ and .NET Framework 3.0 Runtime Components
http://www.microsoft.com/downloads/details.aspx?FamilyID=c2b1e300-f358-4523-b479-f53d234cdccf&DisplayLang=en
6デフォルトの名無しさん:2007/03/21(水) 09:06:21
>>5
windowssdk.microsoft.comは既にmsdn2へのリダイレクトになっている。
MSDNライブラリは2006年12月版が最新。
http://www.microsoft.com/downloads/details.aspx?FamilyID=94596af5-cc58-45af-a14b-df627a31e783&DisplayLang=ja

まあ何はともあれ1乙。
7デフォルトの名無しさん:2007/03/21(水) 09:35:35
見落とした。ごめんぽ
8デフォルトの名無しさん:2007/03/21(水) 10:46:54
般  羯 多 呪 多 得 想 掛 所 亦 無 耳 不 是 異 蘊 観  摩 
若  諦 呪 能 是 阿 究 礙 得 無 意 鼻 増 舎 色 皆 自  訶
心  羯 即 除 大 耨 竟 無 故 老 識 舌 不 利 色 空 在  般
経  諦 説 一 神 多 涅 掛 菩 死 界 身 減 子 即 度 菩  若
      呪 切 呪 羅 槃 礙 提 盡 無 意 是 是 是 一 薩  波
   波 曰 苦 是 三 三 故 薩 無 無 無 故 諸 空 切 行  羅
   羅   真 大 藐 世 無 陀 苦 明 色 空 法 空 苦 深  蜜
   羯   実 明 三 諸 有 依 集 亦 聲 中 空 即 厄 般  多
   提   不 呪 菩 佛 恐 般 滅 無 香 無 相 是 舎 若  心
        虚 是 提 依 怖 若 道 無 味 色 不 色 利 波  経
   波   故 無 故 般 遠 波 無 明 觸 無 生 受 子 羅
   羅   説 上 知 若 離 羅 智 盡 法 受 不 想 色 蜜
   僧   般 呪 般 波 一 蜜 亦 乃 無 想 滅 行 不 多
   羯   若 是 若 羅 切 多 無 至 眼 行 不 識 異 時
   諦   波 無 波 蜜 顛 故 得 無 界 識 垢 亦 空 照
        羅 等 羅 多 倒 心 以 老 乃 無 不 復 空 見
   菩   蜜 等 蜜 故 夢 無 無 死 至 眼 浄 如 不 五
   提
   薩
9デフォルトの名無しさん:2007/03/21(水) 12:21:09
>>8
簡単にコピペできる写経ですね
10デフォルトの名無しさん:2007/03/21(水) 12:29:03
ぎゃーてーぎゃーてー はら ぎゃーてー  が好きです
11デフォルトの名無しさん:2007/03/21(水) 13:33:14
萌える般若心経
12デフォルトの名無しさん:2007/03/21(水) 13:33:40
ツンデレ般若心経
13デフォルトの名無しさん:2007/03/21(水) 13:59:38
今からここは、ツンデレ般若心経に萌えるスレになりました。
14デフォルトの名無しさん:2007/03/21(水) 14:00:49
ちょっとまて
意味が分らんぞ
15デフォルトの名無しさん:2007/03/21(水) 15:51:02
わかったぞ!わかったぞ!わかっt(ry
16デフォルトの名無しさん:2007/03/21(水) 16:25:46
いきなりの狂信者フイタ
17は@c178.016.c3-net.ne.jp ◆cplnFO9T0I :2007/03/21(水) 18:40:26 BE:176526757-2BP(1000)
VC++.net2003で勝手にベースを作らすとstdfx.h内で#define WIN32_LEAN_AND_MEANしていたせいでOPENFILENAME構造体を定義出来なかった。
これをコメントアウトしたら出来ましたよ。なんつーか、馬鹿らしい。
1811:2007/03/21(水) 19:58:53
すまない

カオスなのは多分俺のせいだ
19前スレ994:2007/03/21(水) 20:10:32
ちなみに一応言い訳しておきますと、ちょっと長目の文章だと
すぐ容量制限オーバーになるので
そのままページに作るのはちょっと無理だったのです。
そのままZIPとかでUPできればよかったんですが、
画像以外はUPできない所なので・・・
別に何か怪しくしたい訳ではないのです(^^;
せっかく誰かが作ってくれたので利用しようかな・・・と。
でも勝手にこういう事をしていいものかよくわからなかったので
ダメだったら消します。
どうもありがとうございましたm(_ _)m
20デフォルトの名無しさん:2007/03/21(水) 20:44:50
>>15-16
モグ乙
21デフォルトの名無しさん:2007/03/21(水) 20:45:44
>>19
つまり役立たずなページってことじゃないか?
消えていいよ^^;
22デフォルトの名無しさん:2007/03/21(水) 20:52:23
【ネガティブ派遣根性チェック】

3つ以上、思い当たる点があればアナタの性格はひん曲がっており、ネガティブ負け組人生を歩んでいます。

□派遣先の人事権のある社員の意見はたとえ間違っていてもマンセーする
□派遣先から「いつまでもここで仕事してくださいね(安い金でw)」と言われて嬉しい
□自社で仕事なんてできるわけがない
□派遣労働の問題点の話題が出ると感情剥き出しにして反論する
□派遣労働の問題を指摘する人は嫌いだ
□派遣先には仕事だけでなくプライベートについてもグイグイ引っ張って欲しい
□奢ってくれる派遣先正社員を尊敬する
□自分の月額金額を知らないのは当然だ、単金を聞いてはいけない
□派遣先正社員より自分の生涯収入が低いのは当然だ
□派遣先に尻尾を振り、いつまでも派遣を続けることが大切だ
23デフォルトの名無しさん:2007/03/21(水) 21:17:03
このスレを見てる愛しの姉へ
 
  彼の仕事はプログラマぁ♪
  そんな私もプログラマぁ♪
  ちなみ胸はAカップ♪
  ぃぇい!


自作の歌か知らんけど、もうすこし小声で唄ってくれ。
会社で思い出して、笑い死にそうになる。

あと、ぃぇい!の指差しポーズは止めた方がいい。
24デフォルトの名無しさん:2007/03/21(水) 21:39:04
グラマーときいてやってきました (;・∀・)ハァハァ
25デフォルトの名無しさん:2007/03/21(水) 22:20:19
チェックした四角ってどうやって出すんだったかな?
26デフォルトの名無しさん:2007/03/21(水) 22:26:58
☐ฺ



☑ฺ
27デフォルトの名無しさん:2007/03/21(水) 22:29:23
28デフォルトの名無しさん:2007/03/21(水) 22:37:57
☑派遣先の人事権のある社員の意見はたとえ間違っていてもマンセーする
☑派遣先から「いつまでもここで仕事してくださいね(安い金でw)」と言われて嬉しい
☑自社で仕事なんてできるわけがない
☑派遣労働の問題点の話題が出ると感情剥き出しにして反論する
☑派遣労働の問題を指摘する人は嫌いだ
☑派遣先には仕事だけでなくプライベートについてもグイグイ引っ張って欲しい
☑奢ってくれる派遣先正社員を尊敬する
☑自分の月額金額を知らないのは当然だ、単金を聞いてはいけない
☑派遣先正社員より自分の生涯収入が低いのは当然だ
☑派遣先に尻尾を振り、いつまでも派遣を続けることが大切だ

これでOKか?
29デフォルトの名無しさん:2007/03/21(水) 23:12:41
30デフォルトの名無しさん:2007/03/21(水) 23:27:28
>>25 マジレスしとく
DrawFrameControl(hdc, lprc, DFC_BUTTON, DFCS_BUTTONCHECK|DFCS_CHECKED);
31デフォルトの名無しさん:2007/03/22(木) 00:45:14
>>23
女でここに来てる奴なんて多分いないだろうw
32デフォルトの名無しさん:2007/03/22(木) 00:45:57
やさしいお兄さんやお姉さんたちが答えてくれるかも。
33デフォルトの名無しさん:2007/03/22(木) 00:47:38
もし俺が次スレを立てる事があればそこを改変しよう。
約束する。
34デフォルトの名無しさん:2007/03/22(木) 01:28:57
やさしいキモオタやバーコード親父たちが答えてくれるかも。

こうですか? わかりません!><
35デフォルトの名無しさん:2007/03/22(木) 01:58:31
2001年のHALとか電人HALとか
36デフォルトの名無しさん:2007/03/22(木) 06:55:15
>>28
お前、プライドないのか?
37デフォルトの名無しさん:2007/03/22(木) 12:12:56
☑プライドは、ない
38デフォルトの名無しさん:2007/03/22(木) 12:23:25
☐ プライド
39デフォルトの名無しさん:2007/03/22(木) 12:24:28
プリンセスプライド
40デフォルトの名無しさん:2007/03/22(木) 12:47:33
☑ プライドや友達などといった定義が曖昧な物事は
  プログラムを生業とするすべての人間にとって考えるべき領分ではない
41デフォルトの名無しさん:2007/03/22(木) 14:23:09
ケンタッキープライドチキン
42デフォルトの名無しさん:2007/03/22(木) 14:53:27

す、すげぇ! こんな記号があったのが驚きだ。
43デフォルトの名無しさん:2007/03/22(木) 16:39:28
□す、すげぇ! こんな記号があったのが驚きだ。
44デフォルトの名無しさん:2007/03/22(木) 17:02:49
ちょっと質問させてください。

ソースの失われたアプリケーションがあります。(おそらくMFCで作られている)
このアプリケーションの特定の処理(関数になっている)を
新しく作る外部のアプリケーションから実行したいのです。

ここで分からないのが、既存のアプリケーションのユーザ関数を外部のプログラム
から実行することが、そもそも出来るのか。出来るのであればAPIのどの様な
関数を調べていけばいいのか教えていただければと思います。

仕様書は残っているようなので、関数名は何とか調べたいと思いますが、
関数名も分からなかったら、さすがに無理でしょうか。

OSはWindowsXPでC++かC#で実現したいと考えています。
45デフォルトの名無しさん:2007/03/22(木) 17:08:50
有料になります
46デフォルトの名無しさん:2007/03/22(木) 17:17:51
DLLのこと?
47デフォルトの名無しさん:2007/03/22(木) 17:27:39
>>44
まぁできない。
リリースビルドの.exeにシンボル情報は残らないから、関数のアドレスとかわからない。
逆コンパイルして出たもの使うとかしかない。(俺は逆コンパイル自体したことないけど)

DLLならもちろんできる。ライブラリってのは他から呼ぶためにある。
48デフォルトの名無しさん:2007/03/22(木) 17:29:54
>>44
結論から言うと、既存のアプリケーションのユーザ関数を外部のプログラム
から実行することはできます。

ですが、私の知っている方法では逆アセンブルを行う必要があります。
逆アセンブルを禁止されているのであれば、この方法は使えません。

ついでにいうと exe 内の関数については関数名が失われている可能性が高いです。
(build オプションによりますが・・・)

ユーザ関数部分が dll になっている事をお祈りしております。

ちなみに私の知っている方法は

既存アプリケーションを逆アセンブル

実行したい関数のアドレスを調査

既存アプリケーションを起動して DLL 注入

プロセス間通信で必要なときに注入した DLL が実行したいユーザ関数呼び出し

戻り値をプロセス間通信で受け渡す

ソフトウェアライセンスで逆アセンブルが禁止されていることが多いので
この方法は社会的に大変大きな危険性が伴います
よくライセンス条項を調べてから行ってください
49デフォルトの名無しさん:2007/03/22(木) 17:45:26
ライセンス条項っつーか、自分とこのバイナリのソースを無くしたんだべ
50デフォルトの名無しさん:2007/03/22(木) 17:54:52
エクスポートされてれば可能
51デフォルトの名無しさん:2007/03/22(木) 17:54:53
外注に委託していたアプリケーションで
その外注と取引中止したとかの理由かと思った
52デフォルトの名無しさん:2007/03/22(木) 18:44:45
あとはMicrosoft Officeの如く、徹底的にAcitveXオートメーション化されていれば、
中のプログラムを呼ぶというのもできるが、そんなこと期待できる訳が無い。
53デフォルトの名無しさん:2007/03/22(木) 20:29:01
便乗して・・・
Dependency Walkerってどうやってるの?
5453:2007/03/22(木) 20:37:37
ごめん。
理解した。
55デフォルトの名無しさん:2007/03/22(木) 20:38:25
こうして こうして こうやるの
56デフォルトの名無しさん:2007/03/22(木) 20:39:46
最近寒いVIPPERみたいのが棲みついてるな
57デフォルトの名無しさん:2007/03/22(木) 20:58:32
バイパー
58デフォルトの名無しさん:2007/03/22(木) 21:16:32
Diamond Multimedia ?
59デフォルトの名無しさん:2007/03/22(木) 21:22:45
SetWindowsHookExでフック(複数)かけるのと、
SetWindowLong等でサブクラス化するのと、
ぶっちゃけパフォーマンスに違いでますか?
60デフォルトの名無しさん:2007/03/22(木) 21:24:17
>>59
やってみればいいんじゃないかと。

違いが出る場合もあるし、出ない場合もあるとしか答えられんね。
61デフォルトの名無しさん:2007/03/22(木) 21:30:33
知らない奴は無理して答えなくてもいいんだぜ
6244:2007/03/22(木) 21:39:42
>>47,48

逆アセンブルしてどうにかというのは、関数のアドレスが分かったとしても、
関数の引数と戻り値のタイプも分からないと駄目ですよね。
おそらく私にはそこまで読めそうにないので、上司を説得する方法を考えます。

情報ありがとうございました。
63デフォルトの名無しさん:2007/03/22(木) 21:39:43
☑ フックするイベントや頻度によるので答えられませんが、SetWindowLong で済ませるのが良いと思います。
64デフォルトの名無しさん:2007/03/22(木) 21:51:44
>>62
ついでにいうと呼出規約?も必要です
__fastcall とか __cdecl とかそういう奴
65デフォルトの名無しさん:2007/03/22(木) 21:55:56
66デフォルトの名無しさん:2007/03/22(木) 22:53:46
☑逆汗すれば全部わかる
67デフォルトの名無しさん:2007/03/22(木) 23:43:46
特定のアプリケーションの使用メモリを制限する方法ありませんか?

制限対象のアプリケーションは修正できません。
なんかメモリリークするバグがあって、最悪でもメモリが一定使用量に
なったらそのアプリケーションを一度殺して再起動したいのです。
68デフォルトの名無しさん:2007/03/23(金) 00:04:44
>特定のアプリケーションの使用メモリを制限する方法ありませんか?

それは大変そうだが・・・

>なんかメモリリークするバグがあって、最悪でもメモリが一定使用量に
>なったらそのアプリケーションを一度殺して再起動したいのです。

これなら比較的簡単にできないか?
常駐監視プログラム作ってその対象のアプリのメモリ使用量を監視して
一定量に達したら TerminateProcess でサヨウナラとかでいんじゃね?
69デフォルトの名無しさん:2007/03/23(金) 00:15:06
SetProcessWorkingSetSizeとかかな?
70デフォルトの名無しさん:2007/03/23(金) 00:16:50
そうですね。
特定アプリのメモリ使用量を外部のプログラムから得る方法あるでしょうか?
71デフォルトの名無しさん:2007/03/23(金) 00:33:36
>>69
それは物理メモリの使用量を調整する為のAPIなんじゃないの?
72デフォルトの名無しさん:2007/03/23(金) 00:35:05
>>69
んー、そのAPIはメモリ不足時に仮想メモリに逃がすだけみたいですね。

GetProcessMemoryInfoというのを見つけました。
psapi.dll使うやつみたいですね。
これの引数の構造体メンバのWorkingSetSizeが
タスクマネージャで表示されるメモリ使用量と同じらしいです。
ううう…
73デフォルトの名無しさん:2007/03/23(金) 00:44:00
>>71-72
うえ、そうだったか ノイズスマソ
74デフォルトの名無しさん:2007/03/23(金) 00:48:54
>>72
WorkingSetSize +PagefileUsage あたりでいんじゃね?
75デフォルトの名無しさん:2007/03/23(金) 00:55:58
なんとかできそうです。
ありがとうございました。
76デフォルトの名無しさん:2007/03/23(金) 01:39:34
対象アプリケーションを作った奴に文句言うのが正しい解決法だろう。
77デフォルトの名無しさん:2007/03/23(金) 01:51:13
>>67
ジョブオブジェクト
78デフォルトの名無しさん:2007/03/23(金) 02:00:59
教えてください。とあるサイトで見たコードなんですが

DWORD WINAPI oreore(LPVOID p)
{
MSG msg;

/* メッセージキューを作る。*/
PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE);
SetEvent((HANDLE)p);

while (GetMessage(&msg, NULL,0,0) > 0) {
switch (msg.message) {
case WM_SURE_TEST1:
puts("WM_SURE_TEST1");
break;
case WM_SURE_TEST2:
puts("WM_SURE_TEST2");
break;
case WM_SURE_TEST3:
puts("WM_SURE_TEST3");
break;
default:
puts("理解できないメッセージです");
}
}
ExitThread(0);
}

このコードの最初のPeekMessageの必要性がよくわからないです。
そもそも必要なのでしょうか?
7978:2007/03/23(金) 02:01:44
因みにこれはCreateThreadで作られたスレッドです。
80デフォルトの名無しさん:2007/03/23(金) 02:06:13
>>77
日本語でおk
81デフォルトの名無しさん:2007/03/23(金) 02:11:15
職業物体
82デフォルトの名無しさん:2007/03/23(金) 02:12:20
>>78
スレッドが作成された時点ではメッセージキューが作成されていない。
(メッセージキューはスレッド単位で存在するもの)
PeekMessage等のAPIが初めて呼ばれたときに作成される。

詳しくはPostThreadMessageでググってくれ。
83デフォルトの名無しさん:2007/03/23(金) 02:20:09
>>80
CreateJobObject & SetInformationJobObject
# 日本語でおkと言われたのに英語になったw
84デフォルトの名無しさん:2007/03/23(金) 02:22:26
>>83
肝心のパラメーターが判りません。
クラスに応じた構造体を渡すみたいですが
情報出てきません…
85デフォルトの名無しさん:2007/03/23(金) 02:35:37
>>84
http://msdn2.microsoft.com/en-us/library/ms686216.aspx
ぐぐったら一発で出てきたが。
こちらは日本語でおkとか言われてもリクエストには応えかねるのでよろしく
あと最後にAssignProcessToJob
86デフォルトの名無しさん:2007/03/23(金) 08:26:27
>>84
MSDN読めカス
ググれカス
87デフォルトの名無しさん:2007/03/23(金) 09:45:40
Richeditでキーワードに色を付けたいのです。

// 赤色に変更するためのCHARFORMAT
CHARFORMAT cf;
cf.cbSize = sizeof(cf);
cf.dwMask = CFM_COLOR;
cf.crTextColor = RGB(255, 0, 0);

// 選択範囲を反転表示しないように設定
SendMessage(hwndEdit, EM_HIDESELECTION, TRUE, 0);

for(/* begin〜end を Richedit 内のキーワードの位置に設定しながら繰り返す */){
  SendMessage(hwndEdit, EM_SETSEL, (WPARAM)begin, (LPARAM)end); // ← ※
  SendMessage(hwndEdit, EM_SETCHARFOTMAT, SCF_SELECTION, (LPARAM)&cf);
}

↑のように処理すると、※の場所で、スクロールバーが連動して動いてしまいます。

スクロールバーをシンクロさせない方法はありませんか?
もしくはキーワード部分を選択せずに色分けする方法はありませんか?
88デフォルトの名無しさん:2007/03/23(金) 10:36:42
すいません誘導できますた。
IsWindow(handle)みたいなプロセスIDかスレッドの生死を判断するものはあるんでしょうか?
89デフォルトの名無しさん:2007/03/23(金) 10:55:33
      ,、‐ " ̄:::゙:丶、
    ,r: ,' 3゙ :::::::/ハヽ:ヽ::::、:ヽ
    {::://:::::::// ヽ\ト、:::::::!
    ヾ l:::::::/ 丶   `ヾ ィ、:::|
     |;:r::|  O`  'O ゙ハ|   < ないない
      ヽハ :.:.    :.: レ
        ´\ r‐--‐、,ノ
 r、     r、/ヾ ̄下ヘ
 ヽヾ 三 |:l1、_ヽ/__ .ィヽ
  \>ヽ/ |` }    n_n| |
   ヘ lノ `'ソ     l゚ω゚| |
    /´  /      ̄|. |
    \. ィ   ___ |  |
        | ノ     l |  |
      | |      i:|  |
90デフォルトの名無しさん:2007/03/23(金) 10:59:10
HANDLEを引数にするAPIに無効なHANDLE渡すとAPIは失敗して、
そういう意味のエラーコードが設定されるからそれで判断するとか?
91デフォルトの名無しさん:2007/03/23(金) 11:13:43
GetProcessVersionとかOpenProcessなどが使えそうだけど
Session境界を超えた場合の挙動とかわからないな
92デフォルトの名無しさん:2007/03/23(金) 11:15:43
GetExitCodeProcess はどう?
93デフォルトの名無しさん:2007/03/23(金) 12:29:40
プロセスを全部列挙してみるとか
9488:2007/03/23(金) 12:34:45
>>89-92 皆さんありがとうございました。
>>91氏のGetProcessVersion() = 0 で死亡確認できました。
ありがとうございました。
95デフォルトの名無しさん:2007/03/23(金) 14:06:22
ものすごい基本の質問なんですが
charとchar*やTCHARとTCHAR*のように
最後に*が付くのと付かないのではどう違うんですか?
96デフォルトの名無しさん:2007/03/23(金) 14:14:08
ぬるぽ
97デフォルトの名無しさん:2007/03/23(金) 14:18:29
一応マジレスすると、*がつくのはポインタ型。全然違うもの。
詳しくはC言語のスレ行ってくれ、そっちなら真面目に答える(かもしれない)。
98デフォルトの名無しさん:2007/03/23(金) 14:25:34
>>97
ありがとうございます。
ググってみて少し分かったような気がします。
スレ違い失礼しました。
99デフォルトの名無しさん:2007/03/23(金) 16:33:31
>>95 和んだw
100デフォルトの名無しさん:2007/03/23(金) 18:15:47
a*は黄門、aは体
101デフォルトの名無しさん:2007/03/23(金) 19:51:33
>>94
プロセスIDが再利用されると生きてると誤判定する可能性があるぞ。
OpenProcessでハンドルを持っておいた方がいい
(ハンドルが1つでもある限りプロセスIDは再利用されないことが保証される)
死亡確認はGetExitCodeProcessかWaitForSingleObject
102デフォルトの名無しさん:2007/03/23(金) 20:05:21
>>95
俺ならTCHAR *じゃなくてLPTSTRだぜwwwwwwwwww
103デフォルトの名無しさん:2007/03/23(金) 20:32:10
>>96
まだそうと決まってないのにw
104デフォルトの名無しさん:2007/03/24(土) 00:28:07
32APIはよく知らないんですが、24bitsのDIBって有効なんでしょうか?

#define WIDTH 100
#define HEIGHT 50
LPDWORD lpPixel;
BITMAPINFO bmpInfo;
:
:
lpPixel=(LPDWORD)HeapAlloc(
 GetProcessHeap(),
 HEAP_ZERO_MEMORY,
 WIDTH*HEIGHT*3 //Alpha保持しないから3でいいんだろうか
);
:
:
//3bytesだから24でいいよね?
bmpInfo.bmiHeader.biBitCount=24;
105デフォルトの名無しさん:2007/03/24(土) 00:30:05
1行辺りのバイト数を4の倍数に揃えないといけないとかなんとかあったはず。
106104:2007/03/24(土) 00:31:22
>>105
それってファイルフォーマットじゃなくてDIBにもそういうルールがあるんですか?
107デフォルトの名無しさん:2007/03/24(土) 00:36:33
うん
108104:2007/03/24(土) 00:38:28
ググったら自己解決しました
109デフォルトの名無しさん:2007/03/24(土) 00:39:03
BMPファイルはヘッダの後にDIBをそのまま並べただけなのだから、
ファイル上でそうなっているということはメモリ上でもそうなっているということ。
110デフォルトの名無しさん:2007/03/24(土) 03:31:24
質問です。ポップアップウィンドウを表示したいのですが

HWND hWnd;
hWnd = CreateWindow(TEXT("STATIC"),NULL,WS_POPUP | WS_BORDER,
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
NULL,NULL,hInst,NULL);
ShowWindow(hWnd,SW_SHOW);

としても何も表示されません。原因が分からず困っています。
間違いがあれば指摘して下さい。コンパイラはBCCです。
111デフォルトの名無しさん:2007/03/24(土) 03:38:58
>>110
間違いを指摘してなんとかなるってレベルじゃねぇぞ!


・・・メッセージポンプ、メッセージループでググれ。
112デフォルトの名無しさん:2007/03/24(土) 03:45:28
グーグってもしーかたない 迷わーずにすすめよ 行けばわかるのさ♪
113110:2007/03/24(土) 04:20:22
自己解決しました。
CW_USEDEFAULTを具体的な数値に置き換えると表示されました。(^_^;)
114デフォルトの名無しさん:2007/03/24(土) 04:25:42
解決してねぇぇぇぇぇぇ
115デフォルトの名無しさん:2007/03/24(土) 04:35:55
おう
116デフォルトの名無しさん:2007/03/24(土) 10:30:06
>>101 ありがとうございます。早速ハンドルを持ったままに変更しようと思います。
117デフォルトの名無しさん:2007/03/24(土) 11:24:30
>>111
それはここに書いていないだけに違いない
118デフォルトの名無しさん:2007/03/24(土) 12:55:13
24bitDIBに4の倍数の縛りはなかったと思うぞ。
ただ1ピクセルの転送にWord、Byteそれぞれ1回づつ必要だからDoubleWord1回ですむ32bitのほうが扱い易いのは確か。
4の倍数は24bitDIB扱うライブラリの制限じゃ?(高速化のために4バイトづつ処理する関係上4の整数倍ピクセルじゃないと問題が出る)
119デフォルトの名無しさん:2007/03/24(土) 13:06:41
要はアライメントの問題って事?
120デフォルトの名無しさん:2007/03/24(土) 13:09:24
Win32の非圧縮DIBでは、スキャンライン毎のDWORDアラインは必須。
あと、HeapAllocとか使うくらいならCreateDIBSectionの方が楽だな。
121デフォルトの名無しさん:2007/03/24(土) 15:59:24
>>118
「1行辺りの」バイト数に4バイトアラインの制限がある。1ピクセルあたりではない
122デフォルトの名無しさん:2007/03/25(日) 13:22:59
>>5
Update来ている
Microsoft® Windows® Software Development Kit Update for Windows Vista™
http://www.microsoft.com/downloads/details.aspx?familyid=ff6467e6-5bba-4bf5-b562-9199be864d29&displaylang=en
123デフォルトの名無しさん:2007/03/25(日) 14:32:52
>>122
今日寝る前に>>5をインストールしたばかりだというのに、
この仕打ちはあんまりだorz
124デフォルトの名無しさん:2007/03/26(月) 02:10:40
Win32APIのコモンコントロールにデータグリッド(Excelの表みたいなやつ)
ってないんでしょうか?
125デフォルトの名無しさん:2007/03/26(月) 02:14:21
つ[リストビュー]
126デフォルトの名無しさん:2007/03/26(月) 02:15:08
>>124
リストビューコントロール(エクスプローラの右側のペインのヤツ)ぐらいしかない。
127デフォルトの名無しさん:2007/03/26(月) 02:46:31
オーナードロー駆使しまくって無理やり似せたことがあるけど

なかなか死ねる
128デフォルトの名無しさん:2007/03/26(月) 03:11:17
>>127
それ、壱からコントロールをフルスクラッチしたほうがまだ楽なんじゃないのか?
描画位地の調整が半端じゃなく大変だったろうに。
129デフォルトの名無しさん:2007/03/26(月) 03:11:35
ActiveXコントロール
130デフォルトの名無しさん:2007/03/26(月) 03:17:04
>>128
五時間くらいhDCと格闘してからそうしたorz
131デフォルトの名無しさん:2007/03/26(月) 03:30:46
フルスクラッチでも挙動や見た目をコモンコントロールに似せようとするとどのみち大変なんじゃねえの
132デフォルトの名無しさん:2007/03/26(月) 03:48:26
>>131
それはそうなんだが、コモンコントロールってWindowsのバージョンによって
微妙に挙動が異なったりするし、描画位置の調整が恐ろしく大変だから
>>124 みたいなのはフルスクラッチしたほうが楽なんだよ。
133デフォルトの名無しさん:2007/03/26(月) 10:20:57
そういや、NT3.51以前にListBoxを基底にしてListView作ったっけな
134デフォルトの名無しさん:2007/03/26(月) 10:33:14
あるファイルを開いているプロセスの一覧を取得するアプリを
作りたいのですが、どのようなAPIを使えばよいでしょうか?
ヒントになるようなことだけでもよろしくお願いします。
135124:2007/03/26(月) 10:49:37
データグリッドをフルスクラッチってどどどどんな感じで作るんでしょうか。
136デフォルトの名無しさん:2007/03/26(月) 10:51:27
どんなって、普通にウィンドウプロシージャ書いて、ウィンドウクラス登録して、ウィンドウ作るんだろ?
137デフォルトの名無しさん:2007/03/26(月) 10:52:48
まず縦横に線を引くことからはじめるんだ
138デフォルトの名無しさん:2007/03/26(月) 10:55:01
データ構造決めてからやればそんなに手間でもないけど
使う人が慣れてるやつとかけ離れてると使ってくれないかもな
139デフォルトの名無しさん:2007/03/26(月) 11:00:55
オブジェクトの動作の一部だけを上書きするのがサブクラス化、
構築からウィンドウクラスの登録から全部最初から
書くのがフルスクラッチという解釈でいいんすか?
140124:2007/03/26(月) 11:39:08
自分で線引くってことは、もしかして、クリックされたセルの色反転させるのも
一々座標見て、「ここは上から2番目、左から3番目のセルだから、
座標x、y−s、tで描かれる長方形の色を今ある色と反転させる」とか
やる必要あるんですかねッ!?行列のソートも自前!?
141デフォルトの名無しさん:2007/03/26(月) 11:56:19 BE:122283779-2BP(222)
>>140
内部でこっそりListBoxとかを持っておくとか。
142デフォルトの名無しさん:2007/03/26(月) 12:32:03
>>140
ListCtrlで足りない機能を列挙するところから始めたら?
143デフォルトの名無しさん:2007/03/26(月) 12:32:41
>>140
だから自前描画は普通やらないの。
144デフォルトの名無しさん:2007/03/26(月) 12:43:59
>>140
そうだよ、スクロールも考慮してな
145デフォルトの名無しさん:2007/03/26(月) 13:51:56
Cでスクリーンショット撮ってクリップボードや適当な画像ファイル形式に保存する
プログラムを作成したいんだけどどうしたらいい?
146デフォルトの名無しさん:2007/03/26(月) 13:54:37 BE:67935375-2BP(222)
GetDC(NULL)
147デフォルトの名無しさん:2007/03/26(月) 13:55:43
CreateDC "DISPLAY", 0, 0, 0
148デフォルトの名無しさん:2007/03/26(月) 14:01:21
便乗質問なんですが
他のWindowで隠れてるWindowのキャプチャって可能ですか?
149デフォルトの名無しさん:2007/03/26(月) 14:07:55
hDC取得出来ればいけるんじゃね?
150145:2007/03/26(月) 14:10:59
>>146
>>147
ありがとう。
151デフォルトの名無しさん:2007/03/26(月) 14:11:07 BE:29115735-2BP(222)
FindWindow
GetDC(hWnd)
152デフォルトの名無しさん:2007/03/26(月) 14:22:19
隠れてるウィンドウは表に出てWM_PAINTメッセージがきて初めて描画される
だから裏にいるときにDC取得しても上に乗っかってるウィンドウの内容がとれる
153148:2007/03/26(月) 14:26:23
>>149
>>151
GetDC + BitBlt で試してみましたがやはり上のWindowが写りこんでしまいました。

>>152
ああ、やっぱり普通には無理なんですね。

ありがとうございました。
154デフォルトの名無しさん:2007/03/26(月) 14:37:49
vistaだと、その辺の様子変わるのかねぇ・・・
155デフォルトの名無しさん:2007/03/26(月) 15:32:21
ビットマップのDC作成して、レンダリングさせればいいじゃまいか。
でも対象プロセスの中で動作させないと色々リソース管理が面倒そうだ。DllInjectionでちょっと実行が楽かな。
156デフォルトの名無しさん:2007/03/26(月) 15:47:35
>>154
どっかのブログで見た。
DWMまわりをごにょごにょするんだったかな。
157デフォルトの名無しさん:2007/03/26(月) 16:15:04
あえろが効いていればできるって聞いたけどな
vistaいじってみてえ
158デフォルトの名無しさん:2007/03/26(月) 16:16:34
DirectX使ってるならレンダリングイメージを保持してるのはサーフェスだからなぁ
159デフォルトの名無しさん:2007/03/26(月) 16:29:33
>>158
ゲームの動画取るソフトで、パフォーマンスのために
APIフックとかしてサーフェイス取得してるのもあるな
160デフォルトの名無しさん:2007/03/26(月) 16:38:29
ReadFileの第3パラメータ「読込バイト数」を、MessageBox()で出力したいのですが、
下だとエラーが出ます、どうすればいいですか?

MessageBox(NULL ,GetFileSize(hFile, NULL) , TEXT("読込バイト数") , MB_OK);

エラー↓
error C2664: 'MessageBoxW' : 2 番目の引数を 'DWORD' から 'LPCWSTR' に変換できません。(新しい機能 ; ヘルプを参照)
1> 整数型からポインタ型への変換には reinterpret_cast、C スタイル キャストまたは関数スタイル キャストが必要です。
161デフォルトの名無しさん:2007/03/26(月) 16:48:51
>>160
C言語からやり直してきて
162デフォルトの名無しさん:2007/03/26(月) 16:52:55
char buff[256];
wsprintf(buff, "%d", GetFileSize(hFile, NULL));
MessageBox(NULL ,buff , TEXT("読込バイト数") , MB_OK);

163デフォルトの名無しさん:2007/03/26(月) 17:01:36
VB出身かなぁ
164デフォルトの名無しさん:2007/03/26(月) 17:07:53
まぁ誰もが一度は通る道だ。
最近の.NETとか触ってからWindowsAPIをやろうとすると
文字列→数値や数値→文字列変換を自前でやらないといけないめんどくささにびっくりするもんだ。
165デフォルトの名無しさん:2007/03/26(月) 17:10:31
>>162
charじゃなくてTCHARにしとけ
166デフォルトの名無しさん:2007/03/26(月) 17:22:40
うーすみません>>162をchar→TCHARにして実行したところまたエラーが・・

error C2664: 'wsprintfW' : 2 番目の引数を 'const char [3]' から 'LPCWSTR' に変換できません。(新しい機能 ; ヘルプを参照)
1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。

一応環境です
Windows2000SP4
VC++2005ExpressEdition
PlatformSDK
167デフォルトの名無しさん:2007/03/26(月) 17:23:38
>>166
wsprintf(buff, "%d", GetFileSize(hFile, NULL));

wsprintf(buff, TEXT("%d"), GetFileSize(hFile, NULL));
168デフォルトの名無しさん:2007/03/26(月) 17:36:31
何のためにTEXT()マクロを使っているかを自分で調べた方がいいな
169デフォルトの名無しさん:2007/03/26(月) 17:40:00
できました!ありがとうございました!
170デフォルトの名無しさん:2007/03/26(月) 20:20:26
>>148
ふらっとC♯, C#(初心者用) Part13
http://pc11.2ch.net/test/read.cgi/tech/1170761729/893-894

893 名前: デフォルトの名無しさん [sage] 投稿日: 2007/03/06(火) 11:22:59
ほかのアプリケーションのスクリーンショットを撮りたいとき
Alt+PrintScreenを送ってクリップボードから取得する以外に
いい方法はありませんか?

Vistaでのウィンドウ一覧の3D表示をXPでも
できるようにするソフトを作りたいのですが。

894 名前: デフォルトの名無しさん [sage] 投稿日: 2007/03/06(火) 11:38:00
>>893
PrintWindow API使えばある程度できるよ。
ttp://www.microsoft.com/japan/msdn/windows/windowsxp/xpvisualstyles.aspx

でもVistaみたいに最小化しているウィンドウについては無理。
あとリアルタイムアニメーションも多分きつい。

Vistaはわざわざライブサムネイルのためにウィンドウマネージャ書き換えてAPIまで追加したわけで、
それが何の苦労もなくXPで実現できるならXPでいいじゃんということになる。
171デフォルトの名無しさん:2007/03/26(月) 20:29:34
MDIがこうなってるのはわかったのですが、
フレームウィンドウ
 ↓
クライアントウィンドウ
 ↓
子ウィンドウ1
子ウィンドウ2
子ウィンドウ3

フレームウィンドウはWinMainで作るとして、
クライアントウィンドウはWinMainの中でフレームウィンドウ作成後に作るのと、
CALLBACK FrameProc関数がWM_CREATE:を受け取ったときに作るのと
どちらがいいのでしょうか??
172171:2007/03/26(月) 20:51:10
ttp://wisdom.sakura.ne.jp/system/winapi/win32/win139.html

すみません補足です
このページではFrameProc関数がWM_CREATE:を受け取ったときに
クライアントウィンドウを作っているのですが、なぜWinMainで
作ってないのか疑問に思ったのです
173デフォルトの名無しさん:2007/03/26(月) 20:53:22
動けばいいんだから細かいところを
ゴチャゴチャゴチャゴチャ
ゴチャゴチャゴチャゴチャ
ゴチャゴチャゴチャゴチャ
ゴチャゴチャゴチャゴチャ
気にするな。
174デフォルトの名無しさん:2007/03/26(月) 20:56:43
>>173はVB出身
175デフォルトの名無しさん:2007/03/26(月) 21:04:06
>>172
WinMain が管理すべきものはフレームウインドウだけであって、
クライアントウインドウはフレームウインドウが管理すべきだから。

oo に従っておくと同時に考えなくてはいけないことが減ってうれしい。
というか不正なウインドウを操作しようとするようなバグが減る。
176デフォルトの名無しさん:2007/03/26(月) 21:04:59
>>148
XP以降限定でもいいならPrintWindow()でも使え。

http://www.microsoft.com/japan/msdn/windows/windowsxp/xpvisualstyles.aspx
// メモリ デバイス コンテキスト hdcMem に格納されている、
// ウィンドウ hwnd のスナップショットを受け取ります。
HDC hdc = GetWindowDC(hwnd);
if (hdc)
{
    HDC hdcMem = CreateCompatibleDC(hdc);
    if (hdcMem)
    {
        RECT rc;
        GetWindowRect(hwnd, &rc);

        HBITMAP hbitmap = CreateCompatibleBitmap(hdc, RECTWIDTH(rc), RECTHEIGHT(rc));
        if (hbitmap)
        {
            SelectObject(hdcMem, hbitmap);

            PrintWindow(hwnd, hdcMem, 0);

            DeleteObject(hbitmap);
        }
        DeleteObject(hdcMem);
    }
    ReleaseDC(hwnd, hdc);
}
177デフォルトの名無しさん:2007/03/26(月) 21:24:05
>>175
> WinMain が管理すべきものはフレームウインドウだけであって、
> クライアントウインドウはフレームウインドウが管理すべきだから。

なるほど目から鱗ですWinMainから除きます
そういう考え方ってどうやったら身に付くのでしょうか
本屋行ってもWin32APIのいい本になかなか出会えないです

> oo に従っておくと同時に考えなくてはいけないことが減ってうれしい。

ooはメッセージキューという意味ですよね??
178デフォルトの名無しさん:2007/03/26(月) 21:25:35
oo = オブジェクト指向 だ
179デフォルトの名無しさん:2007/03/26(月) 21:27:31
>>177
>ooはメッセージキューという意味ですよね??

たぶんオブジェクト指向( object oriented )のことだと思うよ。
180デフォルトの名無しさん:2007/03/26(月) 21:28:24
oo == おっぱいおっぱい
181デフォルトの名無しさん:2007/03/26(月) 21:31:55
oo == ∞
182148:2007/03/26(月) 21:58:56
>>170
>>176
やった!できました。すげー!!

ありがとうございました。
183176:2007/03/26(月) 22:06:53
あ、>>170 で既出だったのか。ポイントしてるURLまで一緒だし。orz
184デフォルトの名無しさん:2007/03/26(月) 22:28:24
XPでVistaのサムネイルみたいなの実現してるフリーソフトがあるけどあれは
どうやってるんだろう
やっぱりPrintWindow?
185デフォルトの名無しさん:2007/03/26(月) 22:35:26
>>178
>>179
ありがとうございます無知なのが恥ずかしいです><
てっきり無限→ループ→キューかと・・
186デフォルトの名無しさん:2007/03/26(月) 22:35:36
>>184
それって Vista みたいにリアルタイムで表示が更新されてるってこと?
だとしたら PrintWindow() じゃないと思う。
そうじゃないなら多分、PrintWindow() だと思う。
187デフォルトの名無しさん:2007/03/26(月) 22:36:56
>>185 の想像力に脱帽。
188デフォルトの名無しさん:2007/03/26(月) 22:42:03
                                 〜 ∞
                          [ノ゚д]ノ <キュー待ってー
                           [_] 
■■■■◇_◇_□□□□_□      / >
189高橋尚子:2007/03/26(月) 23:42:10
>>184
マジレスすると、
IExtractImageインターフェイス
190デフォルトの名無しさん:2007/03/26(月) 23:52:30
>>189
ウィンドウじゃなくてファイルの話だったのか?
191デフォルトの名無しさん:2007/03/27(火) 01:19:17
指定したフォルダに書き込み権限があるかどうかというのは、
どのAPIを使えばいいんでしょうか?
サンプルとか置いてあるサイトをご存知でしたら、教えてください。
192デフォルトの名無しさん:2007/03/27(火) 02:18:35
実際に書き込んでみる…という手がVistaまでは使えた
193デフォルトの名無しさん:2007/03/27(火) 05:43:39
>>192
サンクス! Vistaでもそれでいけるんだね!・・・という意味になるぞ。お前の日本語ちょっと変。
194デフォルトの名無しさん:2007/03/27(火) 06:41:40
じゃあXPまでは使えたに訂正
195デフォルトの名無しさん:2007/03/27(火) 06:53:12
に、2003は……?
196デフォルトの名無しさん:2007/03/27(火) 10:46:09
書き込めたと思ったら、仮想ナンチャラフォルダに書かれてた、ってことがあるから使えないんじゃね?
197デフォルトの名無しさん:2007/03/27(火) 10:46:37
ACLちゃんとたどる
198デフォルトの名無しさん:2007/03/27(火) 11:52:29
(Media Playerの様に、アプリケーション再利用を行いたい為)

多重起動を抑止のアプリケーションを作るのですが、
後起動のアプリケーション(多重起動を抑止破棄される予定)から
既に起動しているアプリケーションにデータを送るには、
WM_COPYDATAの他にどういう手法があるのでしょうか?

説明が不明瞭ですかね?

199デフォルトの名無しさん:2007/03/27(火) 12:18:07
>>198
ファイルを介してもいいしメッセージでもいいしイベントでもいいし、プロセス間通信の好きな手段が使える。
200198:2007/03/27(火) 12:24:55
>>199
ご回答ありがとうございます。
数点質問させてください。

@ファイルというのは、FindFirstChangeNotification関数を利用する事でおk?
AメッセージはWM_COPYDATAの他なにかいいのがありますか?
 あれば、メッセージ名を教えていただきたいです。
 (メッセージ動作は調査しますんで)
B先も書いたとおり、メディアプレイヤーの様な動作を想定する場合、
 プロセス間通信ではパイプ?メールスロット?どっちがお勧めでしょうか?

以上です。
201デフォルトの名無しさん:2007/03/27(火) 12:28:53
多重起動禁止なんてぐぐればいくらでも
202デフォルトの名無しさん:2007/03/27(火) 12:46:49
>>201
この場合、意図は多重起動禁止というより、
プロセス間通信なんでしょうかね?

203デフォルトの名無しさん:2007/03/27(火) 12:56:19
WM_COPYDATAじゃいやなのは何で?
他のアプリから送ることが可能になるから?
204デフォルトの名無しさん:2007/03/27(火) 13:12:02
>>200
(1)通知は別にやった方が安全だから、情報量が多くないならファイルにする必要はないかと。
(2)通知するだけなら、ユーザ定義メッセージでもできる。そのとき32bitのデータは一緒に送ることができる。
(3)どれだけデータを送りたい? それによって手段は変わるわけだけど。
205デフォルトの名無しさん:2007/03/27(火) 13:24:06
俺はファイルを経由するくらいなら、VirtualAllocExを選ぶな。
送りたいのが255文字以下の文字列ならアトムを使うという手もあるよ。
206198:2007/03/27(火) 13:38:23
>>201-205
WM_COPYDATAの場合、FindWindow→SendMessageの手順となります。
この時、FindWindowでキャプションをヒントにウィンドウを検索するのに抵抗があり、
もっとスマートでエレガントな方法があるんではないかと思って、
皆様に質問をだした次第です。
ちなみに、コマンドライン情報(ファイルパス)を渡そうと考えています。
207デフォルトの名無しさん:2007/03/27(火) 13:45:32
>>206
多重起動抑止はどうやってるの?
208デフォルトの名無しさん:2007/03/27(火) 13:57:58
FindWindowでタイトル検索するしか知らないならしょうがないな
名前付きパイプでもメールスロットでも好きなほう使えばいいじゃん
209デフォルトの名無しさん:2007/03/27(火) 14:01:24
セカンダリのディスプレイにアプリケーションを起動するにはどうすればよいのでしょうか?

GDIでデバイスコンテキストとかモニタハンドルとか探ればセカンダリのディスプレイは特定出来そうですけど,
それとCreateProcessのデスクトップ/ウィンドウステーションとどう結びつけるのか良く判りません.
210デフォルトの名無しさん:2007/03/27(火) 14:17:59
>>198
FMOにウィンドウハンドルつっこんどけば?
多重起動抑止かつプロセス間通信だとFMOが定石じゃね?
211198:2007/03/27(火) 14:26:23
>>207
Mutexを利用して判定していますね。
んで、既にハンドルがあれば死にに行くみたいなことをしています。

>>208
パイプは考えていましたが、メールスロットは知りませんでした。
調査してみます。


一度ここで質問をクローズしますね。
レスを下さったみなさま、ありがとうございました。
212198:2007/03/27(火) 14:27:48
>>210
申し訳ありませんが、
FMOってなんですか?
213デフォルトの名無しさん:2007/03/27(火) 14:28:01
FRONT MISSION ONLINE
214デフォルトの名無しさん:2007/03/27(火) 14:28:41
ファイル マッピング オブジェクト のことだと思う
215198:2007/03/27(火) 15:38:44
>>214
ありがとうございます。
皆様、ご回答ありがとうございました。
216デフォルトの名無しさん:2007/03/27(火) 18:58:20
そういうのってDDEを使ったり
そうか、ROTに登録してGetObjectしたりとか
217デフォルトの名無しさん:2007/03/27(火) 21:58:14
DDE は Vista でほぼ廃止と聞いた(NetDDE が廃止なのは確実)
218デフォルトの名無しさん:2007/03/27(火) 23:53:45
VistaでDDEがごく一部しかまっとうに動かないって嘆いていた人がいたのはこのスレだっけ?
219デフォルトの名無しさん:2007/03/28(水) 05:08:10
>>197
それでもVistaでは仮想フォルダにファイルが作成済みだとうまくいかない場合がある。
それを何とか検出しようとすると泥沼になるから(つーか検出させないための互換性機能
なわけだし)素直にmanifest付けるのが良さそうだ
220デフォルトの名無しさん:2007/03/28(水) 07:49:29
こんにちは、質問させて下さい。
WindowsXPにて、MFCライブラリを使わずに、
バイナリデータを転送する方法ってありますか??

もしあるのでしたら、サンプルを下さい。御願いします。
221デフォルトの名無しさん:2007/03/28(水) 07:58:06
どこに転送するのさ
222デフォルトの名無しさん:2007/03/28(水) 08:39:23
int a = 1;
223デフォルトの名無しさん:2007/03/28(水) 08:40:09
これはエスパーの出番だな
224デフォルトの名無しさん:2007/03/28(水) 09:13:59
socket
225デフォルトの名無しさん:2007/03/28(水) 09:24:19
これだけ情報が抜けてるってことはhttpで転送とか?
226デフォルトの名無しさん:2007/03/28(水) 09:40:23
MDIのフレームウィンドウにステータスウィンドウを表示させたら
MDIの子ウィンドウが表示されなくなったんだけど、原因なんでしょう?
エスパーさん助けて
227デフォルトの名無しさん:2007/03/28(水) 09:41:18
ステータスウィンドウ→ステータスバーです
228デフォルトの名無しさん:2007/03/28(水) 09:49:05
呼んだ?
229デフォルトの名無しさん:2007/03/28(水) 09:51:18
>>228
ステータスバー表示させるだけで、他のウインドウが表示されなくなる
バグってあるんですか??
230デフォルトの名無しさん:2007/03/28(水) 10:01:05
LRESULT CALLBACK FrameProcの中の以下が追加されるとMID子ウィンドウが
表示されなくなるみたいです、、、助けて、、

// ウィンドウサイズが変更されたとき
case WM_SIZE:
 SendMessage(hStatusbar, WM_SIZE, wp, lp );
 return 0;
231デフォルトの名無しさん:2007/03/28(水) 10:04:12
returnの下に文が続いてるとか言わないよな?
とりあえず
return 0;

break;
にしてみ
232デフォルトの名無しさん:2007/03/28(水) 10:07:47
>>230
DefFrameProc呼んどけ
233デフォルトの名無しさん:2007/03/28(水) 10:08:01
>>231
すごい!!!!出てきました!!!ありがとうエスパー!
case WM_CREATE:とかだとreturn 0;でいいのに
なんでcase WM_SIZEはbreak;なんだろう!?
234デフォルトの名無しさん:2007/03/28(水) 10:14:44
235デフォルトの名無しさん:2007/03/28(水) 10:20:57
switchのdefaultにDefWindowProc入れて他はbreakしてreturn 0;にしてる。
236デフォルトの名無しさん:2007/03/28(水) 10:22:10
げ、俺が学習に使ったページまで・・
こういう場合ってreturn 0;が定石なのか?

デフォルトプロシージャに処理させたくないとき以外は
デフォルトプロシージャに処理がわかるようにするもんだと思ってた。
237デフォルトの名無しさん:2007/03/28(水) 10:30:45
DefWindowProcには自分が処理しないメッセージだけを渡せばよい。

しかしDefFrameProcはこんなメッセージを処理すると書いてあるのだから、それらのメッセージは渡してやるべき。
http://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/windowing/multipledocumentinterface/multipledocumentinterfacereference/multipledocumentinterfacefunctions/defframeproc.asp
238デフォルトの名無しさん:2007/03/28(水) 10:39:59
>>237
その4個だけでDefWindowProcに渡す必要があるのならこれが正解?

{
case ↓の4個以外のWM_
break;
case WM_COMMAND:
case WM_MENUCHAR:
case WM_SETFOCUS:
case WM_SIZE:
default DefWindowProc
break
}
239デフォルトの名無しさん:2007/03/28(水) 10:42:57
とりあえずC言語の勉強からがんばれ…
240デフォルトの名無しさん:2007/03/28(水) 10:46:39
>>238
DefWindowProcじゃなくて、DefFrameProcの話しだろ
241デフォルトの名無しさん:2007/03/28(水) 10:47:56
>>239
その前に日本語の勉強から頑張れと言うべき
242デフォルトの名無しさん:2007/03/28(水) 10:52:37
ごめん寝起きでボケてたんで書き直したw
DefFrameProcはDefWindowProcと異なり、WM_COMMAND,WM_MEMUCAHR,
WM_SETFOCUS,WM_SIZEの4つのメッセージに関しては、ユーザーで行いさせ
たい処理を記述した後に、DefFrameProcを呼ぶ必要がある
ってことね

{
 case WM_CREATE等 //WM_COMMAND,WM_MEMUCAHR,WM_SETFOCUS,WM_SIZE以外のメッセージ
  break;// breakしてDefFrameProcに処理を渡す必要なし
 case WM_COMMAND:
 case WM_MENUCHAR:
 case WM_SETFOCUS:
 case WM_SIZE:
 default:
  DefFrameProc();
  break;
}
243デフォルトの名無しさん:2007/03/28(水) 11:15:30
自分が処理しないメッセージだけを渡せばよい。 というのは

例えばWM_SIZEなら
「自分でサイズ変更の処理を書く」や「新しいサイズを調べて制限値に引っかかるならサイズ変更しない」というのが「自分で処理した」にあたる。
だから「フォームのどこかに新しいウィンドウサイズを表示する」といった処理は
「自分で処理した」内に入らないのでデフォルトプロシージャを呼び出す必要がある。

こんな風に理解していたんだが間違ってる?
244220:2007/03/28(水) 12:26:34
どうもすみません、質問の仕方が悪かったです。

2台のPC間で、SOCKETを使い、
片方をサーバー、もう片方をクライアントにして通信しているのですが、
一方から一方にバイナリデータのファイル(拡張子が jpeg, exe 等)を送りたいのです。

テキストデータなら、send,recvで簡単に送受信できたのですが、
バイナリデータは同じ方法で転送できない事に気付きました。

ググってみたところ、MFCを使う方法しか探せなかったんです・・・。
もしかして、バイナリデータを送受信できるSocketAPIって、
提供されていないんでしょうか??

コンパイラはVC.NET 2003です。
エスパーの皆様、ヨロシクお願いいたします m(。−_−。)m
245デフォルトの名無しさん:2007/03/28(水) 12:29:47
バイナリデータをsend/recvで送受信できないわけが無い。
MFCのソケット関連だって所詮winsockのラッパに過ぎない。
246デフォルトの名無しさん:2007/03/28(水) 12:45:07
バイナリもsend/recvで送受信できるお
247デフォルトの名無しさん:2007/03/28(水) 12:56:58
ファイルをテキストモードでオープンして送ってんじゃないの?
248デフォルトの名無しさん:2007/03/28(水) 14:01:46
MDI子ウィンドウをステータスバーに重ねると、ステータスバーが消えてしまいます。
消えないようにするにはどうすればいいのですか?
WM_PAINTになにかすればいいのはわかるのですが、うまくいきません・・・。
(消えたステータスバーはMDIフレームウィンドウのサイズを変えるとまた表示されます)

(1)MDIフレームウィンドウ
(2)MDI子ウィンドウ
(3)ステータスバー

+---------------------+
|(1).  +---------+    |
|    |(2)..     |    |
|    +---------+    |
+---------------------+
|(3).              |
+---------------------+
  ↓ (2)を(3)に重ねてから、(2)を元の位置に移動するとこうなる

+---------------------+
|(1).  +---------+    |
|    |(2)..     |    |
|    +---------+    |
+-----+       +----+
|(3)..  |       |    |
+-----+---------+-----+
      ↑ステータスバー消える!!
249デフォルトの名無しさん:2007/03/28(水) 14:55:58
ステータスバーの親を MDIフレーム から MDIフレームの親にすれば?
250デフォルトの名無しさん:2007/03/28(水) 15:24:41
>>249
できました
だめだ親とか子とか全然理解してないみたい・・・Orz=3
251デフォルトの名無しさん:2007/03/28(水) 16:53:59
親の心子知らず
252デフォルトの名無しさん:2007/03/28(水) 18:18:41
子の心親知らず

アスペ親子乙
253デフォルトの名無しさん:2007/03/28(水) 19:30:13
>>244
まさか strlen(buf) とかやってないよな?
254デフォルトの名無しさん:2007/03/28(水) 19:38:04
SetBkMode(hdc , TRANSPARENT)するとして、
透過度の濃度はどうやって設定するのでしょうか?
255デフォルトの名無しさん:2007/03/28(水) 19:58:11
無理
AlphaBlend
256デフォルトの名無しさん:2007/03/28(水) 19:58:21
strlenしててもbase64とかでエンコしてればだいじょぶさー
してないだろうけど
257デフォルトの名無しさん:2007/03/28(水) 20:11:11
IEのお気に入り表示した時のように、お気に入りの画面とIE本体の画面と
バー(?)のようなもので自由に画面分割を変えるのってどうやってるんですかね?
258デフォルトの名無しさん:2007/03/28(水) 20:23:15
スプリットウィンドウでぐぐるといい感じになれるけど、
実装していくうちにやな感じに面倒くさくなってくると思う

WTLとか使っちゃうのが楽なのかな
259デフォルトの名無しさん:2007/03/28(水) 21:23:07
>>258
どうもです
ぐぐってみたけど面倒だねこれ・・
260デフォルトの名無しさん:2007/03/28(水) 23:42:17

MFCを使わずにDAOかADOでSQLServerかAccessとアクセスするサンプルどこかに落ちて無いでしょうか。

ぐぐってみたらMFCばっかでした。
261デフォルトの名無しさん:2007/03/29(木) 00:40:27
ODBCじゃダメなわけ?
262デフォルトの名無しさん:2007/03/29(木) 01:51:45
ぶっちゃけ、ADOならVBのサンプルみれば判らないとおかしい。
あとデータアクセスなら、ATL OLEDBという手もあるが
263260:2007/03/29(木) 02:02:09
解決しましたありがとうございました。
264デフォルトの名無しさん:2007/03/29(木) 02:12:21
メニューの開くと終了の間にセパレータを入れたい場合、
リソースにはどのように書けばいいのでしょう?

IDM_MAIN MENU {
POPUP "ファイル(&F)" {
MENUITEM "開く(&O)" , ID_OPEN
---ここにセパレータ入れたい---
MENUITEM "終了(&X)" , ID_EXIT
}
}
265デフォルトの名無しさん:2007/03/29(木) 02:50:17
MENUITEM SEPARATOR
つーか、それくらいぐぐれ
266デフォルトの名無しさん:2007/03/29(木) 07:38:07
メッセージフックでWMメッセージを破棄する場合、CallNextHookExしなければいいんだっけ?
267デフォルトの名無しさん:2007/03/29(木) 07:39:21
WM_NULL に置き換えればいい。
268デフォルトの名無しさん:2007/03/29(木) 07:46:03
サンクス!
269デフォルトの名無しさん:2007/03/29(木) 10:25:10
>>265
そんなこといわないで

ありがd
270デフォルトの名無しさん:2007/03/29(木) 10:28:12
リソースエディタで作って、ソース見るという手もある
271デフォルトの名無しさん:2007/03/29(木) 10:33:08
>>270
最初XN Resource Editorでそうしようと思ったんですけど
出来たファイルがバイナリーで見れなかったよ
272デフォルトの名無しさん:2007/03/29(木) 13:33:38
名前無しパイプとメールスロットは、
どっちもWaitForSingleObjectで待機できないの?

それとも実は待機できるとか?


やっぱ、ポール牧んぐしなきゃ無理?
273デフォルトの名無しさん:2007/03/29(木) 13:46:16
スレッドでポーリング
274デフォルトの名無しさん:2007/03/29(木) 14:25:25
つか、スレッドなら待ちっぱなしでいいか
275デフォルトの名無しさん:2007/03/29(木) 14:26:16
・標準入力に対するReadFile()でブロックしている状態に他スレッドから
 割り込んでブロックを解除する良い方法はありますか。

・cookedモードで動作しているConsoleへの入力を、Unixのselect()
 のように待機する方法はありますか。
 改行が入力され、プログラム側が読み込み可能になった時点で待機が
 解除されることが望ましいです。
276272:2007/03/29(木) 14:37:31
>>273−274
おー。その手があったんですね。
姉さん感動したわ。
277デフォルトの名無しさん:2007/03/29(木) 17:35:30
ATL使ってCOM DLL作っているんだが、
メソッド内でCreateDialog呼び出す際のhInstanceって何設定すればいいんだ?
hwndないからGetWindowLongも呼べないし

え?もしかしてすげー低次元な質問?
278デフォルトの名無しさん:2007/03/29(木) 17:39:25
>>277
GetModuleHandle(NULL)
279デフォルトの名無しさん:2007/03/29(木) 17:40:02
DllMain
280デフォルトの名無しさん:2007/03/29(木) 17:44:30
CComModule::m_hInstだっけな?
281デフォルトの名無しさん:2007/03/29(木) 17:50:36
ATLならGetResourceInstance?
282デフォルトの名無しさん:2007/03/29(木) 17:52:10
>>275
・たぶん無い。
・それなら普通に読めばいいのでは?

>>277
たぶんこれ。 http://support.microsoft.com/kb/309705/ja
283280:2007/03/29(木) 17:53:54
>>282
これは知らなんだ。
さんくすこ
284デフォルトの名無しさん:2007/03/29(木) 18:49:13
>>278-282
thx!!
皆のアドバイスから紐解いていったら
_Module.m_hInst に入ってた!

まじありがとう
285284:2007/03/29(木) 18:49:45
sage忘れスマソorz
286デフォルトの名無しさん:2007/03/29(木) 19:57:59
DLLファイルとDEFファイルとHPPファイルがあって
LIBファイル無しでコンパイルする方法教えてください
287デフォルトの名無しさん:2007/03/29(木) 20:00:33
>>286
DEF があれば LIB を作ることは可能
gcc だと LIB 作らずに DLL をリンクに加えるだけでもコンパイルできる
他のコンパイラはどうだか知らない
288デフォルトの名無しさん:2007/03/29(木) 20:08:38
GCCってmingwのことですか?
dlltoolをつかったらエラーが出てlibが作れませんでした。
lib.exeでdefからlibは作くれても
リンクで「〜は未解決です」の
エラーが出来ませんでした
289デフォルトの名無しさん:2007/03/29(木) 20:28:56
開発環境がMSVCだとして話をするが。
dumpbin -EXPORTS foo.lib
してみて、インポートライブラリのエクスポートシンボルを確認汁。
ヘッダとつきあわせて、名前がヘッダで宣言されている呼び出し規約と
適合しているかチェック汁。

cdeclなら_で始まっているのが正しいし、
stdcallならうしろに@ほにゃららがつく。
つうかC++か。名前マングルされてるとマンドいな。
DEFファイルは本当に正しいのか?
290デフォルトの名無しさん:2007/03/29(木) 21:06:45
XXX.h

#ifdef _EXPORT_LIB_
#define __PORT __declspec(dllexport)
#else
#define __PORT __declspec(dllimport)
#endif

#ifdef __cplusplus
extern "C"
{
#endif
__PORT WINAPI プロトタイプ定義
#ifdef __cplusplus
}
#endif
291デフォルトの名無しさん:2007/03/29(木) 21:18:37
すみません↓をビルドするとエラーが出ます
HINSTANCEの型は後ろから二番目の引数なのでキャストしたのですが消えません
どこが間違ってるのでしょうか??

(コード)
hChild1 = CreateWindowEx(
WS_EX_CLIENTEDGE,
clsChild1Window,
(LPCWSTR)"", //タイトルバーにこの名前が表示されます
WS_CHILD | WS_VISIBLE | WS_THICKFRAME, //ウィンドウの種類
-frame, // x座標
-frame, // y座標
x1, // 幅
y1, // 高さ
hWnd, // 親ウィンドウのハンドル、親を作るときはNULL
(HMENU)1, // メニューハンドル、クラスメニューを使うときはNULL
(HINSTANCE)hInstance, // インスタンスハンドル
NULL
);

(エラー)
error C2440: '=' : 'HWND' から 'HINSTANCE' に変換できません。
292デフォルトの名無しさん:2007/03/29(木) 21:20:26
hChild1の宣言を確認してみればいい予感
293デフォルトの名無しさん:2007/03/29(木) 21:20:29
「hChild1の型がHINSTANCEだからだ死ねぼけ」
みたいなエラーに思えるがどうか?
294デフォルトの名無しさん:2007/03/29(木) 21:22:45
とりあえずあれだ、何も考えずにキャスト乱用するの止めれ。
295デフォルトの名無しさん:2007/03/29(木) 21:23:58
HWND型の方は確認してないだろ。CreateWindowExの戻り値の型はHWND
296デフォルトの名無しさん:2007/03/29(木) 21:26:02
>>292
>>293
>>294
>>295
hChild1の型が間違ったました
HINSTANCEからHWNDにしたらビルドできました
すぐ吊ってきます
297デフォルトの名無しさん:2007/03/29(木) 21:43:31
>>296
よーし吊って来いwwwwwwwww
298デフォルトの名無しさん:2007/03/29(木) 21:58:12
みなさん、質問があります。

CreateMutex, CreateSemaphore, CreateEventとか、
引数に名前があるCreate〜関数がありますよね。
また、これと対のOpen〜関数もありますよね。
これらは以下のシナリオで利用されると思いますが・・・

・ハンドルが定義されてない場合
@.Open〜関数→失敗(ハンドルがない)
A.ハンドルがないのでCreate〜関数→成功
B.(゚Д゚)ウマー

・既にハンドルが定義されている場合
@.Open〜関数→成功(ハンドルがある)
A.ハンドルを流用
B.(゚Д゚)ウマー

しかし、ハンドルが定義されてない場合で
@とAの間に別プロセスかスレッドで、
ハンドルが生成される可能性もあるんですよね?

もし可能性があるなら、矛盾がないように生成シナリオを組むには
どういう手法をとるべきでしょうか?
それとも、考え違いなんでしょうかね?
299デフォルトの名無しさん:2007/03/29(木) 22:20:58
常に Create 使えば良し。
300デフォルトの名無しさん:2007/03/29(木) 22:21:21
クレアテ
301デフォルトの名無しさん:2007/03/29(木) 22:30:18
Create〜系は、既に同名のオブジェクトがあればそれを開くという動作をする。
302デフォルトの名無しさん:2007/03/29(木) 23:20:18
>>299-301
へー知りませんでした。
調査してみます。
303デフォルトの名無しさん:2007/03/30(金) 00:02:46
MSDN読んでればこんな疑問湧かないのに
304デフォルトの名無しさん:2007/03/30(金) 00:24:47
MSDNがどんな専門書籍よりも早く正確に理解できるのに
なんで読まないんだろうね
305デフォルトの名無しさん:2007/03/30(金) 00:30:59
MSDNは重いし目次分かりにくくて調べにくいからキライとか言ってみる
306デフォルトの名無しさん:2007/03/30(金) 00:48:31
関数の詳細調べるにはいいけど、
「何をしたいときには、どの関数を使えばいいか」
っていうのは調べられない
307デフォルトの名無しさん:2007/03/30(金) 01:25:03
まあ、リファレンスマニュアルだしな。
308デフォルトの名無しさん:2007/03/30(金) 01:33:00
あと、リファレンスって結構サンプルコードがあってなんぼな面もあるのに
MSDNはサンプルコードがろくになかったり、あっても酷いサンプルだったりする。
まぁ、昔に比べれば少しはよくなりつつあるようにも見受けられるが。
309デフォルトの名無しさん:2007/03/30(金) 02:57:04
MSの解説って日本語でおkなとこが一杯あるしな。
関数リファレンスとかはまだマシだけど。
310デフォルトの名無しさん:2007/03/30(金) 02:59:46
SDKの中にサンプルあるだろ?
311デフォルトの名無しさん:2007/03/30(金) 03:04:31
>>310
お前、ちゃんと見たことないだろ。 メチャクチャだぞ、SDKのサンプルは。
あんまりにも酷いんで近年はあんまりみてないけど、ひょっとして最近はマシになってんのか?
312デフォルトの名無しさん:2007/03/30(金) 07:20:34
そういえば最新版のWindowSDKからSampleがいくつか削除されてるな
ATLとMFCを使ってた奴がが全滅っぽい
313298:2007/03/30(金) 08:12:39
>>303
MSDN読んだ上の疑問だったのです。
用途としての理由というか裏づけがイマイチだったし、
家にある参考文献も役に立たなかったので・・・

また、関数の命名上、Create〜系とOpen〜系には
ルールがあるんではと思い、ここに質問した次第です。
314デフォルトの名無しさん:2007/03/30(金) 08:25:50
>戻り値
>関数が成功すると、ミューテックスオブジェクトのハンドルが返ります。
>この関数を呼び出す以前にそのミューテックスオブジェクトが存在していた場合は、
>この関数は既存のオブジェクトに対するハンドルに返し、GetLastError 関数は
>ERROR_ALREADY_EXISTS を返します。

MSDNのCreateMutexより。本当にMSDNを読んでいたのであれば、
>>301が初耳だなんてことはないのだが。
315デフォルトの名無しさん:2007/03/30(金) 09:38:20
そろそろカチンときそうです。
316デフォルトの名無しさん:2007/03/30(金) 09:44:39
メインスレッドから直接リストボックスにログ表示していますが、
ログが増えるとメイン処理の速度低下が著しいので、
ログ表示スレッドを分離しようかと思います。
ログ情報(テキスト)はパイプで渡そうかと考えているのですが、
他に良い方法ありませんか?
317デフォルトの名無しさん:2007/03/30(金) 09:51:50
分離ってどこに分離?
syslogにのっとって作ると何かと便利
318デフォルトの名無しさん:2007/03/30(金) 10:29:38
WM_SETREDRAW
319デフォルトの名無しさん:2007/03/30(金) 10:38:06
スレッドって言ってるな・・・
同じプロセスならパイプ使うまでもないと思うんだけど。
メモリ空間は同じだぜ?
320デフォルトの名無しさん:2007/03/30(金) 12:09:53
ChooseFont関数でフォント名とサイズを初期設定する方法を教えてください
321デフォルトの名無しさん:2007/03/30(金) 12:16:39
LOGFONT構造体に値をセットして
CF_INITTOLOGFONTSTRUCT フラグ入れればできないか?
つか説明に書いてあると思うんだけど
322デフォルトの名無しさん:2007/03/30(金) 13:39:28
>>321
ありがとう。
確かにかいてあった・・・

>FlagsメンバにCF_INITTOLOGFONTSTRUCTを指定した場合は、この構造体で指定したフォントに最も近いフォントが選択されている状態でダイアログボックスが初期化されます。
これちょっと説明的にわかりずらかった・・
323デフォルトの名無しさん:2007/03/30(金) 17:03:55
>>316
同一プロセス内のスレッド間通信なら、普通にポインタを渡すだけでいい。
(バッファの確保・更新・解放には同期処理が必要)

ただし、リストボックスを作成したのがメインスレッドだと、リストボックスの管理は
メインスレッドが行うので、リストボックスの動作そのものが問題になっていると
意味がない。この場合、ログ表示スレッドからSendMessage等をしても、それを実際に
実行するのはメインスレッドになる。
(ログ表示スレッドはメインスレッドがメッセージ処理を終えるまで待たされる)

また、上手くスレッドを分けたところで、マルチプロセッサでなければ魔法のように
速くなるわけではないので、単純に処理が重いだけだとスレッドを分けても
全体の速度は変わらない。
324デフォルトの名無しさん:2007/03/30(金) 17:08:28
逆に、可能であれば速度低下を嫌うメイン処理こそワーカスレッドにするとよいのだけれど。
325デフォルトの名無しさん:2007/03/30(金) 19:35:28
リストボックスをLVS_OWNERDRAWFIXED|LVS_NODATAで作成して
オーナードローで描画、実データを持たさないようにすれば多少速くなるかな。
326デフォルトの名無しさん:2007/03/30(金) 22:42:52
スレッドにしたところでリストボックスが著しく負荷高いってことには変わりがないと思うよ。
標準のコントロールは大量データを高速に処理できるようになっていないと思う。
327デフォルトの名無しさん:2007/03/30(金) 23:19:35
大量のデータを高速に処理するために標準機能として仮想リストがついているんだが。
328デフォルトの名無しさん:2007/03/31(土) 05:01:29
重くなるってリストに何件データ保持してるんだろ?

実際にそこまで過去のログを表示しておく必要があるか考えてみる

…これは実装とは関係ないか
329デフォルトの名無しさん:2007/03/31(土) 08:50:27
3Dモデリングのライブラリってありますか?
街作ったり、車作ったりの
330デフォルトの名無しさん:2007/03/31(土) 08:57:07
スレタイよく嫁
331デフォルトの名無しさん:2007/03/31(土) 11:15:05
自アプリのwebbrowserコントロール内でユーザが文字列を選択し、
コンテキストメニューから「コピー」を選んだとき、
クリップボードに書き込まれる前になんらかのイベントを
捕捉することはできますでしょうか?

おねがいします。
332デフォルトの名無しさん:2007/03/31(土) 17:04:43
>>331
ヒント:DDK
333デフォルトの名無しさん:2007/03/31(土) 17:35:32
ヒント:DDR
334デフォルトの名無しさん:2007/03/31(土) 17:38:25
ヒント:DDR2
335デフォルトの名無しさん:2007/03/31(土) 17:46:45
ヒント:DDRMAX
336デフォルトの名無しさん:2007/03/31(土) 17:48:55
EDORAM SIMM
337デフォルトの名無しさん:2007/03/31(土) 18:04:40
EROIM ESSAIM
338デフォルトの名無しさん:2007/03/31(土) 18:49:05
  ┏┳┳┓     ハイ.     ┏┳┳┓
┏┫┃┃┃     雑談は   ┃┃┃┣┓
┃┃┃┃┣┓   ここまで.┏┫┃┃┃┃
┃      ┃┃┏━━━┓┃┃      ┃
┃ 雑談   ┣┫ . ・∀・ ┣┫. STOP!┃
┗━━━━┛┗┳━┳┛┗━━━━┛
            ┏┻┓┃
        ┏━┛  ┣┻┓
        ┗━━━┫  ┗━┓
             ┗━━━┛
339316:2007/03/31(土) 22:49:05
共有のメモリでリードライトポインタを制御するって意見が多いですね。
パイプにしとけば別プロセスにしたときにも使えるかなってのはあるんですが。。。

速度低下ってのは言葉足らずで、メイン処理を一定周期で
回したいのでログが多くなった瞬間にメイン処理が
待たされるのを避けたいという意味です。
最悪、ログのバッファオーバーフローもあり得るってことで。
340デフォルトの名無しさん:2007/03/31(土) 22:55:04
ソケットにしておけば別マシンからでも使えるぞ。
341デフォルトの名無しさん:2007/03/31(土) 23:38:49
DLLの中からCreateWindowでウィンドウを表示できますか?
でもってその場合hInstanceにはHMODULEを渡すですか?
342デフォルトの名無しさん:2007/03/31(土) 23:56:00
>>341
出来る。それでおk。つーか試した方が早くね?
343デフォルトの名無しさん:2007/03/31(土) 23:57:42
ありがと
344デフォルトの名無しさん:2007/04/01(日) 00:15:48
しつもんがあります。

かなり大量のメモリ確保したいのですがGlobalLockは最高何個まで
メモリ確保できますか?上限とかありますか?メモリが許す限り
無制限でしょうか?
よろしくお願いします。
345デフォルトの名無しさん:2007/04/01(日) 00:18:24
ヒント32ビットOS
346デフォルトの名無しさん:2007/04/01(日) 00:24:18
2^32個ということですね
ありがとうございました
347デフォルトの名無しさん:2007/04/01(日) 00:27:19
ポインタやハンドルは4バイトだから
それを記録する変数のために(2^32)*4を引くのを忘れるなよ。
348デフォルトの名無しさん:2007/04/01(日) 00:31:26
SysListView32で「キーボードカーソル」
の現在位置の取得及び設定はどうやるのですか?

ウィンドウの中で点線で囲まれていて、
Ctrl + 上下キーで移動する部分です。
349デフォルトの名無しさん:2007/04/01(日) 00:54:39
>>344>>346
Win32では、基本的にリニアアドレス空間の半分をシステムが持っているので、
実際にユーザが使えるのは理論上2^31Byte、つまり2GiB。
ただしNT系ではリンク時の/LARGEADDRESSAWAREと
boot.iniの/3GBオプションにより、3GiBまで広がる。

/LARGEADDRESSAWARE付けた32ビットEXEをWin64で動かしたら4GiBまでいけるという話もある。

実際にはそこからEXE/DLL、つまりコードやリソース、
それにスタックなどの分も差し引かれるのでもう少し減る。

勿論空き仮想メモリの量が実際的な上限。

ところで1度に1MiB以上の確保するときにはVirtualAllocが推奨されている。
http://msdn.microsoft.com/library/ja/jpmemory/html/_win32_globalalloc.asp
http://msdn.microsoft.com/library/ja/jpmemory/html/_win32_virtualalloc.asp
350デフォルトの名無しさん:2007/04/01(日) 01:06:56
GiBってなんだ
351デフォルトの名無しさん:2007/04/01(日) 01:13:44
352デフォルトの名無しさん:2007/04/01(日) 02:13:53
MiBはあちこちで記憶を消して回るやつらのことだろ
353デフォルトの名無しさん:2007/04/01(日) 04:11:05
>>352
DELIVER THE GALAXY OR EARTH WILL BE DESTROYED.
SORRY!
354デフォルトの名無しさん:2007/04/01(日) 04:13:49
ウィルスミスカコイイ
355デフォルトの名無しさん:2007/04/01(日) 05:05:59
virus miss?
356デフォルトの名無しさん:2007/04/01(日) 08:44:47
32ビットでもWindows Server 2003 R2 Datacenterなら128GBまでOK。
Windows 2000 Datacenter Serverでも64GB
357デフォルトの名無しさん:2007/04/01(日) 09:03:57
知識としては良いのかも知れんが
本当に2GBのメモリを要求するようなプログラムは
設計から間違ってる気がする
358デフォルトの名無しさん:2007/04/01(日) 10:38:31
科学計算やるソフトなら本当に2GBまで使ったりするけどね〜
359デフォルトの名無しさん:2007/04/01(日) 10:54:45
32bitのWindowsでやるようなことじゃないな。
360デフォルトの名無しさん:2007/04/01(日) 11:00:23
>>331
IHTML*Events::oncopy()
書き込み前か書き込み後かは知らん
361デフォルトの名無しさん:2007/04/01(日) 11:10:13
>>356

1プロセスは4GBまでだろ
362デフォルトの名無しさん:2007/04/01(日) 11:11:01
タスクトレイのアイコンはウィンドウがないと作れないの?
363デフォルトの名無しさん:2007/04/01(日) 11:21:29
>>361
志村、AWE、AWE

>>362
ウィンドウがないとタスクトレイメッセージが受け取れない
364デフォルトの名無しさん:2007/04/01(日) 11:21:46
>>361
AWEとか抜け道はあるだろ。
365デフォルトの名無しさん:2007/04/01(日) 11:25:33
>>359
修士論文ならそれでもなんとかなる@理論化学
366デフォルトの名無しさん:2007/04/01(日) 12:42:14
>>362

っ コールバック関数
367デフォルトの名無しさん:2007/04/01(日) 13:38:48
Shell_NotifyIconにもNOTIFYICONDATAにも
コールバック関数を指定する所は見当たらんが
368デフォルトの名無しさん:2007/04/01(日) 14:27:23
プロフィールなどに
Microsoft MVP for Windows SDK
とか書いてる人がいるんですが、どう言う意味なんでしょうか?
369デフォルトの名無しさん:2007/04/01(日) 14:29:41
MVPって(藁) コピペ2回目
http://pc11.2ch.net/test/read.cgi/tech/1175087786/
370デフォルトの名無しさん:2007/04/01(日) 16:24:12
しっ、見ちゃいけません
371デフォルトの名無しさん:2007/04/01(日) 18:05:11
クライアント領域の更新にInvalidateRect(hWnd,NULL,TRUE);を使っているのですが画面がちらつきまくります。
他に良い方法はないでしょうか?
372デフォルトの名無しさん:2007/04/01(日) 18:12:03
InvalidateRect(hWnd,NULL,FALSE);
373デフォルトの名無しさん:2007/04/01(日) 18:23:08
>>372
ありがとうございます。

マシにはなりましたが書き直す量が多くなって間隔が短くなるとどうしてもちらつくもんですね……
374デフォルトの名無しさん:2007/04/01(日) 18:39:51
>>373
背景を消す
新しいのを書く
これを繰り返すからちらつくんだよ。

WM_ERASEBKGNDが呼ばれているなら何もせずreturnする。

ダブルバッファリングをつかう。
方法は検索すれば見つかると思う。
要するにメモリ上で背景や絵を描画して
その完成させた絵をウィンドウに描画する。
375デフォルトの名無しさん:2007/04/01(日) 21:36:17
カスタムリソースのPNGをHBITMAPで読み出してBITMAPと同じように扱うにはどうすればいいのでしょうか?
PNG GDI+ libpng カスタムリソース等であらかたググってみましたが理解できませんでした。

http://hp.vector.co.jp/authors/VA016379/cpplib/libpng.htm
も試してみましたがlibpng.libに変な部分があるという旨のエラーが出て(bcc32)コンパイルできませんでした。
うぐぅ
376デフォルトの名無しさん:2007/04/01(日) 21:45:22
全然確認してないけど後者はマングリの問題な気がする
377デフォルトの名無しさん:2007/04/01(日) 21:50:16
>>375
エラーはコピペしろ。エスパーに期待するな。
だけど俺も>>376に一票。
そのlibpngもbccでビルドしたのか?
378デフォルトの名無しさん:2007/04/01(日) 21:59:06
Error: 'C:\PROGRAM FILES\BORLAND\BCC55\LIB\LIBPNG.LIB' contains invalid OMF record, type 0x21 (possibly COFF)

です。すいません。
ビルドは説明通りVC++EEでやりました。それがいかんのですね。
bccならどうコンパイルしていいのかがわからなかったもので。
379デフォルトの名無しさん:2007/04/01(日) 22:00:48
>>378
っ coff2omf.exe
380デフォルトの名無しさん:2007/04/01(日) 22:04:12
逆にお前が書くプログラムもVC++でコンパイルすればいい。
381デフォルトの名無しさん:2007/04/01(日) 22:13:13
>>379
コンパイルはうまくいったみたいなのでこれから実際にloadpngが使えるか試してみます。

>>380
猫で始めたんですがVC++の使い方がよくわからないんですよね。
PSDKのインストールまではやってみたんですがコンパイルもエラーでまくるし……
382デフォルトの名無しさん:2007/04/01(日) 22:23:59
プログラム→Visual C++ 2005 Express Edition→Visual Studio Tools→Visual Studio 2005 コマンド プロンプト
コンパイラのコマンド名はbcc32ではなく、VC++ではcl。これでVC++コンパイラが使える。
コンパイラオプションも色々違うが、MSDN2を見てくれ。
383デフォルトの名無しさん:2007/04/01(日) 22:26:56
連投すいません。
プログラム内で hBmpBackGround = LoadPng("./images/background.png"); 記述したところ
 Error: 外部シンボル '_png_create_read_struct' が未解決(D:\MY DOCUMENTS\VISUAL STUDIO 2005\PROJECTS\****.OBJ が参照)
などのエラーが16個出ました。

そのままloadpng.cppをコンパイルすると
 警告 W8017 loadpng.cpp 1: マクロ 'STRICT' の重複定義
 エラー E2109 loadpng.cpp 123: 許されない型(関数 LoadPng(const string &) )
 エラー E2108 loadpng.cpp 124: typedef 'png_color' の使い方が間違っている(関数 LoadPng(const string &) )
とかforループの行に対して
 警告 W8008 ****.cpp 432: 条件が常に真(関数 ***() )
が出るので1、4、11行目はコメントアウトしています。
他の必要なファイルは***.cppと同じディレクトリです。画像は./images/以下にあります。
384デフォルトの名無しさん:2007/04/01(日) 22:29:28
>>382
bcc32もVisual Studio 2005 コマンド プロンプトから動かしているんですが、
C:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE\windows.h(28) : warning C4068: 不明なプラグマがありました。
C:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE\windows.h(200) : fatal error C1083: include ファイルを開けません。'windef.h': No such file or directory
というエラーが出てコンパイルできないので仕方なくbccを使ってます……
385デフォルトの名無しさん:2007/04/01(日) 22:44:11
英語だからって条件反射でエラー文読むの拒否してないか?
386デフォルトの名無しさん:2007/04/01(日) 22:47:03
>>385
ではなくて、自分の作ったファイルならともかくVCの用意してるファイルでのエラーなんかどう対処すればいいんだ……
ってのとマイクロソフトへの不信感から勝手にお手上げしてる感じですね……
387デフォルトの名無しさん:2007/04/01(日) 22:48:08
はあ?
388デフォルトの名無しさん:2007/04/01(日) 22:51:08
面白くなってまいりました
389デフォルトの名無しさん:2007/04/01(日) 22:55:06
>>384
なぜbcc32でVCのインクルードフォルダが現れる?
390デフォルトの名無しさん:2007/04/01(日) 22:56:27
1つめは対処法がわからないのでとりあえず置いておいて、
2つめに関してはPSDKのincludeにあったものをVCのディレクトリにコピーしました。
とりあえずC1083になるファイルは全部コピーしたのですが

C:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE\xlocale(326) : warning C4530: C++ 例外処理を使
っていますが、アンワインド セマンティクスは有効にはなりません。/EHsc を指定してください。
d:\my documents\visual studio 2005\projects\nyaopuyo\loadpng.cpp(121) : error C2664: 'memset' : 1 番
目の引数を 'std::_Vector_iterator<_Ty,_Alloc>' から 'void *' に変換できません。(新しい機能 ; ヘルプ
を参照)
with
[
_Ty=png_color,
_Alloc=std::allocator<png_color>
]
この変換を実行可能なユーザー定義変換演算子がないか、または演算子を呼び出せません。

等のエラーが多数出ます。
391デフォルトの名無しさん:2007/04/01(日) 22:57:19
>>389
あ、それはVC++コマンドからclでコンパイルしたときのものです。
392デフォルトの名無しさん:2007/04/01(日) 23:01:03
>>384
> bcc32もVisual Studio 2005 コマンド プロンプトから動かしているんですが

エラーメッセージの内容から言って、それはVC++のclコンパイラが出しているものだ。
bcc32じゃない。
それにしても、clがwindows.hを読んでunknown pragmaとか、
windef.hが無いだとか、明らかにおかしい状態になっているな。
インストールミスかなにかじゃないのかな。あるいはウィルスにでも
食い荒らされたか。
393デフォルトの名無しさん:2007/04/01(日) 23:02:40
>>390
C4530はエラーではなくワーニングだが(それぐらいは区別しろ、頼むから)
clに-GXオプションを与えればよい。

2番目はあんたのユーザコードloadpng.cppの問題だろ。
394デフォルトの名無しさん:2007/04/01(日) 23:07:32
>>390
>memset(vPalette.begin(), 0, nPal * sizeof png_color);

こんなことをやっている糞コードのようだな。
こんなコードはドブに捨ててしまえ……と言いたいところだが、とりあえず
vPalette.begin -> &vPalette[0]
とでも書き換えるんだな。
395デフォルトの名無しさん:2007/04/01(日) 23:10:41
>>390
コピーする必要は無い。
単にPlatfrom SDKのIncludeフォルダをインクルードディレクトリに追加すれば十分だ。
396デフォルトの名無しさん:2007/04/01(日) 23:11:39
>>393
-GXよりも警告メッセージのとおり/EHscがお勧め。
VC++ 8からGXは推奨しないというような警告が出るようになったはず。
397デフォルトの名無しさん:2007/04/01(日) 23:15:04
コンパイルが通ったら今度は「うまく動きません。どうすればいいんでしょうか?」と長いソースを張り付ける予感。
しかし、画像のロードとセーブだけならもっと簡単なライブラリがあるんだけどなw
398デフォルトの名無しさん:2007/04/01(日) 23:15:27
>>390
2番目のはイテレータとポインタをごっちゃにしているのが悪い。
イテレータ⊇ポインタだが、逆は成り立たない。

std::vector<png_color> v;というのがあったとしたら、
vの先頭要素へのポインタは&v[0]で取得できる。
memsetを使わずに、std::fill使えとか、vectorのメンバでどうにかしろとも言えるが。
399デフォルトの名無しさん:2007/04/01(日) 23:19:10
みなさんありがとうございます。+゚:。(つД`)*.゚。

>>392
自分でincludeディレクトリいじったことはもちろん無いし、ウィルスも恐らく無かったので
インストールミスなんでしょうかね……

>>393>>396
仰る通りで申し訳ないです。/EHscでコンパイルを試みました。

>>394
3箇所書き換えたらエラーが
 loadpng.cpp(121) : error C2064: 0 引数を取り込む関数には評価されません。
に変わりました。

>>395
そうだと思ったんですがその方法を調べるとまた時間がかかりそうだったのでその場しのぎの苦肉の策ということで……
400デフォルトの名無しさん:2007/04/01(日) 23:23:15
>カスタムリソースのPNGをHBITMAPで読み出してBITMAPと同じように扱うにはどうすればいいのでしょうか?
>PNG GDI+ libpng カスタムリソース等であらかたググってみましたが理解できませんでした。


この質問を自分もしたかったので、成り行きに注目していたんだが。。。
401デフォルトの名無しさん:2007/04/01(日) 23:26:04
>>399
vPalette.begin() -> &vPalette[0]
         ↑
かっこぬけてはるみたいやね。
もう一つも同じ要領。
402394:2007/04/01(日) 23:26:07
>>399
悪い悪い、
&vPalette[0]()にしちゃったのか?

正しくは、
vPalette.begin() -> &vPalette[0]
だ。
403デフォルトの名無しさん:2007/04/01(日) 23:31:35
コンパイルはできてオブジェクトファイルまでは作成できました。
ライブラリが見あたらないと出たのでSDKから根こそぎコピーしました。

MSVCRT.lib(MSVCR80.dll) : error LNK2005: _abort は既に LIBCMT.lib(abort.obj) で定義されています。
LINK : warning LNK4098: defaultlib 'MSVCRT' は他のライブラリの使用と競合しています。/NODEFAULTLIB:library を使用してください。
error LNK2019: 未解決の外部シンボル __imp__ReleaseDC@8 が関数 "struct HBITMAP__ * __cdecl LoadPng(中略) で参照されました。

等のエラー、警告が山ほど出てきました……
根こそぎコピーがマズかったのでしょうか。
404デフォルトの名無しさん:2007/04/01(日) 23:32:24
memset(&vPalette, 0, nPal * sizeof png_color);
もしこう書いているのであれば、単にvPalette.resize(nPal)で十分なはず。
png_colorはどうせただのPODな構造体だろ。
デフォルト初期化と0クリアは同じような結果になるはず。
405デフォルトの名無しさん:2007/04/01(日) 23:35:23
>>400
いやはや実は俺もなんだ・・・
406デフォルトの名無しさん:2007/04/01(日) 23:36:17
もう働きたくない
407デフォルトの名無しさん:2007/04/01(日) 23:43:26
つうか>>375のリンク先のLoadPng()って、ファイルからロードする仕様じゃん。
カスタムリソースをロードしたいんじゃなかったの?

つうかVC++持ってるんなら素直にCImage使えやってのは禁句か。
GDI+が対応してるフォーマット(PNGを含む)は全対応だし、リソースからの
ロードも出来るぞ。
atlimage.hな。
408デフォルトの名無しさん:2007/04/01(日) 23:44:39
Express EditionにはATLないだろ。
409デフォルトの名無しさん:2007/04/01(日) 23:47:30
ああ、Express Editionか。これは失礼。
410375:2007/04/01(日) 23:53:23
>>407
カスタムからロードしたかったんですが、できるかどうかわからなかったのでとりあえずやってみようって感じです。
で、できないんですか……残念です。

VC++はウィンドウ表示するだけのプログラムすらコンパイルできなかったので(↑でコンパイルまでは解決)bccに乗り換えてました。
本格的にやりたいので製品版も買おうと思うんですが、製品版も今のような調子だったりしないか怖くて手が出ません。
あと、EEでも猫の本とだいぶ違っているし(猫のが古いんだと思いますが)、C++はまだ始めたてだったりするのでそれも手が出ない理由です。

ちなみに製品版買うならVisual Studio 2005 Standard Edition(Academic Edition)ですかね?
やりたいことはWINAPI(将来的にはDirectXでも)でゲーム制作です。
411デフォルトの名無しさん:2007/04/01(日) 23:54:54
libpngはPNG_SETJMP_NOT_SUPPORTEDを指定してビルドしない限り、
longjmp()でエラーレポートを行う。
>>375のコードはsetjmp()を呼んでいないようだから、多分全く
エラーに対応していないな。
もっとマシなコードを探せ。
setjmp(), longjmp()である以上、デストラクタは実行されないから、
その区間でvectorなんぞを使うのは論外だ。

ま、CreateDIBSection, png_create_read_structあたりのキーワードで
google codesearchでもすれば、色々引っかかるだろ。
412デフォルトの名無しさん:2007/04/01(日) 23:58:56
>>410
> 本格的にやりたいので製品版も買おうと思うんですが、製品版も今のような
> 調子だったりしないか怖くて手が出ません。
PlatformSDKはEnterprise Editionではそもそも付属してなくて自分で別途
インストール&環境設定しなきゃいけないからな。
あんたがインストールにミスったってだけの話だろ。

Visual Studioの品質の問題じゃない。
あんたに問題解決能力がないだけの話。それは、どんな製品を使おうが変わらないよ。
413348:2007/04/02(月) 00:02:25
おながいします・・・orz
414デフォルトの名無しさん:2007/04/02(月) 00:04:50
>>411
VC++ならSEHとの絡みでsetjmp/longjmpでも自動変数のデストラクタが呼ばれるはず
415デフォルトの名無しさん:2007/04/02(月) 00:05:28
お前らスルー汁
416デフォルトの名無しさん:2007/04/02(月) 00:06:03
ていうかもう、API全然関係ないなwww
417デフォルトの名無しさん:2007/04/02(月) 00:06:38
>>414
へぇ。それはいいことを聞いた。教えてくれてありがとう。
ま、それに依存したコードは書く気になれないが……
418デフォルトの名無しさん:2007/04/02(月) 00:07:01
何だこのスレの伸び具合は
419375:2007/04/02(月) 00:08:05
>>411
ちょっくら頑張ってきます( `・ω・´)

>>412
了解、明日にでもVCとSDK再インスコしまつ。

>>416
サーセンwww
420デフォルトの名無しさん:2007/04/02(月) 00:12:50
Platform SDKよりもWindows SDKのほうがお勧め。
スタートメニューの中にVS 2005への設定を行うショートカットがある。

それを実行するだけで、VSコマンドプロンプトからもIDEからも
インクルードパスの設定を含めWindows SDKを使用できる状態になる。
421デフォルトの名無しさん:2007/04/02(月) 00:19:56
開発環境すらちゃんと構築できないような奴には無理ということで
422デフォルトの名無しさん:2007/04/02(月) 00:25:05
>>413
取りあえず LVM_ 以下の全メッセージを調べてみろ。話はそれからだ。
423デフォルトの名無しさん:2007/04/02(月) 00:25:22
初心者叩きはその辺にしておいて結局のところこれは誰もわからんのだね?

>カスタムリソースのPNGをHBITMAPで読み出してBITMAPと同じように扱うにはどうすればいいのでしょうか?
424デフォルトの名無しさん:2007/04/02(月) 00:29:04
普通にLoadResourceで読んでBITMAPに変換すれば
425デフォルトの名無しさん:2007/04/02(月) 00:33:19
EE使ってるちょちんちゃだから、PNGのリソースは妄想に過ぎないに1000ペリカ
















と思ったら今日は四月馬鹿じゃんw
426デフォルトの名無しさん:2007/04/02(月) 00:54:53
もう四月馬鹿は終了している件
427デフォルトの名無しさん:2007/04/02(月) 00:55:13
>>423
リソースをバイナリデータとして読み取り、それをストリーム化、
Gdiplus::BitmapのIStream*を受け取るコンストラクタへ渡す。
そしてメンバのGetHBITMAPでビットマップハンドルを得る。

これでいい?
428デフォルトの名無しさん:2007/04/02(月) 01:01:58
UpdateLayeredWindowでウィンドウを透明化させると黒色が完全透明扱いに
なっちゃうんだけどどうやったらSetLayeredWindowAttributeと同じような処理にできるかな
429デフォルトの名無しさん:2007/04/02(月) 01:13:59
黒でもアルファ値は255にする
430デフォルトの名無しさん:2007/04/02(月) 01:38:46
>>427
横やりでなんですが僕も気になるので実装を詳しく書いて頂けると助かります。
431デフォルトの名無しさん:2007/04/02(月) 01:45:04
>>430
詳しくも何も、書いてあることそのままやればいいだけじゃないのか?
432デフォルトの名無しさん:2007/04/02(月) 01:49:10
さっきから「僕も気になる」って人が多い件
433デフォルトの名無しさん:2007/04/02(月) 01:49:14
GDI+を使うんならPNGのローディングの面倒はGDI+が見てくれる。
>>427そのままでいいはずよ。
434デフォルトの名無しさん:2007/04/02(月) 02:01:09
Bitmap::Bitmap(HINSTANCE,WCHAR*)
使えるか知らんがこんなコンストラクタもあるみたいだ
435デフォルトの名無しさん:2007/04/02(月) 02:39:41
TreeViewのExpandをキャンセルするにはどうしたらいいんでしょうか?
436デフォルトの名無しさん:2007/04/02(月) 02:48:06
僕も気になってるので完全なソースコードをください
437デフォルトの名無しさん:2007/04/02(月) 02:50:12
僕も絶対に気になります。
ソースコードお願いしますこれは絶対に必要ですね。
438432:2007/04/02(月) 03:10:06
すまない。俺が悪かったwww
439432:2007/04/02(月) 03:15:06
>>435
ツリーが展開される直前に親ウィンドウに
TVN_ITEMEXPANDINGが通知されるからそれを引っ掛ける
440デフォルトの名無しさん:2007/04/02(月) 05:18:15
僕も「僕も気になります」が大杉て気になります
441デフォルトの名無しさん:2007/04/02(月) 07:05:30
質問スレで言うのもなんだけど、>>427のレスだけでコードが書けない奴って真性のバカだろ。
442デフォルトの名無しさん:2007/04/02(月) 07:12:51
確実に言えるのは書けなかったとしたらもはやこのスレで扱う内容ではない
443428:2007/04/02(月) 08:24:22
>>429
SetPixelで0x00ffffffは白が表示されて0xffffffffだと透明になるから
アルファ値は読んでるみたいなんだけど、
0x00000000でも透明になっちゃうんだよ
444デフォルトの名無しさん:2007/04/02(月) 11:37:15
>>439
ありがとうございました。

もうひとつお願いしたいんですが、
イメージインデックスを変える方法はどうしたらいいんでしょうか。

445439:2007/04/02(月) 11:47:50
>>444
イメージリスト作ってLVM_SETIMAGELISTでSendする
446デフォルトの名無しさん:2007/04/02(月) 11:50:33
間違えたTVM_だった
447デフォルトの名無しさん:2007/04/02(月) 12:16:19
448デフォルトの名無しさん:2007/04/02(月) 12:26:55
猫でも分かる〜でWin32プログラミングの基礎は分かりますか?
449デフォルトの名無しさん:2007/04/02(月) 12:30:27
猫のWin32は言っちゃ悪いけどひどいコーディングしてると思う
メニューのとこ見たら右クリックごとにメニューの生成と破棄繰り返してたよ。
450デフォルトの名無しさん:2007/04/02(月) 12:36:43
オブジェクト指向的でいいじゃん
451デフォルトの名無しさん:2007/04/02(月) 12:37:27
>>449
そうですか・・・
本を買う金がないので、400章まであるサンプルを一つ一つ手打ちで勉強してるんですが、
ところどころ非効率なコードが書いてあるということですね。注意して読みます。
ありがとうございました。
452デフォルトの名無しさん:2007/04/02(月) 12:38:09
方法論を学ぶ所であってコードを学ぶ所ではないと意識しておけばおk
453デフォルトの名無しさん:2007/04/02(月) 13:25:27
効率に限らず、独学の初心者的な泥臭いコードが多い
あれは教科書ではなくノートだと考えろ
丸写しすると他人の変な癖まで取り込むことになる
454デフォルトの名無しさん:2007/04/02(月) 13:31:01
反面教師なんだよ。
455デフォルトの名無しさん:2007/04/02(月) 13:36:47
ついでに思うのは果たして400章までやる必要があるかどうか?

応用って言葉の意味が無いよな
456デフォルトの名無しさん:2007/04/02(月) 13:39:28
必要な動作を追うには、再利用性を考えて効率的に使えるように書かれたコードよりも見やすい。
STLやboostのコードを逐次追うような状態を想像してみると分かりやすいだろう。
457デフォルトの名無しさん:2007/04/02(月) 14:14:27
まぁでもなーーーーんもわかんない人にはわかりやすいとは思う。
俺も猫からプログラミング入ったクチだし。数年前の話だけど。
458デフォルトの名無しさん:2007/04/02(月) 15:21:10
猫は雰囲気だけ掴んで詳細はMSDNって感じだな。
459デフォルトの名無しさん:2007/04/02(月) 16:20:28
猫とMSDNの間に差ありすぎだろ
460デフォルトの名無しさん:2007/04/02(月) 17:18:33
猫を含めたWEBサイトだけで窓プログラミングを覚えた
(正確にはMFCの本を1冊だけ買ったけど)俺でも
猫のコードを「あまり良くない」と思えるぐらいには成長した
結局>>452>>456だと思う
461デフォルトの名無しさん:2007/04/02(月) 17:41:54
猫はほとんど見ないで解説サイトだけで勉強したけど
猫のコードが何故よくないのかわからない俺もいますよ
まだまだ勉強不足ってことだろうか・・・
462デフォルトの名無しさん:2007/04/02(月) 18:13:38
猫のコードは普通に醜いし
処理過程も追いにくいと思うぞ
窓初心者ならこっちのほうがお勧め
ttp://wisdom.sakura.ne.jp/system/winapi/index.html
トピック毎のサンプルが短いから
C言語の知識なくても解説見て丸写ししてるうちに分かるはず
ちょっとバグってる所もあるけど猫ほどじゃないし
463デフォルトの名無しさん:2007/04/02(月) 18:22:46
後学のために質問なんだけど、
GDI+とか他のライブラリ使わないで、
PNGの画像ファイルをDCに描画する方法って、
どうやればいいのか、解説してるところあったら教えてほしい。
464デフォルトの名無しさん:2007/04/02(月) 18:30:43
libpngでテンポラリメモリ上に展開したのち、SetDIBitsToDeviceとか
 DIBSectionのメモリ上に展開してBitBltとか。
OleLoadPictureしてRenderとか。
465デフォルトの名無しさん:2007/04/02(月) 18:37:11
windowを必要としないソフトでメッセージだけを受け取られますか?
466デフォルトの名無しさん:2007/04/02(月) 18:37:59
投げる側がPostThreadMessage使うなら、ウインドウは要らない。
467デフォルトの名無しさん:2007/04/02(月) 18:41:35
libpngが既に外部ライブラリだと思うんだけど
そういうことでなくて?
468デフォルトの名無しさん:2007/04/02(月) 18:42:51
>>465
エスパー回答するとシステムトレイ上のアイコンからWM_COMMANDを投げたりできる
でもこれは厳密にはWindowを作ってることと一緒
469デフォルトの名無しさん:2007/04/02(月) 19:15:47
>windowを必要としないソフトでメッセージだけを受け取られますか?
Windowを作らずに、Windowメッセージだけを取れるか?という意味?
例えばタイマーとか
470デフォルトの名無しさん:2007/04/02(月) 19:46:29
>>463
http://www.w3.org/TR/PNG/
ここに詳しく書いてある。
ライブラリを使うのが嫌なら自前で実装しろ。

>>465
必用としなくても見えないウインドウを生成すればいいだけ。
知恵が足りない。
471デフォルトの名無しさん:2007/04/02(月) 20:05:02
ダイアログに文字を表示する方法でリソースに

LTEXT "http://hogehoge/,IDC_HTML,10,10,100,18

と書けば表示されるのですが、ということは、SetDlgItemTextは
なんのために存在するのでしょうか??
472デフォルトの名無しさん:2007/04/02(月) 20:05:34
"が抜けていました
LTEXT "http://hogehoge/",IDC_HTML,10,10,100,18です
473デフォルトの名無しさん:2007/04/02(月) 20:08:42
他のコントロールを変更するときに使う。
もちろん、LTEXTも変更できるので、位置だけ取って、あとから必要に応じて書いたり
474デフォルトの名無しさん:2007/04/02(月) 20:08:53
何でもかんでも静的に決まると思ったら大間違いだ
475デフォルトの名無しさん:2007/04/02(月) 20:10:20
俺はlibpngとlibjpegとlibtiffを使って相互にフォーマット変換できるクラスを作った。
もちろん、DIBに変換できるのは言うまでもない。
いや、ただそれだけなんだけど。
476デフォルトの名無しさん:2007/04/02(月) 20:13:35
>>473
他のコントロールを変更するとは、どういう意味なんでしょ??
477デフォルトの名無しさん:2007/04/02(月) 20:15:12
ボタンならボタンに表示されてる文字列が変わる。
というかSetDlgItemTextを何だと思ってたんだ。
478デフォルトの名無しさん:2007/04/02(月) 21:39:45
動的に変えたい場合
479デフォルトの名無しさん:2007/04/02(月) 21:51:29
逆に考えるんだ
OSもダイアログテンプレートのLTEXTの文字列を読んで
SetDlgItemTextを呼び出してるのだと
480デフォルトの名無しさん:2007/04/02(月) 22:35:56
>>470 thx. やってみる。
481デフォルトの名無しさん:2007/04/02(月) 22:52:25
CreateDialogを使用してダイアログを表示したいのですが戻り値がNULL、GetLastErrorの値が1812
になり表示できません。
ボタンを押したときに表示したいのでメッセージループに下のように埋め込んでいるのですが。
(ShowWindowとUpdateWindowは省略しています)

case WM_COMMAND:
hDlgWnd =(ghInst, MAKEINTRESOURCE(IDD_DIALOG1), ghWndKihon, (DLGPROC)MyDlgProc);

なにか、こうじゃないの?的な物でもいいのでヒントください。
482デフォルトの名無しさん:2007/04/02(月) 22:54:46
肝心の「CreateDialog」が抜けていますがコピペミスなのでw気にしないでくださいw
483デフォルトの名無しさん:2007/04/02(月) 23:02:49
エラーコード1812の意味を調べりゃ一目瞭然
484デフォルトの名無しさん:2007/04/02(月) 23:04:59
481ではないしついでに聞こうとも思っていないが、
調べてみたらなるほど一目瞭然だな。
485デフォルトの名無しさん:2007/04/02(月) 23:11:32
Error Lookupで見ると「指定されたイメージ ファイルはリソース セクションを含んでいません。 」。

ごめん、馬鹿なんです。resource.hの中に手動で何か追加するとか、そんな感じなの?
486デフォルトの名無しさん:2007/04/02(月) 23:16:25
EXEの中にダイアログのデータが入っていないということ。
EXE内にリソースを入れるようなことをしたか?
487デフォルトの名無しさん:2007/04/02(月) 23:31:35
>>486
おお!VCにScript1.rcを追加したら表示されまいた!
ありがとー!


また来ますノシ
488デフォルトの名無しさん:2007/04/02(月) 23:34:58
低脳の悪寒
489デフォルトの名無しさん:2007/04/02(月) 23:40:12
GetLastErrorの値まで調べておきながらエラーメッセージを調べないって何なんだ・・。
490デフォルトの名無しさん:2007/04/02(月) 23:42:36
>>487
二度と来なくていい
491471:2007/04/03(火) 00:04:38
>>474
>>477
>>478
>>479
ありがとうございます
静的な場合はリソースに記述
動的な場合はSetDlgItemTextで記述
という感じに考えます
492デフォルトの名無しさん:2007/04/03(火) 01:51:54
>>443
アルファ値って255が不透明のはずだったけど
493デフォルトの名無しさん:2007/04/03(火) 02:32:04
VCのリソースエディッタでダイアログをデザイン、ラジオボタンを並べました。
グループボックス内に配置し2グループに分けたのですが
どうも両グループ同一と認識いされているようで、2個同時にオンにできません。

同時に2個オンにするにはどうすればいいのでしょうか?
494デフォルトの名無しさん:2007/04/03(火) 02:40:07
各グループで先頭のタブオーダーを持つラジオボタンのグループプロパティをTRUEにする
495デフォルトの名無しさん:2007/04/03(火) 02:50:36
>>494
出来ました。夜分にサンクス。
496デフォルトの名無しさん:2007/04/03(火) 08:27:36
>>493
ラジオ1 ラジオ2 ラジオ3 で1塊、ラジオ4 ラジオ5 ラジオ6 で1塊 として
(レイアウト - タブオーダー で順序そろえてから)

「ラジオ1」 と 「ラジオ4」 のプロパティ グループ にチェック
それ以外のラジオのプロパティ グループ はアンチェック

これで望みの動作になると思われ
497デフォルトの名無しさん:2007/04/03(火) 09:20:12
Vistaの検索を自分のプログラムから利用するための
情報へのポインタはないでしょうか?
498デフォルトの名無しさん:2007/04/03(火) 09:32:21
はい。
499デフォルトの名無しさん:2007/04/03(火) 11:54:20
>>492
そういえばそうだ
ますますわかんなくなってきた
500デフォルトの名無しさん:2007/04/03(火) 12:00:45
ストリーミング放送(livedoorのネットラジオ)を録音するのに良い方法はないでしょうか?
放送をダウンロードするのではなくて、現在再生中の放送を録音するみたいなAPIとか無いものでしょうか?
ちなみに当方VB6です。
501デフォルトの名無しさん:2007/04/03(火) 12:59:26
>>499
RGBQUAD の rgbReserved が 0 デフォルトなんだよね…
1-alpha と alpha がごっちゃごちゃだわ
502デフォルトの名無しさん:2007/04/03(火) 13:28:06
>>500
せめてもう少しマトモな書き方ができないものか
503デフォルトの名無しさん:2007/04/03(火) 13:52:26
LivedoorStreamingRecording()
504デフォルトの名無しさん:2007/04/03(火) 14:01:01
>>500
物理的にライン出力と入力を線でつないで録音するといいよ。
505デフォルトの名無しさん:2007/04/03(火) 15:08:08
>>503
探したじゃないかw
506デフォルトの名無しさん:2007/04/03(火) 19:28:29
プログラム中で生成したカラーのビットマップをマウスカーソルに
設定するにはどうしたらいいでしょうか? マウス用のリソースを
用意せずにリアルタイムにマウスカーソルを書き換えたいのです。
507デフォルトの名無しさん:2007/04/03(火) 19:54:33
win32APIの勉強し始めたばかりのオレが答えてみる
マウス表示を消してマウス位置を調べてそこにBMPを描画すればいいんじゃね?
508デフォルトの名無しさん:2007/04/03(火) 19:56:48
CreateCursorしといて、WM_CURSORとかでSetCursorでなくて?
システムグローバルに書き換えたい、というなら話は別だが
509デフォルトの名無しさん:2007/04/03(火) 20:17:44
よろしくお願いしまっす。

SetForeGroundWindow等でもフォアグラウンドになったりしない
ウィンドウってできないんでしょうか。

現在はWS_EX_NOACTIVATEをつけて、
WM_MOUSEACTIVATEにMA_NOACTIVATEANDEATを返すようにして
普通ではアクティブ化しないようになっています

具体的にはツールチップのようなウィンドウを
マウ筋の「スクロールを監視」に引っ掛からないようにしたいんですが。
当該ウィンドウ上でホイールを回転させると
アクティブ化しないまでも他のウィンドウのフォーカスを奪ってしまうんです
510デフォルトの名無しさん:2007/04/03(火) 20:30:48
制御したい動作のはフォアグラウンド化なのか、アクティブ化なのか、フォーカス持ちなのか。
511509:2007/04/03(火) 21:02:37
どうも。言葉が曖昧ですんません
現在アクティブなウィンドウが非アクティブにならなきゃいいんです。。
つまりアクティブ化しないように出来ませんかってことで
512506:2007/04/03(火) 21:02:43
>>508
CreateCursorを調べてみましたが、モノクロのビットマップカーソルは
作成できるようです。今回はカラー(24bit以上か、せめて16bit以上)
のマウスカーソルを作りたいのです。

システムグローバルではなくて、自アプリのカーソルのみです。

>>507
その方法だと、自アプリの縁を少しはみ出した状態で(ホットスポットが
自アプリ内)、クライアント領域の外にマウスが描画されないです。
513506:2007/04/03(火) 21:11:20
カラーのマウスカーソルに関しては、CreateIconIndirectっていうのを
見つけました。
514デフォルトの名無しさん:2007/04/03(火) 21:40:59
515デフォルトの名無しさん:2007/04/03(火) 23:23:11
Response & Balance 2600cc Dohc Engine Twin Turbo
516デフォルトの名無しさん:2007/04/04(水) 01:19:05
>>511
違う方法になるけどWS_EX_TRANSPARENTは駄目?
517509:2007/04/04(水) 02:20:26
>>516
ありがとうございます。

マウスホイールが透過するようになりました
が、クリックも透過してしまいます。
なんか情報後出しになってしまいましたが。
518517:2007/04/04(水) 02:36:46
>>517
WM_COMMANDを監視してマウ筋から送られてくるコマンド(message)に対して
return値をごにょごにょする
519デフォルトの名無しさん:2007/04/04(水) 06:46:10
>>509
WM_WINDOWPOSCHANGINGでSWP_NOACTIVATEを強制的に立てる
520デフォルトの名無しさん:2007/04/04(水) 09:52:27
マウスフックを使用したプログラムを作成しているのですが、
システムフックが上手く機能しません。以下の事例と全く同じ現象です。
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200305/03050042.txt
他のプログラムのソースを参考にしたいので、何かあれば教えて下さい。
お願いします。<(_ _)>
521デフォルトの名無しさん:2007/04/04(水) 10:32:21
>>520
その先読んでみたけど仕様を勘違いしているただの間抜けにしか見えないんだが
522デフォルトの名無しさん:2007/04/04(水) 11:56:15
ウィンドウ上にボタンを配置し、クリックで新しいウィンドウを表示するプログラムを作成しています。
クリックで呼び出される側は  WM_DESTROY メッセージが来たときに

  SendMessage(hWnd, WM_CLOSE, 0, 0L);

として終了しています。
で、質問なのですがクリックで表示するウィンドウのCreateWindowで取得したハンドルは
クローズしなくてもリークしませんか?
しないといけない場合、どこですればいいのでしょうか?
523デフォルトの名無しさん:2007/04/04(水) 14:50:19
親ウィンドウが破壊されるとき、
子ウィンドウも一緒に破壊される。
524デフォルトの名無しさん:2007/04/04(水) 17:07:22
rand()の代替ルーチンがあったら教えてください
525デフォルトの名無しさん:2007/04/04(水) 17:17:03
CryptGenRandom
再現性で問題が出るかもしれないが。
526デフォルトの名無しさん:2007/04/04(水) 17:17:12
Win32APIにはないから自分で作れ。
527デフォルトの名無しさん:2007/04/04(水) 17:19:42
まあ2000以降は仕様上プロセスが終了したら基本的にオブジェクトは何も残らんけどな
528デフォルトの名無しさん:2007/04/04(水) 23:19:10
529デフォルトの名無しさん:2007/04/04(水) 23:51:00
お○んこ!しかも無修正!!
530デフォルトの名無しさん:2007/04/04(水) 23:51:07
>>528
うひょ〜、よだれが出てくるぜ
531デフォルトの名無しさん:2007/04/04(水) 23:55:44
>>528
もう我慢できない
532デフォルトの名無しさん:2007/04/05(木) 00:00:44
>>528
綺麗に処理してあるな
533デフォルトの名無しさん:2007/04/05(木) 00:04:27
こんやのおかずにちょうどいい。くれ。
534デフォルトの名無しさん:2007/04/05(木) 00:11:10
俺、今がちょうどこういうのが欲しくなる時間なんだ
535デフォルトの名無しさん:2007/04/05(木) 00:11:34
>>527
終了したプロセスへのハンドルをつかんでい00る、別プロセスがあるかもしれない。
536デフォルトの名無しさん:2007/04/05(木) 01:22:33
> つかんでい00る
00ってなんじゃらほい
537デフォルトの名無しさん:2007/04/05(木) 02:19:39
パーマン絵描き歌を思いだした
538デフォルトの名無しさん:2007/04/05(木) 09:51:06
ここ何スレだよw
539デフォルトの名無しさん:2007/04/05(木) 11:19:22
プロセスの実行時間を計るのはどうしたらいいんでしょうか?
実時間じゃなくてプロセスの一部の処理に使ったユーザー時間のようなもの
が欲しいです。
PDHとやらを使うのかと思ったんですがよく分かりません。
540デフォルトの名無しさん:2007/04/05(木) 12:15:38
>>539
timeGetTimeの差分じゃダメ?
541デフォルトの名無しさん:2007/04/05(木) 12:20:28
GetProcessTimesじゃらめぇ?
542デフォルトの名無しさん:2007/04/05(木) 12:49:32
>>539
>実時間じゃなくてプロセスの一部の処理に使ったユーザー時間のようなもの
>が欲しいです。

ここを詳しく。
処理に費やした時間を計測したいのか?
543デフォルトの名無しさん:2007/04/05(木) 12:58:29
CPU時間でしょ。
>>541でおk
544539:2007/04/05(木) 13:24:19
>>542
そうです。Unixのtimeの結果のようなものを計算したいんです。
GetProcessTimesを使ってみます。ありがとうございました。
545デフォルトの名無しさん:2007/04/05(木) 13:46:06
モジュール内で抜けるまでどれくらい時間がかかてtるのかを計測したいなら
GetTickCountでいいような希ガス
546デフォルトの名無しさん:2007/04/05(木) 16:01:50
すいませんWin32API入門の第72章リソースで詰まってしまいました
BorlandC++にBCCFormを入れてます

EDGEで32×32のtest.bmpを作って、アイコンとして読み込みたいんですが
LoadIcon()は分かるんですが、そこに至るまでが???で

宜しくお願いします
547デフォルトの名無しさん:2007/04/05(木) 17:00:16
>>546
「メニュー」→「プロジェクト」→「プロジェクトに追加」
ファイルの種類を「リソースファイル (*rc)」にして、作成したrcファイルを指定する。

これだけで、後はその例通りに行けるよ。
548デフォルトの名無しさん:2007/04/05(木) 18:21:32
>>547
レスありがとうございます
でもどうやらどつぼにはまったようで、さっぱり分かりません

.RES拡張子のファイルがないので
リソースコンパイラがよく分かってないようです
549デフォルトの名無しさん:2007/04/05(木) 18:25:35
BorlandC++なら自前で .res にコンパイルしなくても
コンパイラが自動でやってくれる。
550デフォルトの名無しさん:2007/04/05(木) 18:45:41
FILETIME構造体の
DWORD dwLowDateTimeと DWORD dwHighDateTime
の各ビットの意味教えてください。
年と月と日と時間が何ビットに書かれているかわかりません。
551デフォルトの名無しさん:2007/04/05(木) 18:53:36
>>546
ビットマップファイルとアイコンファイルは別物なので
まずbmp→icoの形式変換から始めなはれ

>>550
ここがそのまんま役に立ちそう
http://wisdom.sakura.ne.jp/system/winapi/win32/win112.html
552デフォルトの名無しさん:2007/04/05(木) 18:54:25
直接ビット見たことないな
553デフォルトの名無しさん:2007/04/05(木) 18:54:52
>>550
http://msdn2.microsoft.com/en-us/library/ms724284.aspx
1601年1月1日 (UTC)からの100ナノ秒単位での経過時間。
1つの64ビット整数だと見なせばよい(実際にそう扱うならアラインメントに注意)。

そういうわけでどこのビットが年とか月とかそういう性質のものではない。
だから素直にFileTimeToSystemTimeでも使っていなさい。
554デフォルトの名無しさん:2007/04/05(木) 19:17:29
素直にfiletimetosystemtime使ったほうが早そうですね
こちらで検討してみます。
ありがとうございました
555デフォルトの名無しさん:2007/04/05(木) 19:25:07
Notepadのように、フォームの領域一杯にEDITを表示してフォームのサイズ変更に追従させたい。
ドットネットで言う
textBox1.Dock = DockStyle.Fill;
をやりたいのですが

これってCreateWindow時にウィンドウスタイルのようなもので設定するとばかり思っていたのですが
そのような設定が見あたりません。
もしかしてウィンドウプロシージャのWM_SIZEのところで、自分でEDITのサイズを変更しないといけないんでしょうか?
556デフォルトの名無しさん:2007/04/05(木) 19:28:14
そのまんまサイズ渡してやるだけ
557デフォルトの名無しさん:2007/04/05(木) 19:42:20
>>549 >>541
レスありがとう

EDGEに.icon保存形式があったのでそれにしました
色々弄ってみて最後にBCCデベロッパーのDOSアイコン(コマンド実行)から
brc32 test.rc main.exe と入力したら
何とかmain.exeのアイコンだけ変えることができました
exe起動後のウィンドウタイトルバーの横のアイコンが変わらないので
また弄ってみます
558デフォルトの名無しさん:2007/04/05(木) 19:45:32
>>557
それはウィンドウクラスのアイコンを設定すればいい
559デフォルトの名無しさん:2007/04/05(木) 19:49:08
>>556
できました。
覚悟はしていたが本当に全部で自分でやらないといけないんだな・・。
560デフォルトの名無しさん:2007/04/05(木) 19:55:08
>>558
この部分のことですよね? winc.hIcon = LoadIcon();
一応LoadIcon(hInstance, TEXT("KITTY") );とやってるんですがならないので
初めからやり直してみます
561デフォルトの名無しさん:2007/04/05(木) 20:21:26
562アイコンで聞いた者:2007/04/05(木) 21:02:27
何とか上手くやれるようになりました!
何度も聞いて申し訳なかったです
レスしてくれたみなさんありがとうございました
563デフォルトの名無しさん:2007/04/05(木) 23:18:48
>>561
すげえw
564デフォルトの名無しさん:2007/04/06(金) 04:31:37
デモ落としてみたけど根性ありすぎwww
565デフォルトの名無しさん:2007/04/06(金) 10:09:34
>>561
これWin32APIで作られてるのか!?
566デフォルトの名無しさん:2007/04/06(金) 10:13:48
>>561
軽く漏らした
567デフォルトの名無しさん:2007/04/06(金) 11:01:24
>>565
思いっきりWTLって書いてあるじゃねえか
568デフォルトの名無しさん:2007/04/06(金) 19:05:55
mcisend
569デフォルトの名無しさん:2007/04/06(金) 19:10:36
VC++とplatformSDKで
mcisendcommad()でデバイスを開くときに
MCI_OPEN_PARMS構造体を使う場合でデバイスタイプにMPEGVideoを指定する事は出来るんでしょうか?
mmsystem.hにはMCI_DEVTYPE_SEQUENCERまでしか定義されてないようですが…
570デフォルトの名無しさん:2007/04/06(金) 21:05:13
64ビット環境では___asmが使えないってのは本当なの?
571は@c178.016.c3-net.ne.jp ◆cplnFO9T0I :2007/04/06(金) 21:30:33 BE:90784692-2BP(1000)
リストビューを使うためにLV_COLUMN構造体を定義しようとしても「定義されていない識別子です」と突っぱねられます。
VC.net20003を使っているのですが、どうすればいいでしょう。
前に痛い目を見たので#define WIN32_LEAN_AND_MEANはカットしているんですがね....
572デフォルトの名無しさん:2007/04/06(金) 21:30:39
>>570
スレ違い
573デフォルトの名無しさん:2007/04/06(金) 21:35:36
UNIXでの ls -a -r に相当するコードが知りたいです。
隠しファイル等を含む全てのファイルを再帰的に取得する方法を教えてください。
574デフォルトの名無しさん:2007/04/06(金) 21:37:21
>>573
っ FindFirstFile
っ FindNextFile
っ FindClose
575デフォルトの名無しさん:2007/04/06(金) 21:38:24
UNIX系のファイルシステムに、そもそも隠しファイルという概念など無い。
lsが勝手にフィルターしているだけ。
576デフォルトの名無しさん:2007/04/07(土) 02:09:16
>>575
それを隠しファイルというんじゃないのか

WinだってExplorerが勝手にフィルターしてるだけだし
577デフォルトの名無しさん:2007/04/07(土) 02:18:42
Win(というかFATとNTFS)にはファイル属性に隠しファイルビットがあるだろ
つーか質問はWindows上で隠しファイルを含めて検索する方法じゃないのか?
もう回答出てるけど
578デフォルトの名無しさん:2007/04/07(土) 02:26:51
VC2005でダイアログボックスを作りたいのですが、どうやって作ったらいいのかわかりません。
VC2003だったらリソースの追加でできたのですがorz
ググッてみましたがわかりませんでしたので、教えてもらえると助かります。
579デフォルトの名無しさん:2007/04/07(土) 02:56:36
>>578
Express Editionにはリソースエディタは付属しないので作れない。
別途にリソースエディタを用意するべし。
580デフォルトの名無しさん:2007/04/07(土) 03:04:14
リソースエディタとはなんですか?
リソースの作り方すらわからない(´・ω・`)
581デフォルトの名無しさん:2007/04/07(土) 03:07:18
これだからVCはオススメできない。

とりあえず、今までに作ったプロジェクトの拡張子が.rcの奴をテキストエディタで開け
582デフォルトの名無しさん:2007/04/07(土) 03:12:15
開きましたー!!
583デフォルトの名無しさん:2007/04/07(土) 03:13:34
>>580
2003で作ったときには開発環境でダイアログボックスを作れたでしょ?
あれは内部的にリソースエディタと呼ばれるツールを呼び出してただけなの
んでExpress Editionではその機能が削除されてるので作ることができない。

作ることができないといってもVCの開発環境で作ることができないだけで
リソースをプログラムから読み込むといったことは可能なので
フリーソフトのリソースエディタでダイアログを作るしかない、ってこと
584デフォルトの名無しさん:2007/04/07(土) 03:20:29
>>583
親切にありがとう。
585デフォルトの名無しさん:2007/04/07(土) 07:52:10
リソースって言っても二種類の意味で使われてない?

バイナリで書かれたリソースとテキストで書かれたのリソース
どう呼び分ければいいんだろう??
586デフォルトの名無しさん:2007/04/07(土) 07:52:42
「書かれたリソース」の間違い
587デフォルトの名無しさん:2007/04/07(土) 08:17:00
っ「リソーススクリプト」
588デフォルトの名無しさん:2007/04/07(土) 08:19:44
リソース
 ├フォーマットがテキストの
 └フォーマットがバイナリの
589デフォルトの名無しさん:2007/04/07(土) 09:02:01
コンパイル済みリソースがバイナリリソース。
590デフォルトの名無しさん:2007/04/07(土) 17:13:30
テキストのリソースファイル(.rcファイル)+バイナリ(画像など)を
リソースコンパイラでコンパイルして .res ファイルをつくり
リンカで EXEにバインドする。直接.resを編集するツールもある。
591デフォルトの名無しさん:2007/04/07(土) 21:12:44
僕ハッカー
592デフォルトの名無しさん:2007/04/07(土) 21:15:17
僕バッカー
593デフォルトの名無しさん:2007/04/07(土) 21:17:57
バカバッカー
594デフォルトの名無しさん:2007/04/07(土) 21:18:00
バカばっかー
595デフォルトの名無しさん:2007/04/07(土) 21:57:10
けこん
596デフォルトの名無しさん:2007/04/08(日) 02:15:51
winAPIでテキストエディタに文字列を書き込んで保存したいのですが、どのようにしたらよいですか?
VC使って組んでいます。
597デフォルトの名無しさん:2007/04/08(日) 02:18:20
意味が分からんな
外部のテキストエディタに文字を送り込むのか?
自前でテキストエディタを作るのか?

…単にテキストエディタじゃなくてテキストファイルってオチか?
598デフォルトの名無しさん:2007/04/08(日) 04:21:34
普通にfopen、fwrite?
599デフォルトの名無しさん:2007/04/08(日) 07:55:34
他のアプリケーションのウインドウの座標と大きさを取得するにはどうすれば良いですか?
また、座標と大きさを指定するにはどうすれば良いですか?
600デフォルトの名無しさん:2007/04/08(日) 08:00:51
GetWindowRect
MoveWindow

プロセス跨いで使えたかはシラネ

 春 の 香 り 乙 !
601デフォルトの名無しさん:2007/04/08(日) 08:51:32
>>600
ありがとうございました
602596:2007/04/08(日) 10:28:48
>>597
テキストファイルの間違いでしたw
603デフォルトの名無しさん:2007/04/08(日) 13:44:29
マウスフックについての質問です。MOUSEHOOKSTRUCT構造体の内容を
フックプロシージャから他のウィンドウプロシージャへ渡したいのですが、
上手くいきません。フックプロシージャのコードは次の通りです。
LRESULT CALLBACK HookProc(int nCode,WPARAM wp,LPARAM lp)
{
COPYDATASTRUCT cds;
if (nCode < 0) CallNextHookEx(hHook,nCode,wp,lp);
cds.dwData = wp;
cds.cbData = sizeof(MOUSEHOOKSTRUCT);
cds.lpData = (PMOUSEHOOKSTRUCT)lp;
SendMessage(hWnd,WM_COPYDATA,NULL,(LPARAM)&cds);
return CallNextHookEx(hHook,nCode,wp,lp);
}
間違いがあれば指摘して下さい。又、参考になるソースがあれば教えて下さい。
お願いします。<(_ _)>
604デフォルトの名無しさん:2007/04/08(日) 13:54:02
相手が別プロセスなら自メモリ領域のポインタを渡しても無意味。
相手のメモリ内に領域を確保してそのポインタを渡す。
605デフォルトの名無しさん:2007/04/08(日) 14:12:44
Windows XPでのCPU使用率の取得方法を教えてください
606603:2007/04/08(日) 14:19:45
>>604
そのためにWM_COPYDATAメッセージを使用しています。ファイルマッピングオブジェクトの
内容を参照するので、メモリを共有する必要は無いと思ったのですが。
http://yokohama.cool.ne.jp/chokuto/advanced/copydata.html
607デフォルトの名無しさん:2007/04/08(日) 14:22:09
>>603
その中だとhWndが一番怪しい。
SendMessageするときにhWndにちゃんとした値が入ってる?
608603:2007/04/08(日) 14:36:11
問題ありません。
「猫でもわかる」の162章のように、フックプロシージャ内での処理には成功しました。
609デフォルトの名無しさん:2007/04/08(日) 14:49:03
そもそもうまくいかないって何が巧くいってないんだ?
WM_COPYDATA が hWnd の WindowProc に来ないのか、来た WM_COPYDATA からデータが取れないのか
610603:2007/04/08(日) 15:00:54
>>609
WM_COPYDATAメッセージは届くのですが、COPYDATASTRUCT構造体の内容の参照が上手くいきません。
フックは次のようにセットしています。
#define EXPORT __declspec (dllexport)
#pragma data_seg(".shared")
static HHOOK hHook = NULL;
static HWND hWnd = NULL;
#pragma data_seg()
EXPORT HHOOK SetHook(const HWND hCaller)
{
hWnd = hCaller;
hHook = SetWindowsHookEx(WH_MOUSE,(HOOKPROC)HookProc,hInst,0);
return hHook;
}
ウィンドウプロシージャでは次のように処理しています。
case WM_COPYDATA:
if (((PCOPYDATASTRUCT)lp)->dwData == WM_NCLBUTTONDOWN) {
pmhs = (PMOUSEHOOKSTRUCT)lp;
if (pmhs->wHitTestCode == HTCAPTION) {
SetWindowText(pmhs->hwnd,"猫でもわかるフック");
}
}
break;
611デフォルトの名無しさん:2007/04/08(日) 15:22:04
>>610
> pmhs = (PMOUSEHOOKSTRUCT)lp;
pmhs = (PMOUSEHOOKSTRUCT)((PCOPYDATASTRUCT)lp)->lpData;
だろ常識的に考えて
612603:2007/04/08(日) 15:38:41
>>611
すみません。ウィンドウプロシージャの処理を訂正します。(^_^;)
PCOPYDATASTRUCT pcds;
PMOUSEHOOKSTRUCT pmhs;
case WM_COPYDATA:
pcds = (PCOPYDATASTRUCT)lp;
pmhs = (PMOUSEHOOKSTRUCT)(pcds->lpData);
if (pcds->dwData == WM_NCLBUTTONDOWN) {
if (pmhs->wHitTestCode == HTCAPTION) {
SetWindowText(pmhs->hwnd,"猫でもわかるフック");
}
}
break;
ローカルフックには成功したのですが、グローバルフックに失敗します。
613デフォルトの名無しさん:2007/04/08(日) 16:03:20
SetWindowText が気になって仕方ないが、
WindowProc 内での pcds->dwData とか pmhs->wHitTestCode とかはどうなんだ?
正しい値を示してるのか?
614603:2007/04/08(日) 16:46:12
他のアプリケーションにフックDLLがロードされていることは確認できたのですが、
COPYDATASTRUCT構造体の内容が空のようです。
615デフォルトの名無しさん:2007/04/08(日) 18:41:35
http://msdn.microsoft.com/library/ja/jpwinui/html/_win32_setwindowtext.asp
> ほかのプロセス内のコントロールのテキストを設定するには、SetWindowText 関数を
> 呼び出すのではなく、直接 WM_SETTEXT メッセージを送ります。

何でフックがうまくいってないと思い込めるんだかさっぱり分からん。
明らかに間違ってたソースも「訂正します」の一言で済まされるし。
616603:2007/04/08(日) 18:54:38
あたながたが思いのほか低スキルだったのでがっかりしています。
2ちゃんもたいしたことないですね。
617デフォルトの名無しさん:2007/04/08(日) 18:56:30
↓真603による「616は私ではありません」というレス
618デフォルトの名無しさん:2007/04/08(日) 18:56:33
615は無視かよ
619603:2007/04/08(日) 19:50:46
>>615
SendMessage(pmhs->hwnd,WM_SETTEXT,0,(LPARAM)"猫でもわかるフック");
としたのですが、ウィンドウタイトルは変更されません。
間違ったソースを掲載したことについては深くお詫びします。大変申し訳ありませんでした。
620デフォルトの名無しさん:2007/04/08(日) 20:43:43
>>619
dll.defに
SECTIONS
.shared SHARED READ WRITE
が有るか確認するとか

char sz[100];
wsprintf(sz, "pmhs->hwnd:%p ", pmhs->hwnd);
SetWindowText(hWndExe, sz);
として様子を見るとか
621デフォルトの名無しさん:2007/04/08(日) 23:19:23
うまくいかないときには何がおきてるのかを見極めて原因究明。
期待通りにいくかいかないかだけを判断してたらいつまでたってもなおらん
622デフォルトの名無しさん:2007/04/09(月) 00:44:15
デバッガ使ってないのかね?
1ステップずつ確認すれば、問題点はすぐに分かると思うが。
623デフォルトの名無しさん:2007/04/09(月) 00:47:43
フックプロシージャのステップ実行なんて出来るの?
624デフォルトの名無しさん:2007/04/09(月) 01:14:11
フック先のプロセスにアタッチしろ。
625デフォルトの名無しさん:2007/04/09(月) 10:09:06
別にデバッガ使わなくてもログをファイルに書き出せばいいだけだし
626603:2007/04/09(月) 10:33:11
>>620-624 レスありがとうございます。
>>620 モジュール定義ファイルは作成済みです。内容は次の通りです。
LIBRARY hook
SECTIONS
.shared READ WRITE SHARED
EXPORTS
HookProc @1
ResetHook @2
SetHook @3
pmhs->hwndの値をウィンドウプロシージャ内で出力したところ、
ローカルフックでは00060AA2でした。グローバルフックでは何も出力されませんでした。
グローバルフックではWM_COPYDATAメッセージが届いていないようです。(^_^;)
>>622 デバッガは使用していません。OutputDebugStringを使って変数の値をトレースしています。
>>623 プロセス間を跨いだデバッグ作業はどのように行うのでしょうか?
>>624 明示的にアタッチする方法があるのですか?
>>621 今までの状況を整理してみました。
・ローカルフックには成功し、グローバルフックには失敗する。
・ローカルフックの場合、フックDLLがロードされ、WM_COPYDATAメッセージが届く。
・グローバルフックの場合、フックDLLはロードされるが、WM_COPYDATAメッセージは届かない。
627デフォルトの名無しさん:2007/04/09(月) 11:00:13
WindowsXPの[ユーザのログオフ]−[ユーザー切替]−[指定したユーザーのログオン]
という作業をプログラムから操作したいんですけど可能でしょうか?
可能なら使用するAPIを教えて頂けないでしょうか?
628デフォルトの名無しさん:2007/04/09(月) 11:05:12
不可
629627:2007/04/09(月) 11:11:17
やっぱりですね
即レスありがとうございました。
630デフォルトの名無しさん:2007/04/09(月) 11:31:48
>>627
Ginaで何とかなるでしょ。Ginaでぐぐってみたら?
631デフォルトの名無しさん:2007/04/09(月) 11:40:23
>>627
レジストリに自動ログオンの設定を書き込んで再起動
632デフォルトの名無しさん:2007/04/09(月) 11:58:25
>>626
プロセスにアタッチするのははDLLをデバッグする場合の基本操作なんだが、
そんな当たり前のことを自分で調べられないのか?
633デフォルトの名無しさん:2007/04/09(月) 14:27:57
グローバルフック成功してないんじゃね?
634デフォルトの名無しさん:2007/04/09(月) 15:14:14
Windowsで標準入力や出力がリダイレクトされてるかどうか知る方法を教えてください。
635デフォルトの名無しさん:2007/04/09(月) 15:56:31
現在VS2005を使っているのですが、作成してるネイティブアプリのVisualStyleを切るにはどの様な方法がよろしいでしょうか?
よろしくお願い致します。
636デフォルトの名無しさん:2007/04/09(月) 16:28:21
まにふぇすとぶっこわす
637デフォルトの名無しさん:2007/04/09(月) 17:01:54
むしろバージョン5のcomctl32.dllを使うようにマニフェスト書け
638デフォルトの名無しさん:2007/04/09(月) 17:27:19
>>626
コードを一から書いたら、グローバルフックでもタイトルバーが変わった。
期待した動作にならなかったら、一から作り直すのも手かと。

つか、サンプルコードのコピペはおすすめできない。
639デフォルトの名無しさん:2007/04/09(月) 18:06:07
>>636-637
レスありがとうございます。
というか何か勘違いしてました。。
VS2005では勝手に有効になると思ってましたがならないんですね・・・
この前作ったときはなってたような・・・気のせいか・・・orz
640デフォルトの名無しさん:2007/04/10(火) 00:34:29
ツリービューのノードのアイコンを一つだけ変える場合って
どうすればええすか?
Expandしたら広がったフォルダを表示とか。
641デフォルトの名無しさん:2007/04/10(火) 08:34:36
TVM_SETIMAGELIST で ImageList セット
TVM_SETITEM での fMask に TVIF_IMAGE|TVIF_SELECTEDIMAGE なり TVIF_STATE なり...
642デフォルトの名無しさん:2007/04/10(火) 12:49:04
USBリムーバブルハードディスクのデバイス識別子?(USB\Vid_04xx&Pid_10xx)とかから
割り当てられている論理ディスクのボリューム名を取得したいのですが
どの辺を参照したらいいでしょうか。
「管理ツール」→「ディスクの管理」で下側ビューの左側「ディスクn」を右クリックしてプロパティを表示させて、
「ボリューム」プロパティーシートの下側リストビューに表示されているものが欲しいです。
643デフォルトの名無しさん:2007/04/10(火) 16:50:17
SetMenuContextHelpIdに渡す「ヘルプコンテキスト識別子」ってなんなんですか?
「ヘルプコンテキスト」ってリソースで用意するんでしょうか?
それってどのような物で,どうやって作るんでしょうか?
644デフォルトの名無しさん:2007/04/10(火) 18:08:33
Win32API を使って、DLL 中のダイアログリソースの PUSHBUTTON の文字列を取得することはできますでしょうか?
FindResource -> LoadResource -> LockResource まではできましたが、文字列の取得が分からない。
645デフォルトの名無しさん:2007/04/10(火) 18:31:28
自分で解析
646デフォルトの名無しさん:2007/04/10(火) 21:03:23
>>643のレスで思ったのだが、そーいや、2005からののヘルプはどうなんお?
昔は、HTML Help Workshopとかゴリゴリ作ったが?

http://msdn.microsoft.com/library/en-us/htmlhelp/html/hwMicrosoftHTMLHelpDownloads.asp?frame=true

ここでいいっけ?


それとも、暗黙でツールが入ってるのかな?
647デフォルトの名無しさん:2007/04/10(火) 21:10:22
ゲームプログラムで質問ですwin32apiの関数を使うよりdirectxを使った方が画像の描画は早いですか
648デフォルトの名無しさん:2007/04/10(火) 21:18:57
>>647
ちなみに、何系ゲーム?
649デフォルトの名無しさん:2007/04/10(火) 21:30:43
シューティング系ゲームです。既にwin32apiで作ったのですが画面のスクロール速度を一定以上にあげるとフレームスキップが起こるです。
650648:2007/04/10(火) 21:38:04
>>649
画面更新に速度を要求するなら、
DirectXなんじゃね?

DirectX〜系の別スレがよろしいかと・・・
651デフォルトの名無しさん:2007/04/10(火) 22:52:12
>>644
MSDN に PEFILE.cpp というサンプルがあって、.exe/.dll の先頭から
.rsrc section を割りだし、section 内のテーブルを追い掛けると、
個々の rsrc leaf に行き付ける例があったと思う。
dialog template の構造は MSDN に説明があった。

ただ、これらを取り出したり、差し替えたりするのに、ファイルとして
開く際、使用中だと開けないことがある。開く際の属性を指定すると
可能なのかも知れないが。
652デフォルトの名無しさん:2007/04/10(火) 23:30:31
>651
いや、メモリに一度読み込めば問題なし。
昔、ダイナミックにダイアログリソース作ったときはそうやったよ。
653デフォルトの名無しさん:2007/04/10(火) 23:36:48
GetCommandLine関数を利用する場合、
みんあはや空白の分割とかどしてる?

思いつき関数作ったけど、意見求む。
654653:2007/04/10(火) 23:38:46
前半
DWORD OrderCommandLine(LPTSTR lpBuffer, LPDWORD lpcchBuffer)
{
DWORD i, dwLen, dwPos, dwCnt, dwDiv;
TCHAR tcChr;
TCHAR szCmd[0xFFFF];
TCHAR szDmy[0xFFFF];
int fDQ;
LPTSTR lpszCur;

/* 初期化 */
::lstrcpy(szCmd, ::GetCommandLine());
dwLen = (DWORD)::lstrlen(szCmd);
szCmd[dwLen++] = _T('\0');

/* 捜査 */
for (i = 0, dwPos = dwDiv = 0, fDQ = 0, lpszCur = szCmd; i < dwLen; i++, lpszCur++){
tcChr = *lpszCur;
if (tcChr == _T('\"')){
fDQ = !fDQ;
}else
if ((!fDQ) && (tcChr == _T(' '))){
tcChr = _T('\0');
}

szDmy[dwPos++] = tcChr;
if (tcChr == _T('\0')){
dwDiv++;
}
}
szDmy[dwPos++] = _T('\0');
655653:2007/04/10(火) 23:39:39
後半
/* 整理 */
dwCnt = 0;
if (dwDiv > 0){
for (i = 0, dwPos = 0, lpszCur = szDmy; i < dwDiv; i++, lpszCur++){
dwLen = (DWORD)::lstrlen(lpszCur);
if (dwLen > 0){
::lstrcpy(&szCmd[dwPos++], lpszCur);
lpszCur += (dwLen);
dwPos += (dwLen -1);
szCmd[dwPos++] = _T('\0');
dwCnt++;
}
}
szCmd[dwPos++] = _T('\0');
}

/* 結果 */
if (lpcchBuffer){
if (*lpcchBuffer >= dwPos){
*lpcchBuffer = dwPos;
if (lpBuffer){
::CopyMemory(lpBuffer, szCmd, dwPos * sizeof(TCHAR));
}
}
}

return dwCnt;
}
656653:2007/04/10(火) 23:42:59
DWORD OrderCommandLine(LPTSTR lpBuffer, LPDWORD lpcchBuffer)の
LPTSTR lpBufferはバッファ
LPDWORD lpcchBufferはlpBufferのサイズ(文字単位)の入った変数のポインタ
んでOrderCommandLineは分割した数を返す。

どっかおかしいとこない?
657デフォルトの名無しさん:2007/04/10(火) 23:48:04
自作せずにCommandLineToArgvWを使ったほうが楽なのでは?
658653:2007/04/11(水) 00:01:57
>>657
CommandLineToArgvW関数はしりませんですた... orz
調査してみますね。
659デフォルトの名無しさん:2007/04/11(水) 00:07:01
main関数のargc, argvは駄目なの?
main関数から始まるけどコンソールプログラムでないというのは変わっているかもしれないけど。
660デフォルトの名無しさん:2007/04/11(水) 00:13:42
boostにコマンドライン解析があった希ガス
661デフォルトの名無しさん:2007/04/11(水) 00:25:19
>>659
WinMain関数のLPSTR lpszCmdLine問題があったので、
片手間で作成してみました。
そりゃ、_tmain関数みたいなのが、一番いいですが。

>>660
ttp://www.boost.org/ですよね
ここも見てみます。
662デフォルトの名無しさん:2007/04/11(水) 00:25:41
__argv,__argcとかいうのもあったような
663デフォルトの名無しさん:2007/04/11(水) 00:43:11
Googleからも出てる。
ttp://code.google.com/p/google-gflags/
664デフォルトの名無しさん:2007/04/11(水) 03:12:11
CommandLineToArgvW以外はスレ違いじゃね?
>>661
_tWinMain
VC++以外や、VC++でもバージョンによっては存在しないみたいだが
その場合はGetCommandLineW
つーかCommandLineToArgvWは_tmainが存在しなかったバージョンのVC++で
GetCommandLineWと組み合わせて使うために提供されていた(だからW版しかない)ので
665653:2007/04/11(水) 08:17:09
>>664
情報ありがとうございます。
へー_tWinMain関数ってあるんですかー。

特に変な意識して、関数作る必要もなかったのかな?


一回、整理して考え直してみます。
皆様ありがとうございました
666デフォルトの名無しさん:2007/04/11(水) 08:55:12
>>644
不可視でダイアログ開いて、GetDlgItemText()したら?
667デフォルトの名無しさん:2007/04/11(水) 11:33:08
CSV(カンマテキスト)を分割するAPIを教えてください
668デフォルトの名無しさん:2007/04/11(水) 11:59:02
ない
669デフォルトの名無しさん:2007/04/11(水) 12:55:54
ウィンドウズの起動時間(timeGetTimeやGetTickCountで返される数値)を変更する方法ありますか?

DirectShow辺りが怪しいので
デバッグで24日間放置した状態にしたいのです
670デフォルトの名無しさん:2007/04/11(水) 13:05:35
>>669
hookして、好きな値返すとか?
671デフォルトの名無しさん:2007/04/11(水) 13:13:31
>>668
ADO等で出来なくもない気もするが
672デフォルトの名無しさん:2007/04/11(水) 13:45:05
猫でもわかる・・の第10章タイマーで、コーディングして実行したところ、
一応動くのですが、文字列が再描画されず、字が重なったようになって
しまいます。この場合、うまく表示するにはどうしたらよいでしょうか?
よろしくお願いします。
673デフォルトの名無しさん:2007/04/11(水) 13:56:55
大学院レベルの猫にしかわからないってことだね
674672:2007/04/11(水) 13:57:59
↑で質問したものです。
InvalidateRect(hWnd, NULL, FALSE);
こいつを
InvalidateRect(hWnd, NULL, TRUE);にしたらなおった。
でも載ってるのは最初のほうですよね。
なんかほかに方法があるのかなぁ
675デフォルトの名無しさん:2007/04/11(水) 14:01:28
つ SetBkMode
676672:2007/04/11(水) 14:04:28
>>675
実装済みです
677デフォルトの名無しさん:2007/04/11(水) 14:14:29
前と同じ幅の文字で上書きしてないとか
678デフォルトの名無しさん:2007/04/11(水) 14:33:38
>>676
TRANSPARENT で描画、リクエストをInvalidateRect(...FALSE) にしてたら
672 のように多重の重ね書きになるわけだが?

まぁ、OPAQUEにしたところで、文字列の実描画長が短くなったら
なんらかの方法で背景色で消すコードを書くはめにはなるがね
679デフォルトの名無しさん:2007/04/11(水) 14:34:58
fillrect
680デフォルトの名無しさん:2007/04/11(水) 14:41:57
ExtTextoutを結構多用したなあ
681デフォルトの名無しさん:2007/04/11(水) 16:34:21
質問です。

親のウインドウとは独立した子ウインドウで、親よりは必ず前面に。
ただし他のアプリのウインドウがより前面にある時は(親ともども)きちんとそのウインドウの背面に。

というウインドウをCreateWindowExで簡単に作ることはできないでしょうか。

・子ウインドウは、親ウインドウの中に存在するわけではない(つまりWS_CHILDではない?)
 お絵かきツールのパレットウインドウなんかがこんな感じ。
・WS_EX_TOPMOSTにすると、他のアプリのウィンドウよりも前にきてしまう
682デフォルトの名無しさん:2007/04/11(水) 16:45:13
殆ど自分で答え言っているような気がす…
親をオーナーにして (WS_CHILD と排他な)WS_POPUP で作れば良いんじゃない?
683デフォルトの名無しさん:2007/04/11(水) 16:46:37
>>681
WS_POPUPとWS_EX_TOOLWINDOWつけてみたらどう?
684デフォルトの名無しさん:2007/04/11(水) 16:51:40
>>681
ttp://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/windowing/windows/aboutwindows.asp
>A window can own, or be owned by, another window. An owned window always appears in front of its owner window,
>is hidden when its owner window is minimized, and is destroyed when its owner window is destroyed.
685デフォルトの名無しさん:2007/04/11(水) 16:56:53
686デフォルトの名無しさん:2007/04/11(水) 17:00:46
日本語でおk
687デフォルトの名無しさん:2007/04/11(水) 17:12:48
アドバイスありがとうございます。
とりあえずWS_CHILDとWS_POPUPは共存できないようです。

D-Pixedのツールウインドウが同じ実装になっていたのを思い出し、Spy++で覗いてみました。
>>683さんの言うとおりのオプションを使っていましたが、それが原因で望んだ挙動をしているわけではないようです。

とりあえず下記を、親と子両方に入れてやったところ上手く狙った挙動ができているようです。
なので問題ないといえばないのですが、より上手い方法があれば教えていただけると幸いです。

if (WA_INACTIVE != wParam)
{
 ::SetWindowLong(hChildWnd, GWL_EXSTYLE, WS_EX_TOOLWINDOW | WS_EX_TOPMOST);
 ::SetWindowPos(hChildWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
}
else
{
 ::SetWindowLong(hChildWnd, GWL_EXSTYLE, WS_EX_TOOLWINDOW);
 ::SetWindowPos(hChildWnd, hParentWnd, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
 ::SetWindowPos(hParentWnd, hChildWnd, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
}
688デフォルトの名無しさん:2007/04/11(水) 17:13:57
他アプリウィンドウ - オーナー - ポップアップ - (最前面) で
他アプリウィンドウをタスクバーのクリックでアクティブにすると、
オーナー - 他アプリウィンドウ - ポップアップ - (最前面)
ってなることがあるんだよなあ。
Alt+Tabだと発生しないけど、なんだかなあと思う。
689デフォルトの名無しさん:2007/04/11(水) 17:25:44
>>687
共存できないとわざわざ書いたのはなぜ?
もしかして>>682を誤解してる?
690デフォルトの名無しさん:2007/04/11(水) 17:29:41
>>687
>より上手い方法があれば教えていただけると幸いです。

そういうウィンドウはOwned Windowと言います。>>685のリンク先を読んでください。
691デフォルトの名無しさん:2007/04/11(水) 17:29:47
…なぜに SetWindowLog & SetWindowPos なんだ?
CreateWindowEx でのスタイル指定で解決できるのに…

ターゲットの窓が他プロセスの持ち物なのか?
692デフォルトの名無しさん:2007/04/11(水) 17:32:35
>>689-691
すいません、682さんを誤読した上に、685さんのレスとレスがすれ違いました。
WS_POPUPとは、親ウインドウを持つウインドウのことだったのですね。

正直、オーバーラップウインドウと、ポップアップウインドウの区別がわからず
今ググっていて682さんの文章に対する誤読に気づきました。
685さんのリンク先を実践してみます
693デフォルトの名無しさん:2007/04/11(水) 17:50:25
解決できました。
WS_POPUPの解説である「ポップアップウインドウを作成する」の「ポップアップウインドウをはなんぞや?
という知識が無かったのが問題でした。

ポップアップウインドウそのものが、私の望んでいたもののようです。
WM_ACTIVEなどをまったく使わずWS_POPUPを指定しただけで解決できました。

ありがとうございました。
694デフォルトの名無しさん:2007/04/12(木) 00:43:50
DOS窓で、CreateWindowてどうやるの?
メッセージループとか。
695デフォルトの名無しさん:2007/04/12(木) 00:53:29
どうやってやるも何も普通に出来るだろ。
いったい何を言っているんだ?
696デフォルトの名無しさん:2007/04/12(木) 01:40:30
>>694
日本語でおk
697デフォルトの名無しさん:2007/04/12(木) 03:17:19
ソースコードを読んで勉強したいのですが、C言語 + Win32 API で書かれたオープンソースのアプリケーションでお薦めって何かありますか?
実践的なコードの書き方を勉強したいので、お手本になりそうなアプリがあったら教えてください。
また逆に、「このソフトの書き方は真似するな」的なのもあれば教えて頂けると有り難いです。
宜しくお願いします。
698デフォルトの名無しさん:2007/04/12(木) 04:13:51
> お薦めって何かありますか
猫でもわかる

> このソフトの書き方は真似するな
猫でもわかる
699デフォルトの名無しさん:2007/04/12(木) 04:16:14
>>698
禿道と言わざるを得ない
700デフォルトの名無しさん:2007/04/12(木) 07:39:02
あまりにも禿同杉てワラタw
701デフォルトの名無しさん:2007/04/12(木) 08:18:22
ヒントにはなるが真似は出来ない
702デフォルトの名無しさん:2007/04/12(木) 09:19:39
左右分割ウインドウをMFCを使わずに作っているのですが、相談させてください。

まず、ウインドウ全体を親ウインドウとします。

子ウインドウとして
「左側用にWS_THICKFRAMEを使ったウインドウをちょっと大きめに作って配置」
「右側に余り部分の大きさ分のウインドウ」
を貼り付けて実現しています。
左側用のウインドウの大きさが変化するたびに、右側のウインドウの大きさも変更されるようにしています。

ただ、WS_THICKFRAMEは角の近くだと「マウスドラッグで縦横の大きさを変えられる」モードになってしまいます。
まず「横の大きさしか変えられないウインドウ」は作れないのでしょうか?

それをさせないために今は「上下に大きめに作る」ようにしているのですが(角付近を触れないように)、ウインドウはデスクトップウインドウのサイズより大きくは作れないようです(?)。
そのため親ウインドウをデスクトップ画面並に大きくされてしまうと困ってしまいます。
何か対策はありませんでしょうか?

左右ができれば、上下はその応用で作成可能だと思います。
703デフォルトの名無しさん:2007/04/12(木) 09:30:11
>>702
左右の境界に少し隙間を開け、そこをドラッグすると左右に大きさが変わるようにする。
というようにMFCはなってたと思う。
704デフォルトの名無しさん:2007/04/12(木) 09:47:03
>>703
なるほど。つまり自前でドラッグシステムを作っているわけですね。
WS_THICKFRAMEを使った方法も、この斜め問題さえ解決すれば実用に耐えるのですが…。

とはいうものの、WM_SIZEを捕まえて上下の大きさが変更されたら強制的に元に戻す処理は入れています。
ただそれは格好悪いもので、もし良い方法があればと思って相談しにきました。
705デフォルトの名無しさん:2007/04/12(木) 10:44:16
WM_GETMINMAXINFO捕まえたらどうだろう
MFCしか使ってないんで良く分からないけど
706デフォルトの名無しさん:2007/04/12(木) 11:34:55
>>705
できました!
まったく知らないWMでした。ありがとうございます。

これで
tagMINMAXINFO *p = (tagMINMAXINFO*)lParam;
p->ptMaxTrackSize.y += 128;
としてやることで、デスクトップサイズよりでかいウインドウを作ることに成功。
期待通り動作できるようになりました。
707デフォルトの名無しさん:2007/04/12(木) 11:48:53
>>702,706
WM_NCHITTESTを捕まえてDefWindowProc()が
HTTOP,HTBOTTOM,HTTOPLEFT,HTTOPRIGHT,HTBOTTOMLEFT,HTBOTTOMRIGHTのときだけ
もみ消してしまう方がいいのでは?
708デフォルトの名無しさん:2007/04/12(木) 11:53:52
スクリーンショットを撮るAPIってありますか
709デフォルトの名無しさん:2007/04/12(木) 12:00:33
>>707
ウィンドウの四隅(スプリットバーの端っこ)が使えなくなるんでお薦めできない
それで無効になる領域って結構大きいし
710デフォルトの名無しさん:2007/04/12(木) 12:02:23
>>708
GetDC
711デフォルトの名無しさん:2007/04/12(木) 12:29:16
>>709
言われてみれば確かに…。16*16ほどか。
なら、座標計算して嘘の値を返すなんてのはどう?
例えば、DefWindowProc()がHTBOTTOMRIGHTの場合で
マウスが右の方にあるときはHTRIGHTを返し、下の方にあるときは0を返すとか。
712デフォルトの名無しさん:2007/04/12(木) 12:35:13
>>710
その答えで>>708が報われる事は絶対に無いだろう
713デフォルトの名無しさん:2007/04/12(木) 12:36:19
>>707
そこまでするぐらいなら普通に>>706でいいと思うんだが…
まあどっちみちWM_NCHITTESTは使うんだけど。
例えば左右に動くスプリットバーがあったとして、
その端っこにポインタを合わせたら斜め向いたカーソルが出るんじゃ
格好がつかないんで
HTTOPLEFTを受け取ったらHTLEFTを返す、みたいなことをする
714デフォルトの名無しさん:2007/04/12(木) 12:37:31
なんかアンカー間違えたり誤読したりで嫌になってきた
715デフォルトの名無しさん:2007/04/12(木) 12:40:03
適当にぐぐったらすぐサンプルコードが見つかったんで、ついで。
>>708
ttp://www13.plala.or.jp/kymats/study/MULTIMEDIA/ScreenCapture.html
716デフォルトの名無しさん:2007/04/12(木) 13:10:09
>>713
斜め向いたカーソルがでないように、上下64ドットずつ大きいウインドウを作りました
717デフォルトの名無しさん:2007/04/12(木) 17:35:48
普通は自前で全部やるものだよ。作り直したほうがいい。
718デフォルトの名無しさん:2007/04/12(木) 18:12:40
>>717
______   _      _| ̄|_  _         _
|____   |   |  | 口口  |_  _|  \\       | |  __     __ __
     / /   |  |        | |  _   ̄ ___  | |  |__|  _| |_| |_
    / /    |  |   _    | |  _| |_  |___| | |        |_  _  _\
    | |      |  \_/ /   / / /。 _|        | |  ___    .| |.|__|/ /
    \\     \   /     ̄  \/           | | |___|    |__|   ̄
       ̄       ̄ ̄                      ̄
719デフォルトの名無しさん:2007/04/12(木) 18:30:06
>>702
Splitterなんて死ぬほどサンプルあるよ
http://www.codeguru.com/cpp/w-d/splitter/

君の場合は、手を抜こうとして逆に面倒なことになってる気がする。
素直にフルスクラッチした方が楽だと思うよ。
720デフォルトの名無しさん:2007/04/12(木) 21:06:03
WTLのスプリッタのソースが見やすいと思われ
721デフォルトの名無しさん:2007/04/12(木) 21:58:22
すみません
いまコンソールのC言語のプログラムを
WinMainで始まるプログラムでも使えるようにしようとしている
のですがエラーがでてしまいコンパイルできません
エラーの内容はunsigned char*をchar*に変換できません等のものなのですが
なんとかソースを書き換えずにコンパイルできるようにできないものでしょうか?
722デフォルトの名無しさん:2007/04/12(木) 22:04:32
え、キャストしちゃいけないの?
723デフォルトの名無しさん:2007/04/12(木) 22:10:59
キャストすると1000ヶ所以上あってどうにもならない感じです
724デフォルトの名無しさん:2007/04/12(木) 22:12:58
BCCにするんだ
725デフォルトの名無しさん:2007/04/12(木) 22:14:49
置換使えないのかい
726デフォルトの名無しさん:2007/04/12(木) 22:18:07
1000箇所ぐらいなら1時間で何とかなると思うが・・・
というかSuletiGay
727デフォルトの名無しさん:2007/04/12(木) 22:20:01
置換も使えなさそうです
文字列の型にunsigned char*を使っているのが問題のようで
置換をしようにもどうにも絞れません
728デフォルトの名無しさん:2007/04/12(木) 22:23:39
#define unsigned
729デフォルトの名無しさん:2007/04/12(木) 22:29:26
charをデフォルトでunsignedとみなすコンパイルオプションがなかったっけ?
730デフォルトの名無しさん:2007/04/12(木) 22:29:47
VCには存在するな
731デフォルトの名無しさん:2007/04/12(木) 23:05:42
unsigned char*からchar*へ変換できないなんて、
単にWindowsプログラムのほうではC++としてコンパイルしているだけだと思う。
Cなら(警告は出るだろうが)エラーにならずにコンパイルできるはず。
732デフォルトの名無しさん:2007/04/12(木) 23:21:58
コンパイルオプション/Jでは配列のunsignedchar*がchar*に変換できないらしく
だめでした情報ありがとうございます
733デフォルトの名無しさん:2007/04/12(木) 23:26:48
とりあえず F4 でエラー行に飛べることを知ってるだけで
効率はかなり変わると思うよ
F4 → カーソル移動 → Ctrl+V → (以下ループ)
734デフォルトの名無しさん:2007/04/12(木) 23:27:36
ごめん、VC 限定ね… VC スレと勘違いした
735デフォルトの名無しさん:2007/04/12(木) 23:52:06
いえ、ありがとうございます
ですが元のソースはいじるわけにはいかないんですよ
ちょっと勝手に書き換えるとまずい事情がありまして
736デフォルトの名無しさん:2007/04/12(木) 23:59:12
WinMainから始まろうと、mainから始まろうと、
同じCのソースコードであることに変わりはない。

片方でコンパイルできたものが、もう片方でコンパイルできないなんて、
(argc/argcやmainそのものに依存している場合などを除いて)有り得ない。

>>731は試した?
737デフォルトの名無しさん:2007/04/13(金) 00:00:18
>>735
そういうことってよくあるよね。
あ〜邪魔臭いコードでもいじれない。
738デフォルトの名無しさん:2007/04/13(金) 00:22:56
>>735
Cでは警告は出ないようだ。
こんな感じでC++とCのコードは混ぜることが出来る。

extern "C" {
#include "古いコード.h"
}

cl 新しいコード.cpp 古いコード.c
739デフォルトの名無しさん:2007/04/13(金) 01:03:16
とりあえず古いソースのヘッダをincludeしている箇所を
extern "C"{}で囲ってみましたが効果ないっぽいです
情報ありがとうございます
740デフォルトの名無しさん:2007/04/13(金) 01:18:34
>>739
意味わかってないだろ
741デフォルトの名無しさん:2007/04/13(金) 01:26:44
IDEから使うと /TP がデフォになってるな。
これをはずせば拡張子に応じたコンパイルをしてくれるが、
プリコンパイルヘッダーやら他のところで引っ掛かりが出てるよ。
混ぜるのはこいつのレベルじゃ無理かもしれんね。
742デフォルトの名無しさん:2007/04/13(金) 09:35:23
文字列に付けるszってなんですか?
743デフォルトの名無しさん:2007/04/13(金) 09:39:19
Win32APIでは構造体のサイズを取得してそのサイズを構造体にセットするというのをよく使いますが、
何故このようなやり方をするのでしょうか?
744デフォルトの名無しさん:2007/04/13(金) 09:42:10
>>742
ハンガリアン記法
745デフォルトの名無しさん:2007/04/13(金) 09:43:57
>>743
バージョンが上がって仕様が変わって構造体の内容が変わっても
互換性を維持するため。
746デフォルトの名無しさん:2007/04/13(金) 10:06:09
まじ?
747デフォルトの名無しさん:2007/04/13(金) 10:09:16
>>742
zero(\0)終端string(文字列)の略
748デフォルトの名無しさん:2007/04/13(金) 10:36:38
nsはなんですか?
749デフォルトの名無しさん:2007/04/13(金) 10:46:51
>>748
質問まとめてしろよ
750デフォルトの名無しさん:2007/04/13(金) 12:01:00
>>746
>745のことならマジ。
751デフォルトの名無しさん:2007/04/13(金) 13:47:56
ちょっと思うんだけど、
ファイルパス長ってMAX_PATHバイト?MAX_PATH文字数?
MAX_PATHバイトだったら、マルチバイト文字で半分になるんだけどいいの?
それとも、
#define MAX_PATH_NAME (MAX_PATH * (2 / sizeof(TCHAR)))
な事すんの?
752デフォルトの名無しさん:2007/04/13(金) 13:50:14
文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するからMAX_PATH自体あまり意味無いような・・・
753751:2007/04/13(金) 13:50:49
補足
TCHAR szFile[MAX_PATH_NAME + 1];

とつかうとして
754デフォルトの名無しさん:2007/04/13(金) 13:57:06
まあDOS/Windows 3.1時代の遺物なんで
755751:2007/04/13(金) 14:01:31
>>752
CreateFileの説明の通り
In the ANSI version of this function,
the name is limited to MAX_PATH characters.To extend this limit to 32,767 wide characters,
call the Unicode version of the function and prepend "\\?\" to the path.
For more information, see Naming a File.

ワイド文字で32767文字って事は、65534バイト宣言しとけばいいの?
ちょいもったいない気が・・・
756デフォルトの名無しさん:2007/04/13(金) 14:19:59
必要に応じて動的に確保すればいいんじゃないの?
どうしても固定長にしたいわけ?
757デフォルトの名無しさん:2007/04/13(金) 14:24:08
OPENFILENAME の戻り用の器は MAX_APTH 使った固定長だな。
758751:2007/04/13(金) 14:36:11
>>756
固定長にしたい理由というわけじゃありませんが、
明確な理由があれば、それに準じたいと思っています。

もちろん、実用的な側面でも判断しますが
759デフォルトの名無しさん:2007/04/13(金) 15:23:35
ぐだぐだ言ってないで実用的な面でどうなるか
試してみろよ。
FAT32,NTFS,共有ドライブで長い名前のファイル名作るくらいできないの?
760デフォルトの名無しさん:2007/04/13(金) 17:02:48
文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから
文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから
文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから
文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから
文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから
文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから
文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから
文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから
文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから
文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから
文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから
文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから
文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから
文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから
文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから
文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから
文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから
文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから
文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから
文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから
文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから
文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから
文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから
文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから
文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから
文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから
文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから
761デフォルトの名無しさん:2007/04/13(金) 17:07:47
>>760
うるさいばか
762デフォルトの名無しさん:2007/04/13(金) 17:12:13
>>758
9x系OSでANSI版のAPIつかってみなはれ

ちなみにMSでは、MAX_PATHは文字数としてあつかっとるよ
稀にMS社内でも開発者が混乱してしもて、
大穴あけてしもうたこともあるけどね
763デフォルトの名無しさん:2007/04/13(金) 17:13:42
まったく1文字1Byteの連中はこれだから・・
764デフォルトの名無しさん:2007/04/13(金) 17:25:11
>>763
初心者にこのスレは不向きですよppp
765デフォルトの名無しさん:2007/04/13(金) 17:26:38
>>751
これ以上はスレ違い
APIではなくコーディングの話なら
Cスレに行け
766デフォルトの名無しさん:2007/04/13(金) 17:35:44
>>764
欧米の方ですか?
767デフォルトの名無しさん:2007/04/13(金) 17:47:03
いいえ東亜です。
768デフォルトの名無しさん:2007/04/13(金) 17:52:25
>>763
いや、ワイドキャラクタでも1文字2バイトじゃ済まないはずなんだが。
サロゲートペアとかあると4バイトになる。
あれ、Win32APIってUCS-2のままだったっけ?
まぁサロゲートペア対応しても、そもそも文字の定義ってなに?ってなるし。
769デフォルトの名無しさん:2007/04/13(金) 18:14:56
ファイルの更新日時を変更するAPIを教えてください
770デフォルトの名無しさん:2007/04/13(金) 18:23:11
GetFileTime
771デフォルトの名無しさん:2007/04/13(金) 18:26:48
Sじゃねーのか
772デフォルトの名無しさん:2007/04/13(金) 18:28:36
お前さん頭いいな。
773デフォルトの名無しさん:2007/04/13(金) 18:36:47
Mですから
774デフォルトの名無しさん:2007/04/13(金) 18:42:44
>>768
ビル・G

数種類の奇妙な文字で文章を書く、親愛なる日本人の皆さん。
私はアルファベット26文字で美しい詩的な文章を綴り、人々を感嘆させるビル・Gである。
ユニコードとは何か。簡単に言えば、あらゆるプラットフォームで様々な言語を共通に扱えるようにするための統一的なコード体系のことだ。
もっと簡単に言おう。アルファベット以外の野蛮な絵文字を使ってコミュニケートする第三世界の人間に対する、心からの配慮だ。
今までも手を焼いてきた。2バイトコードの各国語対応も、少しは楽になるのだけどね。
君たちの国でも、ユニコードの問題が盛んに議論されているようだね。
日本や中国や台湾で使っている漢字コードやフォント違うって? 
それは君たちが今までに勝手な文字を作りすぎてきたツケに過ぎないよ。
また、『固有の文化』という言葉で語られる微妙な差異に関する議論は、
私にはちょうど「靴下は右足から履かなければならない」
「いや、左足から履くのが伝統だ」と言い争いをしているようにしか聞こえない。そんなことはどうでもいいじゃないか!
775デフォルトの名無しさん:2007/04/13(金) 18:54:31
拘りすぎてバカを見るのが東洋人
大雑把過ぎてバカを見るのが欧米人
776デフォルトの名無しさん:2007/04/13(金) 19:25:50
CJK以外にもBidiとか言語タグとか対応するのが
遅かったねぇ。
BMPを16bitじゃなくて32bitにしてれば、もう少し問題先送りできたのに。
あとはユニコードまでも取り込んだGB18030とかどうするんだろうっていう。。。
777デフォルトの名無しさん:2007/04/13(金) 19:31:01
XP以降のメモ帳で右から左に読むにして
Hello, World打つだけでも軽く死ねるなw
778デフォルトの名無しさん:2007/04/13(金) 20:22:24
神の罰です
779デフォルトの名無しさん:2007/04/13(金) 21:24:16
>>748
ナノ秒
冗談じゃなくて素直に考えて
780デフォルトの名無しさん:2007/04/13(金) 21:26:31
>>768
ファイル名の制限という観点ではコードユニットの数で数えるから関係ない
781デフォルトの名無しさん:2007/04/13(金) 21:31:48
ウニコードはうまそうだ
782デフォルトの名無しさん:2007/04/13(金) 21:42:17
>>780
NTFSはどのエンコーディングを使ってんの?
783デフォルトの名無しさん:2007/04/13(金) 21:54:10
>>780
ドキュメント上の問題のことです。
n文字という表現では最大バイト数は判りにくい。
784デフォルトの名無しさん:2007/04/13(金) 21:54:42
>>782
おそらくUTF-16
785デフォルトの名無しさん:2007/04/13(金) 21:55:22
もちろんUTF-16LE
786デフォルトの名無しさん:2007/04/13(金) 23:01:50
結局、MAX_PATHの単位はなんなんだ?
明らかにバイト数じゃない
文字数も数えてみたがなんかちがう
会社によって1バイトのズレも許さないからこのあいまいな仕様がかなりムカつく
ちなみにファイルダイアログの最長はXPSP1までは0xFFFFだったがXPSP2からはどこまではいるのかよくわからん
ドラッグアンドドロップの限界は一体どこなんだ?
787デフォルトの名無しさん:2007/04/13(金) 23:18:44
WinNTのNTFSドライバのパス名制限が (2^15-1) UTF-16符号単位だったと思うが
788751:2007/04/13(金) 23:29:46
>>759
もちろん、\\.\〜の長いファイル名前をCreateFileで作成し、
動作を確認しています。

しかしながら、エクスプローラも捕らえられないファイル名は実用的か?
それともMAX_PATH以上32767文字以下で、もっともらしい定数があり、
自分が知らないだけかわからんとです。

789デフォルトの名無しさん:2007/04/13(金) 23:44:40
GUIアプリでコンソールを表示するにはどうすればいいのでしょうか?

やりたいことは、
・起動した時にはコンソールアプリのように振る舞う。
・ある入力があった時点でウィンドウを表示し、GUIアプリとして振舞う

main()で起動するとコンソールは出ますが、WinMain()の第一引数で取得できる
HINSTANCEが取得できないので、GUIアプリとして振舞えない。
WinMain()で起動するとGUIは出せるが、コンソールへ出力を行えない。

WinMain()でGUIアプリとして起動しておいて、必要に応じて(何らかの関数呼び出しによって)
コンソールを表示させるのが正しいやり方なのかと思っていますが、調べてもやり方が見つかりません。
どなたかお助けを・・・
790デフォルトの名無しさん:2007/04/13(金) 23:49:13
>>789
HINSTANCE == GetModule(0) だったハズ。
791デフォルトの名無しさん:2007/04/13(金) 23:51:05
コンソール部分は別にしてCreateProcessは?
792791:2007/04/13(金) 23:51:06
あ、すまん間違えた。
×:GetModule
○:GetModuleHandle
793792:2007/04/13(金) 23:52:04
>>792==>>790!=>>791
もう寝る!
794デフォルトの名無しさん:2007/04/13(金) 23:54:36
>>789
CreateProcess, GetStdHandle, SetStdHandle, CreatePipeでリダイレクト。
795デフォルトの名無しさん:2007/04/13(金) 23:54:38
AllocConsole stdout
796デフォルトの名無しさん:2007/04/13(金) 23:56:39
コンソール プロセスを生成して標準ハンドルをリダイレクトする方法
http://support.microsoft.com/kb/190351/ja
797デフォルトの名無しさん:2007/04/14(土) 00:00:43
>>789
WinMainから始まるプログラムにAllocConsoleを使う方法も出ているが、
個人的には、手間要らずにC stdioやC++ iostreamを使えるので、
mainから始まるプログラムにした方がいいと思う。
EXEのインスタンスハンドルは791のとおりGetModuleHandleで。
798デフォルトの名無しさん:2007/04/14(土) 00:31:27
>>777
前からおもってたのだが、右から左に読む文化圏に対応してるなら、
上から下に読む文化圏にも対応してていいんじゃないかと思ったりするのだがまぁいいや。

そういえば、昔、Macのことえりだったか縦書きIME変換やってくれてた記憶があったな〜
799デフォルトの名無しさん:2007/04/14(土) 00:44:47
MS-IMEも、Wordなんかで縦書きにすればそれにあわせてくれる。
800デフォルトの名無しさん:2007/04/14(土) 06:13:01
質問です。GetProcAddressを使ってDLL内の関数を呼び出したいのですが、
上手くいきません。プログラムを実行すると、そのまま強制終了してしまいます。

FARPROC SetHook,ResetHook;
SetHook = GetProcAddress(LoadLibrary(TEXT("hook.dll")),TEXT("_SetHook"));
ResetHook = GetProcAddress(LoadLibrary(TEXT("hook.dll")),TEXT("_ResetHook"));

として関数のアドレスを取得しています。各関数のアドレスは

SetHook : 011412A0
ResetHook : 011412D4

でした。tdump.exeでは

Exports from hook.dll
3 exported name(s), 3 export addresse(s). Ordinal base is 1.
Sorted by Name:
RVA Ord. Hint Name
-------- ---- ---- ----
000012D4 1 0000 _ResetHook
000012A0 2 0001 _SetHook
00009158 3 0002 ___CPPdebugHook

という結果が得られました。

GetProcAddressの使い方が間違っているのでしょうか?
コンパイラの設定に問題があるのでしょうか?
どのあたりに原因があるのか指摘して下さい。お願いします。<(_ _)>
コンパイラはBCCです。BCC Developerでビルドしています。
801デフォルトの名無しさん:2007/04/14(土) 06:20:21
GetProcAddress の第2引数は LPCSTR だが。
802800:2007/04/14(土) 06:38:04
>>801
SetHook = GetProcAddress(LoadLibrary(TEXT("hook.dll")),"_SetHook");
ResetHook = GetProcAddress(LoadLibrary(TEXT("hook.dll")),"_ResetHook");
としたのですが、上手くいきません。関数名の指定が間違っているのでしょうか?
803デフォルトの名無しさん:2007/04/14(土) 06:46:26
>>800
まずは「強制終了」する場所を探らないと。
その情報だけじゃ、GetProcAddress() 絡みの問題かどうかなんてわ
からん。
804800:2007/04/14(土) 06:57:58
>>803
関数の呼び出し時に強制終了します。
インポートライブラリを通しての呼び出しには成功したのですが。
805デフォルトの名無しさん:2007/04/14(土) 07:02:09
それはGetProcの問題じゃないだろうな
FARPROCの宣言はどうなってる?
806デフォルトの名無しさん:2007/04/14(土) 07:07:26
>>804
インポートライブラリを通しての呼び出しには成功ってんだったら
GetProcAddressで失敗なんじゃなくて
それで取った情報を使う時の失敗だろ
どうやって関数呼び出してんのか見せてみぃや
807デフォルトの名無しさん:2007/04/14(土) 07:12:39
>>805
VCだと「typedef int (*FARPROC)(void)」だが、BCCはどうなんだろう・・・
ていうかそのまんま使ったら普通コンパイルとおらないかも?
808デフォルトの名無しさん:2007/04/14(土) 07:16:41
呼び出し規約が間違っている。それでスタック壊れているんだろ。
809デフォルトの名無しさん:2007/04/14(土) 07:18:09
普通目的の関数に合致した関数ポインタの型を定義してそれで使うもんじゃね?
ただのFARPROCにぶち込んでるヤツ初めて見た
810800:2007/04/14(土) 07:39:35
>>805-809 レスありがとうございます。

#define EXPORT __declspec (dllexport)
typedef EXPORT HHOOK (*SETHOOK)(const HWND hCaller);
typedef EXPORT void (*RESETHOOK)(void);
SETHOOK SetHook;
RESETHOOK ResetHook;

と関数ポインタの型を定義してから

SetHook(hWnd);
ResetHook();

という感じで呼び出してみたのですが、やはり上手くいきません。
811デフォルトの名無しさん:2007/04/14(土) 08:02:06
もう一度レスを見直すんだ。そこに答えがある。
812デフォルトの名無しさん:2007/04/14(土) 08:17:26
VC2005でstrlen等を使うと
813800:2007/04/14(土) 08:17:48
>>811
呼び出し規約の整合性に問題があるのでしょうか?
もう少し詳しく教えて頂けないでしょうか?
814デフォルトの名無しさん:2007/04/14(土) 08:34:30
提供する側では__declspec (dllexport)が必要だろうが
使う側では要らないだろ。

提供する側でも使う側でも__stdcallとかを指定したほうが安全。
デフォルトに任せれば同じになっている可能性が高いけど
不一致になる危険性がある。
GetProcAddressじゃなくて暗黙のリンクでもいえることだけどね。

GetProcAddressの戻り値が0ってことはないよね。
815デフォルトの名無しさん:2007/04/14(土) 08:56:00
>>810
DLL側のソースでその2つの関数がどう定義されているかもチェック
816デフォルトの名無しさん:2007/04/14(土) 08:57:17
うまくいかないのと直接の関連はないが、
一々LeadLibraryするな。
1回ロードしたら、そのハンドルを使いまわせ。
817デフォルトの名無しさん:2007/04/14(土) 08:58:36
LeadLibrary
818デフォルトの名無しさん:2007/04/14(土) 09:01:36
一度だけLoadLibraryして、そのハンドルを保持して使うってのもそうだけど
GetProcAddressに直接ぶち込むのもどうかと
誤動作の原因になる可能性は充分にあるかと
819デフォルトの名無しさん:2007/04/14(土) 09:06:34
誤動作するとは思えないが、直接GetProcAddressに渡していたら、
FreeLibraryするのに不便だろう。
GetModuleHandleで後から解放用にハンドルを得るなんて無茶も甚だしい。
820デフォルトの名無しさん:2007/04/14(土) 09:08:22
誤動作するとは思えないって思うのが危ないな
常に誤動作するかも知れないと思ってコーディングすべし
821デフォルトの名無しさん:2007/04/14(土) 09:09:01
>>787
UNICODE_STRINGの構造上の問題だな
同様の理由でNT系はコマンドラインの長さにも32767文字(UTF-16符号単位)制限がある
驚くべきことにWin9xだとコマンドライン長が1MB超えても大丈夫。
822800:2007/04/14(土) 09:09:21
>>814-819 レスありがとうございます。
DLLの関数を

#define EXPORT __declspec (dllexport)
EXPORT HHOOK WINAPI SetHook(const HWND hCaller);
EXPORT void WINAPI ResetHook(void);

とし、関数を呼び出すプログラムで

typedef HHOOK WINAPI (*SETHOOK)(const HWND hCaller);
typedef void WINAPI (*RESETHOOK)(void);
SETHOOK SetHook;
RESETHOOK ResetHook;

HMODULE hook_lib;
hook_lib = LoadLibrary("hook.dll");
SetHook = GetProcAddress(hook_lib,"SetHook");
ResetHook = GetProcAddress(hook_lib,"ResetHook");

として関数を呼び出したのですが、やはり駄目です。GetProcAddressの戻り値を
再度確認したのですが、0ではありませんでした。
823デフォルトの名無しさん:2007/04/14(土) 09:10:20
32767文字を超えるコマンドライン自体普通無いだろ・・・
824デフォルトの名無しさん:2007/04/14(土) 09:12:32
typedefのWINAPI要らなくね?
825デフォルトの名無しさん:2007/04/14(土) 09:18:50
>>822
あんまり関係ないけどGetProcAddressの戻り値ってキャストしなくてもコンパイル通るのか?
826デフォルトの名無しさん:2007/04/14(土) 09:58:58
関数ポインタの宣言なんだが・・・

typedef HHOOK (WINAPI *SETHOOK)(const HWND);
typedef void (WINAPI *RESETHOOK)(void);

じゃねーの?WINAPIの位置が違うとか。

>>825
警告が出るだけだったような。
827デフォルトの名無しさん:2007/04/14(土) 10:03:42
呼び出し規約の記述位置は括弧の中だね。
戻り値に付属なわけじゃなくて、
関数に付属する情報だからなんだろうけど、
最初は戸惑うよね。
828デフォルトの名無しさん:2007/04/14(土) 10:07:09
Borlandの昔のコンパイラだと微妙に仕様が違ったり
標準キーワードじゃないから仕方ないけど
829デフォルトの名無しさん:2007/04/14(土) 10:14:48
なんでだろうね?
間違って古いDLLが残っているとか。
830デフォルトの名無しさん:2007/04/14(土) 10:18:02
DLL側と呼び出し側のソースをまとめてうpってもらった方が話が早くていいかもしらんな
831デフォルトの名無しさん:2007/04/14(土) 10:20:56
VCの場合、
#define EXPORT __declspec(dllexport)

EXPORT HHOOK WINAPI __stdcall SetHook(const HWND hCaller);
EXPORT void WINAPI __stdcall ResetHook(void);

こうじゃないかな。__stdcallはなくても動きそうな気がするけれど
832デフォルトの名無しさん:2007/04/14(土) 10:27:28
>>831
WINAPIは
#define WINAPI __stdcall
とかされてるだけだから、どっちかだけで十分
833800:2007/04/14(土) 10:33:36
>>824-832 レスありがとうございます。

typedef HHOOK (WINAPI *SETHOOK)(const HWND hCaller);
typedef void (WINAPI *RESETHOOK)(void);
SETHOOK SetHook;
RESETHOOK ResetHook;

HMODULE hook_lib;
hook_lib = LoadLibrary("hook.dll");
SetHook = (SETHOOK)GetProcAddress(hook_lib,"SetHook");
ResetHook = (RESETHOOK)GetProcAddress(hook_lib,"ResetHook");

としたのですが駄目でした。VCのExpress Editionで上手くいくかどうか試してみます。
834デフォルトの名無しさん:2007/04/14(土) 10:38:30
>typedef HHOOK (WINAPI *SETHOOK)(const HWND hCaller);
今思った
引数は型だけで名前はイラネ
835デフォルトの名無しさん:2007/04/14(土) 10:40:22
>>800
Borlandデバッグ環境は知らんが、DLL側のSetHook()の入り口にブレークポイント仕掛けるなり、MessageBox()
出すなりして、そこまで来ているか(強制終了がどの段階で起きているか)確認しろ。

関数名から何がやりたいか想像はつくが、もう少し経験をつんでからやることを強く勧める。
836デフォルトの名無しさん:2007/04/14(土) 10:42:32
つーか無理にLoadLibraryでやらんでもいいことだけどな
837デフォルトの名無しさん:2007/04/14(土) 10:47:16
そりゃまあごもっともです
838デフォルトの名無しさん:2007/04/14(土) 10:48:32
>>800
>>インポートライブラリを通しての呼び出しには成功したのですが。
が本当なら、そのヘッダーファイルでの関数プロトタイプ宣言(は正しいはずだからこれ)にあわせろ。

おれもお前には、Hookは10年早いと思う。
839800:2007/04/14(土) 12:15:58
>>834-838 レスありがとうございます。
マウスフックを使ったプログラムを作成しています。システムフックにより
他のウィンドウのタイトルを変更することには成功しました。そのため、
フックの処理自体には問題が無いと考えているのですが。

VCで実行してみたのですが、SetHook内で処理が中断しました。
インポートライブラリを使用した場合、何も問題は起きなかったのですが。(?_?)
840デフォルトの名無しさん:2007/04/14(土) 13:02:13
SetWindowTextでタイトルが変わらないとか騒いでた奴か。
やっぱりおまえには早いと思うぞ
841デフォルトの名無しさん:2007/04/14(土) 15:40:25
DLL や EXE に含まれているリソースの番号だけって取得できますか?
たとえばこの DLL の STRINGTABLE には、1000番 1001番の STRING が含まれています、という感じの API です。
842デフォルトの名無しさん:2007/04/14(土) 15:45:04
FindResoource?
843デフォルトの名無しさん:2007/04/14(土) 15:45:31
EnumResourceNames()
844デフォルトの名無しさん:2007/04/14(土) 16:57:55
「普通ないだろ」が生む○○問題
845デフォルトの名無しさん:2007/04/14(土) 18:00:38
>>825
Cだとコンパイルできる
C++だとコンパイルできない
846デフォルトの名無しさん:2007/04/14(土) 18:26:15
なんで最近そんなことになってんだろうね
C言語でコンパイルできたソースが普通にC++で通らん
847デフォルトの名無しさん:2007/04/14(土) 18:37:39
[アニメ DVD] ヤミと帽子と本の旅人 第04話 「マリエル」 (640x480 DivX511).avi
848デフォルトの名無しさん:2007/04/14(土) 18:40:03
>>846
C++は、例えCとの互換性を失ってでも危険な香りがする暗黙の型変換を禁止した。
これだけは譲れないというやつ。
849デフォルトの名無しさん:2007/04/14(土) 18:42:44
思いややりが無い朝鮮人的な思考だ
850デフォルトの名無しさん:2007/04/14(土) 18:48:31
つーか、すっぱりと別言語にしちゃえば良かったのに
中途半端に互換性を持ってるからすごいカオスに
851デフォルトの名無しさん:2007/04/14(土) 18:52:09
unsigned char*とchar*の代入なんてエラーにするほど危険かなぁ
なんか言語潔癖症的変な奴いるじゃないかなぁ
おかげで意味のないキャストをプチプチ入れてく無駄作業
こんなとこ明示的にキャストしたところでどうだというのか・・・
852デフォルトの名無しさん:2007/04/14(土) 19:01:27
C++って型キャストが必須なんだっけか
俺Cメインだからうろ覚えだぜ
853デフォルトの名無しさん:2007/04/14(土) 19:12:04
>>851
reinterpret_castが必要な場面ってそんなにある?
854デフォルトの名無しさん:2007/04/14(土) 20:13:26
やっぱCがいいな。
855デフォルトの名無しさん:2007/04/14(土) 20:16:32
C++で生のWin32 APIを使うとreinterpret_castだらけ。
Win32 APIは所詮Cを念頭において作ったという感じ。

>>849-851
それはC++作ったBjarneに言ってやれ。
静的型付けで強い型安全性でプログラマを守るというのがC++。
856デフォルトの名無しさん:2007/04/14(土) 20:48:33
>>850
今までに何千人のプログラマが同じことを思っただろうな…
すべてが今更の話だが…
857デフォルトの名無しさん:2007/04/14(土) 21:03:28
>>850
ゲイツ・ビルに言ってやってくれ
858デフォルトの名無しさん:2007/04/14(土) 21:05:41
>>857
ビル・ゲイツの出した解がC#では?
いやビルが実際作ったわけではないけどさ。
859デフォルトの名無しさん:2007/04/14(土) 21:13:34
C#もヤバい方向にいってると思うけどな
varってJavaScriptみたい
860デフォルトの名無しさん:2007/04/14(土) 21:15:39
ヴァー
861デフォルトの名無しさん:2007/04/14(土) 21:15:57
そうか?
型推論や関数型プログラミング的な機能を取り入れるのは最近の流行だよ。
862デフォルトの名無しさん:2007/04/14(土) 21:29:34
所詮学者の独りよがりだよな
明らかになにも作ったことがないグズが言語仕様を決めてる気がする
863デフォルトの名無しさん:2007/04/14(土) 21:50:53
おまえに32ビットの羅列ほいと渡して何型の変数か分かるのか?
864デフォルトの名無しさん:2007/04/14(土) 21:55:46
>>862
言語の一つでも作ってみろよグズ
865デフォルトの名無しさん:2007/04/14(土) 21:56:26
型推論はソースの冗長性を削る意味で有用だろうが。
866デフォルトの名無しさん:2007/04/14(土) 21:56:41
>>862みたいにブツクサ独りよがりで文句を言うだけで、
かといって別に妙案も何にも持っていない奴を色んなところでよく見かける。
867デフォルトの名無しさん:2007/04/14(土) 21:58:49
つーか、議論したけりゃ他所でやれ。
868デフォルトの名無しさん:2007/04/14(土) 22:01:50
varをVariant型とかObject型と勘違いして拒否反応示している奴が結構いるみたいだな。
あとC++のテンプレート関数が型推論やってくれてるの知らない奴も多杉。
869デフォルトの名無しさん:2007/04/14(土) 22:30:25
>>851
signed char が-128〜127の整数の集合
unsigned char が0〜255の整数の集合

例えば前者の変数を作成して
「リンゴをA店で100個、B店で155個買いました。
全部で何個でしょう」
という問題を解いて、答えが-1個だったらおかしいでしょう。

あまり問題だと思わないのは、先に16進ありき、だからじゃないかな。
870デフォルトの名無しさん:2007/04/14(土) 22:39:53
もう止めようぜ
お前らこそ冗長にもほどがある
871デフォルトの名無しさん:2007/04/14(土) 22:40:11
Dのautoキーワードの場合で書くと、
HogeClass obj = new HogeClass();

auto obj = new HogeClass();
みたいに書ける
ジェネリックプログラミングとかで
型がよく分からない時なんか更に便利

多分C#も同じ感じかと
872デフォルトの名無しさん:2007/04/14(土) 22:42:06
>>870
リロードしてなかった
すまん
873デフォルトの名無しさん:2007/04/14(土) 22:48:00
ザ・スレチガイ
874デフォルトの名無しさん:2007/04/14(土) 22:53:41
(´ω`)
875デフォルトの名無しさん:2007/04/14(土) 23:13:38
SuspendThread(this);
876デフォルトの名無しさん:2007/04/14(土) 23:20:36
解決方法がわからないので教えてください。
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _memmove はすでに LIBCMTD.lib(memmove.obj) で定義されています
というエラーが15個出ます(まったく同じlib同士なので制限の関係で割愛します)
どちらかをunloadすればいいかとおもってプロジェクトの設定からやってみたんですが、どちらを行った場合でも、Libファイルがないためのエラーが出ます。
どうかおねがいします。
877デフォルトの名無しさん:2007/04/14(土) 23:42:19
>>876 おちつけ。大体意味は分かるが。
878デフォルトの名無しさん:2007/04/15(日) 00:03:44
どちらかをunload→どちらか一方とリンクする という意味じゃないのか?
プロジェクトの中に、誰かが作ったライブラリ(スタティックリンクしちゃったやつ)が混じっているんじゃないか?

1.プロジェクトの設定−一般−MFCのスタティックライブラリを使用
2.プロジェクトの設定−C/C++−[カテゴリ]コード生成−[使用するランタイムライブラリ]マルチスレッド (デバッグ)
に設定したらビルドできるか?(EXEでなくてDLLを作る場合は マルチスレッド (DLL、デバッグ))

あと、↑の例はVS6だが、環境も知らせておくように。
879デフォルトの名無しさん:2007/04/15(日) 00:29:00
GDI+のファイルの書き出しについて保存です。
読み込み、書き出しそのもの情報はあるのですが、Graphics→Imageにする方法がわかりません。
Imageにファイルを読み込んで、別の形式で保存するというのはあるのですが。
猫でもわかる〜を見ても読み込みまでしかかかれていないもので・・・
Graphics graphics(hdc);
//描画処理
このGraphicsをImageに変換するにはどうしたらいいのでしょうか?
880デフォルトの名無しさん:2007/04/15(日) 00:37:17
>>878
ありがとうございます。できました
881デフォルトの名無しさん:2007/04/15(日) 00:48:12
>>879
GDI+の扱いは分からんのだけども
GraphicsからBMPオブジェクト作ってImage.FromBitmapじゃ駄目?
882881:2007/04/15(日) 00:51:32
不安になってMSDN見てみたらそんなメンバ無かったw
忘れてくれ
883デフォルトの名無しさん:2007/04/15(日) 01:04:10
>>881
わざわざ調べていただいてありがとうございます。こちらでも確認したのですが、
Graphicの方にしかありませんでした。
884デフォルトの名無しさん:2007/04/15(日) 01:06:28
間違ってました。Graphicsの方にもなかったです(汗 あるのはGraphics::FromImageですね。
885デフォルトの名無しさん:2007/04/15(日) 01:08:59
それ何語?
886デフォルトの名無しさん:2007/04/15(日) 01:10:16
エスペラント語でないことだけは確かだ
887デフォルトの名無しさん:2007/04/15(日) 01:24:28
謎語を適当に喋ってみるテスト

Bitmapを作ってそこからGraphics:FromImage(bmp)で作ったGraphicsに
hdcをソースにして描画すればいいんじゃね

このスレ的にはhdcからBitBltするのかな?
888デフォルトの名無しさん:2007/04/15(日) 01:32:04
>>887
ありがとうございます。その方法でいけました。
BitmapがImageと同じように使えるんですね。
889デフォルトの名無しさん:2007/04/15(日) 02:40:09
ハンドル(CreateFileが返す値)から、元のファイルのフルパスを取得することができるAPIってありますか。
890デフォルトの名無しさん:2007/04/15(日) 02:41:52
CreateFileで開いてフルパスじゃ無いって事は
カレントディレクトリパス+CreateFileに渡したパスで良いと思うけどどうかね?
891デフォルトの名無しさん:2007/04/15(日) 04:52:59
他のアプリのフォーカスがあるコントロールへデータを送りたいのですが
以下の様なコードだと、アプリによっては正しくデータが送れません。

またブラウザで表示された、HTML領域のコントロールへも
データが送れたらなと思うのですが、どういう方法がありますでしょうか?

DWORD myid = ::GetWindowThreadProcessId(m_hWnd, NULL);
DWORD toid = ::GetWindowThreadProcessId(::GetForegroundWindow(), NULL);

::AttachThreadInput(myid, toid, TRUE);
//::SendMessage(::GetFocus(), WM_PASTE, 0, 0); //←貼り付けの場合は当り前だけど全て無問題
::SendMessage(::GetFocus(), WM_SETTEXT, 0, (long)"TEST STRINGS!!!");
::AttachThreadInput(myid, toid, FALSE);
892デフォルトの名無しさん:2007/04/15(日) 04:55:36
HANDLE からもとのファイル名が知りたいって事じゃね?

俺はそんなAPI知らないけど。
893デフォルトの名無しさん:2007/04/15(日) 04:57:23
送り先が間違っているんだろ
894デフォルトの名無しさん:2007/04/15(日) 05:07:56
俺も送り先が間違っているに一票

他にもたまにウィンドウがフォーカス持ってないように見えてフォーカス持ってたり
フォーカス持ってるようしか見えないのにフォーカス持ってなかったりする場合がある

フック使ってフォーカスの移動でも見てみればいい
895デフォルトの名無しさん:2007/04/15(日) 05:14:12
>>891
ブラウザは良く知らんが↓が参考になるかも試練

http://k-gensai.hp.infoseek.co.jp/tools/hige2ch/kowaza.html#list2

Webのフォームはウィンドウじゃないから普通に操作すんのは無理
896デフォルトの名無しさん:2007/04/15(日) 05:59:00
>>893-894
アプリの種類によっては、エディットではなく
タイトルバーの文字列が設定されてしまう場合とかあるんですよね。。
完全にエディットにフォーカスがあるのを確認して、SendMessage()しているのですが…
もう少し試行錯誤してみます。

>>895
やっぱりフォームのコントロールへのデータ送信は
ちょっとややこしそうですね。
また自分でも色々と調べてみますね。

解決したらご報告致します。
897デフォルトの名無しさん:2007/04/15(日) 06:04:32
>>889
GetFileInformationByHandleEx
Vista以外では
http://www.microsoft.com/downloads/details.aspx?familyid=1DECC547-AB00-4963-A360-E4130EC079B8&displaylang=en
をインストールする必要があるけど。
Win9xでは公開された方法は存在しない
898896:2007/04/15(日) 06:13:25
具体的にいうとこんな感じなんですけどね。。

メモ帳のエディット部に送信 → 無事設定される
サクラエディタのエディット部に送信 → タイトルバーに設定される
Firefoxのアドレスバーに送信 → 無反応。。

やっぱり見た目にフォーカスがあっても
内部ではフォーカスが無い場合ってのがあるんでしょうね。
899896:2007/04/15(日) 06:15:07
IEのアドレスバーには問題なく設定できるようです。
とりあえずどうしようもないので調べます。
900デフォルトの名無しさん:2007/04/15(日) 06:19:13
あ、Fileextd.libはスタティックだからインストールが必要なのは開発者のほうだけね
901デフォルトの名無しさん:2007/04/15(日) 06:23:19
>>898
Windows標準のエディットコントロールはWM_SETTEXTを独自に処理してるので
エディット部に設定される
それ以外のほとんどのウィンドウはWM_SETTEXTを処理しないのでデフォルト処理で
タイトルバーへの設定が行われる
子ウィンドウでタイトルバーが表示されていなければ無反応に見える
エディットコントロール(のように見えるもの)にテキストを設定する汎用的な方法は
存在しない
902896:2007/04/15(日) 06:40:29
>>901
なるほど〜
確かにWM_SETTEXTで設定出来るのは
どれもオーソドックスなエディットだけですね。
う〜ん、困ったなぁ。。。
903デフォルトの名無しさん:2007/04/15(日) 06:58:58
そもそも WM_SETTEXT は外から使うことを考慮していない。使えるように実装されているだけ。
文字を送るだけなら他の方法がある。
904デフォルトの名無しさん:2007/04/15(日) 07:06:10
でも使えるように実装するのが普通だよな
今FireFox見てみたけどおかしな作りだな
905896:2007/04/15(日) 07:25:30
別アプリのWebFormのコントロールに
データを設定する事なんて果たして可能なのかなぁ。。
906デフォルトの名無しさん:2007/04/15(日) 07:48:59
IWebBrowser2で検索すると参考になりそうなサイトは沢山ある

が、理解できるかは知らんよ
907896:2007/04/15(日) 07:50:37
>>906
情報ありがとうございます。
頑張って調べるしかないですね。
908デフォルトの名無しさん:2007/04/15(日) 08:04:31
IEなんかは一見標準コントロールを使っているように見えるが
あれは全て自前描画のフルスクラッチだから、普通の
コントロールのように扱うのは無理だよ。
909896:2007/04/15(日) 08:09:08
>>908
MSのアプリってそういうの多いみたいですね。。
あとAdobeのものとかも自作コンポーネントとかが沢山で。

ウェブフォームの方は、情報が色々と出てきて
どうにかなりそうな気がしてきました。

助言を下さったみなさま、ありがとうございました。
910デフォルトの名無しさん:2007/04/15(日) 10:22:07
Windows Presentation Frameworkのコントロールも全部(API的には)自前描画だな
アンマネージなアプリから設定するのは結構骨が折れる
911デフォルトの名無しさん:2007/04/15(日) 10:24:23
Windows Presentation Foundationだった
.NET Frameworkと微妙に混ざった
あとJavaのSwingアプリとか(AWTやSWTはプラットフォームのコントロールを使ってる)
912889:2007/04/15(日) 10:35:31
>>897
ありがとう。
GetFileInformationByHandleEx の FileNameInfo で99%できた。
しかし、ドライブレターが無いのだ。
つまり、L"\\Windows\\System32\\ntdll.dll" みたいなのが返ってくる。
C: の部分はどうやったら良いかもお願いします。
913デフォルトの名無しさん:2007/04/15(日) 11:04:30
>>912
VistaならGetVolumeInformationByHandleW
2000/XPだとGetFileInformationByHandle(Exじゃないほう)と
FindFirstVolume/FindNextVolume/FindVolumeClose/GetVolumeInformationの
ボリュームシリアル番号を付き合わせる、くらいしか思いつかない。
914デフォルトの名無しさん:2007/04/15(日) 16:31:07
おにいさま…涙が…止まりません
915デフォルトの名無しさん:2007/04/15(日) 21:06:53
辛子明太子を食べろ
916デフォルトの名無しさん:2007/04/15(日) 21:23:52
エディットボックスで英数字だけ使うのってできないんだっけ
917デフォルトの名無しさん:2007/04/15(日) 21:32:53
エディットボックスでWM_CHAR引っ掛ければ余裕
918デフォルトの名無しさん:2007/04/15(日) 21:50:32
クリップボード経由でペーストされたら?
919デフォルトの名無しさん:2007/04/15(日) 21:52:15
WM_PASTE見張ってれば良いじゃん

頭使ってる?
920デフォルトの名無しさん:2007/04/15(日) 22:20:42
WM_SETTEXTとかEM_REPLACESELとかも見張る必要あるだろ
921デフォルトの名無しさん:2007/04/15(日) 22:21:09
見張ればいいじゃん。

労力使ってる?
922デフォルトの名無しさん:2007/04/15(日) 22:24:53
他にもワナがありそうだな。

EditBoxのあるダイアログのOKボタンが押されたときにでも、
データが適切であるかを確認する方がよほど楽だろうな。
923デフォルトの名無しさん:2007/04/15(日) 22:26:46
頭も使う労力も無い人に金言を授けよう

 駄 目 な 奴 は 何 を や っ て も 駄 目
924デフォルトの名無しさん:2007/04/15(日) 22:28:52
本人から言われると重みがあるな
925デフォルトの名無しさん:2007/04/15(日) 22:30:53
あれ、英数字ってなかったっけ?
俺の気のせいか
926デフォルトの名無しさん:2007/04/15(日) 22:31:52
数字だけならあったけどな
927デフォルトの名無しさん:2007/04/15(日) 22:32:54
>>925
MFCのDDXならデジットチェックあるんだよ。
だけどここはWin32APIだから。
928デフォルトの名無しさん:2007/04/15(日) 22:46:22
DDXも入力はできちゃう
929デフォルトの名無しさん:2007/04/15(日) 22:55:15
って EM_CHANGE / EM_UPDATE じゃいかんのけ?
930デフォルトの名無しさん:2007/04/15(日) 23:52:12
>>929
いいんとちゃう?
931912=889:2007/04/16(月) 00:58:15
>>913
OSはXPです。
FindFirstVolume/FindNextVolume/FindVolumeClose だと "\\?\Volume{GUIDっぽい文字列}\" みたいな文字列で、どう扱ってよいか分からず断念。
ドライブレターありきで、割り切ることにしました。
マウントでも破綻するかもしれないですが、これも割り切り。
(1) ファイルのハンドルを GetFileInformationByHandle に渡して、ファイルのボリュームシリアル番号を得て、
(2)GetLogicalDriveStrings の結果を GetVolumeInformation に渡して、各ドライブのボリュームシリアル番号を得て、
(3)上記(2)のボリュームシリアル番号のうち、(1)のボリュームシリアル番号に一致するのがファイルが居るドライブと判定。
という方法でとりあえずやりたいことはできるようになりました。
御礼を兼ねて報告。
932デフォルトの名無しさん:2007/04/16(月) 01:24:18
>>931
こんなの見つけた。Win2kだとさらにやり方が違うみたい
http://www.ultrasync.net/yofune/?%A5%DC%A5%EA%A5%E5%A1%BC%A5%E0%A4%F2%C6%C0%A4%EB
もし非公開API使ってもいいならNtQueryVolumeInformationFileがたぶん使える
933デフォルトの名無しさん:2007/04/16(月) 01:39:17
あーどっちにしろ"\\?\Volume{GUIDっぽい文字列}\"からドライブ名への変換は
必要か。じゃあGetLogicalDriveStringsからたどるのが一番簡単だな
934デフォルトの名無しさん:2007/04/16(月) 12:04:45
どうでもいいけど、>890の方法はダメだな。
カレントディレクトリパスなんてファイルダイアログを開くだけで変わってしまう。
APIを駆使する方法以外では、素直にCreateFile時にフルパスを保存しておくしかないね。
935デフォルトの名無しさん:2007/04/16(月) 14:28:11
wParamとlParamについてどなたか
やさしく教えてください。
936デフォルトの名無しさん:2007/04/16(月) 14:44:33
>>935
最早その名前に何の意義も無いので、適当に使い分けましょう。
937デフォルトの名無しさん:2007/04/16(月) 14:44:42
メッセージに追加の情報を付加するためのもので、メッセージ毎に意味が違う。
個々のメッセージ毎にどういう意味を持つかはMSDN Libraryに書いてある。
938デフォルトの名無しさん:2007/04/16(月) 14:46:00
イベントが呼ばれたときに設定される変数で
意味はそのイベントによって異なる。
939デフォルトの名無しさん:2007/04/16(月) 14:46:01
>>936
使い分けだったら、ポインタはlParam、ハンドルはwParamに入れられる傾向にある。
Win16で、ハンドルとwParamが16ビット、FarポインタとlParamが32ビットだった名残だが。
940デフォルトの名無しさん:2007/04/16(月) 14:50:40
lParamのlってlongのこと?
じゃあwはword?
941デフォルトの名無しさん:2007/04/16(月) 14:56:05
l
w
942デフォルトの名無しさん:2007/04/16(月) 15:09:26
>>940
そうだよ。Win16では当初ウィンドウプロシージャもこういう宣言だった。
LONG FAR PASCAL WindowProc(HWND, unsigned, WORD, LONG);
Win16後期になってくると、LRESULT/UINT/WPARAM/LPARAMが出てきて、
現在のWin32でも通用する形になった。
LRESULT FAR PASCAL WindowProc(HWND, UINT, WPARAM, LPARAM);
943デフォルトの名無しさん:2007/04/16(月) 16:54:13
リソースの STRINGTABLE の最大文字列長は何バイトですか?
944デフォルトの名無しさん:2007/04/16(月) 17:41:21
>>943
ちょっと的を得てなくて申し訳ないんだが、
リソースも所詮ファイルなので、リソース全体ではNTFSの2TB弱が限界だろうか。
この辺ウラとってなくて申し訳ない。

Win32APIだとLoadString関数を使う事になるが、これは文字数にintを使ってる。
さらに、32bitのWindows2000系でのユーザーメモリ空間は2GBなので、
VC/VC++6.0では1回で使える文字列は2GB弱が限界だと思われる。

#VB6.0のString型はUNICODEで32766文字。
945デフォルトの名無しさん:2007/04/16(月) 17:48:28
>>944
>VB6.0のString型はUNICODEで32766文字。
便乗でスマソ
BSTR型は、ポインタの一つ前に文字長が入っているんだっけ?
946デフォルトの名無しさん:2007/04/16(月) 17:54:15
>>943
WCHAR形式で格納されていて、最大0xFFFF文字(NULL文字を含まない)
947デフォルトの名無しさん:2007/04/16(月) 17:55:20
>>945
文字長ではなく終端を含まないバイト数
948デフォルトの名無しさん:2007/04/16(月) 20:16:07
RASCALってなんですか?
949デフォルトの名無しさん:2007/04/16(月) 20:17:10
アライグマ
950デフォルトの名無しさん:2007/04/16(月) 20:49:44
Helphiじゃないの
951デフォルトの名無しさん:2007/04/16(月) 20:51:13
RASICかもしれん
952944:2007/04/16(月) 20:54:53
>>943
さっきは適当な事を言ってすみません。

ttp://blogs.msdn.com/michkap/archive/2007/01/15/1466291.aspx

この、(2007年1月頃の)ページでは、「ヘルプで明文化されている最大値の最低限は4097バイトである」
(つまり、デフォルトで4097バイトまでは問題ない)
「しかも、他の地域版のMSDNヘルプでは限界すら書いてない。本当の限界を調べてみないか?」とあるが、
レスは「そんな意味の無い事を・・・」とにべもない。

フォーマット的には>>946でしょうが、このアーティクルが本当なら
サードパーティツールを考慮して4097バイト(2047文字)に抑えた方が良さそうです。

#VB6のString型は、最大32767文字なのですが、最大まで使ってしまうと
#ヌルターミネータ(文字列最後の0)が入らないまま保存されます。
#VC/VC++6.0では、最も重要なCComBSTRですら文字列長プレフィックスを考えてません。
#だから、安全にプログラムするなら32766文字が良いです。
953デフォルトの名無しさん:2007/04/16(月) 21:25:15
Acronis True Imageのtibのマウントみたいな仮想的な
ドライブを作りたいのですが、DDKが必要なんでしょうか?
954デフォルトの名無しさん:2007/04/16(月) 21:27:40
たたき台になるサンプルがあれば良いのですが…
955デフォルトの名無しさん:2007/04/16(月) 21:51:07
ここで質問する程度の人はそんなものに手を出さないでくださいお願いします
956デフォルトの名無しさん:2007/04/17(火) 10:23:19
仮想フォルダレベルで良いならcabviewのソースがサンプルにある
DDKやIFSならスレ違い
957デフォルトの名無しさん:2007/04/17(火) 17:52:02
958デフォルトの名無しさん:2007/04/17(火) 17:55:15
COMスレかDDKスレでどうぞ
959デフォルトの名無しさん:2007/04/17(火) 18:24:32
>>948
AppleのMacintoshが出た当時に結構出回ってた開発言語。
ってこれはWin32APIは関係ないね
960デフォルトの名無しさん:2007/04/17(火) 18:48:25
Win2k以降でネットワークアダプタの現在のリンク速度とDuplexを取得する汎用的な方法ってあるんでしょうか?
961デフォルトの名無しさん:2007/04/17(火) 19:11:38
WMIで取れたっけ?
962デフォルトの名無しさん:2007/04/17(火) 19:46:16
CIM_NetworkAdapter, Win32_NetworkAdapterあたり?
全二重とかはソック叩くんだっけ?
963デフォルトの名無しさん:2007/04/17(火) 20:04:25
DDK
964デフォルトの名無しさん:2007/04/17(火) 21:40:23
>>940
l (lol
w (w
965デフォルトの名無しさん:2007/04/17(火) 21:52:40
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
966デフォルトの名無しさん:2007/04/17(火) 21:54:27
WORD wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww;
do{
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww = GetAsyncKeyState( VK_SPACE );
}while( !wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww );
967デフォルトの名無しさん:2007/04/17(火) 21:57:06
>>960
GetIfTable
968デフォルトの名無しさん:2007/04/18(水) 00:15:59
              /: : : : : : : : : : : : : : : : : `丶、
               / : : : : : : : : ‐- : :、: : : : :ヽ: : : : \
              {  ̄: : : : : : : : : : : : : : :ヽ、: : : ヘ: : : : : ヽ
              ,.ヘ: : : : : : : `丶 : : : : : : : : `く/ ヘ: : : : : :',
          /: : ヽ: : \: : : : : \: : -―: : : :`く: : '.,: : : : :l
          ,': {: : : \: : :ヽ、: : : : :\ー‐、: : : :ヽ:\: ヽ : : :|
            l: :l : : : l \: : : \‐=V弋芝圷\: \l\l : : :|
            |: :l: :: : {xく´_\`ヽ:ヽ   Vヘソ  |: : |: : }: :./i
          l: :l:ヽ : ヽ仗圦  \    ゞ''´   ノ: /l: :ハ/    、ノN
         ヽヘ: :\ ヽVヘ:}       //  j/-j/ 乂    ノ: :j
          丶\: ヽ: ゞ'' 、             ハ! : : :ヽj、_,ヘヘi彡'
             `ヘ>    - '     / V廴V-へ∠`´__
                   ヽ、_         /   ヽ/ ̄/ '⌒ヽ `丶
                 \ミ、ー:- -イ    / / /    ヽ  \
                   ヽ:八{\少}     / / /         ∨  \
                   '′_>' /’ __,/ / /           |    \
                      ,イ   /、 ´/ /´          |      \
                  /l│  / __/   /   /        |     /
                    /│|  /V /   /  /        |    _/
                 ││{  / /V /  r'´         ノ¨ ̄´
                 | ヘ ∨ ∨ ̄ ̄/  }         /
969デフォルトの名無しさん:2007/04/18(水) 00:20:20
 ┌─‐「][]             _,ィ ´ ̄`ヽ、
    ̄ ̄} |       _      /:.ゝ-─‐<>
   r─' ノ       「Y {´ ̄`ン':.:.:.:.:.:.:.:.:.:.:.:.:}{
     ̄        Lハj_, ィ'´⌒⌒ヽ、:.:.:.ィ、ハ
   [[] 「}     _/∠二ニニニ¬、_ハ:.:.:.ヽヽ',
    rー'_ノ      //´ 了~~~⌒~`ヽ.弋゙Tl:.:.:.:_j」 l
           { {   {        j} }士ぅ'´:.:_〉|
          い、__ >、___ __, ィ人 ヽく_:./:.〉ゝ
   ィ ⌒ >'/  い 〉~~〉T~~T<   ヽハ 〈_:.く
  (    _ イ    `7  ハ⊥__j_i___〉  ,}イ 〈_/
  (       _)    ハ__厶>ー‐一_7  /´
  ゝ ___,ノ    /ーY):::ノ ` ̄´厶.、/_
            {::::::::/     /⌒ー'::::::}
              ̄´     {:::::::::;: ィ
970デフォルトの名無しさん:2007/04/18(水) 01:48:13
ちょっと早いけど、埋めモードに入ってるっぽいんで新スレ立てておくよ
971デフォルトの名無しさん:2007/04/18(水) 01:55:01
972デフォルトの名無しさん:2007/04/18(水) 01:55:27
誤爆したw
新スレはこちら

Win32API質問箱 Build52
http://pc11.2ch.net/test/read.cgi/tech/1176828891/
973デフォルトの名無しさん:2007/04/18(水) 02:37:36
970前から埋めは気が早すぎないかw
974デフォルトの名無しさん:2007/04/18(水) 02:53:30
  〜(^o^)〜
  〜(^o^)〜
  〜(^o^)〜
   〜(^o^)〜
  〜(^o^)〜
  〜(^o^)〜
  〜(^o^)〜
   〜(^o^)〜
  〜(^o^)〜
  〜(^o^)〜
  〜(^o^)〜
   〜(^o^)〜
  〜(^o^)〜
  〜(^o^)〜
  〜(^o^)〜
   〜(^o^)〜
  〜(^o^)〜
  〜(^o^)〜
  〜(^o^)〜
   〜(^o^)〜
  〜(^o^)〜
  〜(^o^)〜
  〜(^o^)〜
   〜(^o^)〜
975デフォルトの名無しさん:2007/04/18(水) 02:54:00
  〜(^o^)〜
  〜(^o^)〜
  〜(^o^)〜
   〜(^o^)〜
  〜(^o^)〜
  〜(^o^)〜
  〜(^o^)〜
   〜(^o^)〜
  〜(^o^)〜
  〜(^o^)〜
  〜(^o^)〜
   〜(^o^)〜
  〜(^o^)〜
  〜(^o^)〜
  〜(^o^)〜
   〜(^o^)〜
  〜(^o^)〜
  〜(^o^)〜
  〜(^o^)〜
   〜(^o^)〜
  〜(^o^)〜
  〜(^o^)〜
  〜(^o^)〜
   〜(^o^)〜
976デフォルトの名無しさん:2007/04/18(水) 04:00:25
ume
977デフォルトの名無しさん:2007/04/18(水) 08:14:35
埋め埋め

ところで、国内の治安も悪くなったねー
978960:2007/04/18(水) 09:08:30
>961
WMIだと未実装らしくてNULLが入ってますorz
979960:2007/04/18(水) 09:17:31
>967
MIB_IFROW.dwSpeedで速度は取れるようですが、Duplexは無いようです。
このあたりはメーカー独自のレジストリ構造だし、泥臭くいくしかないのか・・・
最終的には設定までやりたいんですが、
手持ちのNIC調べただけでもメーカーごとに全部違うようで
SpeedDuplex/ConnectionType/ConnectionType_A
980デフォルトの名無しさん:2007/04/18(水) 11:56:37
ume
981デフォルトの名無しさん:2007/04/18(水) 12:33:32
膿め
982デフォルトの名無しさん:2007/04/18(水) 13:51:52
俺様は産む機械ィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィ!!!11!!
983デフォルトの名無しさん:2007/04/18(水) 14:39:08
984デフォルトの名無しさん:2007/04/18(水) 16:39:06
だからドライバから取れって
985デフォルトの名無しさん:2007/04/18(水) 16:57:05
マイナスですかプラスですか?
986デフォルトの名無しさん:2007/04/18(水) 17:54:21
生め
987デフォルトの名無しさん:2007/04/18(水) 19:03:08
マイナスでもプラスでもありません
988デフォルトの名無しさん:2007/04/18(水) 19:07:55
運転手だよね
989デフォルトの名無しさん:2007/04/18(水) 19:42:35
IEやエクスプローラと同一の履歴の取得ってどうやるのでしょうか?
990デフォルトの名無しさん:2007/04/18(水) 21:04:17
ume
991デフォルトの名無しさん:2007/04/18(水) 21:09:13
ここまでテンプレ
992デフォルトの名無しさん:2007/04/18(水) 21:16:37
// ここから怒涛のテンプレ
993 ◆iwOQ5dadXo :2007/04/18(水) 21:26:29
993なら長門は俺の嫁
994デフォルトの名無しさん:2007/04/18(水) 21:29:15
994だったら1000まで行かずにdat落ち
995デフォルトの名無しさん:2007/04/18(水) 21:46:29
>>989
shell:history
のことか?
996デフォルトの名無しさん:2007/04/18(水) 21:57:01
>>995
いえ、アドレスバーの履歴です。
デスクトップやブックマークも補完されると思うのですが、あれと同じものを作りたいのです
997デフォルトの名無しさん:2007/04/18(水) 22:08:03
ゆのっちって何でこんなにかわいいんだろ
998デフォルトの名無しさん:2007/04/18(水) 22:10:21
>>989
IUrlHistoryStg2とIEnumSTATURLで検索すれば幸せになれると思う。

つーか、これURLどころか最近使ったファイルも全部ひっかかるんだけど・・
999デフォルトの名無しさん:2007/04/18(水) 22:10:59
>>996
まったく同じモノでいいのか?
だったら、[ SHAutoComplete ]を調べてみろ
ちなみにShellのバージョン5.0以上な
1000デフォルトの名無しさん:2007/04/18(水) 22:11:49
30秒程度の差で先を越された俺が埋め
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。