Win32API質問箱 Build55

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

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

■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。英語版(http://msdn.microsoft.com/library/)の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
2デフォルトの名無しさん:2007/07/19(木) 23:00:02
3デフォルトの名無しさん:2007/07/19(木) 23:00:36
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/07/19(木) 23:01:11
5デフォルトの名無しさん:2007/07/19(木) 23:01:50
MSDN日本語版は誤訳があったり、一部欠けていたりするなど不完全なため、英語版推奨。
http://msdn.microsoft.com/library/
http://msdn2.microsoft.com/en-us/library/

MSDN ライブラリ 2006年12月版
http://www.microsoft.com/downloads/details.aspx?FamilyID=94596af5-cc58-45af-a14b-df627a31e783&DisplayLang=ja

MicrosoftR WindowsR 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/07/19(木) 23:13:06
>1おつ
MSDN ライブラリ 2007 年 6 月版 ? VisualR Studio 2005 Service Pack 1 ドキュメントを含む
http://www.microsoft.com/downloads/details.aspx?familyid=B8704100-0127-4D88-9B5D-896B9B388313&displaylang=ja
7デフォルトの名無しさん:2007/07/19(木) 23:13:14
オフライン版MSDNライブラリは、2007年6月版が最新。
http://www.microsoft.com/downloads/details.aspx?DisplayLang=ja&FamilyID=b8704100-0127-4d88-9b5d-896b9b388313
Windows SDKは、3月22日公開のものが最新。
http://www.microsoft.com/downloads/details.aspx?FamilyID=ff6467e6-5bba-4bf5-b562-9199be864d29&DisplayLang=en
最新ではないけど、Windows SDK日本語版もお忘れなく。
http://www.microsoft.com/downloads/details.aspx?FamilyID=7614FE22-8A64-4DFB-AA0C-DB53035F40A0&displaylang=ja
>>4-5でオフライン版MSDNライブラリが重複していることも含め、
次スレ立てる奴は、これを反映してくれ。

何はともあれ、とりあえず1乙
8デフォルトの名無しさん:2007/07/19(木) 23:15:35
スレ立て初めてだったんでミスってた。
スマソ。

あと、前スレはこれ。
54 http://pc11.2ch.net/test/read.cgi/tech/1181645965/

って書きたかったけど連投規制食らった。
9デフォルトの名無しさん:2007/07/20(金) 00:18:20
>>1
994 に期待
10デフォルトの名無しさん:2007/07/20(金) 00:21:57
別のプログラムのWindowにファイルをドロップしたいのですが、
なにか良い方法を教えて君。
11デフォルトの名無しさん:2007/07/20(金) 01:05:34
>>10
DragAcceptFilesを実行してから
WM_DROPFILESメッセージを処理
12前974:2007/07/20(金) 01:11:38
>>1

>>前スレの人たち
ショートネームと"?"の仕様が分かったので、おかしいと思っていた動作は納得できました。
ありがとうございました。

ところで、文字数が少なくても"?"に一致してしまうのって
「最後の"?"だけ、文字数が少なくても一致する」ってことでOKですか?

「??_?_?.dat」、「?_??_?.dat」、「?_?_??.dat」と、3つの検索ワードで検索したとき、
「a_a_a.dat」ってファイルにヒットするのって、「?_?_??.dat」だけなんですよね。
(書き忘れてましたけど、環境はWindowsXP、VC++6.0です)


トライグラフ・・・
「a_????-????.dat」で検索しようとしてたので見事にはまった (´Д⊂
こっちはさんざ調べて自分で解決できたけど
13デフォルトの名無しさん:2007/07/20(金) 01:12:36
>>11
それ、ドロップを受ける方だろ。
14前スレ994:2007/07/20(金) 01:26:03
OK、記憶のままに書いてみる。間違ってたらすまん。
・基本的なお話
APIのワイルドカードマッチングはDOS時代の名残。
従って、ファイル名本体+"."+拡張子という構成の影響を受けている。
どういうことかというと"."は特殊な文字で、それが記録されるのではなく
ファイル名本体と拡張子を区切る記号として働く。
逆に、拡張子を持たないファイルは暗黙に空の拡張子を持っていると解釈される。

・"?"のお話
"?"は当然空白文字にもマッチする。注意すべきは、ファイル名本体(或いは拡張子)は
無限に空白文字が後続するものとして扱われること。
従って、"a???"は"a"にも"ab"にも"abcd"にもマッチする。
#この場合、"a??d"ならば当然に"abcd"にしかマッチしない。
また、ファイル名本体と拡張子を別々に扱うので"."にはマッチしない。
例えば、"a?b"は"a b"にはマッチするが"a.b"にはマッチしない。

・"*"のお話
"*"は前項の"?"とは違い、ファイル名本体と拡張子混在した形で働く。従って、"a*b"は"a.b"にもマッチする。
また、"*."は(前述のように空の拡張子を持つと解釈される)"abc"にはマッチするが"abc.d"にはマッチしない。

・ロングネームとショートネームの問題
ショートネームで表すことができないファイルはロングネームも記録され、
ショートネームには記号化した形で記録される。これが困ったことに"?"にも"*"にもマッチする。
つまり、ショートネームは8文字+3文字が上限なので"????????.???"は全てのファイルにマッチしてしまう。
ショートネームの生成ルールは不可思議なので割愛。ショートネームの拡張子の振る舞いの例を挙げておく。
※"a.b.c.d"→拡張子は"d"
※"a.abcd"→拡張子は"abc"
※"a b"→拡張子なし
※"a.b"→ロングネームは生成されずそのままショートネームのみ
※".abc"→拡張子なし
こんな…おっと、バイト数制限のためこの辺で。
15デフォルトの名無しさん:2007/07/20(金) 03:06:58
おおっと
16デフォルトの名無しさん:2007/07/20(金) 03:09:16
ここで>>1をスルー!!!
        r'::::::::i
         トーf/__
      /  イ| 、ヽ
      //_〉 l_l i_ノ、
\\ (_ニノ 〉____〉〉 〉
      /    } /             ,_-‐、
     /\/,ー 'ヾ          i"_Y 〈i
     〈  < /              ゝ^-'"
     \i"ヽ、  \\     //
     ├ i\i カ      ,、
      |_,,i ノ_ソ    )     ゝ
17デフォルトの名無しさん:2007/07/20(金) 07:51:57
3時間後にこんな長い説明をくれた994に感謝age
18デフォルトの名無しさん:2007/07/20(金) 07:53:46
ハズカシス
19デフォルトの名無しさん:2007/07/20(金) 07:56:01
>>14
分かりやすい説明thx
20デフォルトの名無しさん:2007/07/20(金) 07:57:58
>>14
分かりにくい説明thx
21デフォルトの名無しさん:2007/07/20(金) 08:16:57
Happy Birthday to You
22デフォルトの名無しさん:2007/07/20(金) 08:19:30
>>14
俺の記憶だと、昔はa*bは無効(*以降が無視されa*と同じ意味になる)だった気がする。
もちろん、*以降無視の規則はファイル名本体側と拡張子側それぞれに適用されるので、
a*.b*は有効(ファイル名がaで始まり、拡張子がbで始まるファイルの意味)になる。
23デフォルトの名無しさん:2007/07/20(金) 08:20:23
釣りにマジレスかっこわるい
24デフォルトの名無しさん:2007/07/20(金) 12:53:58
ところでBuild50番台から参戦の新参なんだが、テンプレの
>>Build19が見たい人
19になにかあったの?
25デフォルトの名無しさん:2007/07/20(金) 13:44:38
>>24
俺たちのオムツとおしゃぶりが、Build19に置いてある。
26デフォルトの名無しさん:2007/07/20(金) 14:00:07
ショートカットファイル(.lnk)のアイコンをアプリケーションから変えたいのですが、
そういうAPIって用意されてますか?
27デフォルトの名無しさん:2007/07/20(金) 14:02:42
>>26
IShellLink見ろよ
28デフォルトの名無しさん:2007/07/20(金) 18:53:13
前スレ1000が全てを説明してるだろ
29デフォルトの名無しさん:2007/07/20(金) 18:55:19
1000なら*.*はアナルと○○○
30デフォルトの名無しさん:2007/07/20(金) 20:35:16
何だ?蒙古班か?
31デフォルトの名無しさん:2007/07/20(金) 23:50:12
32デフォルトの名無しさん:2007/07/21(土) 00:08:45
何だ?猛虎硬爬山か?
33デフォルトの名無しさん:2007/07/21(土) 07:03:31
RegisterHotKeyを使ってタスクトレイからアクティブになるようホットキーをCtrl+Spaceで登録しました。
Visual Studioでは元からあるショートカットキーを使ってほしかったので
現在のアクティブなアプリケーションを調べ該当した場合はアクティブにならないよう無視する事にしました。
目的は達成されVisual Studio上ではホットキーを押しても反応しなくなったのですが
キー入力自体は受け取っているようで、Ctrl+Spaceの入力保管機能は反応しなくなってしまいました。
そこで質問なのですが、元からあるショートカットキーを生かすにはどうすればいいのでしょうか?
34デフォルトの名無しさん:2007/07/21(土) 08:41:58
僕ハッカー
35デフォルトの名無しさん:2007/07/21(土) 15:54:54
【派遣ネガティブ根性チェック】

3つ以上、チェックがつけばアナタの性格はひん曲がっており、
ネガティブ負け組派遣人生を歩んでいます。

□派遣先正社員の作った糞開発ツールはたとえ腐っててもマンセーして使う
□派遣先の人事権のある社員の意見はたとえ間違っていてもマンセーする
□仕様とは正社員から口伝されるものだ
□口伝された仕様を意図どおり理解できなかったのは自分の責任だ
□昼食は必ず派遣先の社員と行くべきだ
□自分の仕事で問題が発生しても解決するのは派遣の仕事ではない
□派遣先から「いつまでもここで仕事してくださいね(安い金でw)」と言われて嬉しい
□自社で仕事なんてできるわけがない
□派遣労働の問題点の話題が出ると感情剥き出しにして反論する
□派遣労働の問題を指摘する人は嫌いだ
□派遣先には仕事だけでなくプライベートについてもグイグイ引っ張って欲しい
□奢ってくれる派遣先正社員を尊敬する
□自分の月額金額を知らないのは当然だ、単金を聞いてはいけない
□派遣先正社員より自分の生涯収入が低いのは当然だ
□チビは派遣先にかわいがってもらいやすから派遣には有利だ
36デフォルトの名無しさん:2007/07/21(土) 18:13:19
バカバッカー
37デフォルトの名無しさん:2007/07/21(土) 19:01:33
    ┏┓┏┓          ┏━━━━━━┓  ┏┓  ┏━━━━┓┏━━┓
    ┃┃┃┃          ┗━━━━━┓┃  ┃┃  ┗━━┓┏┛┃┏┓┃
┏━┛┗┛┗━━━┓  ┏━━━━━┛┗┓┃┃  ┏━━┛┗┓┃┗┛┃
┃┏┓┏┓┏━━┓┃  ┗━━━━━━┓┃┃┃  ┗━━┓┏┛┗━━┛
┃┃┃┃┃┃    ┃┃  ┏━━━┓    ┃┃┃┃  ┏━━┛┗┓
┃┃┃┃┃┃┏━┛┗┓┃┏━┓┃    ┃┃┃┃  ┃┏━┓┏┛
┃┃┃┃┃┃┃┏┓┏┛┃┃  ┃┃    ┃┃┃┃  ┃┃  ┃┃
┃┗┛┗┛┃┃┗┛┃  ┃┗━┛┗━━┛┃┃┗┓┃┗━┛┃
┗━━━━┛┗━━┛  ┗━━━━━━━┛┗━┛┗━━━┛
38デフォルトの名無しさん:2007/07/21(土) 19:06:07
□派遣先正社員の作った糞開発ツールはたとえ腐っててもマンセーして使う
□派遣先の人事権のある社員の意見はたとえ間違っていてもマンセーする
■仕様とは正社員から口伝されるものだ
□口伝された仕様を意図どおり理解できなかったのは自分の責任だ
□昼食は必ず派遣先の社員と行くべきだ
□自分の仕事で問題が発生しても解決するのは派遣の仕事ではない
■派遣先から「いつまでもここで仕事してくださいね(安い金でw)」と言われて嬉しい
□自社で仕事なんてできるわけがない
□派遣労働の問題点の話題が出ると感情剥き出しにして反論する
□派遣労働の問題を指摘する人は嫌いだ
■派遣先には仕事だけでなくプライベートについてもグイグイ引っ張って欲しい
■奢ってくれる派遣先正社員を尊敬する
■自分の月額金額を知らないのは当然だ、単金を聞いてはいけない
■派遣先正社員より自分の生涯収入が低いのは当然だ
■チビは派遣先にかわいがってもらいやすから派遣には有利だ
39デフォルトの名無しさん:2007/07/21(土) 19:50:27
>>33
ホットキー登録したままなんだから当たり前じゃねーか

ホットキー解除するかVSのウィンドウにCtrl+Spaceを投げろよ
40デフォルトの名無しさん:2007/07/21(土) 23:30:11
>>39
解除してしまうとウィンドウ外で呼び出せなくなると思うのですが
どうやって対処すればいいのでしょうか?
41デフォルトの名無しさん:2007/07/21(土) 23:32:13
一次会所
42デフォルトの名無しさん:2007/07/21(土) 23:48:56
>>40
解除した時にタイマーセットしてVSがアクティブか定期的に監視して
非アクティブになった時に再登録とか

首から上は飾りか?
43デフォルトの名無しさん:2007/07/21(土) 23:50:25
あたぼーよ。偉い人にはそれがわからんのです
44デフォルトの名無しさん:2007/07/21(土) 23:53:43
頭は柔軟にありたいものだ。
45デフォルトの名無しさん:2007/07/21(土) 23:57:35
みつを
46デフォルトの名無しさん:2007/07/22(日) 00:42:19
>>42
そのやり方じゃコストが
47デフォルトの名無しさん:2007/07/22(日) 00:44:53
コスト気にするなら

>ホットキー解除するかVSのウィンドウにCtrl+Spaceを投げろよ

これでええやん
48デフォルトの名無しさん:2007/07/22(日) 00:46:18
コスト気にするレベルじゃねぇぞ!
49デフォルトの名無しさん:2007/07/22(日) 00:47:18
■仕様とは正社員から口伝されるものだ
 =>仕様書すらない派遣用糞仕事
■派遣先から「いつまでもここで仕事してくださいね(安い金でw)」と言われて嬉しい
 =>同じ時間働いても正社員の3分の1の悲惨な賃金
■派遣先には仕事だけでなくプライベートについてもグイグイ引っ張って欲しい
 =>情けねえ!
■奢ってくれる派遣先正社員を尊敬する
 =>客先に奢るのが本来だろ?
■自分の月額金額を知らないのは当然だ、単金を聞いてはいけない
 =>契約金額で「仕事」と言えるの?
■派遣先正社員より自分の生涯収入が低いのは当然だ
 =>そんな根性じゃ当然だよな
■チビは派遣先にかわいがってもらいやすから派遣には有利だ
 =>チビで派遣=最悪
50デフォルトの名無しさん:2007/07/22(日) 00:50:37 BE:794428984-2BP(5)
質問するばかりで頭を使ってないのが良く分かるやりとりだw
51デフォルトの名無しさん:2007/07/22(日) 01:12:45
>>50
それが派遣クオリティ
52デフォルトの名無しさん:2007/07/22(日) 02:23:46
なんで派遣コピペが定期的に貼られるん?
53デフォルトの名無しさん:2007/07/22(日) 02:27:22
国民の所得は低いにもかかわらず
GDPだけが無駄に上がるから

ついでにピンハネしてる奴がxxでxxなんだが
直接それを言うと身の危険があるから
54デフォルトの名無しさん:2007/07/22(日) 02:33:38
おねがいします。

シングルラインのtabcontrol上にアイテムがいっぱいあるとき、
選択されているあるアイテムの表示位置を真ん中にしたい場合
どうすればいいのでしょうか?

55デフォルトの名無しさん:2007/07/22(日) 02:38:04 BE:446867429-2BP(5)
なんかイマイチ意味が分からんが

タブコントロールの表示用クライアント領域はTCM_ADJUSTRECTで取れるから
そこから真ん中の座標を計算してSetWindowPosとかで位置を調整すればいいんでない?
56デフォルトの名無しさん:2007/07/22(日) 02:41:02
>>53
賃金を人材派遣会社が60%ピンハネ。
しかも官僚どもの天下り先の紹介までして事実上無法地帯とw

あと経団連の糞共
57デフォルトの名無しさん:2007/07/22(日) 02:47:44
>>55
すいません。わかりずらかったです。
クライアント領域ではなくタブの位置を真ん中にしたいと思っています。
58デフォルトの名無しさん:2007/07/22(日) 02:53:36
>>56
世の中狂ってると思います
59デフォルトの名無しさん:2007/07/22(日) 02:54:45
>>57
すいません。アホのようでわかりずらかったです。
クライアント領域ではなくタブの位置を真ん中にしたいと言っています。
60デフォルトの名無しさん:2007/07/22(日) 03:02:59 BE:223433633-2BP(5)
>>57
ざっとタブコントロールのメッセージ眺めてみたが、
アイテムとアイテムを入れ替えるメッセージは無いっぽい

DeleteとInsertで移動したように見せかけるしかなさそうだね
61デフォルトの名無しさん:2007/07/22(日) 03:35:50
>>57
.>わかりずらかったです。
→わかりづらかったです。

日本語でおk
62デフォルトの名無しさん:2007/07/22(日) 03:56:35
スレの流れが狂ってるように見えるんですが気のせいですか?
63デフォルトの名無しさん:2007/07/22(日) 03:59:44
ありがとう。
まともな方法はないみたいですね。

spyでみてたら、WM_HSCROLLを飛ばせば動いてくれるみたいなので、
とりあえず以下のようにして様子見します。

SendNotifyMessage(tabcontrol,
WM_HSCROLL,
MAKEWPARAM(SB_THUMBPOSITION, tabindex),
NULL);
64デフォルトの名無しさん:2007/07/22(日) 04:04:44
初めから「タブコントロールで大量にあるタブをスクロールさせるには?」って聞けばよかった気が…。
65デフォルトの名無しさん:2007/07/22(日) 08:54:08
つーか初めから理解できるだろ
66デフォルトの名無しさん:2007/07/22(日) 11:53:19
派遣を辞めれば理解できます
まずは就職することが大切です
67デフォルトの名無しさん:2007/07/22(日) 12:18:34
就職してもITの9割は派遣なわけだが
68デフォルトの名無しさん:2007/07/22(日) 13:08:46
>>67
特定派遣と一般派遣の違いもわからないバカ
69デフォルトの名無しさん:2007/07/22(日) 14:04:48
どっちも派遣だバカ
漢字も読めないのか
小学生からやり直せ
70デフォルトの名無しさん:2007/07/22(日) 14:07:02
先生、赤ちゃんからやり直したいです。
71デフォルトの名無しさん:2007/07/22(日) 15:02:04
特定派遣=正社員
一般派遣=フリーター
72デフォルトの名無しさん:2007/07/22(日) 15:04:34
何か派遣にこだわってる奴が居るな
73デフォルトの名無しさん:2007/07/22(日) 15:18:13
maitadeyare
74デフォルトの名無しさん:2007/07/22(日) 15:27:28
>>73
うるせーバカ
派遣の話題が嫌ならお前が2ちゃんを見るな
75デフォルトの名無しさん:2007/07/22(日) 15:36:17
む板でやってもいいけどWin32APIスレだよここは。
76デフォルトの名無しさん:2007/07/22(日) 15:42:16
Windwos系は派遣根性が染みついたへたれが多いからねえ
77デフォルトの名無しさん:2007/07/22(日) 15:47:09
>>74
もう死ねば?君、鬱陶しいし。
78デフォルトの名無しさん:2007/07/22(日) 15:47:46
ネタ的にはマ版じゃねーの?
79デフォルトの名無しさん:2007/07/22(日) 15:54:48
>>73ではイタ
>>78ではバン
どっちが正しいの?
80デフォルトの名無しさん:2007/07/22(日) 16:05:43
初心者掲示板ででも聞いてろカス
8179:2007/07/22(日) 16:10:56
>>80
事故解決しました
82デフォルトの名無しさん:2007/07/22(日) 16:12:13
だからさ、技術的な質問以前にまず派遣を辞めて就職して社会人になれと
83デフォルトの名無しさん:2007/07/22(日) 18:01:49
スクロールバーのバーの大きさが大きくて滑らかにスクロールさせる方法教えてください
SetScrollRangeで幅を0〜100にすると滑らかにスクロールするけどバーがかなり小さくなってしまいます
助けてください!
84デフォルトの名無しさん:2007/07/22(日) 18:05:05
>>83
EscapeTemporaryJobではけんを辞めると解決できますよ。
85デフォルトの名無しさん:2007/07/22(日) 18:09:08
まだ小学生なんですけど
86デフォルトの名無しさん:2007/07/22(日) 18:11:37
>>83
小学校の算数ができない人か?
バーのドラッグできる部分と全体のサイズの比率が、
ドキュメントの可視部分と全体の比率と違ってたら困ることになるとは思わない?
87デフォルトの名無しさん:2007/07/22(日) 18:12:25
ああリアル小学生だったのかそりゃすまんかった
88デフォルトの名無しさん:2007/07/22(日) 18:13:28
思いません、見かけ上のサイズと内部の比率が違ってたらいい話
89デフォルトの名無しさん:2007/07/22(日) 18:17:53
そんな直感的じゃないUIは嫌だな
90デフォルトの名無しさん:2007/07/22(日) 18:20:57
もちろん設定で変更可能です
91デフォルトの名無しさん:2007/07/22(日) 18:39:00
あの掴む部分の最小値はもっと大きいほうがいいな
92デフォルトの名無しさん:2007/07/22(日) 18:44:22
EscapeTemporaryJob
そんなAPIがあったらいいのにね
93デフォルトの名無しさん:2007/07/22(日) 19:51:38
>>91
Vistaだと小さくなりすぎないようになってる。
正方形以上にはつぶれないみたい。
94デフォルトの名無しさん:2007/07/22(日) 20:02:52
フリーが稼げるとか騙されて結局派遣やってるバカ

元々は正社員だったのに取引先にフリーのほうが稼げるとか騙されて
結局派遣やってるバカがいるんだけどw
なんか派遣先といい関係、とか言ってたから思わず吹き出しちゃったよw
最近はマネージャーもやってるとか寝言言ってるし、派遣がまねぇじゃぁ?はあ!?w

そもそも信頼されてるなら直接契約するか正社員にするはずだが、
いつでも切れる派遣会社経由って舐められてんだよ

派遣期間が長くならないうちに早く就職しろ、と忠告したら、ウッキー!って逆ギレw
バカで頑固だから何度言っても理解できない
騙されたとはいえ結局は自分で決めて派遣やってる癖に逆ギレしちゃってまぁ
人間として本当に恥ずかしい
95デフォルトの名無しさん:2007/07/22(日) 20:07:57
というコピペを見た
96デフォルトの名無しさん:2007/07/22(日) 20:16:35
おれおれ
97デフォルトの名無しさん:2007/07/22(日) 20:20:45
一応数少ない有用なスレなので...

スルー力 >> ALL
98デフォルトの名無しさん:2007/07/22(日) 20:27:02
>>94
>元々は正社員だったのに取引先にフリーのほうが稼げるとか騙されて

取引先の正社員に会社辞めさせて、一般派遣にさせたってこと?
これ相当ヤバくね?
99デフォルトの名無しさん:2007/07/22(日) 20:33:43
>>97の直後にこの体たらく
100デフォルトの名無しさん:2007/07/22(日) 21:17:55
>>94=>>98
コイツどのスレにもいるなw
派遣派遣うっせーんだよ黙れや
101デフォルトの名無しさん:2007/07/22(日) 21:22:14
>>100
テメーが2ちゃんを見なきゃいいんだよ
まあ、せいぜいムカついてろや
102デフォルトの名無しさん:2007/07/22(日) 21:30:28
なんでチームミンスがム板に…
103デフォルトの名無しさん:2007/07/22(日) 21:41:25
>>99
奴らの夏は、まだ始まったばかりだ!
104デフォルトの名無しさん:2007/07/22(日) 21:45:39 BE:297910962-2BP(5)
邪魔
105デフォルトの名無しさん:2007/07/22(日) 22:06:28
マジ小学生なの?
おじちゃんと一緒にHビデオみようぜ
106デフォルトの名無しさん:2007/07/22(日) 22:23:19
あの、RealGetWindowClassとRealChildWindowFromPointは何なんですか?
それぞれ一見GetClassNameとChildWindowFromPointで十分に思えるんですけど。
107デフォルトの名無しさん:2007/07/22(日) 22:39:34
ニート対策
108デフォルトの名無しさん:2007/07/23(月) 01:32:57
1つのアプリで2つのウィンドウを出す方法を教えてください。
ヒントだけでもかまいません。
お願いします。
109デフォルトの名無しさん:2007/07/23(月) 01:38:05
1つのウィンドウを出す方法を2回書く
110デフォルトの名無しさん:2007/07/23(月) 01:43:15
>>109
ありがとうございます。
そんな感じ書いています。メッセージループは、

while( msg.message!=WM_QUIT ) {
if(PeekMessage(&msg, hwnd, 0, 0, PM_REMOVE) > 0 || PeekMessage(&msg, hwnd2, 0, 0, PM_REMOVE) > 0) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}

のようにして。
これで、実際、ウィンドウが2つ出るのですが、そのウィンドウを破棄しても、
プロセスが死なずに残るんです。ちなみに片方のウィンドウを別のウィンドウの
子ウィンドウにし、子ウィンドウではWM_DESTROYではなにせず、親ウィンドウの
WM_DESTROYでPostQuitMessageをしています。
どうでしょうか?
111デフォルトの名無しさん:2007/07/23(月) 02:11:40
RGB16,RGB24,RGB32のフォーマットを持つデバイスコンテキストに対して
モノクロのフォーマットを持つデバイスコンテキストからBitBltは可能ですか?

このときにモノクロの黒の部分は透明色として、また白の部分は任意の色に変換してBltしたいです。
どうすればよいのでしょうか?

先生方!よろしくお願いしますっ!!芭(_ _;)mガン!ガン!

112デフォルトの名無しさん:2007/07/23(月) 02:53:31
>>110
普通にこれじゃ駄目なの?
MSG Msg;
while(GetMessage(&Msg, NULL, 0, 0))
{
   TranslateMessage(&Msg);
   DispatchMessage(&Msg);
}

>>111
出来ると思う。ゲームとかで使うの?
モノクロdcをSRCANDでbitbltしてから元のdcをSRCPAINTでbitbltすれば
黒の部分が透過されるはず
113デフォルトの名無しさん:2007/07/23(月) 03:01:21
>>112
ありがとうございます。
黒は透過しますが、白が任意の色に変わるところが難しそうですね。。
質問してからアレコレ考えたのですが
CreatePatternBrushを使ってモノクロビットマップからブラシをつくり、
SetTextColorとSetBkModeを駆使すれば出来そうな気がしてきました。
もし出来なかったらまたここに逃げ帰ってくるかも(^^;)
そんときはまたよろしくお願いします〜m(_ _)m

失礼します
114デフォルトの名無しさん:2007/07/23(月) 04:08:10
EscapeTemporaryJobを使えばできます。
115デフォルトの名無しさん:2007/07/23(月) 04:31:37
ツマンネ
116デフォルトの名無しさん:2007/07/23(月) 05:32:27
>>114
kwsk
117デフォルトの名無しさん:2007/07/23(月) 05:36:11
ひどい自演を見た
118デフォルトの名無しさん:2007/07/23(月) 05:40:54
来週までこんなかんじなんかな
119デフォルトの名無しさん:2007/07/23(月) 06:12:11
API呼び出しで派遣地獄から抜け出せるなら誰も苦労しない
120デフォルトの名無しさん:2007/07/23(月) 08:17:25
『API呼び出しで派遣地獄質問箱』スレができそうな話だな。
121デフォルトの名無しさん:2007/07/23(月) 08:44:45
もうある
122デフォルトの名無しさん:2007/07/23(月) 09:24:44
チェックが2つ以下になると派遣地獄から抜け出すことができます。

□派遣先正社員の作った糞開発ツールはたとえ腐っててもマンセーして使う
□派遣先の人事権のある社員の意見はたとえ間違っていてもマンセーする
□仕様とは正社員から口伝されるものだ
□耳で聞いた仕様を正確に覚えていないのは自分の責任だ
□昼食は必ず派遣先の社員と行くべきだ
□自分の仕事で問題が発生しても解決するのは派遣の仕事ではない
□派遣先から「いつまでもここで仕事してくださいね(安い金でw)」と言われて嬉しい
□自社で仕事なんてできるわけがない
□派遣労働の問題点の話題が出ると感情剥き出しにして反論する
□派遣労働の問題を指摘する人は嫌いだ
□派遣先には仕事だけでなくプライベートについてもグイグイ引っ張って欲しい
□奢ってくれる派遣先正社員を尊敬する
□自分の月額金額を知らないのは当然だ、単金を聞いてはいけない
□派遣先正社員より自分の生涯収入が低いのは当然だ
□チビは派遣先にかわいがってもらいやすいから派遣には有利だ
123デフォルトの名無しさん:2007/07/23(月) 10:23:38
モニタが省電力モードかどうか確認する方法を教えて下さい。
124デフォルトの名無しさん:2007/07/23(月) 12:50:52
SC_MONITORPOWER
125デフォルトの名無しさん:2007/07/23(月) 13:05:51
派遣に惑いし哀れな影よ
人に使われ搾取され
デスマに溺れし業の魂
イッペン、死ンデミル?
126デフォルトの名無しさん:2007/07/23(月) 13:12:31
>>123
目視
127デフォルトの名無しさん:2007/07/23(月) 13:27:01
ちょw目視ってwAPIでお願いします。

>>124
SC_MONITORPOWERを使用して省電力モードの設定と解除なら分かりますが、
どうやって現在の状態を取得するのでしょうか?
128デフォルトの名無しさん:2007/07/23(月) 13:30:16
SystemParametersInfo
SPI_GETLOWPOWERACTIVE
129デフォルトの名無しさん:2007/07/23(月) 13:49:17
>>128 は嘘

>>127 メッセージが来たらフラグ立てて覚えておくんだよ
130デフォルトの名無しさん:2007/07/23(月) 13:54:27
モニタ省電力モード中に
自動的にプログラムが立ち上がった場合どうすんの?
131デフォルトの名無しさん:2007/07/23(月) 16:02:16
サービスとかにすれば?
132ななしへたぐらま ◆XcB18Bks.Y :2007/07/23(月) 17:15:14
アプリケーションで制限付きユーザーを含むあらゆるユーザーアカウントでも自由に読み書きできる
ファイルを保管するためにはどこのフォルダにおけばよいのでしょうか.

http://www.microsoft.com/japan/msdn/windows/windowsxp/winxpfus.aspx
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpdnw2kcli/htm/AppSpecDesk5.asp

これらを見る限り,リムーバブルドライブ(リムーバブルディスク)に保管するしかないようにも見えるのですが.
133デフォルトの名無しさん:2007/07/23(月) 17:27:36
CSIDL_COMMON_APPDATAを使い、かつフォルダを作る際に全ユーザーへのアクセス権を
設定する(そのままだと一般ユーザ権限では読み取り専用になる)、が一番かな。
アクセス権設定のためには最低でもインストーラが管理者権限で動ける必要があるけど。
134ななしへたぐらま ◆XcB18Bks.Y :2007/07/23(月) 17:56:56
なるほど,管理者権限のある人がインストールするときにフォルダを掘ってアクセス権を設定すればよいわけですね.
管理者権限以外でのインストールは考えていないので大丈夫です.
ありがとうございました.
135デフォルトの名無しさん:2007/07/23(月) 19:09:05
CreateFileとかで作ったファイルのアクセス権限を設定するAPI
はあるでしょうか?
作成したファイルを特定のユーザーやグループでしか読み書きできない様にしたいのですが。
136デフォルトの名無しさん:2007/07/23(月) 19:10:08
あるよん
137デフォルトの名無しさん:2007/07/23(月) 19:11:14
コマンドでよけりゃcacls
138デフォルトの名無しさん:2007/07/23(月) 19:11:58
>>112

時代遅れなのでは?
139135:2007/07/23(月) 19:15:11
自己解決しました
140デフォルトの名無しさん:2007/07/23(月) 19:18:14
作成と同時でよければ、CreateFileのSECURITY_ATTRIBUTESへのポインタ型の引数で指定できる。
後からなら、SetSecurityInfoやSetNamedSecurityInfoなど。
141デフォルトの名無しさん:2007/07/23(月) 19:47:47
>>112
Sleep挟むなりしないとノートPCの寿命縮めたりでえらいことになる
142デフォルトの名無しさん:2007/07/23(月) 20:05:23
>>141
112のコードにはSleepは必要ないが。
143デフォルトの名無しさん:2007/07/23(月) 21:08:45
ど素人かPeekMessageと間違えてるかのどちらか
144110:2007/07/23(月) 21:47:08
>>112さん
遅レスですみません。
ありがとうございます。できました。
(ショックです。でも、本当にありがとうございます。)
DirectXのレンダリングを挟むので、>>112さんのコードをまねて、

ZeroMemory( &msg, sizeof(msg) );
while( msg.message!=WM_QUIT ) {
if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
else {
Render();
}
}

なんて感じにしたうまくいきました。
ただ、>>143さんのコメントが気になります。
PeekMessageはまずいんでしょうか?
教えて君ですみません。
145110:2007/07/23(月) 22:00:44
>>141
ど素人の勘違いかもしれないのですが、Sleepを実行しても、CPUは休んでない
のではないでしょうか。すると、PeekMessageでも、Sleepをする意味はないように
思うのですが。どうなんでしょう?
146デフォルトの名無しさん:2007/07/23(月) 22:08:40
睡眠関数入れないと中央演算装置使用率十割になるんじゃ
147デフォルトの名無しさん:2007/07/23(月) 22:15:25
Sleepしたからといって全てのプログラムでCPUが休むわけではない。
148デフォルトの名無しさん:2007/07/23(月) 22:38:50
結論、sleepいれないとノートPCの液晶の寿命が縮む
149デフォルトの名無しさん:2007/07/23(月) 22:39:08
そもそもCPUの使用率が十割になるとまずいの?
ほんとに寿命が縮むの?
150デフォルトの名無しさん:2007/07/23(月) 22:40:42
縮みません
151デフォルトの名無しさん:2007/07/23(月) 22:41:08
>>148
なぜ液晶が?
152デフォルトの名無しさん:2007/07/23(月) 22:41:40
CPUの使用率10割になると
限界をこえたことによって
CPU内部のトランジスタが痛むって141がいってた
153デフォルトの名無しさん:2007/07/23(月) 22:42:39
言ってません
154デフォルトの名無しさん:2007/07/23(月) 22:52:03
でも常に10割いってたらどっかは痛む罠。電源とか
155デフォルトの名無しさん:2007/07/23(月) 22:56:54
レンダーを別スレッドで行うのが定石
156110:2007/07/23(月) 23:02:25
みなさん、ありがとうございます。
やってみたら、CPUの使用率は50%ちょいになりました。
確かに、普段と比べると多いかも。
でも、ゲームをやるなら仕方が無いようにも思います。
よくわかりませんが。
いずれにしても、勉強になりました。ありがとうございます。
157デフォルトの名無しさん:2007/07/23(月) 23:09:05
>>144
そういう風にメッセージが来なかったときにやることがあるなど、
必要があってPeekMessageを使うこと自体はまずくはない。

GetMessageはメッセージが来るまでスレッドを休ませる効果があるが、
PeekMessageではそれがないので、メッセージが来ないときに何もやらない場合、
(そのコードで言うとRenderの呼出がなくしたようなコード)
無駄にループが回ってCPUの無駄遣いになるというだけのこと。

それが寿命に悪影響なのかどうかは知らないが、そんなこと気にするなんて話は聞いたことがない。
俺としては寿命よりも他のプログラムがCPUに飢える事態を心配してやれと言いたい。

あと、お前らSleepばっか言ってないでたまにはWaitMessageも思い出してやれ。

158デフォルトの名無しさん:2007/07/23(月) 23:11:56
そういやsleepってミリ秒単位らしいけど1を指定しても一秒近く停止するのはなんで?
159デフォルトの名無しさん:2007/07/23(月) 23:13:13
Sleepの分解能って10msが最小で10ms単位じゃないっけか?
160デフォルトの名無しさん:2007/07/23(月) 23:13:15
君のトロいコードで999ミリ秒掛かってるから
161デフォルトの名無しさん:2007/07/23(月) 23:13:22
WindowsOSの場合
162デフォルトの名無しさん:2007/07/23(月) 23:28:32
WindowSOS
163デフォルトの名無しさん:2007/07/23(月) 23:31:08
リアルタイムOSじゃないから当たり前。
164デフォルトの名無しさん:2007/07/23(月) 23:35:21
>>160 つまらん。おまえのレスはつまらん。
165デフォルトの名無しさん:2007/07/23(月) 23:35:49
WindowsEx
166デフォルトの名無しさん:2007/07/23(月) 23:46:23
Sleep(1);
で普通に1000分の1秒停まるぜ
167デフォルトの名無しさん:2007/07/23(月) 23:48:58
うそぉん
168デフォルトの名無しさん:2007/07/24(火) 00:03:54
>>158
優先度が高いほかのスレッドが1秒近くCPUを使っているとかそういうことはない?
169デフォルトの名無しさん:2007/07/24(火) 00:06:40
>>160-165
つまらん。
170デフォルトの名無しさん:2007/07/24(火) 00:08:22
>>166
あれを呼んでおけば止まるね。あれを。
171デフォルトの名無しさん:2007/07/24(火) 00:12:17
どれ?
172デフォルトの名無しさん:2007/07/24(火) 00:17:07
10ms以上(だっけ)のSleepの場合は気にする必要ないけど
それ以下の精度が必要なら

timeBeginPeriod(1)

以下、検索したらTOPに出た↓サイトの抜粋
Win95,98,Me では、この関数の実行とかかわりなく精度は
1ミリ秒になっている。WinNT,2000,XP では、ちゃんと
精度を設定する必要がある。

173デフォルトの名無しさん:2007/07/24(火) 00:25:34
その手の話ならこれだな
ttp://www.emit.jp/prog/prog_t1.html
174デフォルトの名無しさん:2007/07/24(火) 00:56:18
メディアプレイヤーとか動かしながら動かすと動作が変わるソフトはtimeBeginPeriodを使ってないかららしいな。
175デフォルトの名無しさん:2007/07/24(火) 06:48:24
木屋さんってバイク好きの木屋さん?
176デフォルトの名無しさん:2007/07/24(火) 08:16:57
ドラスレだったりしてw
177デフォルトの名無しさん:2007/07/24(火) 08:36:49
ドラスレやんw
178デフォルトの名無しさん:2007/07/24(火) 19:22:19
179デフォルトの名無しさん:2007/07/25(水) 02:24:56
質問です。
vfwを使ってaviからビットマップは取り出すことが出来たのですが、
オーディオを無圧縮PCMで取り出すにはどのようにしたらいいでしょうか?
単純にヘッダをくっつけただけだとファイルが壊れてますと言われるのですが…
180デフォルトの名無しさん:2007/07/25(水) 08:15:25
>>179
もう一声分の詳しさが欲しいな。

いわんとする事はわかるけど、
もうちょい詳しく書けば、回答が早いと思う。
181デフォルトの名無しさん:2007/07/25(水) 08:27:24
え、君が回答すればいいのに
182デフォルトの名無しさん:2007/07/25(水) 08:35:10
え、もうちょい詳しく書かないと分からないんだろ
183デフォルトの名無しさん:2007/07/25(水) 09:00:15
え、言わんとすることは分かるって
184デフォルトの名無しさん:2007/07/25(水) 09:24:05
え、そんなんできるんですか
185デフォルトの名無しさん:2007/07/25(水) 09:36:01
無圧縮PCMなら、ヘッダさえ正しければどんな出鱈目なデータでも再生はできるから、
くっつけたヘッダが間違ってるんでないの。
186デフォルトの名無しさん:2007/07/25(水) 10:04:43
え、?
187179:2007/07/25(水) 10:44:19
>>180
vfwを使ってオーディオストリームは取り出せるのですが、
常に無圧縮のデータを吐き出してくれるわけではないみたいで、
ReadFormatで得られたPCMWAVEFORMATとRIFFなどの
決まり文句をくっつけただけじゃだめみたいなので、
どのようにしたら無圧縮の状態で取り出せるようになるのかなと
思い質問させていただきました。
圧縮されたまま書き出せばwavファイルには出来るみたいなのですが、
それだと次の編集が出来なくなるので…
188179:2007/07/25(水) 10:45:41
>>187
圧縮されたまま書き出せば   → ×
取り出したデータをいじらずに → ○
189デフォルトの名無しさん:2007/07/25(水) 10:59:24
190179:2007/07/25(水) 11:44:34
>>189
そんな方法が…
ありがとうございます。

//ただ解凍するだけなのになんかものすごいことに…
191デフォルトの名無しさん:2007/07/25(水) 14:48:49
自分のウインドウがアクティブじゃなくても
ボタン入力を受け取る方法ってありますか?
ブラウジングなどで大量にできたウインドウを
マウス真ん中クリックで次々消したいなと思いまして
192デフォルトの名無しさん:2007/07/25(水) 14:50:46
便乗ですが、WMVファイルやMPGファイル(要はWMPで再生できる形式)でAVIStreamGetFrameと同じようなことがしたい場合、
どんなAPIを使えばいいのでしょうか。
それらしきものが探しても見つからず、キーワードだけでも頂ければあとは調査したいと思います。
193デフォルトの名無しさん:2007/07/25(水) 14:51:11
>>191
ジャーナルフック
194デフォルトの名無しさん:2007/07/25(水) 14:56:58
>>192
DirectShow
195デフォルトの名無しさん:2007/07/25(水) 14:58:15
とうとうフックに手を出さないといけないのか・・・難しそう
グローバルな感じのlParamだかなんだかに
格納されたりしてすぐに取り出せたりとかは不可能でしょうか?
196192:2007/07/25(水) 15:03:36
まいどどうもです。
調べた結果このへん参考になりそう。
ttp://www.geekpage.jp/programming/directshow/samplegrabber.php
197デフォルトの名無しさん:2007/07/25(水) 15:03:38
フックほど簡単なものはない
198デフォルトの名無しさん:2007/07/25(水) 15:08:47
グローバルフックでHHOOKの保持にハマることが多かったが、最近はそれも無いみたいだしなぁ
199デフォルトの名無しさん:2007/07/25(水) 15:21:19
グローバルフックでHHOOKの保持にハマるなんて都市伝説
200デフォルトの名無しさん:2007/07/25(水) 15:25:30
しかしフックというのは
チートだのキーロガーだの悪の技術
手を出してはいけないと教わりました
201デフォルトの名無しさん:2007/07/25(水) 16:01:41
まあいつでもマウスで呼び出したいというのなら、タスクトレイに入れとくと言う手もあるしなあ
202デフォルトの名無しさん:2007/07/25(水) 17:03:47
ごめん。
悪の技術に関する質問です。
Office 2003でImm*を使ったグローバルフックが問題なく動いてたんだが、
Office 2003 sp2にしたところ動かなくなりました。
原因分かる人いますか。

Office2003_SP2Changes(英語)に該当する情報ってありますか?
http://support.microsoft.com/default.aspx?scid=kb;ja;887616
203デフォルトの名無しさん:2007/07/25(水) 17:06:46
Office2003_SP2Changes(英語)
204デフォルトの名無しさん:2007/07/25(水) 17:13:10
>>203
ありますか?
すんません、英語じゃなくてもいいです。
っていうか、英語じゃないほうがいいです。
205デフォルトの名無しさん:2007/07/25(水) 17:18:25
英語じゃないとダメです。
英語を勉強して下さい。
206デフォルトの名無しさん:2007/07/25(水) 17:26:54
じゃあ、英語でも良いです。
「Office 2003 Service Pack 2 - Changes」
の原文のほうに目を通しましたが、、、


207デフォルトの名無しさん:2007/07/25(水) 17:27:11
一番の近道は留学だな
208デフォルトの名無しさん:2007/07/25(水) 17:31:18

           /.n l  /⌒ヽ
             | l l | ,' /7 ,'
        , '' ` ー ' '-' /
       /  、_,       `ヽ  
         l   , .-. 、`´    l
         ヽ  ヽ ̄フ     /
        丶、 ̄____,/
         /  ,. - 、  )
      (( ( n ([N],ハ_う
         ゝ)ノ  ̄   ヽ
            /   _   l ))
            〈__ノ´   `(_ノ
209デフォルトの名無しさん:2007/07/25(水) 17:41:00
セキュリティレベルが上がったから!?
210デフォルトの名無しさん:2007/07/25(水) 18:10:12
単にImm32が呼ばれてなかっただけだったりして。
TSF経由とか。
211デフォルトの名無しさん:2007/07/25(水) 19:01:45
WM_CREATEでウィンドウ位置を変更してから
タブコントロールを作るとタブコントロールが正しく表示されないんですが
ヒントでいいので何かもえませんか?

ウィンドウ位置変更を抜いたり、WM_SIZE後は正しく表示されるので
何かサイズ関係なんだと思って
SendとかPostとかしてみたんですがどうも上手くいきません
212デフォルトの名無しさん:2007/07/25(水) 19:18:04
何も萌えません
213デフォルトの名無しさん:2007/07/25(水) 19:51:20
>>210
とりあえず、回避方法は分かった。
ありがとう。
210は良い奴。
214デフォルトの名無しさん:2007/07/25(水) 19:57:01
213は悪い奴。
215デフォルトの名無しさん:2007/07/25(水) 19:57:41
214 は普通の奴。
216デフォルトの名無しさん:2007/07/25(水) 20:02:32
普通の奴です、すいません。
217デフォルトの名無しさん:2007/07/25(水) 20:08:44
普通のヤツの反応じゃねぇ....
218デフォルトの名無しさん:2007/07/25(水) 21:45:12
>>211
「正しく表示されない」とは?
219デフォルトの名無しさん:2007/07/25(水) 21:56:06
>>212
orz もらえませんかでお願いします

>>218
クリックで反応するので
多分タブコントロールの一部分だけ描画されてるみたいです
220デフォルトの名無しさん:2007/07/25(水) 22:14:36
VIP uploaderという所にプリントスクリーンしたのをあげてみました
4M(Nullpo)のga7919こんなのですっていうのです
221デフォルトの名無しさん:2007/07/25(水) 22:21:11
222デフォルトの名無しさん:2007/07/25(水) 23:19:53
コマンドプロンプトが対応しているロケールは、日本語圏の環境だ
とJapanese_Japan.932ですが、これをプロンプト上で実行したアプ
リの方で取得する術を探しています。
ご存知の方はいらっしゃいませんか?
223デフォルトの名無しさん:2007/07/26(木) 00:21:50
プロセスの現在値ならGetThreadLocaleかな
システム全体ならGetSystemDefault***系
224デフォルトの名無しさん:2007/07/26(木) 08:34:48
APIじゃないんだけどWin限定だしMFCじゃないのでここに質問してみる。

ttp://www2s.biglobe.ne.jp/~ragnarok/program/win32/class_of_cpp_in_dll.htm

ここを見ながら、簡単なサンプルを作っていろいろ試してみたのだけど、

1. Exportクラスを純粋仮想クラスにした場合、dllexport無しでも正常に動作するっぽい。
(ヘッダはどのみち必要なので、どの関数が存在しているかはわかっている
& virtual ついてれば exportされてない関数もちゃんと呼んでくれる)

2. Exportのデストラクタをちゃんとvirtualで宣言しておけば、exe側でdeleteしても
dll側のデストラクタおよびdeleteが呼ばれるっぽい。
(virtual無しだとexe側が呼ばれてしまいクラッシュ)

という2つの考察結果を得ました。

これがどちらもOKなら、DLL越しにクラス使うのがかなり気楽になるんだけど、
潜在的なトラブルの可能性とかあったら教えてくださいエロい方々。
225デフォルトの名無しさん:2007/07/26(木) 08:42:17
C言語の方から使っても大丈夫か
226デフォルトの名無しさん:2007/07/26(木) 09:03:30
すいません。またvfw関係なんですが…
AVIStreamRead(pstm, i, AVISTREAMREAD_CONVENIENT, NULL, 0, &lLength, &lSample)
としてストリームのサンプル数を取得しようとしたのですが、AVIERR_ERROR
が発生してサンプル数が取得できません。
どこか間違っている場所があれば教えていただきたいのですが…
227デフォルトの名無しさん:2007/07/26(木) 09:44:52
>>226
エスパーが必要そうですね
228デフォルトの名無しさん:2007/07/26(木) 09:51:57
>>226
どこと指摘できるほど十分な情報を提示してないのに
その質問文でわかってもらえると思ってる所を間違えてる。
もっと広範囲のソース晒すとかすれば?
229デフォルトの名無しさん:2007/07/26(木) 10:09:37
>>221
タブコントロールのサイズがおかしくなってるとか
WS_CLIPCHILDREN付けてないからタブの領域塗りつぶしちゃってるとか
230デフォルトの名無しさん:2007/07/26(木) 10:18:15
もしかして、AVIStreamRead後のlLengthとlSampleは変化してる?
231デフォルトの名無しさん:2007/07/26(木) 10:22:25
ほかのウィンドウにCtrlやAltといったModifierKeyと通常のキーを
同時に送信するにはどうすればいいのでしょうか?
試しにWM_KEYDOWNを送信してみたのですが
Ctrl+Vのイベントは起こりませんでした。
232226:2007/07/26(木) 10:37:48
>>228
>>189のTEST05.Cのコードとほぼ同じで、
int WINAPI WinMain()のところをwchar_t*型の引数2つ(入力avi名、出力wav名)の
関数に変更して、AVIFileOpenのファイル名の部分を先の引数に変更、
ビデオ部分の出力処理をまるまるカットしただけです。

>>230
本当なら変化しているはずらしい(上記リンク先TEST04.CのCopyStream内
の条件より)のですが、全く変化なしです。
233デフォルトの名無しさん:2007/07/26(木) 11:01:00
_tWinMainとかwWinMain とかあったなー
(某
234デフォルトの名無しさん:2007/07/26(木) 11:28:21
>>224
君の考察結果は間違ってないと思うが(とは言ってもVC++とかの話な。
DLL絡みは結局処理系に依存するところが多いだろ)、果たして
「気楽」かね?

要は必ずインタフェースクラスとファクトリを作らなきゃいかん、
それは面倒だし、全てが仮想関数呼び出しになることで効率も犠牲になる、
そこまで頑張ってもABIが処理系依存なせいで、昔ながらのCのDLLとは違って
他の言語どころか他のコンパイラからさえ利用できない、
テンプレートはどのみちDLL化できない(特殊化バージョンを入れることは
出来るが)、バージョンコントロールを厳密に意識するなら
引数や戻り値にも気楽にクラスを使えない(std::basic_string<>とか
使えないのは結構致命的では?)、といった問題があるだろう。
235デフォルトの名無しさん:2007/07/26(木) 12:08:28
>>224
つCOM
http://www.ascii.co.jp/pb/bookmart/pdf/47561/4756130666.pdf

Windows用の処理系ならまず間違いなくCOMが使えるようなABIになっているため、
多少はCOMでないクラスも結構やり取りできてしまう。
236デフォルトの名無しさん:2007/07/26(木) 12:11:44
>>224
結局、劣化COMを実装しているだけじゃないか。
DirectXのようにCOMの最低限のルールだけ借りて使う方がいいかと。
237デフォルトの名無しさん:2007/07/26(木) 12:15:18
>> 234

それは全部 >>224 の引用元の方法でも同様に抱えている問題。

そうはいってもDLLを使わないわけにはいかないし(COMはもっと遅いし)
すべてをCインターフェイスに書き換える手間をかけても、
得られるのはコンパイラ互換性くらいだろ。
basic_stringはどっちにしてもDLL越しには使えない。

聞きたいのは、>>224 が言ってる2点で、新たに問題が起きるかどうか、じゃないか?

と、偉そうに言うオレはDLLなんかここ3年使ってない。
238デフォルトの名無しさん:2007/07/26(木) 12:22:06
>>237
> と、偉そうに言うオレはDLLなんかここ3年使ってない
ぶっちゃけC++に関してはそれで正解じゃまいか?
COMにいくか、全部ヘッダに入れる/スタティックリンクするの2極だと思う。

COMは遅いだけじゃなくて普通のC++クラスと同じように使えないのも問題だな。
「C++の」ライブラリとして便利なものが欲しいなら、後者にならざるを得ない。
239デフォルトの名無しさん:2007/07/26(木) 12:32:40
Crazy for you.
240デフォルトの名無しさん:2007/07/26(木) 12:37:01
>>238
COMは常に遅いというわけではないだろ。
DLLに実装した場合に限れば、インタフェースメソッド呼出は、
(アパートメント越えのマーシャリングを起こさない限り)
原理的に仮想関数呼出と同じコストしかかからないぞ。
241デフォルトの名無しさん:2007/07/26(木) 12:46:47
>>240
普通にCOMの作法に従うと、文字列受け渡すにもSysAllocString()とか
いちいち使うことになるんで、やはり遅いと思うが
242デフォルトの名無しさん:2007/07/26(木) 12:46:58
>>240
普通のDLL的な使い方をするにはサイドバイサイドの実装が遅すぎた感じだよな。
243224:2007/07/26(木) 12:58:02
224です。
>>235のPDF読みますた。
とりあえずCOMの勉強をしてまた出直します。
ありがとうございました。


244デフォルトの名無しさん:2007/07/26(木) 13:09:24
>>241
ああすまん、そういうことか。

例えば文字列ならLPSTR/LPWSTRにすれば対等だしという具合で、
関数呼出自体のコストしか考えていなかった。
245デフォルトの名無しさん:2007/07/26(木) 13:11:28
ちょっとスレ違いかもしれませんがお尋ねします。
Linux とか Mac で Win32API に相当するものは何ですか?
あと、そのスレがあれば教えてください。
246デフォルトの名無しさん:2007/07/26(木) 13:17:03
>>245
system callだな。つまり、manのセクション2。
247デフォルトの名無しさん:2007/07/26(木) 13:21:27
つWine
流石にこれは冗談半分。

LinuxはWin32のkernel関係に当たるのがPOSIX。
GUI系はいろいろラッパがあってよくわからん。
ただ、どいつもX Window Systemが基底になっている。

Mac OS XはCocoaとCarbon。

こうでいいのか?
248デフォルトの名無しさん:2007/07/26(木) 13:23:08
ううん
249245:2007/07/26(木) 13:35:49
>>247
ありがとうございます!
主にGUI系が知りたいんですけど、それぞれのOSでウィンドウを表示するコード
(C++などメジャーな言語で)が載っているウェブサイトってないでしょうか…。
250初めからそう言えやカス:2007/07/26(木) 13:39:54
If you give a mouse a cookie, it's gonna want a glass of milk.
251デフォルトの名無しさん:2007/07/26(木) 13:42:43
So, what's the point?
252デフォルトの名無しさん:2007/07/26(木) 13:45:07
スレ違いとわかってるなら続けんなよ・・・
253デフォルトの名無しさん:2007/07/26(木) 13:45:33
>>249
Unix系のOSに、WinAPIに相当するGUIなんかないぞ。
いずれにしろ、スレ違いだ。
254デフォルトの名無しさん:2007/07/26(木) 13:58:46
うそ?
255デフォルトの名無しさん:2007/07/26(木) 14:06:12
>>245
ほら、LinuxでもMacでも(恐らく)最小のウインドウを表示するプログラムやるからどっか行け。
--
/// For compile: gcc -std=c99 this.c -lX11 -L/usr/X11R6/lib
#include <X11/Xlib.h>

int main()
{
static const int WinWidth = 100;
static const int WinHeight = 100;
static const int WinBorder = 2;

Display * dpy = XOpenDisplay(NULL);
Window win = XCreateSimpleWindow(dpy, DefaultRootWindow(dpy),
0, 0, WinWidth, WinHeight, WinBorder,
BlackPixel(dpy, DefaultScreen(dpy)), WhitePixel(dpy, DefaultScreen(dpy)));
XSelectInput(dpy, win, KeyPressMask);
XMapWindow(dpy, win);

XEvent event;
do {
XNextEvent(dpy, & event);
} while (event.type != KeyPress);
XDestroyWindow(dpy, win);
XCloseDisplay(dpy);
return 0;
}
256255:2007/07/26(木) 14:07:42
日本語が変だった。
LinuxでもMacでも動く(恐らく)最小の、ウインドウを表示(してキー入力待ち)するだけのプログラムだな。
257デフォルトの名無しさん:2007/07/26(木) 14:09:58
なんだかんだ言ってやさしいな
あんたかっこいいよ
258デフォルトの名無しさん:2007/07/26(木) 14:11:24
プログラマはツンデレ多いな
259デフォルトの名無しさん:2007/07/26(木) 14:12:41
とりあえず「できない」と返事しておかないと
やっかいなことになる職業だから
260245:2007/07/26(木) 14:15:54
ツンデレさん、ありがとうございました!
261デフォルトの名無しさん:2007/07/26(木) 14:15:54
>>259
あ、それなんとなくうけるw
俺は注文する側だけど、そういう奴確かにいるw
262デフォルトの名無しさん:2007/07/26(木) 14:17:05
「(金と時間が十分に与えられるなら)できます」
263デフォルトの名無しさん:2007/07/26(木) 14:21:31
「できます(よそにまる投げだけど)」
264デフォルトの名無しさん:2007/07/26(木) 14:24:55
>>229
ヒントありがとう、早速試してみます
265デフォルトの名無しさん:2007/07/26(木) 14:25:11
なんでも「できます」と答えることがどんだけ酷いことになるかを身をもって体感してきた若かりし頃。
といっても高校時代だが・・・
266デフォルトの名無しさん:2007/07/26(木) 14:27:40
なんでも「できます」と答えることがどんだけおいしいことになるかを身をもって体感してきた若かりし頃。
といっても高校時代だが・・・
267デフォルトの名無しさん:2007/07/26(木) 17:03:03
>>229
解決しました
ウィンドウ変更する時に使ってたSetWindowPos()に
SWP_DRAWFRAME (再描画時にウィンドウの枠も再描画の対象にする)
をセットしていないというミスが原因でした、お騒がせしました
268デフォルトの名無しさん:2007/07/26(木) 23:19:23
おかげで騒ぎまくったお

⊂⌒ヽ          (⌒⊃
  \ \  /⌒ヽ  / /
 ⊂二二二( ^ω^)ニニ二⊃
     \ \_∩_/ /
      (  (::)(::)  )
       ヽ_,*、_ノ  ブーン
   ///
 ///
269デフォルトの名無しさん:2007/07/27(金) 01:20:50
>>231
SendInput()を試して見れ
270デフォルトの名無しさん:2007/07/27(金) 05:43:50
>>269
なるほど。
早速試してみたいと思います。
ありがとうございました。
271デフォルトの名無しさん:2007/07/28(土) 01:05:01
>>268
なるほど。
早速試してみたいと思います。
ありがとうございました。
272デフォルトの名無しさん:2007/07/28(土) 01:22:10
ためさんでよろしい
273デフォルトの名無しさん:2007/07/28(土) 01:24:59
わろた。遅レスなのがいい。
274デフォルトの名無しさん:2007/07/28(土) 15:37:21
GetKeyboardStateってウィンドウがなきゃ使えないの?
コンソールアプリで使ったら全然取得できなかったんだけど
275デフォルトの名無しさん:2007/07/28(土) 20:58:23
そうですよ
276デフォルトの名無しさん:2007/07/29(日) 00:00:51
現在フルスクリーンになったらウィンドウを非表示にするプログラムを組んでいるんですが
何か良い方法はないでしょうか?
検索をしてみても中々見つからなくて_no
277デフォルトの名無しさん:2007/07/29(日) 00:07:06
自分自身なのかほかのウィンドウかわかんね
278デフォルトの名無しさん:2007/07/29(日) 00:28:45
タスクバーやらタイトルバーが消える、
Power Pointのスライドショー実行中画面みたいなものを作りたい、
という感じ?
279デフォルトの名無しさん:2007/07/29(日) 00:30:37
_no on_
280276:2007/07/29(日) 00:46:12
言葉足らずで申し訳ありません_no
フルスクリーンを検出したら自分自身を非表示にする為の方法を探しております
281名無しさん@そうだ選挙に行こう:2007/07/29(日) 00:51:47
自分自身がフルスクリーン?
282名無しさん@そうだ選挙に行こう:2007/07/29(日) 00:53:09
名前が違う。ウザイ
283名無しさん@そうだ選挙に行こう:2007/07/29(日) 00:56:04
他所のウィンドウがフルスクリーンになったらって事か

そもそもフルスクリーン化の方法は多種多様だから
画一的な検出方法はないと思う
284276:2007/07/29(日) 01:02:26
言葉足らずで申し訳ありません_no
自分自身のフルスクリーンを検出したら自分自身を非表示にする為の方法を探しております
285本物276:2007/07/29(日) 01:09:29
自己解決しました
286偽者276:2007/07/29(日) 01:17:58
引き続き情報お願いします。


あと、寿司食いたい
287名無しさん@そうだ選挙に行こう:2007/07/29(日) 01:21:10 BE:372388853-2BP(5)
どれが本物かわかんねwww

フルスクリーンって最大化だったりするw?
それならIsZoomedで定期的に調べるか
WM_SIZEのwParamを調べればいいんでない
あとShowWindowで隠す

画面を覆いつくしてるか調べるんなら
クライアント領域の広さ>スクリーンの広さで良いんじゃね?
最前面かどうかも調べる必要があるけど
288本物276:2007/07/29(日) 01:29:41
いやもう事故解決したから
289名無しさん@そうだ選挙に行こう:2007/07/29(日) 01:50:30
質問をさせて頂きました276です
>>283さん
>>287さん
レス有難うございます。
非常に参考になりました(^^
290276:2007/07/29(日) 01:55:58
どいつもこいつも的外れ
ボタンひとつでできるアピをおしえろや
291名無しさん@そうだ選挙に行こう:2007/07/29(日) 01:59:02
Win32API質問箱 Build55
292名無しさん@そうだ選挙に行こう:2007/07/29(日) 02:09:10
ボタン一つ作るのにどれだけアピが必要か分かって言ってるのか
293名無しさん@そうだ選挙に行こう:2007/07/29(日) 02:11:17
そうだ!そうだ!ボタンつけてくれる彼女作るのにどれだけアピったか分かって言ってるのか
294名無しさん@そうだ選挙に行こう:2007/07/29(日) 02:12:24
なんだよそれwアピール?
295名無しさん@そうだ選挙に行こう:2007/07/29(日) 02:23:40
ボタン付けは手作業だしアイロンがけも手作業です

魔法使いなのにね♪

orz

!!!!!!!!!!!!!!!11111111
296名無しさん@そうだ選挙に行こう:2007/07/29(日) 02:27:49
おもんねーんだよ
297名無しさん@そうだ選挙に行こう:2007/07/29(日) 02:32:41
     ///////
    ///////____________
    ///////  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| ̄ ̄
   ///////              (~) チリンチリン
   ///////              ノ,,
  ///////     ∧_∧
  ///////     ( ´∀`)( 厨 ) )) <  夏だなあ〜
 ///////      (つ へへ つ
///////   //△ ヽλ  ) ) 旦
//////  l ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄l
/////    ̄| .| ̄ ̄ ̄ ̄ ̄ ̄ ̄| .| ̄
////     ^^^          ^^^

         2chの夏。厨房の夏。
298名無しさん@そうだ選挙に行こう:2007/07/29(日) 04:22:16
ボタンつけてくれる彼女ホスィ
299名無しさん@そうだ選挙に行こう:2007/07/29(日) 09:07:10
アピってなんのことかと思った
300名無しさん@そうだ選挙に行こう:2007/07/29(日) 11:49:10
今時の彼女は OpenWindow() 位で他にいろいろ可能なアピってあるのか。

例え話になるが、東京マガジンの、やってトーライとか見ているとアピは
少ないな。

今話題の宮崎県って、姉さん女房が多いとか。歳食っているとアピは
増えてんだろうな。

マ、うちは年下で年数かけてアピを増やした。また別の新手を確保して
イチからやるってもう面倒。OpenWindow() 実装頻度も下がったし。
301名無しさん@そうだ選挙に行こう:2007/07/29(日) 12:17:29
チラシの裏でアピれよアホ
302名無しさん@そうだ選挙に行こう:2007/07/29(日) 12:46:20
アピ に一致する日本語のページ 約 354,000 件
303名無しさん@そうだ選挙に行こう:2007/07/29(日) 13:53:20
CreateHardLinkしてファイル名が二つある場合、
一方のファイル名から他方を割り出すにはどうすればいいですか?
304名無しさん@そうだ選挙に行こう:2007/07/29(日) 13:57:42
プロセスが掴んでいるファイルのフルパス名一覧を得たいのですが、
やり方教えてください。
305名無しさん@そうだ選挙に行こう:2007/07/29(日) 14:22:10
市販のアプリのボタンってさ、なんか丸かったり結構デザインに凝ってたりするけど
あれどうやんの?
306名無しさん@そうだ選挙に行こう:2007/07/29(日) 14:27:52
>>303
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpdnw2k/htm/ntfs2000.asp

| リンクされているファイルの名前をすべて列挙するのはやや困難です。
| 基本的に、ボリューム全体を調べて、ファイルごとに割り当てられてい
| る一意の ID を 1 つ 1 つ確認しなければなりません。同じ ID を見つ
| かったら、そのファイルはハード リンクです。ファイルの一意の ID
| はシステムによって割り当てられ、BY_HANDLE_FILE_INFORMATION の
| nFileIndexHighおよびnFileIndexLowフィールドに格納されます。
307名無しさん@そうだ選挙に行こう:2007/07/29(日) 14:30:54
日本語がおかしいな
自動詞が目的語を取ってる
308名無しさん@そうだ選挙に行こう:2007/07/29(日) 14:32:52
>>305
SetWindowRgn
309名無しさん@そうだ選挙に行こう:2007/07/29(日) 14:33:10
>>305
Winampのカスタムスキンを.zipにリネームして中見ればわかるけど
各パーツのビットマップを自前でペタペタ貼ってるだけ。
310名無しさん@そうだ選挙に行こう:2007/07/29(日) 15:13:40
>>303
FindFirstFileName
ただしVista限定
311名無しさん@そうだ選挙に行こう:2007/07/29(日) 17:53:19
普通のウィンドウのリージョンを変えたいときってWS_POPUPを指定しないと駄目かな?
WS_POPUPを指定しないとリージョン変わらないし、WS_POPUPを指定すると
今度はキャプションが表示されない
どうしたものか・・・
312名無しさん@そうだ選挙に行こう:2007/07/29(日) 18:40:09
>>311
両方指定すれば?
313名無しさん@そうだ選挙に行こう:2007/07/29(日) 19:27:11
>>312
WS_SYSMENU | WS_POPUP
とやっても、キャプションは表示されないです
314名無しさん@そうだ選挙に行こう:2007/07/29(日) 19:28:43
WS_CAPTION
315名無しさん@そうだ選挙に行こう:2007/07/29(日) 19:47:15
>>302
やっぱアピって一般的な呼び方だったんだな
316名無しさん@そうだ選挙に行こう:2007/07/29(日) 20:05:51
317デフォルトの名無しさん:2007/07/29(日) 20:43:08 BE:670300439-2BP(5)
>>316
なんだ?催促か?

>>304
モジュールの列挙なら↓参考
http://www7a.biglobe.ne.jp/~lshen/EternalWindows/Special/DLL/DLL05.html

CreateFile等でオープンしてるファイルの一覧を取る方法は知らん
318デフォルトの名無しさん:2007/07/29(日) 20:44:57
vistaなら取得できた気がしないでもない
319デフォルトの名無しさん:2007/07/29(日) 20:51:44
定期的に出るけどその辺はカーネルで管理されてると思うな
まったりreact os とかのソース読めばわかるかも
320デフォルトの名無しさん:2007/07/29(日) 21:38:25
>>317
いやそうじゃなくて、CreateFileとかで開いてるファイルの列挙です。
321304:2007/07/29(日) 21:41:36
>>317
ありがとうございます。EnumProcessModulesで得られるファイルの列挙でした。
322デフォルトの名無しさん:2007/07/29(日) 22:40:20
>>321
ひどいなあ
323 ◆CRF62MVOAI :2007/07/29(日) 22:42:40
プロセスが掴んでいるCreateFileとかで開いてるファイルの
フルパス名一覧を得たいのですが、 やり方教えてください。
324デフォルトの名無しさん:2007/07/29(日) 22:46:29
54のログにこんなのがあった

641 名前:デフォルトの名無しさん[age] 投稿日:2007/07/07(土) 08:08:18
任意のプロセスがCreateFileしたファイルのパス、それを取得する方法て何かないですか?
使用OSはVistaです
フィルタドライバ書かなきゃいけないんでしょうか?…

642 名前:デフォルトの名無しさん[sage] 投稿日:2007/07/07(土) 08:26:24
CreateFileのAPIフッ(ry

たぶん323には実現不可能だね
325デフォルトの名無しさん:2007/07/29(日) 22:53:30
>>323
なんか最近この質問多いよな。

Process ExplorerとかWinDbgとかと同じ方法をとればできるのは確実だけど、
軽く聞いて何とかなるってレベルじゃないと思う。
326デフォルトの名無しさん:2007/07/29(日) 22:54:16
まあ323には実現不可能だね
327 ◆CRF62MVOAI :2007/07/29(日) 22:56:29
自己解決しました!
328デフォルトの名無しさん:2007/07/29(日) 22:57:43
おそっ
329デフォルトの名無しさん:2007/07/29(日) 22:59:00
ひどい
330デフォルトの名無しさん:2007/07/29(日) 23:09:40 0
なんだ解決したのか。

まあFAQっぽいのでこれも貼っておく。
ttp://www.microsoft.com/technet/sysinternals/utilities/handle.mspx

まあ同じことやったらVistaでも動くはずなのでどうしてもやりたいって人はこれ解析してくれ。
331デフォルトの名無しさん:2007/07/29(日) 23:45:28 0
ドライブがUSBメモリかどうかを判定する方法を教えてください。
332デフォルトの名無しさん:2007/07/29(日) 23:50:35 0
APIならGetDriveTypeかな?

リムーバブルドライブかどうかしか分からんけど
333デフォルトの名無しさん:2007/07/30(月) 00:09:24
じゃあドライブってのは間違いですね
回転してないし
334デフォルトの名無しさん:2007/07/30(月) 00:31:03
さっきから糞レスを付けてる馬鹿はなんなの?
335デフォルトの名無しさん:2007/07/30(月) 00:54:56
全然詳しくないので質問させてください。
いつも仕事中にWebばかり見てる派遣クンが
「Win32APIがプログラムどおりに動かない原因を調べるのは僕の仕事ではありません。」
と言っています。
彼のWindowsプログラムが動かないのを調べるのは誰の仕事なのでしょうか?
336デフォルトの名無しさん:2007/07/30(月) 01:01:02
お前の仕事
337デフォルトの名無しさん:2007/07/30(月) 01:01:53
どう考えてもお前の仕事
338デフォルトの名無しさん:2007/07/30(月) 01:03:30
じゃあ派遣君の仕事っていったい?
339デフォルトの名無しさん:2007/07/30(月) 01:05:15
>>335
その派遣クンの契約を切るのはキミの上司の仕事。
で、代わりにデバッグやらされるのは多分キミw。

仕事中にWebばかり見てるのがわかった時点で
上司に切るように言わなかったキミの責任です。
340デフォルトの名無しさん:2007/07/30(月) 01:06:18
>>338
>じゃあ派遣君の仕事っていったい?

派遣=言われたことを言われた通りにやる
341デフォルトの名無しさん:2007/07/30(月) 01:07:17
この>>335のネタどこが元ネタなんだろな。
知る限りの最古はここなんだが。
ttp://pc11.2ch.net/test/read.cgi/tech/1182351826/387-
342デフォルトの名無しさん:2007/07/30(月) 01:07:26
うぜー四手メーラ
343デフォルトの名無しさん:2007/07/30(月) 01:10:28
>「Win32APIがプログラムどおりに動かない原因を調べるのは僕の仕事ではありません。」
この業界に向かないない奴がよくする言い訳
早く辞めちまえ、と言いたい
344デフォルトの名無しさん:2007/07/30(月) 01:11:55
夏だなと言わせろ。我慢ならん。
345デフォルトの名無しさん:2007/07/30(月) 01:17:42
この板は中学生しかいないんじゃないかと思うほどコピペや煽りに耐性が無いな
346デフォルトの名無しさん:2007/07/30(月) 01:21:38
この板がコピペや煽りに耐性がない原因を調べるのは僕の仕事ではありません。
347デフォルトの名無しさん:2007/07/30(月) 01:26:36 BE:223433633-2BP(5)
普段あんまり荒れないからね
人いねーし
348デフォルトの名無しさん:2007/07/30(月) 01:32:42
だれかの御先祖のものとして反応せよ
349デフォルトの名無しさん:2007/07/30(月) 01:35:16
プログラマーやってみたいんだけど
最低どのぐらいのスキルが必要?
国立の情報関係に通う友人の話だと構造体とポインタを知らなくても
余裕で就職できてるみたいだけど・・・
350デフォルトの名無しさん:2007/07/30(月) 01:36:02
>>340
言われたことを言われた通りにやることできない人はプログラマには向かない
別の業界に転職したほうがいい
351デフォルトの名無しさん:2007/07/30(月) 01:39:21
>>349
「Win32APIがプログラムどおりに動かない原因を調べるのは僕の仕事ではありません。」
の正反対のメンタリティがあればいい。
自分の仕事で問題が発生した時、人のせいにしないで自分で調べていける能力。

352デフォルトの名無しさん:2007/07/30(月) 01:39:57
>>349
入れパイしてブラジャー付けると誰でもなれるよb
353デフォルトの名無しさん:2007/07/30(月) 01:41:27 BE:620648055-2BP(5)
>>349
あとは作業ロボットになれるかどうかかなw

比喩じゃないのがなんとも笑えない
354デフォルトの名無しさん:2007/07/30(月) 01:43:27
だれかの御先祖のものとして反応せよ
355349:2007/07/30(月) 01:43:44
作業ロボットと問題原因調査じゃ全然ちがうじゃないですか
356デフォルトの名無しさん:2007/07/30(月) 01:44:32
何かあんまりスキルって大事じゃないのねw
プログラマーで未経験者歓迎の派遣が有ったから面接に行ったら
「実務経験が無いからまずは工場で働いて勉強しましょう」
って言われた。プログラマーへの道は遠いな
357デフォルトの名無しさん:2007/07/30(月) 01:45:00
同じだよ、お前には無理だ
358デフォルトの名無しさん:2007/07/30(月) 01:46:28
工場かよw行きたくね〜!
359デフォルトの名無しさん:2007/07/30(月) 01:47:22
>>357
いやいやw
勉強させられそうになった内容とか全部知ってたし
普段からソフト作ってるよw
ただ、実務経験がないだけ。
その派遣会社はブラックリストにも載ってるからまあしょうがないよ
360デフォルトの名無しさん:2007/07/30(月) 01:48:07
>>356
何の実務経験積むんだよw
361デフォルトの名無しさん:2007/07/30(月) 01:50:16
>>360
プログラムの経験年数ではなく、現場で働いた期間
どんなにプログラム組めても、現場で働いたこと無いから
実務経験しかみない企業はとらないの
362デフォルトの名無しさん:2007/07/30(月) 01:52:00
>>349
詐欺まがい用の人材は需要があるからね
363デフォルトの名無しさん:2007/07/30(月) 01:54:16
建前 「実務経験が無いからまずは工場で働いて勉強しましょう」
本音 「実務経験無いのかよ。使えねぇなあ。とりあえず工場送りにしとくか」
364デフォルトの名無しさん:2007/07/30(月) 01:57:36
建前 「実務経験無いのかよ。使えねぇなあ。とりあえず工場送りにしとくか」
本音 「未経験者歓迎って書いたら実務経験ない奴が来やがったw(;゚;ж;゚; )ブブッこいつアフォじゃねぇの?w」
365デフォルトの名無しさん:2007/07/30(月) 02:01:51
ちなみに 未経験者 = 実務経験が無い
これ常識な
366デフォルトの名無しさん:2007/07/30(月) 02:06:50
建前 「派遣と正社員は同じですよ」
本音 「入社試験があるのに同じなわけねーだろ )ブブッこいつアフォじゃねぇの?w」
367デフォルトの名無しさん:2007/07/30(月) 02:33:39
>>356
それふざけた話だよな
あと経験に関係なく学歴しかみてねーだろ
368デフォルトの名無しさん:2007/07/30(月) 02:41:24
マジな話
スキルが全くない大卒>>>>>>>>>>スキルがある高卒
だからな。プログラマーの給与も大卒前提で決めてる企業も多いから
369デフォルトの名無しさん:2007/07/30(月) 02:50:24
そんなに戦力に違いが?
やっぱ大卒って偉大なのかな
370デフォルトの名無しさん:2007/07/30(月) 03:48:27
世の中にはwindowsの使い方もわからない情報学部大学院生もいるけどな。
371デフォルトの名無しさん:2007/07/30(月) 03:54:44
レアケースなんかどうでもいい
372デフォルトの名無しさん:2007/07/30(月) 04:29:25
単純作業でも大学生のほうが飲み込みがいいとか悪いとか
なんか数学がどうたらこうたらってのはトリビアでもいってたけどほんとかね?
373デフォルトの名無しさん:2007/07/30(月) 04:34:48
欲しいの学術的教養をそれなりに持ってる奴。
有り体に言えば使える奴。
374デフォルトの名無しさん:2007/07/30(月) 04:42:35
maitadeyare
375デフォルトの名無しさん:2007/07/30(月) 05:32:51
>>35-辺りと似た流れから察するに
荒らし目的のキチガイが毎週定期的に
自演しに来てると考えるべきかな。
駆除しないとね。
376デフォルトの名無しさん:2007/07/30(月) 07:10:03
下の方わらた
みつをとか伊集院みたいだ
377デフォルトの名無しさん:2007/07/30(月) 07:52:49
>>327
◆CRF62MVOAI はどうやって解決したの?
378デフォルトの名無しさん:2007/07/30(月) 07:58:38
自己で解決した
379デフォルトの名無しさん:2007/07/30(月) 08:00:34
   \  __  /
   _ (m) _ピコーン
      |ミ|
   /  .`´  \
     ('A`) そうだ諦めよう!
     ノヽノヽ
       くく
380デフォルトの名無しさん:2007/07/30(月) 08:33:58
>>368-373
問題が発生した場合の対処能力が違うからね

専門卒-> 僕は言われた通りにやったので調べるのは僕の仕事じゃありません。
大卒 -> これこれこうだからこのモジュールが原因です。

381デフォルトの名無しさん:2007/07/30(月) 08:35:00
逆じゃね
382デフォルトの名無しさん:2007/07/30(月) 08:53:11
調べる努力も出来ないから大学に入れなかったんだよ
383デフォルトの名無しさん:2007/07/30(月) 08:55:30
何この偏見野郎
384デフォルトの名無しさん:2007/07/30(月) 09:27:00
偏見とは根拠のない意見
大学入試という公正な基準で結果が出てるだろ
例外はもちろんあるだろうが大体において受かった大卒より落ちた専門卒が優秀なんてありえねーだろうが
385デフォルトの名無しさん:2007/07/30(月) 09:30:07
それが調べる努力も出来ないから大学に入れなかったのとどう関係あるの?
386デフォルトの名無しさん:2007/07/30(月) 09:32:27
>受かった大卒より落ちた専門卒が優秀なんてありえねーだろうが
専門卒がみな落ちたわけじゃないんだから人間でいいじゃん。アホな大卒だなぁ
387デフォルトの名無しさん:2007/07/30(月) 09:35:05
スキルが全くない大卒
388デフォルトの名無しさん:2007/07/30(月) 09:42:29
>>386
受験もせず最初から逃げ出した椰子はマになっても「調べるのは僕の仕事じゃありません」
389デフォルトの名無しさん:2007/07/30(月) 09:47:27
コピペにどんだけ反応してんだよ
390デフォルトの名無しさん:2007/07/30(月) 09:50:00
>>388
馬鹿じゃねぇのw専門卒でもお前より役立つ奴はいっぱい居る
391デフォルトの名無しさん:2007/07/30(月) 09:58:35
スレ違いだって事にも気づかない連中は使えないだろうし使いにくいだろうなぁ
392デフォルトの名無しさん:2007/07/30(月) 10:05:16
灼熱の太陽が照りつける夏真っ盛りだな
393デフォルトの名無しさん:2007/07/30(月) 10:11:39
高卒の夏だなぁ厨は板違い
394デフォルトの名無しさん:2007/07/30(月) 10:13:00
>>390
専門卒必死だなあ
お前のそういうところが駄目なんだよ
大学入試という一つの根拠に対する反論がまるでできてない
大卒より専門卒が優秀だという根拠をあげてみろよ、この低学歴が
395デフォルトの名無しさん:2007/07/30(月) 10:21:22
>>394
あほや。俺は大卒。お前みたいな形だけの大卒が嫌いなだけ、この低脳が
396デフォルトの名無しさん:2007/07/30(月) 10:24:43
命題を否定するには反例を一つあげるだけでいいって大学で習わなかったか。
397デフォルトの名無しさん:2007/07/30(月) 10:25:39
中学で習った
398デフォルトの名無しさん:2007/07/30(月) 10:31:30
>>395
反論の根拠が「お前が嫌いだから」ですか
対人スキル低いですね。
399デフォルトの名無しさん:2007/07/30(月) 10:32:30
どっちがやねんw
400デフォルトの名無しさん:2007/07/30(月) 10:42:47
やっぱ学歴社会なんだな
俺もアメリカの大学に申し込むわ
401デフォルトの名無しさん:2007/07/30(月) 10:51:57
>>399
見苦しいなあ
まともな反論ができないならもうカキコするなよ
402デフォルトの名無しさん:2007/07/30(月) 10:55:08
>>400
語学留学の経歴は恥にしかならないぞ
403デフォルトの名無しさん:2007/07/30(月) 10:56:36
>>401
見苦しいのはお前ですよ
404デフォルトの名無しさん:2007/07/30(月) 11:00:04
反論以前の問題
たかが大卒という理由で専門卒を馬鹿にするお前と
そんなお前が嫌いな俺、対象数が違うじゃん。
おまいは大卒を夢見る小学生かっw
405デフォルトの名無しさん:2007/07/30(月) 11:03:32
対象数ってなんだよ?w
嫌いな奴の意見はたとえ正論でも反対、お前が間違って人の上にたったらみんな辞めるだろうな。
406デフォルトの名無しさん:2007/07/30(月) 11:09:42
>>274
GetKeyboardState は最後に get したウィンドウメッセージが発生した
時点でのキーボードの状態だからダメ。
GetAsyncKeyboardStateを試してみて。
407デフォルトの名無しさん:2007/07/30(月) 11:14:28
>>405
日本語も分からないの?
学歴で人を馬鹿にする意見のどこが正論?
408デフォルトの名無しさん:2007/07/30(月) 11:26:03
>>327
× ◆CRF62MVOAI はどうやって解決したの?
● ◆CRF62MVOAI はどうやって実装したの?

でよろしくお願いします。
409デフォルトの名無しさん:2007/07/30(月) 11:27:31
自己で実装しました!
410デフォルトの名無しさん:2007/07/30(月) 11:41:34
>>407
はあ?
大卒より専門卒のほうがスキルが高いというのは大卒の人をバカにしてるんじゃないのか?
それに対して入試という根拠を示して論理的な反論をしたな
でもお前の根拠は「嫌いな人の意見には反対」だ
どっちが人をバカにしているかよく考えてみることだ。
411デフォルトの名無しさん:2007/07/30(月) 11:48:11
長く雇うんだし専門卒よりは大卒の方が使えると思うけどな
大学入試をクリアしてるわけだし、その大学に入るのに相応の
努力をしたと認められるわけだし。
412デフォルトの名無しさん:2007/07/30(月) 12:10:37
>>410
>大卒より専門卒のほうがスキルが高いというのは大卒の人をバカにしてるんじゃないのか?
実際にそういう人がいるんだから仕方ないじゃん。お前は自分がバカにされてるようで反論したいだけちゃうんかと。
>でもお前の根拠は「嫌いな人の意見には反対」だ
自己紹介乙。俺の根拠は「学歴で人をバカにする意見の人は嫌い」だ。
お前が学歴で人をバカにしないなら嫌いじゃないし、共感する意見を言えば賛同する。
413デフォルトの名無しさん:2007/07/30(月) 12:19:27
大卒で使える奴は使えるし、それは高卒や専門卒でも同じでしょ
大卒でスキル無い奴はその間何をしていたのって事になるんじゃないの?
俺は何度面接行って作ったソフトやスキルをアピールしても大卒じゃないから通らないよ



ごめんね大卒を妬んで
414デフォルトの名無しさん:2007/07/30(月) 12:23:05
いつかお前らと安心して働ける会社をおこしたいわ
415デフォルトの名無しさん:2007/07/30(月) 12:31:06
ム板がマ板になってるやんw
416デフォルトの名無しさん:2007/07/30(月) 12:53:49
>>412
例外の話などしていない。大体において、と断ってる。
「こういう人の意見には反対」も「嫌いな人の意見には反対」も同じだろ
結局、意見の内容でなく、それを言う人でしか、判断がくだせない。
自分の脳で考えろ。
感情でなく理論で考えろ。
417デフォルトの名無しさん:2007/07/30(月) 12:55:29
こうして2ちゃんソフト商会ができたのだった
418デフォルトの名無しさん:2007/07/30(月) 12:58:19
お前ら全員スレタイ読み直せ
419デフォルトの名無しさん:2007/07/30(月) 13:00:01
>>335-417
スレタイ読め,マ板へ行け.
420406:2007/07/30(月) 13:02:04
>>419
俺もかよw
421デフォルトの名無しさん:2007/07/30(月) 13:12:31
>>406
間にはさまった人はゴメンw
422デフォルトの名無しさん:2007/07/30(月) 13:16:26
>>416
お前ホントあほだなぁ。よくそれで大学入れたよ。
「こういう人の意見には反対」ではなく、「こういう意見の人には反対」だ。
423デフォルトの名無しさん:2007/07/30(月) 13:19:05
必死扱いて大学入ったんだろ、だから大学がほぼすべて
424デフォルトの名無しさん:2007/07/30(月) 13:24:39
アホだな〜アホだなお前大学を追っかけまわしてまたドジしてる
425デフォルトの名無しさん:2007/07/30(月) 14:26:14
#define STRICT
#include <windows.h>
426デフォルトの名無しさん:2007/07/30(月) 17:44:04
↓気を取り直して次の質問をどうぞ
427デフォルトの名無しさん:2007/07/30(月) 18:25:28
なんか、オブジェクト指向嫌われているみたいですけど
何でなのですか? やっぱ、C++でオブジェクト指向するにはだいぶ無理をしないといけないから?
428デフォルトの名無しさん:2007/07/30(月) 18:27:48
APIの質問をしろドアホ
429デフォルトの名無しさん:2007/07/30(月) 18:31:24
>>428
すいません、ちょっとこれ見たら質問したくなった。ねぇ、見てるんでしょ。

■ おすすめ2ちゃんねる 開発中。。。 by FOX ★
このスレを見ている人はこんなスレも見ています。(ver 0.20)
なぜオブジェクト指向は嫌われているのか?2 [プログラマー]
430デフォルトの名無しさん:2007/07/30(月) 18:34:09
きめぇw
431デフォルトの名無しさん:2007/07/30(月) 19:07:30
この流れ明らかに不自然。
やっぱり定期的に自演荒らしが来てるんだなぁ。
432デフォルトの名無しさん:2007/07/30(月) 19:19:47
↓気を取り直してAPIの質問をどうぞ
433デフォルトの名無しさん:2007/07/30(月) 19:34:20
C++Builderって超簡単にウィンドウ作ったりボタン作ったりできるけど
やっぱり中身はAPIなの?
ウィンドウ作って処理するにはコールバック関数(前にクラスに入れようとして出来なかった)が
いるからクラス化は無理だと思うんだが。
あれはBuilderがC++の仕様を拡張してるの?
434デフォルトの名無しさん:2007/07/30(月) 19:35:55
クラス化は無理という前提の考え方が間違ってる。
まあ相当えげつないことしてるのは事実だけど。
435デフォルトの名無しさん:2007/07/30(月) 19:43:02
SetWindowLongPtrやSetProp、
あるいはグローバルにウィンドウハンドルとオブジェクトとの対応関係を保持したり、
方法はいろいろ考えられる。

http://techtips.belution.com/ja/vc/0009/
http://hp.vector.co.jp/authors/VA022575/c/msgmap.html
436デフォルトの名無しさん:2007/07/30(月) 19:49:03
>>433
クマー
437デフォルトの名無しさん:2007/07/30(月) 19:53:18
WndProc入りのクラス作るときに初めてSetProcの恩恵にあずかった。
438デフォルトの名無しさん:2007/07/30(月) 19:58:07
SetPropだ・・・・吊ってくるお(;^ω^)
439デフォルトの名無しさん:2007/07/30(月) 20:38:28
サンク大好き
440デフォルトの名無しさん:2007/07/30(月) 20:52:38
>>433
BCBはC++型のほかにObjectPascal型のクラスも扱える。
そしてObjectPascalは非スタティックなメンバ関数ポインタを扱える。

まあC++でも非スタティックなメンバ関数ポインタ使えるけど。
最近だとboost::functionとかでもできるんじゃないか?
441デフォルトの名無しさん:2007/07/30(月) 22:45:07
>>440
APIに与えるコールバックはどっちみちthiscallではダメだから、
非staticなメンバ関数は使えないだろ

メンバ関数ポインタを使ったC++流のコールバックの仕掛けを
使うとすれば、その後の話
442デフォルトの名無しさん:2007/07/30(月) 23:00:32
>>422
>「こういう人の意見には反対」ではなく、「こういう意見の人には反対」だ。
なにこれ?
禅問答?
443デフォルトの名無しさん:2007/07/30(月) 23:21:56
罪を憎んで人を憎まず
444デフォルトの名無しさん:2007/07/30(月) 23:49:57
>>442
その2つが区別できないなら論理を扱う仕事は(以下略
445デフォルトの名無しさん:2007/07/31(火) 03:36:56
すみません論理ってなんですか?
446デフォルトの名無しさん:2007/07/31(火) 03:44:41
マ板でやれ
447デフォルトの名無しさん:2007/07/31(火) 03:45:27
結局、意見でなく人に反対かよ
これだから専門卒の派遣はバカっていわれるんだよ
448デフォルトの名無しさん:2007/07/31(火) 04:00:48
ここで議論すんな。日本語読めないのか?
449デフォルトの名無しさん:2007/07/31(火) 04:31:56
いや全ての話題はアピに集約していくのだ
450デフォルトの名無しさん:2007/07/31(火) 05:33:49
黙れ
451デフォルトの名無しさん:2007/07/31(火) 06:33:29
議論なくしてスレの存在意義なし
452デフォルトの名無しさん:2007/07/31(火) 13:03:23
【専門卒派遣の最低条件】

■派遣先正社員の作った糞開発ツールはたとえ腐っててもマンセーして使う
■派遣先の人事権のある社員の意見はたとえ間違っていてもマンセーする
453デフォルトの名無しさん:2007/07/31(火) 14:17:21
すみません。みなさん、ネコってソフト知ってますか?
起動すると、ネコの画像がデスクトップ上に現れます。
その状態で、マウスを動かすと、ネコの画像がマウスの方によってくるんです。
(実は、現物はなくて、うろ覚えです。そもそも、UNIXでした。)
あんなものを作ってみたいのです。
ネコの画像はウィンドウそのものとすると、マウスがウィンドウの外にいるときに、
マウスの位置を把握できれば、MoveWindowでネコを動かせそうです。
で、SetCaptureでウィンドウ外のマウスをキャプチャできるかと思ったらうまくいきません。
どなたか、よい方法をご存じないでしょうか。
(フックというやつかとも思うのですが、そうすると、dllだのなんだのとかなり難しそうです。)
よろしくお願いします。
454デフォルトの名無しさん:2007/07/31(火) 14:18:36
GetCursorPosition
455デフォルトの名無しさん:2007/07/31(火) 14:34:58
SetCaptureはマウスのメッセージを受け取るのに使う
こういうのは、定期的にマウスの場所を自分で調べるんだよ
>>454 のは名前がちょっと違ってて GetCursorPos だけどな
456デフォルトの名無しさん:2007/07/31(火) 14:35:57
>>454
GetCursorPositionは、GetCursorPosですね。
やってみたら、確かに、位置が取れるようです。
すごいです!ありがとうございました。

ただ、マウスが動いたかどうかはわからないのですね。
教えて君で申し訳ありませんが、もし、いい手があったら教えてください。
Timerで時間をおいて取るという方法も考えられますが。
457デフォルトの名無しさん:2007/07/31(火) 14:36:49
>>455
ありがとうございます。わかりました。
それでやってみます。
458デフォルトの名無しさん:2007/07/31(火) 14:37:18
>453
WM_NCMOUSE...メッセージを捕捉しろ。
459デフォルトの名無しさん:2007/07/31(火) 14:48:41
454さん、455さん
できました。感謝感謝です。
何日も(はじめてネコを見ていらい何年も?)悩み続けていたんです。
本当にありがとうございました。
460459:2007/07/31(火) 14:50:59
>>458
あうっ。そういう手もあるんですね。それもやってみます。
ありがとうございます。
(こう言ってはなんですが、こんな良スレははじめてです。m(__)m)
461デフォルトの名無しさん:2007/07/31(火) 14:59:17
わろたb
462デフォルトの名無しさん:2007/07/31(火) 15:04:36
しかも>>458嘘だしなw
463デフォルトの名無しさん:2007/07/31(火) 15:38:44
>>409

× ◆CRF62MVOAI はどうやって実装したの?
○ ◆CRF62MVOAI はどうやって自己で実装したの?

でよろしくお願いします。
464デフォルトの名無しさん:2007/07/31(火) 15:46:19
スレッドAがEnterCritialSectionで所有権を取得している時で、そのほかのスレッドB, C, Dの順に所有権を取得しようとすると
ブロックされるプログラムで、AがLeaveCriticalSectionを実行すると、
まずはBが所有権を取得することになるのでしょうか。
この状況を発生させるプログラムを記述すると、B -> C -> Dの順に所有権を取得しますが、
これはたまたまそうなっただけなのでしょうか。
465デフォルトの名無しさん:2007/07/31(火) 15:49:30
タマタマ
466デフォルトの名無しさん:2007/07/31(火) 15:54:41
>>465
回答ありがとうございます。

MSDNに書いてありました。
InitializeCriticalSectionAndSpinCount
スレッドがクリティカルセクションの所有権を取得する順序についての保証は何もありませんが、Windows はすべてのスレッドに対し公平に所有権を与えます。

順序を保障する同期ってどうやるんでしょうか?
467デフォルトの名無しさん:2007/07/31(火) 15:55:27
>>464
http://msdn2.microsoft.com/en-us/library/ms682530.aspx
Windows Server 2003 SP1 以降は順不同だそうだ。
468デフォルトの名無しさん:2007/07/31(火) 15:58:39
Q>順序を保障する同期ってどうやるんでしょうか?

 1.ミューテックス  2.セマフォ   
 3.自動イベント   4.手動イベント
469デフォルトの名無しさん:2007/07/31(火) 16:10:50
>>468
AdvancedWindowsにはミューテックスは待機スレッドのなかから1つを公平に選択してそれにミューテックスの所有権を与えると書いてあります。
470デフォルトの名無しさん:2007/07/31(火) 16:19:56
数行でできるような簡単な方法は無い、が答えかね。
TLSとか使って突入順序も見るしかないか。
471デフォルトの名無しさん:2007/07/31(火) 16:22:57
その、順序の必要性を一考したほうがよくね?
イベントオブジェクトでいける気がする。
472デフォルトの名無しさん:2007/07/31(火) 16:24:23
>>464
>>468
簡単な概要をぷりーず
473デフォルトの名無しさん:2007/07/31(火) 16:29:22
ワーカースレッドから別のワーカースレッドをチェイン状にして起こすとか
・・・最初から1つにまとめればいいじゃん、といつも思ふ夏の夕暮れ
でもUIスレッドだとそうする必要あるのか、実際作った事ないからいまいちわからんが
474デフォルトの名無しさん:2007/07/31(火) 16:37:57
>>468
WaitForMultipleObjects で待てばいいんじゃね?

  | この関数を呼び出して実行している間に複数のオブジェクトが
  | シグナル状態になった場合は、それらのオブジェクトのうち、
  | 最小のインデックス番号が返ります。
475デフォルトの名無しさん:2007/07/31(火) 16:49:44
>>472

464です。468は私ではないです。

概要は複数スレッドから呼ばれる処理を、
読んだスレッド順に処理したいです。
この呼ばれる処理は複数スレッドから同時に処理されると壊れるので同期にしたいです。
CRITICAL_SECTIONで同期をとるように作りましたが、順序が保障されないです。

それで、順序を保障する同期ってどうやるんでしょうか?
になりました。

ミューテックス、セマフォも同様のようです。
自動イベント、手動イベントの順にさがしていっています。

>>470の答えが正解?WaitForMultipleObjectsも見てみます。
476デフォルトの名無しさん:2007/07/31(火) 16:53:23
>468は私ではないです。
当たり前だ。お前バカじゃね?
477デフォルトの名無しさん:2007/07/31(火) 16:54:31
バカです。すいません。
478デフォルトの名無しさん:2007/07/31(火) 17:08:03
タブコントロールを使ってタスクマネージャーみたいな画面を作りたいのですが、
ダイアログの上にタブコントロールと、タブの中に表示したいコントロールを
重ねてみたら、タブコントロールに隠れてうまく目的のコントロールを
表示してくれませんでした。
タブコントロールの上にChildWindowとして置くべきなんでしょうか?
でもそうすると、ダイアログのタブストップ(TABキーでコントロール間を
移動するやつ)がタブの上にあるコントロールに対してうまく機能してくれませんでした。
もうどうしたらいいのかわかりません。
タブコントロールで画面を切り替える適当なサンプルソースがありましたら
紹介お願いします。
(「「猫でもわかる〜」では同じコントロールを使いまわしていたりで、
いまいち参考になる例ではありませんでした)
479デフォルトの名無しさん:2007/07/31(火) 17:12:19
猫でもわかるでも分からないならもうあきらめた方がいい
480デフォルトの名無しさん:2007/07/31(火) 17:14:17
>>475
>>473が、あんさんの求める要求に一番近いな
481デフォルトの名無しさん:2007/07/31(火) 17:15:28
スレッドって並列処理したいときに使うんだよな。
並列処理したいってのと順序を保証したいってのは矛盾しているように気がするのはオレだけだろうか…。
482デフォルトの名無しさん:2007/07/31(火) 17:17:35
ファイバにすれば順番に処理できるかも
483デフォルトの名無しさん:2007/07/31(火) 17:33:02
>>482
おーさすが。
ファイバは順番通りに制御できるね
484デフォルトの名無しさん:2007/07/31(火) 17:33:59
ファイバはマイクロスレッドとも言うね。
485デフォルトの名無しさん:2007/07/31(火) 17:36:00
ファイバはCRITICAL_SECTIONやMutexのような排他プリミティブや
TLSと互換性が無いから、余程でない限り使うべきもんじゃないと思うが
486デフォルトの名無しさん:2007/07/31(火) 17:51:12
呼ばれる処理自体を別のスレッドにしていいなら、
メッセージキューを使う手もあるな。
487デフォルトの名無しさん:2007/07/31(火) 18:05:05
TLSは無いがFLSはVistaから使えたような
488デフォルトの名無しさん:2007/07/31(火) 18:20:02
LoadLibrary でDLLじゃないファイル読もうとすると警告ダイアログ出るんだけど、
前からこんなの出たっけ?
OSは XP sp2 なんだけど
489デフォルトの名無しさん:2007/07/31(火) 18:35:32
呼んだスレッド順にしなければならない処理って何だろう?
各スレッドがいつ呼ぶのか(各スレッドがいつどれだけ進むのか)保証は無いのに。
(つまり>481にほとんど同意)
490デフォルトの名無しさん:2007/07/31(火) 18:37:41
ワーカスレッドにキューでジョブを処理させればおk
おそらく、UIが固まらなければいいだけだと予想
491デフォルトの名無しさん:2007/07/31(火) 18:40:28
>>478おねがいします
492デフォルトの名無しさん:2007/07/31(火) 18:44:01
>>490
キューにつっこむときに順序が狂う?
493デフォルトの名無しさん:2007/07/31(火) 18:46:25
キューの入出力は排他処理をしないとキューにいれたはずのジョブが
失われる可能性があるね
494デフォルトの名無しさん:2007/07/31(火) 18:59:51
キューに突っ込むときにクリティカルセクションが必要になると思うが、
そのクリティカルセクションの突入順序の保証ができないなw
495デフォルトの名無しさん:2007/07/31(火) 19:10:38
そこはダメ、そこはダメよ〜
496デフォルトの名無しさん:2007/07/31(火) 19:57:29
>>489
マジれすすると
3人の男がいて女が一人しかいないとき、
ヤれる順番を並んだ順にするなら、きちんと並んだ順をまもってあげないと、
2番目以降を抽選にすると暴動がおきるからです。

クリティカルセクション
ミューテック巣
セマフォ
497デフォルトの名無しさん:2007/07/31(火) 20:00:50
単一スレッドでやれば済むじゃん
同時にプレイするならともかく
498デフォルトの名無しさん:2007/07/31(火) 20:02:06
管理用スレッドに対しQueueUserAPCで通知用イベントを登録した後WaitForSingleObjectなどで待機だな
499デフォルトの名無しさん:2007/07/31(火) 20:02:11
同時プレイ
500デフォルトの名無しさん:2007/07/31(火) 20:59:00
501デフォルトの名無しさん:2007/07/31(火) 21:00:13
>>477
俺天才です。すいません。
502デフォルトの名無しさん:2007/07/31(火) 21:07:00
僕、バッカ・・・
おっと失礼。

僕、夫才!
503デフォルトの名無しさん:2007/07/31(火) 22:04:00
LPCWSTR と PCWSTR、この2つの違いを教えて下さい。
どちらも「 CONST WCHAR * 」ってことになってますが、
同じならなぜ2つあるのかお願いします。
504デフォルトの名無しさん:2007/07/31(火) 22:08:22
Win16では、前者がfarポインタ、後者がnearポインタという違いがあった。
Win32からポインタは1種類になったのでそのような違いがなくなった。
505デフォルトの名無しさん:2007/07/31(火) 22:23:26
>>504
ありがとうございます
506デフォルトの名無しさん:2007/07/31(火) 22:25:31
どうしてnear,farポインタはなくなってしまったんですか?
507デフォルトの名無しさん:2007/07/31(火) 22:31:05
かったるいから
508デフォルトの名無しさん:2007/07/31(火) 22:32:43
32ビットになってわざわざ16ビットのポインタ使う必要なくなったから。
509デフォルトの名無しさん:2007/07/31(火) 22:34:51
>>506アホすぎw
510デフォルトの名無しさん:2007/07/31(火) 22:37:15
しかしもうWin16を知らん奴が出てきてもおかしくない時代だからな
511デフォルトの名無しさん:2007/07/31(火) 22:38:05
>>506
逆に何の為にnear,farポインタがあったのかを考えたほうがイイ
512デフォルトの名無しさん:2007/07/31(火) 22:42:34
Win32でfarポインタを潰していなかったら、
x64の登場はもっと遅かっただろうと思っている俺。
513デフォルトの名無しさん:2007/07/31(火) 22:45:47
Win16は知らんが、far,nearポインタはしってる。
514デフォルトの名無しさん:2007/07/31(火) 22:48:51
知らんでも普通に16(ビット)と32(ビット)から連想できるけどな
515デフォルトの名無しさん:2007/07/31(火) 22:48:53
near,far,hugeポインタのうちのhugeポインタだけを使ってると考えるんだ
516デフォルトの名無しさん:2007/07/31(火) 22:54:35
いや、今使っている32ビットモードは、ようするに32ビットtinyモデル。
ポインタは32ビットnearポインタだろ。
517デフォルトの名無しさん:2007/07/31(火) 22:55:20
セレクタとかオフセットとかあったなー
518デフォルトの名無しさん:2007/07/31(火) 23:01:21
sizeof(int) == sizeof(int*)である限り、俺は大丈夫
519デフォルトの名無しさん:2007/07/31(火) 23:03:29
>>518
Win64で死亡オメ
520デフォルトの名無しさん:2007/07/31(火) 23:12:51
インテル80286,80386では、
リアルモードではレジスタのアドレス幅が16bit長だった為にゃの。
よって、64kまでしかアドレス空間がにゃいの。

インテル486以降は、80386での経験を元に
32bit長のレジスタ操作の方向性が見えたため、
セグメントアドレス(セレクタを上位16bit、オフセットを下位16bit)と
したにょ。

これがふぁー
521デフォルトの名無しさん:2007/07/31(火) 23:14:50
ふぁーふぁーふぁー 「ふぁー」の声の音階はファである
522デフォルトの名無しさん:2007/07/31(火) 23:16:05
>>518
sizeof(int)==4;
sizeof(int*)==8;

君に幸アレ
523デフォルトの名無しさん:2007/07/31(火) 23:20:27
>>521
音楽の調号で、一番右側の♭はファになる。
トリビアな
524デフォルトの名無しさん:2007/07/31(火) 23:23:33
>>523
小学校(中学校だっけか?)の音楽のテストで出た気がするがトリビアなのか?
525デフォルトの名無しさん:2007/07/31(火) 23:24:24
今日の晩飯はトリビアでした
526523:2007/07/31(火) 23:25:33
>>524
幼稚園までしか行ってないから分かんね
527デフォルトの名無しさん:2007/07/31(火) 23:29:25
ILP64 なら・・・ILP64 ならきっとやってくれる!
528デフォルトの名無しさん:2007/07/31(火) 23:31:59
ぬるぽなら・・・ぬるぽならきっとやってくれる!
529デフォルトの名無しさん:2007/07/31(火) 23:36:31
ガッ!なら・・・ガッ!なら何もやってくれない!
530デフォルトの名無しさん:2007/07/31(火) 23:41:07
531デフォルトの名無しさん:2007/08/01(水) 00:20:39
>>489
マジれすすると
3人の女がいて男が一人しかいないとき、
ヤる順番を並んだ順にするなら、一番目に並ばないと
2番目以降はヤッツケになってしまい暴動がおきるからです。
532デフォルトの名無しさん:2007/08/01(水) 00:23:34
その前に嫉妬すると思うけど
533デフォルトの名無しさん:2007/08/01(水) 00:28:16
ナニの話にすり替えてるんだよw

たとえば、動画の2passエンコードなんかだと
UIとエンコードエンジンとは別スレッドで動いて欲しいが、
順番が守られないとわけわかめってことじゃないのか?
534デフォルトの名無しさん:2007/08/01(水) 00:32:21
違う
535デフォルトの名無しさん:2007/08/01(水) 00:38:18
>>520
セレクタ16bit/オフセット16bitの16ビットプロテクトモードなら286からだし、
16/32bitの32ビットプロテクトモードも386からだ。
536デフォルトの名無しさん:2007/08/01(水) 00:50:23
もうDOSのプログラム書いたことある人はすくなくなったのかな。
537デフォルトの名無しさん:2007/08/01(水) 01:03:59
>>520
>>535
こういう知識を持った人も、語り部扱いなんだろうな
538デフォルトの名無しさん:2007/08/01(水) 01:06:21
>>537
こういう知識を持たない人は、プププ扱いなんだろうな
539デフォルトの名無しさん:2007/08/01(水) 01:07:16
http://ja.wikipedia.org/wiki/Intel_80286

俺が産まれる前のプロセッサかよ
540デフォルトの名無しさん:2007/08/01(水) 01:11:17
同級生の子供に生理キターみたいな話し聞くと、
今でも毒男な俺らはいったい・・・・・・・・
541デフォルトの名無しさん:2007/08/01(水) 01:14:32
ジュルリ
542デフォルトの名無しさん:2007/08/01(水) 01:45:30
同級生を 義父さん と呼ぶことを目指せ
543デフォルトの名無しさん:2007/08/01(水) 03:34:37
>>464
難しく考える馬鹿が多いので俺が答えてやろう。
所有権を取得したら自分の順番か確認すればいい。
もし自分の順番でなければ、一旦LeaveしてまたEnterをすればいい。
Leave Enterの待ち時間はSwitchToThreadやSleepで他のスレッドを少し優先させて処理を促す。

というか並列処理できるアルゴリズムならその結果だけストアしといて、最後にまとめて順番に処理すればいい話だと思うが・・・。
いちいち処理待ちする意味がわからん。
544デフォルトの名無しさん:2007/08/01(水) 03:51:09
4Pか!
545デフォルトの名無しさん:2007/08/01(水) 07:35:07
痛い(´・ω・`)ひげそり過ぎた
546デフォルトの名無しさん:2007/08/01(水) 08:17:56
>>543
リナンバリングするくらいだったら、
関数ポインタ配列でワークを振り分けたほうがよくね?
547デフォルトの名無しさん:2007/08/01(水) 08:32:13
FM TONWSで16bitセレクタ+32bitオフセットのfarポインタを使っていた俺様の立場無し
548デフォルトの名無しさん:2007/08/01(水) 08:47:39
>>543
順番待ちを決めるときに1つのスレッドのを2つのスレッドが待ったときに
順番入れ替わる可能性があるんでは?
順番はTLSで保存して取得はアトミックな操作でやるってこと?
順番を決めるときに順序がいれかわらないことを保証する方法・・・ワカンネェ。
バカに詳しくたのんます。
549デフォルトの名無しさん:2007/08/01(水) 09:21:48
複数のスレッドが起動した時に、共通変数を参照した順番付けをする。
(ミューテックスを利用)
この順番を元に作業を振り分ければいいんじゃない?
546の云うように、関数ポインタ配列を利用して振り分ければ?
550デフォルトの名無しさん:2007/08/01(水) 09:39:08
>>533
今回の話は1pass目と2pass目をスレッドにして並行にするって話。UIとエンコードは順番を保証する必要ないしな。
って書いただけで設計に問題があるのは分かるよな、普通。
551デフォルトの名無しさん:2007/08/01(水) 09:51:12
>>464
目的がはっきりしないので、回答の妥当性が判断できず、議論が発散していると思う。

>概要は複数スレッドから呼ばれる処理を、読んだスレッド順に処理したいです。

というのを、仮に以下と仮定してみる。
- 複数スレッドから呼ばれるログの出力処理である
- ログ出力は同期的に動作する(処理が終わるまで復帰しない)
- ログの出力順はログ出力関数の呼び出し順で処理されなければならない

このような前提であれば、キュー処理が普通だと思う。
ログ出力を別スレッドで動作させ、キューで出力順番を管理する。

スレッドとの同期は SuspendThread()/ResumeThread() でも使うのかな?
ログ出力依頼関数内ではキューに情報を格納し、自分自身を SuspendThread()で停止させる。
ログ出力スレッド内では各処理が終了したら、該当スレッドを ResumeThread()する、とか。
SuspendThread()/ResumeThread() は使ったことないので、こんな単純には
いかないかもしれないが。

この前提の場合、>>482のファイバや>>546の振り分けなどは単純に使うことはできず、
また、自分の順番が事前に管理されているわけではないので、>>543の処理では
そもそも自分の順番である判定ができない。

ただ、>>492-494の指摘する、キュー処理する順番自体が保証されない問題は残る。
しかし、十分に軽い処理なので、これは無視できる。(このレベルのタイミング
問題はそもそもスレッドを使う時点で、一般的に妥協せざるを得ない問題)
552デフォルトの名無しさん:2007/08/01(水) 10:05:55
8086で動作してたMS-DOSはメモリ空間が640KB(一部例外あり)だったよな
このときにはファーポインタもあったでしょ
553デフォルトの名無しさん:2007/08/01(水) 10:09:45
>>552
8086のメモリ空間は1MB
640KBはごく一部の機種の最大メインRAM容量
554デフォルトの名無しさん:2007/08/01(水) 10:22:23
ごく一部ねぇ……
その言い方だと、今のパソコンもごく一部はMS-Windowsだって言うようなもんでしょう……
555デフォルトの名無しさん:2007/08/01(水) 10:55:25
464です。

>複数スレッドから呼ばれる処理を、読んだスレッド順に処理したい
を実装したいのは興味本位のなので具体的な処理はありません。

>>464のおっしゃるとおり、ログとか順序を守らないといけない出力につながる処理にあたります。
順序を保障する同期のAPIはないから妥協して自分で仕組みを作るのが必要
がFAでしょうか?
556デフォルトの名無しさん:2007/08/01(水) 10:56:19
ミスです。

>>464のおっしゃるとおり、ログとか順序を守らないといけない出力につながる処理にあたります。
は、
>>551のおっしゃるとおり、ログとか順序を守らないといけない出力につながる処理にあたります。
557デフォルトの名無しさん:2007/08/01(水) 11:04:23
>>555-556
並列処理をする利点とか見直してみたら?
なんか、思い違いしてる気がするよ
558デフォルトの名無しさん:2007/08/01(水) 11:19:14
>>555
取引所のマッチングとか?
559デフォルトの名無しさん:2007/08/01(水) 11:41:53
>>555-556
>順序を保障する同期のAPIはないから妥協して自分で仕組みを作るのが必要
>がFAでしょうか?
仕組みを作るっていうと大げさだけど、単一のAPIでは難しくても、それにとらわれず、
適切な機能を(シリアルな処理ならキューとか)組み合わせることを考えましょうと。

あと、>>551で SuspendThread()/ResumeThread() とかいったけど、考えてみれば
CreateEvent()/SetEvent()/WaitForSingleObject()が普通かな。
最近、Win32でコーディングしてないので。
560デフォルトの名無しさん:2007/08/01(水) 11:55:13
>>554
8086搭載でRAM最大640KBというと9801/E/F/Mくらいしか思いつかないのですが
他にもあるんでしょうか?
検索で見付かったのはAmstrad PC 1512くらいです
561デフォルトの名無しさん:2007/08/01(水) 12:09:31
>>560
88も含めてもいいだろうし、286でもリアルモードしか使わないのも同じだべ
562ビルゲイツ:2007/08/01(水) 12:10:26
PCは将来的にもメモリは640KBで十分だ
563デフォルトの名無しさん:2007/08/01(水) 12:13:06
順序を保証する同期の機構を作ってソース組んでたら、
結局、イベントオブジェクトだけでもOKだったりするオチ
564デフォルトの名無しさん:2007/08/01(水) 15:08:56
自アプリケーションのディレクトリを取得するAPIってありましたっけ?
565デフォルトの名無しさん:2007/08/01(水) 15:10:40
はい。
566デフォルトの名無しさん:2007/08/01(水) 15:14:21
カレントディレクトリのこと?
567デフォルトの名無しさん:2007/08/01(水) 15:15:23
GetModuleFileName
568デフォルトの名無しさん:2007/08/01(水) 15:20:26
>>567 ありがとりんこ---
569デフォルトの名無しさん:2007/08/01(水) 17:40:22
>561
CPUとしては1Mまでアクセスできるでしょ。
A0000からはメモリマップに使う、みたいな
アーキテクチャが、上限メモリを決定するわけで。
570デフォルトの名無しさん:2007/08/02(木) 00:55:13
MDIウィンドウ使ってる人いる?
あのウィンドウの中にウィンドウがあるやつ
571デフォルトの名無しさん:2007/08/02(木) 01:15:24
そういうアプリがある以上
使ってるヤツはいるだろうが
572デフォルトの名無しさん:2007/08/02(木) 03:56:41
MDIはまれによく見るよ
573デフォルトの名無しさん:2007/08/02(木) 04:00:17
どっちだよ
574デフォルトの名無しさん:2007/08/02(木) 07:13:23
>>330
Vistaなら再起動マネージャだな
http://d.hatena.ne.jp/NyaRuRu/20070426/p1
575デフォルトの名無しさん:2007/08/02(木) 07:25:32
>>518 >>522
え、でも、でもですよ?
APIでもLPARAMとかUINTとかで無理矢理構造体とかハンドルを
キャストして引数に渡してる箇所ってあるでしょ?
あれどうなんの?
576デフォルトの名無しさん:2007/08/02(木) 07:33:24
受け取る側はだいたいUINT_PTRとかDWORD_PTRみたいな型に
なってるので、呼び出す側も対応したコードにしないといけない。
もちろん、単純に、DWORDとかにキャストしてたら死亡。
577デフォルトの名無しさん:2007/08/02(木) 07:43:35
ちょっとまった、32bit値の引数渡しのABIってどうなるの?
charみたく64bitに拡張されてpushされる?
それだったら__int64をデフォにする方で解決できるよね?
578デフォルトの名無しさん:2007/08/02(木) 07:44:35
>>573
自分はマック育ちのせいか、「MDI でないと窮屈」な気持ちが抜けない。
それに細かい操作ができる気がして、MFC は使わないで作っている。
window の属性を、共通の構造体にして windowlong に持たせているが
テキストも画像も音も全部共通にしているので、だんだんサイズが増えて
来た。
local な操作を簡単にやろうと、dialog に逃げる傾向になった。
579デフォルトの名無しさん:2007/08/02(木) 07:48:44
マック育ちを後悔しながら朝マックする>>578
580デフォルトの名無しさん:2007/08/02(木) 07:53:47
Win64はLLP64だからintは32bitなので、
自動的に行われる拡張は32bitまで。
もちろん、明示的にプロトタイプがあれば話は別。

ちなみに、DWORDが32bitであることを止められないので、
結局 hoge((DWORD)&someobj); は救えない。
581522:2007/08/02(木) 08:10:36
>>575
Visual Studio 2005で警告でまっせ。
最初何の事かわからんだったw
582デフォルトの名無しさん:2007/08/02(木) 08:15:09
おいらは実験アプリはSDIで作って、
操作性や一覧視の面を考慮してから、MDIにするか決める。
(社にMDIを基としたリソースが豊富なので)

やっぱ、個人アプリだったらSDI方向だなぁ
583デフォルトの名無しさん:2007/08/02(木) 08:23:10
いいな、その社
584デフォルトの名無しさん:2007/08/02(木) 08:24:20
>>580
あーなんか嫌な予感通り面倒臭い方か
おれの頭で想定してたの↓でいうILP64の方だった
http://www.itmedia.co.jp/enterprise/articles/0506/13/news006_2.html
でもレジスタの大きさは64bitなんでしょ??
上の記事も言う事おかしいよな。
>LLP64が、もっとも混乱の少なく扱いやすいといえるかもしれません
嘘つけ。普通プログラマが想定するのはILP64だろーが!
int=レジスタの大きさじゃないなんてどう考えておかしいだろ!
ちなみに昔IRIXの仕事もしてたが移植とかでほとんど修正いらなかった。
585581:2007/08/02(木) 08:48:11
>>int=レジスタの大きさ
俺も信じていたときがありますた。

ごく最近
586デフォルトの名無しさん:2007/08/02(木) 09:04:48
時期がありましたじゃボケ
587デフォルトの名無しさん:2007/08/02(木) 09:27:42
>>586
…ザワ…ザワ…。
588デフォルトの名無しさん:2007/08/02(木) 10:43:12
システムトレイにアイコンを表示するサービスで
explorerが死んだあとにアイコンを再表示したいのですが
それを実装するためにどんなWINDOWメッセージを捕まえれば
よいでしょうか?
589デフォルトの名無しさん:2007/08/02(木) 11:11:05
それが簡単にできたら、みんな実装してるんじゃね。
簡単な方法としては、一定時間ごとにアイコンを更新するとかあるけど。
590デフォルトの名無しさん:2007/08/02(木) 11:15:04
RegisterWindowMessage(_T("TaskbarCreated"))
これ使うんじゃね?
591デフォルトの名無しさん:2007/08/02(木) 11:21:56
>>589
簡単にできるぞ
592デフォルトの名無しさん:2007/08/02(木) 11:22:01
システムトレイのアイコンと言えば、
失敗の可能性を考慮に入れて、リトライ処理を入れておくと尚良い。
起動時のスタートアップ等重い処理が走っていると、4秒のタイムアウトに引っ掛かることがある。
593デフォルトの名無しさん:2007/08/02(木) 11:26:59
>>591
そうなんだ。じゃ、何でみんなやらんのだろ。
594デフォルトの名無しさん:2007/08/02(木) 11:43:41
後から追加されたからなー
つってもWin98以降だが
595デフォルトの名無しさん:2007/08/02(木) 11:49:48
もう無くなったけど、98の頃トレイアイコンの監視&補完ツールあったよ。
サービス起動してタスクバーが表示されたら
Shell_NotifyIcon(NIM_ADD, HICON)を捕まえて記憶して
でもしExplorerが再起動したときにもう一度全部のアイコンつっこみなおしてくれるツール。
596デフォルトの名無しさん:2007/08/02(木) 12:03:44
既に起動しているnotepad.exeを最小化する方法を教えてください。
FindWindowを使わず、既にプロセス上にあるnotepad.exeに対して
行いたいです。

自分で起動する場合は
char lpFileName[] = "notepad.exe";
WinExec(lpFileName, SW_MINIMIZE);
でできるんですが。


597デフォルトの名無しさん:2007/08/02(木) 12:14:31
私もサービスに関する質問させてください。

WM_USERCHANGEDはログイン/ログオフ時に発生するらしいのですが
これはWIN2000以上は発生しないのでしょうか?
(実際やってみたら発生しなかったので)

だとしたら他にログイン/ログオフを察知する
手段はありますでしょうか?
598デフォルトの名無しさん:2007/08/02(木) 12:27:33
ログオフWM_ENDSESSION/WM_QUERYENDSESSION
599デフォルトの名無しさん:2007/08/02(木) 13:00:12
>>596
なぜFindWindowを使わないのか、理由を説明したら教えてあげるかも。
600デフォルトの名無しさん:2007/08/02(木) 14:38:25
EnumWindows+GetWindowThreadProcessID+PSAPI(or Toolhelp32)でいいじゃんね
601デフォルトの名無しさん:2007/08/02(木) 14:50:28
ネトゲーとかでマクロをするAPIを教えてください
602デフォルトの名無しさん:2007/08/02(木) 14:52:42
>>601
コマンドプロンプトを起動して
format c:
603デフォルトの名無しさん:2007/08/02(木) 15:13:43
588です。
>>590さんの方法で実装したのですが
動作確認するためにExploreをあえて殺したいのです。
タスクマネージャからExplore.exeを殺せばいいかと思ったのですが
それではデスクトップが復旧しないので確認できませんでした。

Exploreを自然に殺す何かいい方法はないでしょうか?
604デフォルトの名無しさん:2007/08/02(木) 15:16:23
>>603
タスクマネージャから殺して、タスクマネージャの新しいタスク、から起動するんだよ
605デフォルトの名無しさん:2007/08/02(木) 15:23:09
>>603
タスクマネージャから殺して、新しいタスクから起動してダメなら、失敗してるんだよ低脳
606デフォルトの名無しさん:2007/08/02(木) 16:59:14
ウィンドウから_beginthreadを実行し、引数にそのウィンドウのハンドルを指定しました。
スレッド内で受け取ったウィンドウハンドルに対しアクセスしてみたところ
XPでは正常に動作したのですが、98SEでは動作しませんでした。
どうもウィンドウハンドル自体が壊れているようなので
静的なウィンドウハンドルにコピーしてから送ったところ正常に動作しました。
そこで質問なのですが、どうしてXPでは静的でないにも関わらず正常に動作しているのでしょうか?
607デフォルトの名無しさん:2007/08/02(木) 17:01:53
実際に値を比べてみた?
608デフォルトの名無しさん:2007/08/02(木) 17:11:59
>>575
Win64のWPARAM/LPARAMは64ビット。
UINTだったところは、いつの間にかUINT_PTRになっているので無問題。
609デフォルトの名無しさん:2007/08/02(木) 17:24:32
shlwapiのStrRChrとかってマルチバイト対応('\'を探すときに2文字目に'\'が来るような文字とか)してるのかなぁ。
仕様書に記載がない・・・
610デフォルトの名無しさん:2007/08/02(木) 17:30:06
何の事言ってんのかわかんないのだが、
コードページの指定や設定が無けりゃ考慮してるわけ無いと思うのだが
611デフォルトの名無しさん:2007/08/02(木) 17:32:35
CP設定とか何もしていないのなら
日本語Windows上なら動く
英語版Windows上でマルチバイト食わせても誤動作する
これでいいか。
612デフォルトの名無しさん:2007/08/02(木) 17:40:12
ロケール設定してなかったら_mbsrchrを使おうがNGだよね確か。
613デフォルトの名無しさん:2007/08/02(木) 17:48:24
ふ〜ん、ここに独り言書いたら答えてくれるのか
614デフォルトの名無しさん:2007/08/02(木) 17:51:15
>>607
みてみたところXPでは同じもの、98SEでは空でした。
615デフォルトの名無しさん:2007/08/02(木) 17:55:32
>>609
StrStrとかがCRTの同名小文字関数と同じ動作なのか、ということなら答えはNo
前者は設定されているコードページの設定に準拠して動作し、後者はただの1バイトごとの比較しかしていない
616デフォルトの名無しさん:2007/08/02(木) 19:55:56
>>606
とりあえず_beginthreadexにしとけって話はともかく、
引数に、作成元スレッドのスタック上データへのポインタを渡した、ってところじゃね?
_beginthreadの後Sleepで少し眠らせれば98SEでも動作するかもな。
617デフォルトの名無しさん:2007/08/02(木) 22:33:47
apiとクラスってどう違うんですか?クラスも最終的にはapiに行き着くのですか
618デフォルトの名無しさん:2007/08/02(木) 22:36:34
比較できるものですらない
619デフォルトの名無しさん:2007/08/02(木) 22:37:42
>>617
クラスについて復習してくれ。
そのレベルで質問されてもここは初心者スレじゃない。
620デフォルトの名無しさん:2007/08/02(木) 22:53:09
右手とアクエリアスってどう違うんですかって聞いてるのと同じレベル
621デフォルトの名無しさん:2007/08/02(木) 22:54:50
せめてクラスライブラリとでも言うのなら救いようもあったのだが。
622デフォルトの名無しさん:2007/08/02(木) 23:03:57
>>596
まずはプロセスハンドル取得してウィンドウハンドルを取得する。
後はShowWindowなりSendMessageなりで好きにしろ。
623デフォルトの名無しさん:2007/08/02(木) 23:12:33
FormatMessage関数のva_list *Argumentsの使い方と、
FORMAT_MESSAGE_ARGUMENT_ARRAYの使い方をご教授願いたいです。
(エラー番号は317がいいかも)

よろしくお願いします。
624デフォルトの名無しさん:2007/08/03(金) 00:23:23
どうわからないのか説明してくれ。でないとMSDN読めとしか言えない。
625デフォルトの名無しさん:2007/08/03(金) 00:28:49
MSDN読め
626デフォルトの名無しさん:2007/08/03(金) 00:37:57
う〜んこ
627623:2007/08/03(金) 01:03:19
>>624-625
ここの後半
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpdebug/html/_win32_formatmessage.asp
------
メッセージテキスト内では、メッセージを動的に書式化するためのいくつかのエスケープシーケンスが
サポートされています。これらのエスケープシーケンスとその意味を次の表に示します。
すべてのエスケープシーケンスは、パーセント文字(%)で始まります。
------
を読んで

::FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS |
FORMAT_MESSAGE_ALLOCATE_BUFFER,
NULL,
317,
MAKELANGID(LANG_NEUTRAL, SUBLANG_SYS_DEFAULT),
(LPTSTR)lphMsg,
0,
NULL);

で、「メッセージ番号 0x%1 のメッセージ文が %2 のメッセージ ファイルに見つかりません。」となります。
ここの0x%1と%2はどういう使い方をするんでしょうか?
FormatMessageの最終引数をどのように利用するんですかね?

それとも思い違いでしょうか?
628623:2007/08/03(金) 01:12:17
予想では、イベントビューアもこの手の処理をしていると思いますが・・・
629デフォルトの名無しさん:2007/08/03(金) 01:14:59
%1は1番目、%2は2番目の文字列に置き換わるようになっている。
(FORMAT_MESSAGE_IGNORE_INSERTSを指定していない場合)
その置き換える先の文字列を渡すのが最後の引数。

引数に文字列だけを渡すだけなら、たぶんこんな配列を用意して、
FORMAT_MESSAGE_ARGUMENT_ARRAY付きで最後の引数に渡せばいいと思う。
PCSTR args[] = {TEXT("0123"), TEXT("hogehoge")};

va_listを渡すなら可変個引数関数のラッパを作って、
その中で<stdarg.h>のマクロを使うのが楽だと思う。
630623:2007/08/03(金) 01:18:52
レスありがとうございます。
この書式は、メッセージによってまちまちなんでしょうかね?

たまたま317は0x%1が数値、%2が(不明!?)なんですが・・・


風が強くなってきた、今日はやめて、
明日実験してみます。

ありがとうございました!
631デフォルトの名無しさん:2007/08/03(金) 01:21:09
ホームレスプログラマか!
632デフォルトの名無しさん:2007/08/03(金) 01:29:27
段ボールがとんじゃう〜
633デフォルトの名無しさん:2007/08/03(金) 07:30:54
スネークなんじゃね?
634デフォルトの名無しさん:2007/08/03(金) 07:38:17
蛇?
635デフォルトの名無しさん:2007/08/03(金) 08:07:59
メタルギアなわけねーじゃんw
636デフォルトの名無しさん:2007/08/03(金) 08:09:11
>>630
%の書式はFormatMessageのところに書いてある。
http://msdn.microsoft.com/library/ja/jpdebug/html/_win32_formatmessage.asp
637デフォルトの名無しさん:2007/08/03(金) 09:57:00
WinMain関数をAPIフックする事は可能ですか?
638デフォルトの名無しさん:2007/08/03(金) 10:56:30
>>637
WinMainはAPI関数じゃないだろ
フックもろ共調べなおせ
639デフォルトの名無しさん:2007/08/03(金) 11:00:04
ムカつく奴がいるのですがフック入れることは可能ですか?
640デフォルトの名無しさん:2007/08/03(金) 11:13:27
>>639
「フック入れる」とは?
#いっそのこと、天井灯用のフックに紐でもぶら下げて首に掛けるといいと思う。
641デフォルトの名無しさん:2007/08/03(金) 11:19:00
うるせー死ね
642デフォルトの名無しさん:2007/08/03(金) 11:20:56
何でもかんでもAPIがやってくれると思ってるアホだろ
643デフォルトの名無しさん:2007/08/03(金) 11:30:02
アホに言われたくない
644デフォルトの名無しさん:2007/08/03(金) 11:30:51
>>640
1. サイドからのパンチを喰らわせる。
2. 輸送ヘリ Mi-6 を導入する。
3. 青芝フックを招待する。
645デフォルトの名無しさん:2007/08/03(金) 11:32:48
>>642
何でもかんでもAPIでできないアホ乙
646デフォルトの名無しさん:2007/08/03(金) 11:46:58
質問に答えられないだろ(笑)
ここって自称上級者ばかだね(笑)
647デフォルトの名無しさん:2007/08/03(金) 11:47:14
みんなWindowsしか使ってないの?
648646:2007/08/03(金) 12:23:28
ごめんなさい
調子にのすりすぎました(笑)
649デフォルトの名無しさん:2007/08/03(金) 12:24:54
僕バッカー!
650デフォルトの名無しさん:2007/08/03(金) 12:44:02
>>648は僕じゃありません。
なりすまさないでください。

フック入れかたがわかりましたが、
>>648にカチンときたので教えません。
バーカ!
651デフォルトの名無しさん:2007/08/03(金) 13:02:21
調子にのするってどういう意味?
652デフォルトの名無しさん:2007/08/03(金) 13:03:39
のするじゃなくてのすりすぎたんだよ
653デフォルトの名無しさん:2007/08/03(金) 13:05:47
>>653 はぼくじゃありません
>>653 オレを騙るんじゃない
654デフォルトの名無しさん:2007/08/03(金) 13:07:12
>>654 はぼくです
>>654 オレを騙って♪
655デフォルトの名無しさん:2007/08/03(金) 13:11:32
アッパーだよアッパー
656デフォルトの名無しさん:2007/08/03(金) 13:26:51
荒れてますなー
657デフォルトの名無しさん:2007/08/03(金) 13:37:40
お前一人だけ高みの見物か
自分は違うみたいなぼけが!!
658デフォルトの名無しさん:2007/08/03(金) 13:53:41
わろたw
ナイスつっこみ!!
659デフォルトの名無しさん:2007/08/03(金) 14:01:39
夏来たりなば秋遠からじ
660デフォルトの名無しさん:2007/08/03(金) 14:04:31
秋来たりなば夏近し
661デフォルトの名無しさん:2007/08/03(金) 14:18:12
タスクマネージャにプロセスを表示しない様にするAPIってあります?
662デフォルトの名無しさん:2007/08/03(金) 14:22:47
はいウイルスウイルス
663デフォルトの名無しさん:2007/08/03(金) 14:24:09
dll
664デフォルトの名無しさん:2007/08/03(金) 15:13:14
nProtectは全アプリのプロセス関連APIを乗っ取って「自分が列挙されない」ように小細工してたな。
665デフォルトの名無しさん:2007/08/03(金) 15:32:35
下手なウィルスよりタチ悪いな・・・
666デフォルトの名無しさん:2007/08/03(金) 15:33:18
何のためなんだ、、、ウィルスの標的にならないためか・・・
667デフォルトの名無しさん:2007/08/03(金) 15:42:51
>>661
あるかどうか解からんが目的を云え!
それによっては代替手段を伝授してやる。
668デフォルトの名無しさん:2007/08/03(金) 15:43:49
ふん、偉そうに
669デフォルトの名無しさん:2007/08/03(金) 15:49:37
>>661
APIであるかは分からないが、それは可能
俺は他のプロセスから実行させて隠蔽させてるよ
670デフォルトの名無しさん:2007/08/03(金) 15:55:46
>>668
DIO様ですよね?
671デフォルトの名無しさん:2007/08/03(金) 15:59:50
そうだが、
672デフォルトの名無しさん:2007/08/03(金) 16:22:32
ExplorerにInjectすればいいじゃない
673デフォルトの名無しさん:2007/08/03(金) 16:25:04
ガソリン節約できる?
674デフォルトの名無しさん:2007/08/03(金) 16:25:12
Explorerがドライブに存在しません。
675デフォルトの名無しさん:2007/08/03(金) 16:26:04
>>673
できる
676デフォルトの名無しさん:2007/08/03(金) 16:27:58
injection最高だな
677デフォルトの名無しさん:2007/08/03(金) 16:29:19
injection最低だな
678デフォルトの名無しさん:2007/08/03(金) 16:34:21
injection最速だな
679デフォルトの名無しさん:2007/08/03(金) 17:05:58
>>664
それは違う。隠蔽は権限変更で鎖国状態にしてデータを取得できないようにしているだけ。
全プロセス書き換えは別の目的で行われている。
680デフォルトの名無しさん:2007/08/03(金) 17:24:52
日本の夜明けも近いぜよ
681デフォルトの名無しさん:2007/08/03(金) 18:37:34
散切り頭を叩いてみれば文明開化の音がする
682デフォルトの名無しさん:2007/08/03(金) 18:42:44
たった4杯で夜も眠れず
683デフォルトの名無しさん:2007/08/03(金) 20:21:06
>>all
ついに俺もパパになったよ!!!
女の子だ!

ありがとうありがとう!
Win32API万歳!
684デフォルトの名無しさん:2007/08/03(金) 20:24:21
>>683
プログラマは電磁波の影響で精子が弱まり女児しか生まれない。
685デフォルトの名無しさん:2007/08/03(金) 20:27:10
>>684
この業種、ホントに女児の子が多いよな?

>>683
おめ
686デフォルトの名無しさん:2007/08/03(金) 20:29:38
>>683
おめでとー

出会いはどこで?
参考までに。
687683:2007/08/03(金) 20:45:30
>>684-685
いうなーw

>>686
参考になるかどうか。。
幼馴染(女)の姉で、顔見知りでした。

688デフォルトの名無しさん:2007/08/03(金) 20:55:27
>>684
個々の精子が強いか弱いかってのと、
そいつが運ぶ遺伝情報とは別に関係ないよ。
有機系やX線使う研究室の先生に
何故か女の子が多いってのもまた事実なんだけどさ@化学系
それはそうとオメ。名前決めた?
689デフォルトの名無しさん:2007/08/03(金) 21:08:48
>>687
おめ、おめ、おめでとー
つまり、お姉さん女房ってことか
690デフォルトの名無しさん:2007/08/03(金) 21:49:35
>>687
うち転勤族だったから幼馴染とか居ないわ・・・
691デフォルトの名無しさん:2007/08/03(金) 21:54:32
おまえらスレ違いも・・・

>>683
おめでと
692デフォルトの名無しさん:2007/08/03(金) 22:08:58
すべてのプロセスはおめでとう、ActiveProcessLinksなんかのリンクリスト構造で管理されてるから、
おめでとう、ドライバを書いてそれをいじるようにすればおめでとう、いいらしい。
でもそれだとコンテキストスイッチでおめでとう、不都合があるからカーネルにシステムスレッドを作って
隠蔽されたおめでとう、プロセスに制御を渡してあげる必要がやっときましたね。おめでとう、あるとかないとか。
693デフォルトの名無しさん:2007/08/03(金) 22:33:57
うちの子プロセスもみんな女
694デフォルトの名無しさん:2007/08/03(金) 22:36:22
うちの親プロセスはみんなおめでとう
695デフォルトの名無しさん:2007/08/03(金) 22:43:46
>>683
 ・XX染色体(女性)を持つ精子は酸性に強い
 ・XY染色体(男性)をもつ精子はアルカリ性に強い
 ・膣内は基本的に酸性だが排卵時期やオルガスムスに達すればアルカリ性が強くなる
という前提を元に考察をすると女の子が生まれたということは・・・
 ・中田氏から排卵までに時間があった
 ・パートナーを満足させていない
 ・ナニが短小である
・・・為に精子が膣内の酸に晒されていた可能性がある。
つまり何が言いたいかというと、おめでとう、だ。
696デフォルトの名無しさん:2007/08/03(金) 22:45:39
おまいら、子供がこの世の顔をだしたら、おめどうと言うんだぞ。
そして、未熟者の親プロセスですがよろしくお願いしますぐらい言えよ。
697デフォルトの名無しさん:2007/08/03(金) 22:47:25
この世の顔
698デフォルトの名無しさん:2007/08/03(金) 22:50:16
なんなんだここは
699デフォルトの名無しさん:2007/08/03(金) 23:00:37
ようこそおめでとう
700デフォルトの名無しさん:2007/08/04(土) 00:09:32
ShellExecuteExなどで起動させるプロセスを既存のプロセスの一部として起動させるにはどうすればよかですか?
プロセスを起動させたらすぐに終了したいんです。
701デフォルトの名無しさん:2007/08/04(土) 00:11:56
CreateProcessじゃだめか
702デフォルトの名無しさん:2007/08/04(土) 03:45:15
SHGetFileInfoを使って複数のアイコンが含まれたexeから
2番目以降のアイコンを取得したいんですけどどのようにしたらよいでしょうか?
703デフォルトの名無しさん:2007/08/04(土) 04:09:57
>>702
無理なんでResource系の関数を利用して取り出してください

http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpwinui/html/_win32_loadresource.asp
704デフォルトの名無しさん:2007/08/04(土) 04:48:49
>>700
ExitProcess
705700:2007/08/04(土) 05:12:31
詳細不十分で申し訳なかとです。
SHELLEXECUTEINFO.lpVerbにpropertiesを指定してファイルのプロパティを開いているのですが、
ShellExecuteExした自アプリはすぐに終了したいです。
ですが、自分が終了するとプロパティが閉じてしまうので、explorerなどの既存のプロセスが開いたようにしたいです。
706デフォルトの名無しさん:2007/08/04(土) 09:05:18
スレッドで蹴ったら?
707デフォルトの名無しさん:2007/08/04(土) 13:21:49
>>705
やりたいことに対してスキルが追いついてない感じ。

目的がそれだけなら、explorer などの既存のプロセスに
処理を注入するのではなくて、ファイルのプロパティを表示するだけの
UIを持たない代わりのプログラム B を作ってそれを呼び出せばよくない?
プログラム B がいれば、自分は終了しても問題ない。

あるいは、explorer に対する Shell Extension を作りたいってことなら、
基本的なところで勘違いをしている。
708デフォルトの名無しさん:2007/08/04(土) 13:39:26
>>707
聞いてることに対してスキルが追いついてない感じ。

プロセスにこだわってるのにプロセスを増やしてどうする。
もともとのプログラムもUIを持たない可能性の方が高い。
最後は同意。



709デフォルトの名無しさん:2007/08/04(土) 14:13:05
スキル不足ならこだわりは捨てて無理するなという事だろう
710デフォルトの名無しさん:2007/08/04(土) 14:33:58
>>708
ごめん、それ私の日本語力の問題。

>>705がこだわっているのは本当にプロセスの抑止であって、
>>707で解決できるようなしょうもない問題に対する
ものじゃないよね、という確認のつもりだった。

で、既存のプロセス(Explorerととか)に処理させる方法については、
やったことないので想像でいうなら、

グローバルフックを使って Explorer に処理を注入。
あらかじめ、ファイルのプロパティ表示部分をDLLにしておき、
そのDLLを Explorer プのロセス(フックDLLのPROCCESS_ATTACHとか)
からロードして呼び出し。
フック解除。

とかでいけるのかなあ。
いずれにしても、既に実行中のプロセスの所有者を変えるとかは
困難だと思うので、Exploer自身に実行する処理(DLL)を
呼んでもらうことになるんじゃないかと思う。
711700:2007/08/04(土) 15:02:54
いい人ありがとうございました。
712デフォルトの名無しさん:2007/08/04(土) 18:13:45
つい先ほどWin32APIの勉強を始めたものです。
猫でも〜を読みながらやっているのですが、

hWnd = CreateWindowW(szClassName,
"title",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInst,
NULL);

の"title"の部分でワーニングが出て、ビルドはできるのですが、文字化けしてしまいます。

どなたか理由をご存知の方いらっしゃいますか?
713712:2007/08/04(土) 18:14:51
>文字化けしてしまいます
実行してみると、タイトルバーが文字化けする、という意味です。
714デフォルトの名無しさん:2007/08/04(土) 18:17:06
ワーニングの内容をを何故書かない?
715デフォルトの名無しさん:2007/08/04(土) 18:20:07
どうせ漢字コードの問題だろ。
716712:2007/08/04(土) 18:21:26
VC2005EE使用で、

warning C4133: '=' : 'LPCSTR' と 'LPCWSTR' の間で型に互換性がありません。

です。
717デフォルトの名無しさん:2007/08/04(土) 18:21:46
>>712
L"title" にしてみたら。
718デフォルトの名無しさん:2007/08/04(土) 18:24:45
>>717
ありがとうございます。解決しました。

よろしければ理由を教えていただけませんか?
719デフォルトの名無しさん:2007/08/04(土) 18:27:08
>>718
>715
720デフォルトの名無しさん:2007/08/04(土) 18:32:22
2005からプロジェクトのデフォルトがUNICODEになったよ
2005より前のサンプルは_T("")とかにしないと動かない
721デフォルトの名無しさん:2007/08/04(土) 18:35:50
>>718
あほすぎ
猫でも〜にも書いてあるだろ
そんな簡単なこと人に聞かんと自分で勉強すれば分かるだろカス
722デフォルトの名無しさん:2007/08/04(土) 18:36:13
CreateWindowW使ってるんだから_T()マクロとか関係ないだろ
723デフォルトの名無しさん:2007/08/04(土) 18:39:07
>>712
721が言っているのはここのことな。
http://www.kumei.ne.jp/c_lang/net2005/sample.htm
724デフォルトの名無しさん:2007/08/04(土) 19:11:10
夏だね。
725デフォルトの名無しさん:2007/08/04(土) 19:31:37
>>718
Windowsでは使われる文字コードの体系に2種類ある。
従来からの文字コード(国、言語ごとに異なるコード表を使う)とUnicode(すべてを1つのコード表であらわすもの)の2つ。

Win9xでは従来からの文字コードしかサポートされなかった。
WinNT/2K/XP/Vistaでは従来の文字コードとUnicodeは両方サポートされる。

それぞれの文字コードをサポートするWin32APIには互換がなく
(コーディングレベルで互換性を提供するマクロはある)、
Unicodeアプリケーション用に作成したプログラムはWin9xで動作させることはできない。
そのため、プログラミングでは最初にターゲットを決めてコーディングする必要があった。

従来のプログラムではインターネットで公開されているサンプルなども含め、
Win9XとWinNTの両方で動作する必要が求められていたため、従来の文字コード用に
プログラミングすることが多かった。
両対応のためのマクロは従来から提供されてたけど、あまりまじめに考慮してないものが多かった。

最近になって、ようやくWin9xを切り捨てても問題ない状況になってきたため、Unicodeでの
プログラムが特に推奨されるようになり、VS2005でもプロジェクトのデフォルトがUnicodeになった。

CreateWindowW はUnicode 専用の Win32API であるため、従来の文字コード用の
文字列である "title" は受け入れられず、L"title" のように Unicode を明示的に指定しなければならない。

なお、従来の文字コード専用にコーディングするにはCreateWindowA を使う。
オプションで切り分けて両方に対応する場合にはCreateWindow を使い、この場合、
文字列も _T("title") のようにマクロをつけて両対応にする。
_T("title") とした場合、コンバイルオプションによって、"title" または L"title" に自動的に変換される。

あとは Google で。
726712:2007/08/04(土) 19:38:05
>>721
すみません。
猫でも〜は書籍版なんです。
図書館のやつなので1つ前の版orz
これから精進します。

>>723,725
ありがとうございます。
お手数おかけして申し訳ないです。
大変参考になりました。
727デフォルトの名無しさん:2007/08/04(土) 20:07:32
そしてスルーされる>715、>719、>720
728デフォルトの名無しさん:2007/08/04(土) 21:47:35
しかしデフォルトも何も
CreateWindowW <- W付き
なんだからL""で正解。
なのだが、いったい何を参考にしたのか興味あるね。猫でも〜にそう書いてあるのだろうか
729デフォルトの名無しさん:2007/08/04(土) 21:51:27
CW_USEDEFAULTを4つ書くのは無粋
730デフォルトの名無しさん:2007/08/04(土) 21:56:11
つーかCreateWindowWつかってるのに_Tはねーだろw
731デフォルトの名無しさん:2007/08/04(土) 22:39:35
>>729
何ゆえ? 最近CreateWindowとか使った記憶無いけど
昔、テストコードで頻繁に書いてたから聞いてみたい
732デフォルトの名無しさん:2007/08/04(土) 23:05:50
CreateWindowA は ANSI 文字列用
CreateWindowW はユニコード用
CreateWindow は設定により CreateWindowA と CreateWindowW を呼び分ける。

ANSI 文字列は " " で囲んだもの
ユニコード文字列は L" " で囲んだもの
_T は _T(" ") という形で使い、設定によって ANSI 文字列にしたりユニコード文字列にしたりする。

これで分からなければおかしい。
733デフォルトの名無しさん:2007/08/04(土) 23:10:16
後は、TCHARやLPCTSTRみたいな型のことと、
<tchar.h>によるC標準ライブラリ、
テンプレートによるC++標準ライブラリの対応も知れば万全。
734デフォルトの名無しさん:2007/08/04(土) 23:12:22
>>731
729が言いたいのは、xとwidthにCW_USEDEFAULTを指定するとyとheightは
無視されるから、CW_USEDEFAULTを書く必要が無いってことかと。
735デフォルトの名無しさん:2007/08/04(土) 23:17:01
みなさんは、言語はCで書いてるんですか?
それとも自分でクラス組んだC++?
マクロいっぱいのwin32apiのラッパーのMFC?
普通、どんな感じで作っていくのかが疑問に思いまして
質問さしていただきます。
どうなんでしょう?
736デフォルトの名無しさん:2007/08/04(土) 23:32:14
>>734
なる。小粋なのかどうかはよくわからないけど、話はわかった。トントン
737デフォルトの名無しさん:2007/08/04(土) 23:34:27
>>735
俺ATL/WTL
738デフォルトの名無しさん:2007/08/04(土) 23:41:24
>>735
趣味のプログラムではATL/WTLかな。
会社ではC/C++、場合によってはMFC。
739デフォルトの名無しさん:2007/08/04(土) 23:53:36
開発用のテストアプリはMFCベース。
そこで、MFC内の使えるクラスを検討or自作してる。

最終的に、WTLでイケるならそっちにする。

なお、下手に変わったことすると、
アプリをメンテする人間が制限されるので注意。
740デフォルトの名無しさん:2007/08/05(日) 00:01:59
>>735
今更、MFCは使わない。うちは、.NETとC++(ATL/WTL含む)のハイブリッドが多いかな。
741デフォルトの名無しさん:2007/08/05(日) 00:07:23
うちもGUIはC#かな、速度が必要な部分はCで書いて、
どうでもいい部分はSchemeとかRubyつかう。
742デフォルトの名無しさん:2007/08/05(日) 00:12:24
>>741
業務でScheme使ってる会社もあるんだ……
Lisp系は、コンパイラを使えば十分速いのでは?
743デフォルトの名無しさん:2007/08/05(日) 00:16:06
>>741
むしろドトネトって、起動が時間がかかるのとGUIのもっさりが一番気にならんか?
その辺Javaに似てる気がするんだが(つまりサーバーサイド向き)
744デフォルトの名無しさん:2007/08/05(日) 00:24:31
>>737-741
じゃあなぜ、このスレの人はなんでWin32APIにこだわってるの?
ん?>>738だけは、会社でAPI派?
745デフォルトの名無しさん:2007/08/05(日) 00:25:33 BE:1588858188-2BP(5)
>>744
スレタイを(ry
746デフォルトの名無しさん:2007/08/05(日) 00:26:13
>>744
MFCだのATLだのWTLだのは、独立したツールキットではなく単なるWin32APIラッパ
だからな
Win32APIとは無縁にならんでそ
747デフォルトの名無しさん:2007/08/05(日) 00:26:41
>>742
いや、業務じゃないよ。趣味の方ね。
業務は面倒くさいときはたまに Scheme → C コンパイラで作ったソース
放り込んだりはする。
748デフォルトの名無しさん:2007/08/05(日) 00:26:43
GUIをC#というならVB.NETは使わないの?
ここの人は、みんなCの人だから?
749デフォルトの名無しさん:2007/08/05(日) 00:30:59
>>748
たまにVB6やDelphiでWin32APIの質問もあるよ
750744==学生趣味グラマ:2007/08/05(日) 00:31:07
>>745
失礼しましたっす。
俺は、みんなWinAPIかと思って、ここにいるんで、ちょとビクーリだったです。

>>746
実質無縁になりそーにありませんが、ラッパーを使ってるときは、生APIは使わ
なくてよい、とゆーか、使い憎いっす。
751デフォルトの名無しさん:2007/08/05(日) 00:31:29
>>748
俺は一度VB.NETの仕事したことあるよ
自分が言語に口出し出来るケースなら絶対に選ばんが
その場合は客の指定だったんでねえ
752デフォルトの名無しさん:2007/08/05(日) 00:46:26
スレタイも読めないようじゃPGとしての能力もしれてるな。
753デフォルトの名無しさん:2007/08/05(日) 00:48:06
でもPGって人の話聞かないよね。指示にも従わないし。
754744:2007/08/05(日) 00:49:02
ごめんなさい。消えます。
755デフォルトの名無しさん:2007/08/05(日) 00:54:03
それはキミの人望
756デフォルトの名無しさん:2007/08/05(日) 00:55:40
>>753
そんな人間だからこんな面倒くさい作業ができるんじゃね
で、自分はほかの人よりすごいんだって思うわけ
でもほかの人はモテモテで女友達いっぱい作って
そういう社交的な人間のほうが会社でもかわいがられて上にあがれると・・・
757デフォルトの名無しさん:2007/08/05(日) 00:57:40

くそ天皇 くそ天皇 くそ天皇 くそ天皇

いい加減死ねっつってんだろ屑ニートくそ天皇が

相変わらず病的な粘着っぷりだな屑ニートくそ天皇が

毎日毎日毎日粘着出来て良いでちゅねくそ天皇

くそ天皇さっさと死にやがれゴミが

東京に在住している精神病珍米糞ニートくそ天皇君の末路

さっさと精神病院逝くか首吊って逝くか選べや糞天皇が

早く死ねよ糞ニート天皇が

粘着精神病屑ニート天皇君は自らニートくそ天皇であると公言しました
さっさと死ねやくそ天皇が

早く死ねっつってんだろ屑ニートくそ天皇が

お前みたいなゴミクズ天皇は息してるだけで空気が汚れるからさっさと死ねや

とっと死に晒せや糞ニート天皇が
758デフォルトの名無しさん:2007/08/05(日) 00:59:29
かわうそうに
759735:2007/08/05(日) 01:00:56
なるほど。
ケースバイケースって感じなんっすね。
ATL/WTLの勉強しよっと。
mfcはなんかやだからいいや。
760デフォルトの名無しさん:2007/08/05(日) 01:01:09

くそ天皇 くそ天皇 くそ天皇 くそ天皇

いい加減死ねっつってんだろ屑ニートくそ天皇が

相変わらず病的な粘着っぷりだな屑ニートくそ天皇が

毎日毎日毎日粘着出来て良いでちゅねくそ天皇

くそ天皇さっさと死にやがれゴミが

東京に在住している精神病珍米糞ニートくそ天皇君の末路

さっさと精神病院逝くか首吊って逝くか選べや糞天皇が

早く死ねよ糞ニート天皇が

粘着精神病屑ニート天皇君は自らニートくそ天皇であると公言しました
さっさと死ねやくそ天皇が

早く死ねっつってんだろ屑ニートくそ天皇が

お前みたいなゴミクズ天皇は息してるだけで空気が汚れるからさっさと死ねや

とっと死に晒せや糞ニート天皇が
761デフォルトの名無しさん:2007/08/05(日) 01:01:10
>>750
ラッパーは後ろのAPIの仕様・実装を抜きには語れないものなのさ。
そういう意味での無縁。
762デフォルトの名無しさん:2007/08/05(日) 01:03:38
しかし・・・
>>744の学生の様に、夏休みの自習感覚でこのスレを覗くヤツもいれば、
一昨日パパになったヤツもこのスレを覗くw
この調子だと、兄弟両方でPG、姉妹両方でPG(マナカナ系?)も居そうだ。

>>753>>756は自己紹介で、
・・・ん、ホームレスPGも居るのか?
まさか犬PGや猫PGとかry
763デフォルトの名無しさん:2007/08/05(日) 01:58:28
会社ではWindowsアプリ組んだことない
764デフォルトの名無しさん:2007/08/05(日) 02:37:37
猫でもプログラミングできるくらいだから誰でもできる。
765デフォルトの名無しさん:2007/08/05(日) 02:50:49
ほんとか?
嘘だったらお前とやつをJAROに訴えてやるからな
766デフォルトの名無しさん:2007/08/05(日) 02:51:26
ネコっていうとあれか。受け。
767デフォルトの名無しさん:2007/08/05(日) 07:10:59
過去スレ Win32API質問箱 Build43より
ttp://ir9.jp/prog/ayu/datlog/tech_win32api/1148005509/1148005509_01.html

 136 名前:デフォルトの名無しさん :2006/05/23(火) 19:21:25
 >>113
 わんわんわんわん わわわん わんわん 
 (HWNDは各々のPCのWindows毎に値が異なりますが、IDはユニーク値が付けられます。)
 
 わんわん わわん わんわん
 (メッセージやアイコンとか、別のリソースDLLでもっておけば、)
 
 わんわんわんわん わん わわん わわん
 わんわんわん わわわん クーン わんわん
 (他国間で動かせるアプリケーションを作成したとき、リソースの差し替えは動的に行えますからね。)
 
 
 わん!

犬いたねw  
768デフォルトの名無しさん:2007/08/05(日) 07:16:23
クソワロタw
769デフォルトの名無しさん:2007/08/05(日) 08:55:33
INIファイルの書き込みについてなんですが、一つのセクションに複数のキーを書き込みたいと
思い、以下のように記述したのですが、1項目しか書き込まれません。

wsprintf( strSetting , TEXT( "key1 = %d\0key2 = %d\0\0" ) , n1 , n2 );
WritePrivateProfileSection( TEXT( "section" ) , strSetting , strPath );

どのようにすれば複数のキーを書き込むことができるのでしょうか?
770デフォルトの名無しさん:2007/08/05(日) 09:08:59
>>769
Key1とKey2を別けて書けば?
771769:2007/08/05(日) 09:18:09
>>770
分けて書こうと思い、

wsprintf( strSetting , TEXT( "key1 = %d\0" ) , n1 );
WritePrivateProfileSection( TEXT( "section" ) , strSetting , strPath );
wsprintf( strSetting , TEXT( "key2 = %d\0\0" ) , n2 );
WritePrivateProfileSection( TEXT( "section" ) , strSetting , strPath );

と記述すると、以下のような書き込みがなされてしまいました。

[section]
key2 = n2の値
n1の値

また、書き込みの度に、最末行に前回のn1の値が付加された書き込みがされてしまいます。

[section]
key2 = n2の値
n1の値
前回のn1の値
前々回のn1の値
 ・
 ・
 ・

他に適切な記述方とかあるでしょうか?
772デフォルトの名無しさん:2007/08/05(日) 09:18:15
>>769
wsprintfの書式文字列に\0を含めても無駄
追記でやるか、>>770のいうように2回に分ければ
773デフォルトの名無しさん:2007/08/05(日) 09:19:45
>>771
分けるときはWritePrivateProfileIntとかWritePrivateProfileString使う
774デフォルトの名無しさん:2007/08/05(日) 09:21:02
strSettingとワイド文字のネタか?
775デフォルトの名無しさん:2007/08/05(日) 09:28:35
>>769
新規キーと既存キーの場合、動作が少し違うかもね。
776769:2007/08/05(日) 09:42:51
>>772-775
WritePrivateProfileStringでできました!
ありがとうございました! 。゜(゜´∀`゜)゜。
777デフォルトの名無しさん:2007/08/05(日) 09:48:55
このままCの文字列がどのような物か理解しないまま進むと脆弱性の山を生産することになりそうだな
778デフォルトの名無しさん:2007/08/05(日) 09:51:16
俺らに被害が及ばないなら問題ない
779デフォルトの名無しさん:2007/08/05(日) 09:55:06
のちのWindowsである
780デフォルトの名無しさん:2007/08/05(日) 10:28:41
INIは↓が便利だったよ。
ttp://natchan-develop.seesaa.net/article/11120494.html
781769:2007/08/05(日) 11:05:47
>>777
(; ´∀`)
>>780
ありがとうございます!
参考にさせていただきます。
782デフォルトの名無しさん:2007/08/05(日) 11:17:25
もうできたんならええやろ
いちいち出てくるな
783デフォルトの名無しさん:2007/08/05(日) 14:05:48
オマエモナー( ´∀`)
784デフォルトの名無しさん:2007/08/05(日) 15:03:37
ウィンドウを最大化するとき、最大化直前時のサイズを取得したいのですが、
どのメッセージを受けたときにGetClientRect()するべきでしょうか?
SIZE_MAXIMIZEDだと最大化した後のサイズを取ってしまいます。
785デフォルトの名無しさん:2007/08/05(日) 15:03:43
やっぱりでてきたな
786デフォルトの名無しさん:2007/08/05(日) 15:08:53
そんなことせんとGetWindowPlacementあたりで通常表示時のウィンドウサイズ取得したらええやんけ
787784:2007/08/05(日) 15:30:06
>>786
こんな便利な関数があったとは・・・。
ありがとうございます。
しかし、これだとウィンドウサイズは割り出せるものの、クライアント領域が導けません。
クライアンと領域のRECTからウィンドウのRECTを導き出すAdjustWindowRect()という
APIがありますが、逆にウィンドウのRECTからクライアントのRECTを導き出すAPIという
のはあるんでしょうか?
788デフォルトの名無しさん:2007/08/05(日) 15:33:59
API経由のINIファイル読み書きは読み書き毎にスキャンかかるから遅かったはず

※ちなみにJaneとかDelphi製ソフトでよくつかわれるINIファイルはメモリ上に保持されるAPI非依存のINIクラスで読み書きをしてる
789デフォルトの名無しさん:2007/08/05(日) 15:57:31
アドレスを指定して呼び出せるAPIって、CallWindowProc以外に何があったっけ?
CallWindowProc みたいに引数の個数が決まってないAPIがあった気がした
ど忘れしてしまった・・・
790デフォルトの名無しさん:2007/08/05(日) 16:17:10
>784
WM_SIZE で渡される値を保存しておいて、SIZE_MAXIMIZED の時に過去最新の値を使えばいいんじゃないの?

>789
意味がよく分からない。
>アドレスを指定して呼び出せるAPI
関数のアドレスを渡して呼び出す API だったらコールバック関数を受ける API 全部も含まれるけど。
>CallWindowProc みたいに引数の個数が決まってない
CallWindowProc の引数の個数は決まっているが。引数の個数が決まっていないのは wsprintf とか。
>ど忘れしてしまった・・・
色々と忘れすぎだと思われる。
791789:2007/08/05(日) 16:42:27
>>790
言葉足らずスマソ
vb6 からアセンブラコードを呼び出したいだけなんだ
アセンブラコードは byte() に格納してあって、 AddressOf(byte(0)) から実行させたいんだけど、
CallWindowProc 以外にもアドレスを渡して実行できる関数がいくつかあったと思ったんだ
でもそれが見つからない・・・

>CallWindowProc みたいに引数の個数が決まってない
→これはマヌケです。CallWindowProc みたいに個数が決まってるAPIでなく決まってないのがあった気が・・・

792デフォルトの名無しさん:2007/08/05(日) 16:45:56
っデータ実行防止
793デフォルトの名無しさん:2007/08/05(日) 17:00:29
数が決まっていないというのは知らないけど、
ほかに使えそうなものといったら、EnumWindowsとかどうだろう。
794デフォルトの名無しさん:2007/08/05(日) 17:09:25
>>791
そういう用途なら Create(Remote)Thread でいいんじゃね?

>>792
つ VirtualAlloc
795デフォルトの名無しさん:2007/08/05(日) 17:15:17
っ *
796デフォルトの名無しさん:2007/08/05(日) 17:21:18
アッー!
797784:2007/08/05(日) 20:47:04
>>790
それでうまくいきました!
ありがとうございました。
798デフォルトの名無しさん:2007/08/05(日) 21:12:06
今日から始めたんだけどなにこの複雑さ…

おまえらよく使えるようになったな('A`)
799デフォルトの名無しさん:2007/08/05(日) 21:14:00
あきらめたほうがいい
800デフォルトの名無しさん:2007/08/05(日) 21:37:32
空のウインドウ出すだけで数十行だもんな
やる気亡くすわw
801デフォルトの名無しさん:2007/08/05(日) 21:40:43
ヒント:コピペ
802デフォルトの名無しさん:2007/08/05(日) 21:46:21
型が乱立しすぎでなにを表しているのかさっぱりわからん
WisdomSoftの説明も日本語でおkって感じで半分以上頭に入ってこない

仕組みとか動きを理解できるように深くカバーした教科書ってないかな


803デフォルトの名無しさん:2007/08/05(日) 21:52:43
win32apiって、なんでこんなに大文字が多いんだ?
大文字が煩わしくて煩わしくて・・・
804デフォルトの名無しさん:2007/08/05(日) 21:54:52
いろいろ調べてたら「プログラミングWindows第5版(上下)」ってのが評判いいみたいなんだがどうなんでしょ
805デフォルトの名無しさん:2007/08/05(日) 21:57:10
いろいろ考えずとも僕みたいなアホはやめといた方がいいですね^^
806デフォルトの名無しさん:2007/08/05(日) 22:16:23
>>789
呼び出すDLLをてきとうに書いてみた。
ttp://monoganac2.sakura.ne.jp/src/milktea16687.zip.html
VB2005で一応動作確認したが、VB6はもしかすると駄目かもしれない。
// とりあえずテスト用コード。正しく実行できれば引数を二倍にして返してくるはず。
8D 04 09 ; lea eax,[ecx+ecx]
C3 ; ret
807デフォルトの名無しさん:2007/08/05(日) 22:18:46
VB(゚听)イラネ
808デフォルトの名無しさん:2007/08/05(日) 22:23:21
>>801
コピペでもいいけどある程度理解したくなるでしょ。
それでなぞの呪文だらけでほとんどの人が挫折するおね
809デフォルトの名無しさん:2007/08/05(日) 22:30:03
そんなに難しいとは思わんけどなぁ
810デフォルトの名無しさん:2007/08/05(日) 22:43:48
ウィンドウへファイルをドロップできるときに
カーソルが変わるけども
IDC_ にもマウスのプロパティにも設定がないんだけど
変更できないでおk?
811デフォルトの名無しさん:2007/08/05(日) 23:59:48
>>787
それはないと思うなぁ。つかGetClientRectでええんちゃうの?
812デフォルトの名無しさん:2007/08/06(月) 00:13:54
>>810
質問はドロップされる側のウィンドウの話?

マウスの形状はカーソルが自分の管理下にあれば、SetCursor()などでいつでも
変更できる気がするけど、ドラッグアンドドロップの最中のマウスカーソルは
ドラッグ元のウィンドウが制御しているのと思った。
ドロップ側のアプリケーションから指定するのはたぶん無理ではないかと。
813789:2007/08/06(月) 00:20:56
>>793,794
thx!! EnumWindows とか CreateThread っつー手があったか
たぶん探してたAPIは EnumWindows だったと思われ(うろ覚えスマソ

>>806
全俺が泣いた。そしてVB6でも動いた。
EnumWindows や CreateThread は単純なアセンブラコード呼び出すだけでも
余計なクロックかかるから最初っから C で作ってやればよかったのか
こんなシンプルな案すら出ない俺はすでに死んでいる

ちなみに VirtualAlloc を使ってあえて領域を転記してるのは DEP 対策?
ちょっとここんとこ教えてください
814デフォルトの名無しさん:2007/08/06(月) 00:27:54
API使い始めた人って変数の名前の付け方とか変わった?
815デフォルトの名無しさん:2007/08/06(月) 00:28:26
その2つのキーワードでググれ
816デフォルトの名無しさん:2007/08/06(月) 00:33:23
>>804
Windowsでプログラミングする上では良い本ではあるが、
ウィンドウの作成・仕組みの解説に限った本ではないので、その点は注意。

つか、ウィンドウ関係は「ウィンドウプロシージャ」の概念が解ってしまえば
割と何とかなる気がする。
817789:2007/08/06(月) 00:35:27
>>815
また俺はググる事を見失うところだった
ググったら一発だった。スマソ
そして PAGE_EXECUTE を理解した
経験値 0.1 を得た気がした
818デフォルトの名無しさん:2007/08/06(月) 00:37:32
819デフォルトの名無しさん:2007/08/06(月) 21:17:26
プリンタ出力時にデフォルトプリンタを使って出力するときに

縦か横かを指定する事は可能でしょうか?
また、頁単位で縦横を変えることは可能でしょうか?

本当は、プリンタも選択して使いたいのですが;
わからないのでデフォルトプリンタでやろうと思います。
820デフォルトの名無しさん:2007/08/06(月) 21:55:13
まず、縦か横かは
DocumentProperties関数, DEVMODE構造体っとこか
821デフォルトの名無しさん:2007/08/06(月) 22:07:33
>>819
DEVMODE.dmOrientationで用紙方向を指定できるので、
StartPageを呼ぶ前にResetDCを呼び出して方向を切り替える。

って下のサイトに書いてあった。
ttp://wisdom.sakura.ne.jp/
822デフォルトの名無しさん:2007/08/07(火) 17:37:34
C++Builder使ってる人っているかな?
使ってる人って普通にBITMAPFILEHEADERやら使って、ビットマップで吐き出して表示できる?
BorlandFreeのコンパイラから、C++Builderに乗り換えたら構造体のサイズ変わっちゃってさ
パッキングサイズ変更して元に戻してるけど、この症状って俺だけかな?
823デフォルトの名無しさん:2007/08/07(火) 17:41:07
C++Builderのスレで聞けやカス
824デフォルトの名無しさん:2007/08/07(火) 17:43:22
マルチかよカス
825819:2007/08/07(火) 18:19:04
いろいろありがとうございます。ためしてみます。

更に教えて頂きたいのですが;

1頁内で最初は横置きで描画し、NewPage をしないで、縦置きとして同じ頁に
印刷をすることは可能でしょうか?
826デフォルトの名無しさん:2007/08/07(火) 18:25:48
重ね描きってこと?
やってみれば
827デフォルトの名無しさん:2007/08/07(火) 18:27:45
ダイアログのコントロールのZオーダーを変えずに、
タブオーダーを変える方法を教えてください。
828デフォルトの名無しさん:2007/08/07(火) 18:32:55
プリンタの出力は土俵さえ把握すれば普通にデバイスコンテキスト使うことと
大して変わらんからいくらでも融通が利くよ
829デフォルトの名無しさん:2007/08/07(火) 18:33:07
WM_NEXTDLGCTL を自分で処理すればいいんじゃない? たぶん。
830デフォルトの名無しさん:2007/08/07(火) 18:54:50
質問にきました。

GetOpenFileNameを呼んでもダイアログが出ません。
即FALSEを返してくるだけで何も起きません。

BOOL FileOpenDialog(HWND hwnd, char *title, LPCTSTR ffilter, char *fname)
{
OPENFILENAME ofn ;

memset( &ofn, 0, sizeof(ofn) ) ;
ofn.lStructSize = sizeof(ofn) ;
ofn.hwndOwner = hwnd ;
ofn.lpstrFilter = ffilter ;
ofn.nFilterIndex = 1 ;
ofn.lpstrFile = (LPSTR)fname ;
ofn.nMaxFile = 256 ;
ofn.lpstrTitle = title ;
ofn.Flags = OFN_HIDEREADONLY | OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST ;

return (GetOpenFileName(&ofn)) ;
}

こんな感じの関数を作って呼んでますが、何か足りないところがあるのでしょうか。
831デフォルトの名無しさん:2007/08/07(火) 18:58:54
>>830
文字列バッファがローカル自動変数だったらアウト
グローバルかヒープ使う
832デフォルトの名無しさん:2007/08/07(火) 19:01:59
>>831
出ました。どうも。
833831:2007/08/07(火) 19:06:34
あ、staticつければローカル変数でもよかった、というかそれのがいいかも
834デフォルトの名無しさん:2007/08/07(火) 19:07:43
いや、、引数だしw
835デフォルトの名無しさん:2007/08/07(火) 19:27:32
>>831
自動変数ぽいけどだめなの?
http://msdn2.microsoft.com/en-us/library/ms646829.aspx
Vistaで変わった個所?
836デフォルトの名無しさん:2007/08/07(火) 19:35:43
自動変数だとダメなんてことは無いよ。
たぶんタダのバグだろう(256バイト確保されてないとか)。
837デフォルトの名無しさん:2007/08/07(火) 19:39:46
bccでなんか問題あった気がする
838デフォルトの名無しさん:2007/08/07(火) 19:53:16
ん?
試しにVC++2005でXPでやってみたらstatic つけないとうまく動かなかったぞ
839838:2007/08/07(火) 19:56:02
わかった。
0で初期化したら自動変数でも動いたw
840デフォルトの名無しさん:2007/08/07(火) 19:57:47
lpstrFile の初期値は?

> lpstrFile
> Pointer to a buffer that contains a file name used to initialize the File Name edit control.

有効な \0 終端テキストが入ってないとだめなんでない?
841838:2007/08/07(火) 19:58:47
>>835 を今さら見てみたけど
// Set lpstrFile[0] to '\0' so that GetOpenFileName does not
// use the contents of szFile to initialize itself.
これか
842デフォルトの名無しさん:2007/08/07(火) 19:59:07
WTLのCFileDialogImplをパク(ry
843デフォルトの名無しさん:2007/08/07(火) 20:00:05
lpstrFileに渡すバッファの内容はダイアログ初期化時にコントロール文字列として使われるから、
メモリ確保しただけの初期化されてない内容じゃだめだよ
openなら"*.*"とか"*.ext"にして、saveなら編集中のファイル名か"untitled.ext"とかを渡しておく(extは対応拡張子ね)
844デフォルトの名無しさん:2007/08/07(火) 20:00:48
・・・とかのんびり書いてたらすでに回答多杉
おまいら親切だw
845830:2007/08/07(火) 22:29:26
みなさんどうもありがdです
846デフォルトの名無しさん:2007/08/08(水) 01:37:46
Windowsでしか動作しないプログラムって・・・
847デフォルトの名無しさん:2007/08/08(水) 01:40:17
このスレで何を言ってるんだ
848デフォルトの名無しさん:2007/08/08(水) 02:17:26
Windowsって…
849デフォルトの名無しさん:2007/08/08(水) 02:21:59
windows以外で何があるんだい?
850デフォルトの名無しさん:2007/08/08(水) 02:26:25
こんなにたくさんあるけど。
http://www.netegle.com/operating-systems.html
851デフォルトの名無しさん:2007/08/08(水) 02:45:54
Windows以外知らないや
852デフォルトの名無しさん:2007/08/08(水) 03:35:55
プリンタに対して90度回転したいんですけど。。字が裏返しになって困っています
もともと90度回転している文字の回転はなくなってしまうし。。。

XFORM xf;
xf.eM11 = 0;
xf.eM12 = 1;
xf.eM21 = -1;
xf.eM22 = 0;
xf.eDx = 0.0;
xf.eDy = 0.0;


SetGraphicsMode(hdc,GM_ADVANCED);
SetWorldTransform(hdc,&xf);

文字は対応してないんでしょうか?
853デフォルトの名無しさん:2007/08/08(水) 08:54:45
854デフォルトの名無しさん:2007/08/08(水) 11:21:11
(GetDeviceCaps(hdc, TEXTCAPS) & TC_CR_90) != 0
かどうかは?
855デフォルトの名無しさん:2007/08/08(水) 11:21:17
その頁も参照していました。
文字だけなんです。。
1頁内で 縦置き、横置きを実現したくていろいろやっています

StartPage() の後に
同一頁内で ResetDC で縦横を切り替えることはできませんでした。

どうにかして1頁内で縦、横おきを切り替えたいのですが。・。。
856デフォルトの名無しさん:2007/08/08(水) 16:14:32
>>852
>>854やってみた?
ちなみに、TC_CR_90は「このデバイスには、キャラクタの 90 度回転を行う能力があります。」
857855:2007/08/08(水) 17:04:12
いろいろやっています。
マッピングモードと、ViewでYに - を与えて反転しているのがまずいのかもしれません。
マッピングモード全部には対応していいような気がしてきました。

あきらめて、違うマッピングででやるか、描画を90度回転させた物を用意するか;
858デフォルトの名無しさん:2007/08/08(水) 17:37:17
コンボボックス(ドロップダウンリスト)のサイズを、
アイテムを追加するたびに大きくしていくにはどうしたらいいでしょうか?
今は、初めに一行にしておくと、いくら追加しても一行で、
初めから大きく取っておくと白い空白が見えてしまいます。
859デフォルトの名無しさん:2007/08/08(水) 17:48:46
あれ、自動でならなかったっけ。
まあ、CB_SETITEMHEIGHT でいける。
860855:2007/08/08(水) 19:44:04
SetGraphicsMode(hdc,GM_ADVANCED);

SetMapMode(hdc , MM_ISOTROPIC);
SetWindowExtEx(hdc,.....)

// Viewport は、左上基点の座標系: Yに- で Window 座標を反転
SetViewportExtEx(hdc, view_xLen, -view_yLen, NULL);

MM_ISOTROPIC, でY座標を反転した Viewport の場合;
フォントはだめみたいです。

861デフォルトの名無しさん:2007/08/08(水) 20:28:23
SetWindowExtExとかもやってる?
ソース見たほうがはやいかも

#if 0と#endif
でソース整理して、ソースあげてみ
862デフォルトの名無しさん:2007/08/08(水) 22:47:27
LPTSTRの文字列をLPCOLESTR文字列に変換するにはどうすればよいのでしょうか?
863デフォルトの名無しさん:2007/08/08(水) 22:59:56
OLECHRって=wchar_tなのね

で、OLESTRが=OLESTRなら後は分かるんじゃないか
864デフォルトの名無しさん:2007/08/08(水) 23:00:22
VC++ならATL::CT2OLE使っておけ
865デフォルトの名無しさん:2007/08/08(水) 23:11:55
VC++なら_bstr_tでいいんじゃね
866デフォルトの名無しさん:2007/08/08(水) 23:17:14
LPCOLESTRで十分なところにわざわざBSTRを持ち出す必要もないだろ。

そういえば、元が文字列リテラルなら、
単にワイド文字列リテラルにすれば十分だということを
まだ誰も書いていない。そうと決まったわけではないが。
867862:2007/08/08(水) 23:26:43
すみません、やりたいことをもう少し詳しく書きます。
二つの文字列(TCHAR)をsprintfやwsprintfでくっつけて、それをLPCOLESTRを引数とする
関数に当てたいのです。
具体的には、ディレクトリのパスとファイル名をつなげて、ファイルの保存に関する関数の
引数にします。
868デフォルトの名無しさん:2007/08/08(水) 23:47:53
だから、くっつけるのは標準のCライブラリでやるんだから
LPOLESTRに変換するところだけを上のATL::CT2OLEとかでやればいいんでしょ。

使い方はCT2OLEだと検索しづらいよらうだけど、CT2Wでググればわかる。
CT2OLEとCT2Wは同じものだ。
869862:2007/08/09(木) 00:05:22
>>868
CT2Wの使い方は
CT2W( 変換したい文字列 )というのは分かったのですが、includeファイルが分かりません。
atlstr.hが必要かと思い記述したところ、
Need to include strsafe.h after tchar.h
というエラーが出て、strsafe.hをインクルードしても同じ結果になりました。
困りました・・・。
870デフォルトの名無しさん:2007/08/09(木) 00:09:14
英語も読めないんですか、困りました・・・。
871デフォルトの名無しさん:2007/08/09(木) 00:13:17
tchar.hが先っちょ
872862:2007/08/09(木) 00:17:16
>>871
できました!
ありがとうございました!
873デフォルトの名無しさん:2007/08/09(木) 00:24:07
あほすぎ
874デフォルトの名無しさん:2007/08/09(木) 00:24:40
まあまあ
875デフォルトの名無しさん:2007/08/09(木) 02:22:13
windows sdkとdirectx sdkそれぞれにstrsafe.hがあって激しくウザイ。
windows sdkにもd3d9.hなんかがあるのでさらにウザイ。

結局、directx sdk側のstrsafe.hをrenameしてやった。
876デフォルトの名無しさん:2007/08/09(木) 02:23:59
あほすぎ
877デフォルトの名無しさん:2007/08/09(木) 07:35:09
メニュー項目で、チェックがついたままのグレー表示はどのようにすればできるんでしょうか?
878デフォルトの名無しさん:2007/08/09(木) 08:02:34
普通にチェックを付けてグレー表示にするのじゃだめだっけ?
どうやってみた?
879デフォルトの名無しさん:2007/08/09(木) 08:14:14
CheckMenuItem関数、EnableMenuItem関数という関数名が知りたいのか?
880デフォルトの名無しさん:2007/08/09(木) 20:14:14
カーソルまたはアイコンハンドルが有効かどうか調べる方法はありますか?
NULLではないです。ウィンドウハンドルのIsWindowみたいなのを探しています。
881デフォルトの名無しさん:2007/08/09(木) 20:33:14
>>880
おちつけ。
ここでの有効とはどういう意味を指す?

882デフォルトの名無しさん:2007/08/09(木) 20:58:10
ハンドルを要求する関数を実行してその結果とかエラーコード見るのが一番!
かな?
883877:2007/08/09(木) 21:31:13
>>877
>>879
説明が足りず、すみませんでした。
チェックされた状態でMFS_GRAYEDにするとチェックが外れてグレーになったので、
どのようにすればよいかお尋ねしようと思いました。
自己解決しまして、MFS_GRAYED | MFS_CHECKEDとすればよいだけでした。
ありがとうございました。
884デフォルトの名無しさん:2007/08/09(木) 21:31:30
>>882
GetIconInfoマジおすすめ
885デフォルトの名無しさん:2007/08/09(木) 21:32:45
>>883は、はじめてのOR
886デフォルトの名無しさん:2007/08/09(木) 21:37:07
>>883
APIってレベルじゃねぇぞ
887デフォルトの名無しさん:2007/08/09(木) 22:14:57
それをorってのがおかしいよなAとBならANDだろwww
888デフォルトの名無しさん:2007/08/09(木) 22:18:13
じゃあ MFS_GRAYED + MFS_CHECKED で
889デフォルトの名無しさん:2007/08/10(金) 00:02:25
普通 | 使うだろw
890デフォルトの名無しさん:2007/08/10(金) 00:11:15
>>888 貴様、VB使いだな!
891デフォルトの名無しさん:2007/08/10(金) 00:22:02
はいはい次の話題次の話題
892デフォルトの名無しさん:2007/08/10(金) 02:04:04
Win32APIを使ってGTK+を実装したライブラリってどんなのがありますか?
893デフォルトの名無しさん:2007/08/10(金) 02:20:20
894デフォルトの名無しさん:2007/08/10(金) 02:23:31
>>892
Cygwin/X とか、後は Gaim とか GIMP のソース引っ張ってきたら?
895デフォルトの名無しさん:2007/08/10(金) 03:13:57
HOTKEYの競合を調べたいと思っています。
具体的には、RegisterHotKeyが失敗したとき、誰(プロセスorショートカット)が
該当のHOTKEYを使っているか知りたいのですが、それが分かるようなAPIはありますか。

システムに設定されているHOTKEYの一覧みたいなものが取得できれば、
さらに望ましいです。

以前からずっと気になっていたのですが、どうにも手ががりがつかめないので。
896デフォルトの名無しさん:2007/08/10(金) 03:21:50
ググれ過去スレにもある
897デフォルトの名無しさん:2007/08/10(金) 03:40:44
>>896
探しかたが悪かったようですね。
ともあれ情報があると分かれば、もう一度頑張って調べてみます。

ありがとうございました。
898デフォルトの名無しさん:2007/08/10(金) 08:00:07
上のほう見て私も思ったんだけどandとorって間違ってませんか?絶対設計ミスだとおもいます
ちなみに美人SEです
899デフォルトの名無しさん:2007/08/10(金) 08:06:24
まんkのみせれあお
900デフォルトの名無しさん:2007/08/10(金) 08:10:24
900
901デフォルトの名無しさん:2007/08/10(金) 11:13:20
>>898
その発想自体は悪くないけれど、大昔に結論が出ていることを今更って感じ。
英語のジョークにもなっているくらいだから、英語圏でも混乱するらしいね。
アイザック・アシモフのミステリー短編でもネタになっていたし。
902デフォルトの名無しさん:2007/08/10(金) 11:38:00
and とか or って呼ぶからいけないんだよ
日本語で論理積・論理和って呼べば・・・やっぱり意味わかんないか
903デフォルトの名無しさん:2007/08/10(金) 11:42:41
私は、英語なんか知らないし別にどっちでもいいよ。
ちなみに美人PGです。
904デフォルトの名無しさん:2007/08/10(金) 11:44:27
「かつ」「または」だろ
905デフォルトの名無しさん:2007/08/10(金) 11:52:08
>>904
問題の本質が判っていないのなら、黙っていた方がいいよ。
つーか、黙ってろ。
906デフォルトの名無しさん:2007/08/10(金) 12:01:15
>>905
問題の本質ってなんだ?
x = x + 1
はおかしいとかいうのと、結局は同じレベルの話だと思うが
907デフォルトの名無しさん:2007/08/10(金) 12:03:34
and/orを訳しても意味がないってことだね。
908デフォルトの名無しさん:2007/08/10(金) 12:15:49
#define MFS_GRAYED     0xFFFFFFFCL
#define MFS_CHECKED   0xFFFFFFF7L

にすればいいじゃん。俺天才。
909デフォルトの名無しさん:2007/08/10(金) 12:27:54
論理とビット演算の違いでないの?
910デフォルトの名無しさん:2007/08/10(金) 12:38:49
>>909
誰に対してのレス?
911デフォルトの名無しさん:2007/08/10(金) 13:12:17
EnumWindows でウィンドウを取得しました。この中からダイアログを見つけ出すにはどうするのでしょう?
GetWindowText で文字列拾って判別するのですか?
912デフォルトの名無しさん:2007/08/10(金) 13:14:49
class
913デフォルトの名無しさん:2007/08/10(金) 14:05:48
教えてください。
メンバ数とデータ量が多い構造体を使用するため、
APIのCreateFileMappingでビューを作成し、
MapViewOfFileで取得したVOIDポインタを
構造体のポインタにキャストして使用しています。
この構造体メンバの値読み書きを複数のスレッドが行うので、
クリティカルセクション等で排他をかけたいのですが、
構造体のメンバが多い&メンバがちょこちょこ変更になるので、
一つ一つにゲッタ、セッタを書くのがしんどいです。
このような場合、どのようにするのが効率的で美しいでしょうか?
914デフォルトの名無しさん:2007/08/10(金) 14:21:20
ひとつひとつのセッタ&ゲッタで毎回Enter&LeaveCriticalSectionしてるの?
つまり3個のメンバを書き換えるときは1個ずつ3回?
それって整合性大丈夫?
915デフォルトの名無しさん:2007/08/10(金) 16:44:34
>>901知的な人キター
みんなプログラムの本だけじゃなく小説よもうぜ
916デフォルトの名無しさん:2007/08/10(金) 17:08:30
ラノベはいっぱい読んでるよ!
・・・だめですかそうですか
917デフォルトの名無しさん:2007/08/10(金) 17:10:02
ラノベそうめんいぼの糸
918デフォルトの名無しさん:2007/08/10(金) 17:21:08
それテノベ
919913:2007/08/10(金) 18:07:07
>>914
メンバはそれぞれ独立した意味の値ですので、
例えばメンバAとメンバBは同時に書き換えられてもOKです。
メンバAを複数のスレッドが同時読み書きする恐れがあるため、
1つのスレッドがメンバAを読込または書込中は、
他のスレッドから読み書き禁止にしたいのです。
まだ実装はしていないです。どのようにやるのが一番よいのかな、と。
920デフォルトの名無しさん:2007/08/10(金) 18:26:20
メンバとげったとせったを定義するマクロを使う。

DEF_MEMBER(foo_struct, hoge) で

foo_struct m_hoge;
CRITICAL_SECTION m_cs_hoge;
get_hoge(foo_struct* result) {
 EnterCriticalSection(&m_cs_hoge);
 *result = m_hoge;
 LeaveCriticalSection(&m_cs_hoge);
}
setter 略
みたいな
921デフォルトの名無しさん:2007/08/10(金) 18:57:31
>>919
それなら InterlockedCompareExchange とかを使えばいいんじゃない
922デフォルトの名無しさん:2007/08/10(金) 19:04:17
浮動小数点数とか文字列とか何十バイトものビットマップとか使ってたりしないのかな。
923デフォルトの名無しさん:2007/08/10(金) 19:42:02
ゲッタとセッタでそれぞれロックしてたら a->SetA(a->GetA()+1) が保証できなくなるけどいいのか?
924889:2007/08/10(金) 19:45:46
>>890
俺もまったく同じ事思ったけど言わなかったwwwwwwww
925919:2007/08/10(金) 20:30:40
みなさんレスどうも。

>>920
すいません、よく理解できませんでした・・・
DEF_MEMBERというマクロの動作定義がfoo_struct...以下なのですよね?

>>921
今のところ理想に近いです。こんなAPIもあるんですね。
調べてみましたが、↓のページで懸念されているように待ちとなるスレッドの挙動をどうするかですね・・・
ttp://itpro.nikkeibp.co.jp/article/COLUMN/20070603/273403/?P=2

>>923
あぁそうですね・・・。
コーディング規約として、
hoge = a->GetA()+1
a->SetA(hoge)
するしかないですかね。
できれば、ゲッタ&セッタをメンバ数分用意しないやり方で行きたいです。
phpであったと思うのですが、メンバの名前を文字列で指定して、
値をセットできるような仕掛けがあればいいのですが。
構造体hogeにaからzまでのメンバがあるとして、setvalue("c",3);みたいな。
最初見たときは気持ち悪かったけど。
926デフォルトの名無しさん:2007/08/10(金) 20:42:11
> hoge = a->GetA()+1
> a->SetA(hoge)

なんかその規約に意味があるのか?
GetA()とSetA()の間にほかのスレッドがSetA()する可能性の話なんだが。
927デフォルトの名無しさん:2007/08/10(金) 20:43:14
>>925
>コーディング規約として、

書き方の問題じゃなくて、例えば2つのスレッドがほぼ同時に1ずつ増やそうとしたときに
合わせて2増えることが保証されないけどいいの、って話。
928921:2007/08/10(金) 22:28:53
>>925
そのページがやってるような、InterlockedXxxx を使って排他ロックを自作するなんてのは、間違いなく間違い。単なるバカ。

例えば特定のメンバを 1 増やしたいとしたら InterlockedIncrement を 1 回使えばそれで目的を果たせるわけ。
そういう使い方をするもんだ。
929デフォルトの名無しさん:2007/08/10(金) 23:23:01
>>913
マルチスレッドのアプリケーションで排他をかけるのは機能の単位で行う。
メンバAとメンバBの関係はどうでもよくて、メンバAの更新だけを例にあげると、
1) メンバAの読み出し
2) メンバAの値の加工
3) 加工したメンバAの書き込み
この1)〜3)の操作全体をメソッド化し、メソッド内ではクリティカルセクションなどの
仕組みを使って排他制御を行う。

逆にゲッタ、セッタの単位では意味がないので排他の必要はなく、
よって悩む必要もない。
930デフォルトの名無しさん:2007/08/10(金) 23:30:40
>>913
ところで、

>構造体のメンバが多い&メンバがちょこちょこ変更になるので、

構造体のメンバが頻繁に変更になるのに、
それを考慮してアクセス方法で悩んでいるのに、
その構造体データ全体をファイルに物理的にマッピングして使用するの?
それってまずくないのかな。
931デフォルトの名無しさん:2007/08/10(金) 23:40:01
>>930
こういう指摘が、かえって処理をスッキリさせるヒントかもね。
932デフォルトの名無しさん:2007/08/10(金) 23:46:05
スッキリ!
933デフォルトの名無しさん:2007/08/10(金) 23:48:18
もやっと
934913:2007/08/11(土) 00:05:01
みなさんレスどうもです。

>>926 >>927
あぁすいません・・・。>>923の方の指摘は理解していたんですが、
変なレスをしてしまいました。忘れてくださいorz

>>928
なるほど。自分としてはInterlockedExchangePointerでいいのかな?とも思ってたのですが・・・。

>>929
ありがとうございます。
最初にセッタ&ゲッタで考えてしまったのが良くなかったかと思いますが、
一応排他については理解してるつもりです。>>925で意味不明なことを言ってしまいましたがw

今回のお聞きしたいことは、aからzの26個のメンバを持つ構造体で、
一つ一つのメンバへのアクセスに排他をかけたいと言うことです。
スレッド1とスレッド2がいて、2つが同時にメンバaを書き換えるのはダメ、
ただし、スレッド1がメンバaを、スレッド2がメンバbを同時に書き換えるのはOKです。
>>929の方が書いてくださったメソッドを26個用意すればできますが、
それを1つにまとめられないかな?というのが知りたいところです。

>>930
すいません、メンバが頻繁に変わると言うのは、仕様が二転三転するためで、
一度決まってしまえば後は変わりません。
そういうことではなくて、この方法では他にまずいことがあるのでしょうか・・・?




935デフォルトの名無しさん:2007/08/11(土) 00:47:51
メンバについては、マクロ展開を駆使して生成するしかないと思う。
纏めたかったらインデックスでアクセスするようにするとか。

てか今回作りたいオブジェクトへのアクセス頻度はどの位?
案外、全体をLock->構造体へ直アクセス->Unlock程度の実装で十分じゃない?
936デフォルトの名無しさん:2007/08/11(土) 00:53:38
>>928
InterlockedExchangePointerって、メモリマップしてきた領域内にポインタがあるわけ・・・?
937デフォルトの名無しさん:2007/08/11(土) 01:04:57
>>913
ゲッタ、セッタを書くのが面倒ってのは、マクロで簡単に書ける。
##演算子を調べてみそ。googleだと検索できないが。
938デフォルトの名無しさん:2007/08/11(土) 02:26:43
>>934
示された前提が大雑把すぎる。

簡単なカウンタみたいなものなら、排他制御を作るまでもなくInterlockedIncrementや
InterlockedExchangePointerなどの API が1つあれば足りる可能性はある。
でも、今までの話の流れではクラスの規模や処理の内容、複雑性、性能要件などが
まったく読み取れないので、それで十分かどうかは本人でないと分からない。

>そういうことではなくて、この方法では他にまずいことがあるのでしょうか・・・?
一般的な話としても、プログラム内の論理構造と外部媒体構造の結びつきが強すぎると
メンテナンス性が落ちる。
あとは、そもそもCreateFileMappingはプロセス間のデータ共有などに使われるもので、
単一プロセスで使用する場合、性能面などを考えてもデメリットの方が多そうに思える。
939934:2007/08/11(土) 02:56:07
>>935 >>937
ありがとうございます。
##演算子は使ったことないので、ちょっと調べてみます。
##はぐぐると無効化されちゃいますね・・・
んー、本屋で見てみるかなぁ。

>>938
ご指摘ありがとうございます。
前提については、長くなってしまうので。
今はまだ実装方法を検討いてる段階で、
排他のレベルについては、自分でももう少し精査して実装方法を決めます。
あくまで今回知りたかったのは、メンバ書き換え手段だったので・・・

>一般的な話としても、プログラム内の論理構造と外部媒体構造の結びつきが強すぎると
メンテナンス性が落ちる。
そうですね。しかし、これが避けられない事情がありまして・・・

>あとは、そもそもCreateFileMappingはプロセス間のデータ共有などに使われるもので、
単一プロセスで使用する場合、性能面などを考えてもデメリットの方が多そうに思える。
小出しみたいで申し訳ないですが、お察しのとおり、プロセス間のデータ共有で使用します。
940デフォルトの名無しさん:2007/08/11(土) 04:58:35
>##
トークン結合演算子 でぐぐれ
941デフォルトの名無しさん:2007/08/11(土) 09:43:33
興味があることなので >>939 に便乗して質問
こんな感じでマクロを定義するだけでいいんでしょうか?
#define member_get_set(type, membername) \
private: \
type membername; \
public: \
type membername ## Get(void){return this->membername;} \
void membername ## Set(type membername){this->membername=membername;}

class macrotest{
member_get_set(int, value);
};
942デフォルトの名無しさん:2007/08/11(土) 11:56:52
DWORD GetGlyphOutlineW(
  HDC hdc, // handle to DC
  UINT uChar, // character to query
  UINT uFormat, // data format
  LPGLYPHMETRICS lpgm, // glyph metrics
  DWORD cbBuffer, // size of data buffer
  LPVOID lpvBuffer, // data buffer
  CONST MAT2 *lpmat2 // transformation matrix
);
でUnicode(UTF-16)の文字のアウトラインを取得しています。
サロゲートペアの文字の場合は第2引数(UINT uChar)に何を渡せばいいでしょうか?
文字コード(0x2????)やバイナリ値(2バイト+2バイト化したもの)を試しているのですが、うまく動きません。
通常の文字は文字コードをそのまま渡すと正常に動きます。
943デフォルトの名無しさん:2007/08/11(土) 12:05:52
>>939
小出しなのよりも情報が間違っていることが問題

>この構造体メンバの値読み書きを複数のスレッドが行うので、
>クリティカルセクション等で排他をかけたいのですが、

CriticalSectionは同一プロセス内の複数のスレッドで排他するために使う。
この文章からプロセス間排他を連想するのは無理。
mutex使え。
944デフォルトの名無しさん:2007/08/11(土) 12:16:22
>>941
まずは自分で試せ。
VCなら -P オプションでプリプロセスの展開結果が得られる。
945934:2007/08/11(土) 12:18:06
>>943
いやだねm9(^Д^)プギャー
946デフォルトの名無しさん:2007/08/11(土) 12:52:25
forkを使いたいのですがWin32APIにありますか?
947デフォルトの名無しさん:2007/08/11(土) 13:36:55
ありません。
cygwinならエミュレートしてくれますが、たいそう大掛かりで重いです。
948デフォルトの名無しさん:2007/08/11(土) 18:28:20
Windows2000/XP/2003のファイル名のユニコードの扱いについて質問です。
(Vistaは仕様が色々変わってそうなのでここでは除外します。)

1) FindFirstFileW/FindNextFileWで取得できるファイル名のユニコード文字列に対して、
 サロゲートペアも考慮しないといけないのでしょうか?
 (サロゲートペアを使ったファイル名が現れる可能性があるか?)
 今まで可変長文字がくる可能性を考慮してなかったのですが、
 一般的には無視して良いものでしょうか。

2) フォルダやファイル名では半角アルファベットの他に、全角の「A」と「a」の
 大文字小文字も同一視される様ですが、アルファベットの他に同一視される
 文字種はあるでしょうか?2つのパス名・ファイル名の文字列が
 同じ物かどうか判定する処理を書く必要が出てきたので。

3) 2)のパスとファイル名の一致比較を行うAPIがあれば、それに任してしまいたい
 のですが、ありましたら教えてください。
949デフォルトの名無しさん:2007/08/11(土) 18:32:52
selectを使いたいのですがWin32APIにありますか?
950デフォルトの名無しさん:2007/08/11(土) 18:34:14
全角の"A"っていうのもあったような
951デフォルトの名無しさん:2007/08/11(土) 18:53:47
>>948
(1) 現れる可能性はあるでしょう
ただ、現実にそんなの使ってるやつがいるのかって言われると、、、どんなもんかねぇ

(2) unicode normalization forms でぐぐってみるといいかもしれない
NTFS は NFC に正規化しているとか聞いた覚えがある(要確認)

(3) CompareString とかどうだろう
952デフォルトの名無しさん:2007/08/11(土) 18:55:13
>>948
サロゲートペアで表す文字も考慮しておくに越したことはないはず。
ちなみに試してみたら吉野家というファイルは作れた(吉はもちろんU+20BB7のほう)。

ファイル名のソートでは、平仮名と片仮名(全角半角双方)も同一視される。

API関数では、専用の関数ではないけれど、
CompareStringならそういうことを考慮した比較が可能。
953デフォルトの名無しさん:2007/08/11(土) 18:59:17
>>949
ありますが、ソケットにしか使えなくて、 64 個までです
954デフォルトの名無しさん:2007/08/11(土) 19:26:58
>>948
キリル文字とかギリシア文字とか、およそ大文字/小文字という概念のある文字はすべて同一視される
955948:2007/08/11(土) 19:31:35
皆様ありがとうございました。
CompareStringで検索したら、過去に同じ話題があったみたいですね。

ファイル名の大文字小文字を正しく比較する − 2ch 19:34
ttp://d.hatena.ne.jp/hasegawayosuke/20060125/1138185283
過去ログ522-537
ttp://ir9.jp/prog/ayu/datlog/tech_win32api/1136673250/1136673250_03.html

ttp://d.hatena.ne.jp/hasegawayosuke/searchdiary?word=*%5BWindows%A4%C8Unicode%5D
これをファイル名にそのまま適用できるかというと違うらしい?

ttp://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/22116
>Win32 では,ファイル名の同一判定は CompareString or lstrcmpi の
>結果を用いるのが正しい方法です。(strcmpi じゃなくて)
これはほんとかな?

>>951
正規化・・・頭痛いです。範囲を超えてます。
ttp://homepage1.nifty.com/nomenclator/unicode/normalization.htm
恐らく、比較対象になるファイル名を入力するのは普通のIME変換で
入力できるような簡単な文字しかないと思うので、今回は必要ないかな??

>>952
>平仮名と片仮名(全角半角双方)も同一視される。
これはどういう事でしょうか?
アアア.txt アアア.txt あああ.txt
というファイルは別々に作れるみたいですが。(XPSP2 NTFS)

3)についてまとめると、想定するOSをWindows2000以降とする場合は、
CompareStringでLOCALE_SYSTEM_DEFAULT, NORM_IGNORECASE
を指定すれば良いのかな。
956デフォルトの名無しさん:2007/08/11(土) 20:43:23
ちょっと横道に逸れるが、ユーザーにファイル名を一切手入力させず、
常にFindFirstFile等から得た一覧から選択させるというUIにしたらどうだろう?
そうすれば扱うファイル名は全てシステムが返すファイル名だから、
ある意味正規化(?)できるのでは。
ファイル名の比較も、ただのmemcmpで済むのでは。
957デフォルトの名無しさん:2007/08/11(土) 20:54:25
そうとも限らない。
ファイル名ってのはナマモノだから、いつユーザーの気まぐれで
リネームされることやら。比較する間にやられる可能性がある。
例えばキャピタライズされただけでアウト。
"program files"→"Program Files"
958デフォルトの名無しさん:2007/08/11(土) 21:15:44
あー
959デフォルトの名無しさん:2007/08/11(土) 21:49:42
>>955
> CompareStringでLOCALE_SYSTEM_DEFAULT, NORM_IGNORECASE
> を指定すれば良いのかな。

XP 以降なら LOCALE_INVARIANT のほうがいいらしい。
http://msdn2.microsoft.com/en-us/library/ms647476.aspx
> ・On Windows XP and later:
> CompareString(LOCALE_INVARIANT, NORM_IGNORECASE, ...
>
> ・For earlier operating systems:
> DWORD lcid = MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT);
> CompareString(lcid, NORM_IGNORECASE, ...

トルコ語などの場合、「I」と「i」が違う文字として扱われるからだそうだ。
960デフォルトの名無しさん:2007/08/11(土) 22:03:45
なんかそういう、各国の文字事情をまとめた本かなにか、ないかなぁ
あったら欲しい
961デフォルトの名無しさん:2007/08/11(土) 22:07:39
うち来る?
962デフォルトの名無しさん:2007/08/12(日) 00:11:06
え、アッー!
963デフォルトの名無しさん:2007/08/12(日) 00:22:00
空気読んで書かなかったのに
964デフォルトの名無しさん:2007/08/12(日) 00:24:24
>>960
オライリー辺りが出してた様な。日本語限定だったかな?
でもこういった泥臭いカテゴリのオライリー本って役に立つ気がしない。
装丁からいかにも「判ってない」バタ臭が漂ってくるというか。
おれだけの偏見かな?
965962:2007/08/12(日) 01:20:36
だってみんなずっと無言だったから・・・
966デフォルトの名無しさん:2007/08/12(日) 03:38:53
結局、ファイル名をキーに、重複なしunique値としてハッシュテーブルとかの
便利コンテナに入れるには、正規化っぽい処理が必要みたいですね。
LCMapStringでいいのかな。
967デフォルトの名無しさん:2007/08/12(日) 04:25:33
>>959
ありがとうございます。
日本語の説明はこれですね。
http://msdn2.microsoft.com/ja-jp/library/8y7etsh4(VS.80).aspx
http://msdn2.microsoft.com/ja-jp/library/ba769hz2(VS.80).aspx

これを見ると、2000でLOCALE_INVARIANTを指定すると誤動作する可能性があるのかな。
http://support.businessobjects.com/communitycs/FilesAndUpdates/boXIwin_jp_sp2.pdf
OS別に切り分けした方が良さそうですね。
968デフォルトの名無しさん:2007/08/12(日) 11:01:42
逝ってもイイケド襲わないでね
969デフォルトの名無しさん:2007/08/12(日) 15:08:21
SJIS を UTF-8 に変換する関数は Win32API にありますか?
970デフォルトの名無しさん:2007/08/12(日) 15:10:20

971デフォルトの名無しさん:2007/08/12(日) 15:14:49



972デフォルトの名無しさん:2007/08/12(日) 15:22:01
質問があ
973デフォルトの名無しさん:2007/08/12(日) 15:23:37
りました
974デフォルトの名無しさん:2007/08/12(日) 16:15:48
>>968じゃあ一晩中プログラムのことで話そうぜ。その後は
975デフォルトの名無しさん:2007/08/12(日) 16:28:11
>>969
たぶん直接変換する関数はないけど
SJIS -> UNICODE -> UTF8
なんかで逝ける
976デフォルトの名無しさん:2007/08/12(日) 16:51:42
希ガス。
977デフォルトの名無しさん:2007/08/12(日) 17:14:44
多分て。
978デフォルトの名無しさん:2007/08/12(日) 17:17:24
毎週来てた派遣の人はこなくなったね。
残りカスみたいなのは湧いてるけど。
979デフォルトの名無しさん:2007/08/12(日) 17:21:29
しーっ呼ぶな
980デフォルトの名無しさん:2007/08/12(日) 17:22:26
さすが、本当に残りカスみたいな>>978の書込みは、
重みが違いますね。
981デフォルトの名無しさん:2007/08/12(日) 19:28:51
最大化する前のウィンドウ位置をGetWindow()で保存しておきたいのですが、
最大化する直前のタイミングに来るようなメッセージって何がありますか??
982デフォルトの名無しさん:2007/08/12(日) 19:31:54
なんだっけ、CHANGEじゃなくてCHANGING?
983デフォルトの名無しさん:2007/08/12(日) 19:32:31
ちょっと上に書いてある
984981:2007/08/12(日) 19:37:48
WM_MOVEを利用すればできました。(最大化状態を除外する)
ありがとうございました。
985デフォルトの名無しさん:2007/08/12(日) 23:08:01
>>969
関数じゃないけど、ADODB.Streamで可能。
986デフォルトの名無しさん:2007/08/12(日) 23:09:13
ふつーMLangじゃね
987デフォルトの名無しさん:2007/08/12(日) 23:28:55
ごめん
MLangはずっと前に一度使おうとして情報が少なかったので、面倒になって
やめてしまったんだ...orz
988デフォルトの名無しさん:2007/08/13(月) 11:03:09
メールの送受信を行うAPIを教えてください
989デフォルトの名無しさん:2007/08/13(月) 11:26:25
>>988
WinSockで頑張るしかないんじゃない
送信だけならCDO.Messageというのがある
990デフォルトの名無しさん:2007/08/13(月) 11:33:36
ブラウザなどもソケット利用してつくられてるんですか?
991デフォルトの名無しさん:2007/08/13(月) 11:34:08
MAPI
992デフォルトの名無しさん:2007/08/13(月) 15:19:48
CreateFileMappingにNULLを渡して共有メモリを作れますが、
名前を十分に複雑にしておけば、他のプロセスから勝手に覗かれることは無い、
と思っていい?

素のパスワードとかを保存しておいて、メモリダンプツールとかで覗かれたりするかな。

教えてくださいエロい方。
993デフォルトの名無しさん:2007/08/13(月) 15:22:49
そのプロセスも他のプロセスも同じユーザーの権限で動かしてるんだろう?
どういった状況を考えてんの
994992:2007/08/13(月) 15:25:41
>> 993
独自プロトコルのクライアントアプリを作っていて、
ShellExecuteで立ち上げた別プロセスに、
関係ないスパイプロセスとかからは読めない形で通信のセッションstringを引き継ぎたい。
995デフォルトの名無しさん:2007/08/13(月) 15:38:46
>>992
NULLではなくて、INVALID_HANDLE_VALUEを渡す

あと、名前の複雑性では限界がある
名前じゃなくてセキュリティ記述子をきちんと書けば、必要な人だけアクセスできると思う
996デフォルトの名無しさん:2007/08/13(月) 15:45:03
間違えた
hFileでなく、lpNameパラメタならNULLは可能
997デフォルトの名無しさん:2007/08/13(月) 15:53:31
起動したユーザーからも隠蔽したいって事?
独自に暗号化するとか
998デフォルトの名無しさん:2007/08/13(月) 15:57:40
>>997
解析されれば終了
正しい方法は>>995

ユーザのより権限の強いシステム用のアカウントとかを使うんだろ。

今までセキュリティソフトウェアの大半が、このセキュリティ記述子を設定していなかったとか、
Mark氏がブログで言っていたけど。
999デフォルトの名無しさん:2007/08/13(月) 16:06:27
いや、、、そんなの起動するユーザーがどうにでもできるじゃん。
adminグループに自分を入れてりゃいいだけ。

だから元の質問者の目的がわからんと先すすまない。
1000デフォルトの名無しさん:2007/08/13(月) 16:08:18
そもそもシステムアカウントで実行するには
システムアカウントが必要なわけで。

だから同じユーザーが起動するのならセキュリティ記述子は意味が無いのだが。
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。