2ちゃんねる スマホ用 ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

Win32API質問箱 Build121

1 :デフォルトの名無しさん:2015/08/04(火) 22:34:50.61 ID:tKzV+rUu.net
Win32APIについての質問はこちらへどうぞ。

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

■過去スレ
Win32API質問箱 Build120
http://peace.2ch.net/test/read.cgi/tech/1428570962/

2 :デフォルトの名無しさん:2015/08/05(水) 14:10:04.50 ID:OyFAH2W/.net
OSのっていうか、コントロールパネルの地域で選択されている国(場所)又は言語を取得するAPI教えてくださ

3 :デフォルトの名無しさん:2015/08/05(水) 14:26:46.22 ID:e4gAPQI9.net
GetUserDefaultLCID とかじゃね?

4 :デフォルトの名無しさん:2015/08/05(水) 14:28:06.28 ID:e4gAPQI9.net
言語はGetUserDefaultUILanguage

地域と言語は別だよね

5 :デフォルトの名無しさん:2015/08/05(水) 15:37:41.50 ID:MnmW9vnG.net
               ノ      ゚.ノヽ  , /}      ...
            ,,イ`"     、-'   `;_' '    ..::::::::::::::...
   ,-、  _.._   (        (,(~ヽ'~     ..:::::::::::::::::::::::
 )'~  レー'  〉   ヽ       i`'}       .:::::::::::::::::::::::
 ~つ     '-ー、  i       | i'     ...:::::::::::::::::::::::
 /       <  /     。/   !  ......:::::::::::::::::::::::::    これは>>1乙じゃなくて
/         ~^´     /},-'' ,●::::::::::::::::::::::::::::::::::::
i、        ,i' _,,...,-‐-、/    i  ::::::::  .:::::::::::::
..ゝ        <,,-==、   ,,-,/      .:::::::::::            放射能がうんたら
 )       {~''~>`v-''`ー゙`'~       ..:::::::::                          ........::.
 {        レ_ノ            ..::::::::.                         ......:::::::::
ノ         ''           ..:::::::                        ...::.:...:::::::::
                     .:::::::::                     ...:......:::::::::::: .
                    .:::::::::::.        .....      ..  ..::::::::::::::::::::::::   :::.
                    ::::::::::::::::.::::::....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.. ::  ::..
                    .:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::    ::.
                    ::::::::::::::::: :::::::::::::::::::::::::::::: :::::
                          .::    ::.  :::

6 :デフォルトの名無しさん:2015/08/06(木) 15:23:29.70 ID:c3bf75DV.net
windows7なんですかテストモードONにしてもデジタル署名を要求されます
テストモードは未署名のドライバでも動かせるのではないのですか
未署名ドライバを署名無しのまま動作させるAPIを教えろください

7 :デフォルトの名無しさん:2015/08/06(木) 16:54:34.81 ID:/1pEP5C4.net
お断りします

8 :片山博文MZ ◆T6xkBnTXz7B0 :2015/08/06(木) 17:21:33.98 ID:4xD13DN7.net
>>7
よいではないか

9 :デフォルトの名無しさん:2015/08/06(木) 19:14:01.34 ID:79+p9Mbt.net
WM_SIZING message
https://msdn.microsoft.com/ja-jp/library/windows/desktop/ms632647(v=vs.85).aspx

このメッセージを受け取れば、lParamで変更しようとしているウィンドウサイズを取得できますが、
そのウィンドウサイズでのクライアントサイズを取得したい場合、
GetClientRectは使えず(ウィンドウサイズ変更はまだ完了していないため、現在のクライアント領域が返ってくる)、
現状はGetSystemMetricsでクライアント領域周りの枠などのサイズを取得して
変更しようとしているウィンドウサイズから引いて算出しています。

しかし、この方法だと、ウィンドウスタイルを変えたときに、併せて変更せねばならず、
保守性の点では好ましくありません。
ウィンドウスタイルごとに条件分岐すれば対応できるものの、あまり美しくありません。

これら以外の方法で、スマートに変更しようとしているウィンドウサイズにおけるクライアント領域を
取得する方法があればご教示ください。

よろしくお願いします。

10 :デフォルトの名無しさん:2015/08/06(木) 19:23:52.88 ID:YtIxgi9m.net
1.GetWindowRectとGetClientRectを呼んで、差分を計算する
2.AdjustWindowRectを呼んで、差分を計算する
そんで、WM_SIZINGのlParamから逆算するとかどうでしょうか
でも、スクロールバーがある場合は面倒なことになりそう

11 :デフォルトの名無しさん:2015/08/06(木) 19:30:52.64 ID:oUBwSLmn.net
単にWM_SIZEを使えばいいのでは
確かWindows98あたりでサイズ変更中に描画を更新するオプションができて
WM_SIZINGのように使えるようになった

12 :デフォルトの名無しさん:2015/08/06(木) 21:35:17.53 ID:SdwUOFG4.net
WM_NCCALCSIZE送ったら計算してくれなかったっけ

13 :片山博文MZ ◆T6xkBnTXz7B0 :2015/08/07(金) 15:57:03.53 ID:UeH7dSGn.net
MAKEROP4(SRCCOPY,0xED0000)
↑何だこれ?

14 :デフォルトの名無しさん:2015/08/07(金) 18:20:35.84 ID:5Zt0WqrR.net
ググレカス

15 :9:2015/08/07(金) 23:44:31.50 ID:AvOHJMxe.net
>>10
その方法でいけました!
これでウィンドウスタイルに依存せずにWM_SIZINGでクライアント領域を取得できるようになりました。
ありがとうございました!

>>11
やりたいことはクライアント領域のアスペクト比を固定する処理で、
最初はWM_SIZEでやってたんですが、
何だかぎこちない動きになってしまったので、調べていたらWM_SIZINGの存在を知り、
そちらでやると滑らかな動きになったのでWM_SIZINGで何とかしたいと思った次第です。

>>12
ご助言ありがとうございます。
今回は>>10さんの方法で対処できましたが、
教えていただいたWM_NCCALCSIZEを使う方法についても調べてみます。

16 :デフォルトの名無しさん:2015/08/09(日) 21:51:12.54 ID:nWjgkEEO.net
i7 2600Kみたいな4コア8スレッドのCPUで、プロセスのアフィニティを変更する時
8ビットをそれぞれ1論理コアに対応させて使う論理コアを指定しますが、
その時に1と2が1つの物理コアに対応してるのでしょうか?
それとも1と5が1つの物理コアに対応してるのでしょうか?

17 :デフォルトの名無しさん:2015/08/09(日) 22:50:57.54 ID:nd2w8Mp+.net
どれが物理コアかなんて区別はないよ
ゲームで物理4コアのi5が好まれる理由もそれ

18 :デフォルトの名無しさん:2015/08/09(日) 23:49:21.06 ID:nWjgkEEO.net
>>17
ちょっと回答の意味がわからないです
どのビットがどの物理コアに割り当てられるかは変動的で決まってない、ということですか?
i7のスレッド2倍化は1つの物理コアの余ってる時間に割り込ませるものなので、
確実に1つの物理コアを空けたいんです。なので同じ2つの論理コアを不使用にさせるにしても、
8ビットあるうち例えば1|2を休ませるか、1|16を休ませるかの、どっちかが1つの物理コアを確実に休ませる指定になると思うんです
(ビット1と2がセットで1物理コア、またはビット1と5がセットで1物理コアとなっているかのどっちかだと想像してます)
その割り当てが知りたいんです
熱対策や故障コアのために1つの物理コアを確実に開けたいんだと読み替えてもらっても結構です

19 :デフォルトの名無しさん:2015/08/10(月) 00:56:39.57 ID:sjbJ+sY3.net
>>18
(俺は>>17氏ではないが)
https://msdn.microsoft.com/ja-jp/library/windows/desktop/ms686223
のコメントには、以下の3通りの主張がされている(ように思われる)
1. >>16の後者だ(…と言う前提で書いてあるMSの記事がある)
2. いや全く当てにしてはならない
3. BIOSで事実上>>16の前者に設定されてる

ひとまずご自身で内容を吟味されたし。

20 :デフォルトの名無しさん:2015/08/10(月) 01:25:26.47 ID:Yz/DBb/r.net
もう10年以上前の話ですが Prestonia XEON プロセッサを2個搭載できるマザボで Hyper-Threading
を ON にしたときどの仮想プロセッサがどの物理プロセッサに対応付けられているのか気になって調べた
ところ 1, 3 が一つの物理プロセッサ、2, 4 がもう一つの物理プロセッサに対応してました。
比較的重いプログラムを2つ走らせ、タスクマネージャでアフィニティーマスクの設定を変えながら
ファンコントローラーの温度計測値で物理プロセッサの温度を読み判断しました。

ただ、こういうのは >>19 の 2 のように、はっきり決められた事ではないんじゃないかなと思ってます。

21 :デフォルトの名無しさん:2015/08/10(月) 05:14:15.39 ID:joKVIITR.net
APIのスレで聞くことじゃないな

22 :デフォルトの名無しさん:2015/08/10(月) 12:40:35.44 ID:a4ap/1LI.net
>>21
APEだから仕方ない

23 :デフォルトの名無しさん:2015/08/10(月) 15:31:07.76 ID:Vh7AZwN0.net
自プロセスを呼び出した親プロセスEXEのフルパスを取得したいのですが、
親プロセスは自プロセスを呼び出したら即終了してしまいます。

なので、Process32First()などで情報を取得しようにもその時には列挙されません。

別の監視プロセスを用意するなりの対処法はあるでしょうが、自プロセス
だけで親プロセスを知る方法はありませんか?

24 :デフォルトの名無しさん:2015/08/10(月) 15:55:46.59 ID:5q1c3acf.net
自プロセスを呼び出す際に親プロセス(?) のフルパスを渡せばいい

25 :デフォルトの名無しさん:2015/08/10(月) 16:36:29.46 ID:Vh7AZwN0.net
どうもすみません。
前提条件として、親プロセスの修正は不可能です。

26 :デフォルトの名無しさん:2015/08/10(月) 16:52:54.44 ID:HDdiOC7r.net
親プロセスを実行しているのはだれ?

27 :デフォルトの名無しさん:2015/08/10(月) 16:55:45.28 ID:5q1c3acf.net
修正不可能な親プロセスは赤の他人
親プロセスの定義は?

28 :デフォルトの名無しさん:2015/08/10(月) 20:07:24.73 ID:8ijckzev.net
スレチは氏ね

29 :デフォルトの名無しさん:2015/08/10(月) 21:36:23.15 ID:65tjAOy9.net
親プロセス名を渡さないときは強制終了すればいい

30 :デフォルトの名無しさん:2015/08/10(月) 21:39:02.42 ID:/eMcOwxL.net
馬鹿なことやってないでまともな設計しろよ
質問箱と尻拭い相談所はちげーぞ
てめえのケツはてめえで拭け

31 :デフォルトの名無しさん:2015/08/10(月) 21:49:23.32 ID:k4VnlTc/.net
ケツ…!!

  ( ゚д゚ ) ガタッ
  .r   ヾ
__l_l / ̄ ̄ ̄/_
  \/    /

32 :デフォルトの名無しさん:2015/08/10(月) 21:57:46.69 ID:joKVIITR.net
親のインスタンスが二つ以上いることは考えにくいから
ウィンドウクラスで検索すれば特定できるかも知れない

33 :デフォルトの名無しさん:2015/08/10(月) 22:35:38.71 ID:Vh7AZwN0.net
不正コピーされたインストーラーでインストールされた場合、インストール直後に
インストーラーから起動されたプロセスからインストーラーを特定したかったんです。
フルスキャンする訳にも行かないし。

Process32First()とか使ってフルパスを得るところまで作って、インストーラーが
終了していることに気付いた次第で代替案を探していました。

ここまで詳しい経緯は長すぎ産業でOKと思ったので省略してました。

無理そうですね。
どうもありがとうございました。

34 :デフォルトの名無しさん:2015/08/10(月) 23:24:56.99 ID:oSHGrBYa.net
初歩的な質問なのですが、教えてください

Windows VISTA環境で
「PEP K32GetProcessMemoryInfo が
DLL KERNEL32.dll から見つかりませんでした」と表示されました

いろいろ調べた結果、WIN7以降とは異なり
VISTAのkernel32.dll内部には、K32GetProcessMemoryInfoは存在せず
その代わり、旧来のpsapi.dll内部に、GetProcessMemoryInfoがあると分かりました

そこでpsapi.dllで代用するため、以下の式を追加したいのですが、その先が分かりません

#ifndef PSAPI_VERSION
  #define PSAPI_VERSION 1
  #pragma comment (lib, “PSAPI.Lib”)
#else
  #pragma message (“defined PSAPI_VERSION *************”)
#endif

以上の式をexeファイルに追加するにはどうすればいいのでしょうか
単純にバイナリエディタで開いただけでは無意味な英数字が並んでいるだけでした
よろしくお願いします

35 :デフォルトの名無しさん:2015/08/10(月) 23:34:24.57 ID:5q1c3acf.net
自分のプログラムならソースに追加すればいいだろ
他人のプログラムなら改竄するな

36 :デフォルトの名無しさん:2015/08/10(月) 23:44:38.23 ID:AMzePwd7.net
不正である事を確認しようとするより正規である事を確認するほうが楽

37 :デフォルトの名無しさん:2015/08/10(月) 23:52:40.03 ID:4jBvfEp+.net
スレチの説教好きだねぇ

38 :デフォルトの名無しさん:2015/08/11(火) 07:35:15.78 ID:LfA/skDI.net
>>33
APIフックは?

39 :デフォルトの名無しさん:2015/08/11(火) 09:56:56.39 ID:sbfi/bwK.net
常駐して監視するのでもなければ、
親プロセスが死んでいる前提なら無理。親プロセスIDしか情報が無い上にそのIDすら親の死亡時に付け替えられる。

40 :デフォルトの名無しさん:2015/08/11(火) 14:59:02.28 ID:dsDvvWMK.net
よく使うアプリの一覧とかあるじゃん。
実行アプリの履歴がレジストリかどこかに残ってないの?

41 :デフォルトの名無しさん:2015/08/11(火) 15:36:53.18 ID:HguuZcyi.net
そういえば一時期、Office2013にも似たようなカーネルエラーが頻発してたけど
あれも理論上は回避可能ということか

解決策としては
@exeにpsapi.dllのAPIを使用するよう指定ソースを組みこむ
AVISTA用の拡張カーネルを作成して、kernel32.dllにK32GetProcessMemoryInfoを追加する

いつかXPやVISTAにも某黒翼猫氏のような救世主が現れて、拡張カーネルが用意されるのかしら

42 :デフォルトの名無しさん:2015/08/12(水) 23:53:20.47 ID:G8qcToBK.net
どっかでフックしてIAT書き換るかDLL挿げ替えかな

43 :デフォルトの名無しさん:2015/08/14(金) 07:54:19.40 ID:vjnCwLdg.net
>>33
ただでさえインストーラは環境依存のクレーム地獄になりがちなのに
おかしなことをするんじゃない

>>34
きさまぷろぐらまじゃないな
帰れ

>>41
>救世主が現れて、拡張カーネルが用意されるのかしら
Windows Update サーバーを乗っ取ることが前提かな

よし全機撃墜

44 :デフォルトの名無しさん:2015/08/14(金) 11:01:39.44 ID:IL9iPg3p.net
アホはお帰りください

45 :デフォルトの名無しさん:2015/08/14(金) 11:03:06.69 ID:2p3m0KlY.net
みんな帰ろう

46 :デフォルトの名無しさん:2015/08/14(金) 11:27:26.86 ID:WAFSmjQt.net
そして誰もいなくなった

47 :デフォルトの名無しさん:2015/08/14(金) 13:17:55.88 ID:Q/AtP1Be.net
7 x 7 = 49

48 :片山博文MZ ◆T6xkBnTXz7B0 :2015/08/14(金) 21:49:09.41 ID:qMkXaiUF.net
IATを書き換えて実行ファイルを再構築できるようなハッカーはここには居ない

49 :デフォルトの名無しさん:2015/08/14(金) 22:14:26.57 ID:2p3m0KlY.net
それが存在しないのは、それが必要ないからであることが多い

50 :デフォルトの名無しさん:2015/08/14(金) 22:31:22.18 ID:WAFSmjQt.net
お金は必要だけど、オレの財布にはあまり存在しないという例がもある

51 :デフォルトの名無しさん:2015/08/14(金) 22:35:47.25 ID:qMkXaiUF.net
>がも

はい、減点。

52 :デフォルトの名無しさん:2015/08/14(金) 23:04:18.82 ID:2p3m0KlY.net
なんでID晒して名前隠してんの?
はい、減点。つーか0点。

53 :デフォルトの名無しさん:2015/08/15(土) 02:12:39.84 ID:Krwjugvl.net
まあ大概のことは「片山さんだから仕方ない」で済ませられる程度だろ

54 :デフォルトの名無しさん:2015/08/15(土) 04:44:29.63 ID:Yk3bSSFS.net
>片山博文MZ ◆T6xkBnTXz7B0

はい、減点。

55 :デフォルトの名無しさん:2015/08/15(土) 07:15:55.06 ID:7sJYyU2X.net
>>48
APIフックする過程でIAT云々はさわるだろうけど
実行ファイルを再構築なんてできたらSAOの世界じゃね

56 :デフォルトの名無しさん:2015/08/15(土) 08:04:09.11 ID:lGrRobx2.net
岩手朝日テレビがどうしたって?

57 :デフォルトの名無しさん:2015/08/15(土) 08:25:24.67 ID:SxlpnIr4.net
メモリ上の再構築は共有セクションの扱い以外は別に難しくはない。改変チェックが入っている場合は潰す必要があるが。

58 :片山博文MZ ◆T6xkBnTXz7B0 :2015/08/18(火) 00:37:16.25 ID:7ZRpZn5E.net
>>57
その辺を詳しくブログに書いて下さい、お願いします。

59 :デフォルトの名無しさん:2015/08/18(火) 19:00:36.45 ID:eHhh5Jxo.net
>>56
MIT
.

60 :デフォルトの名無しさん:2015/08/18(火) 21:51:06.26 ID:LehTl7m4.net
一つIMEで質問がありますが、ここで良いですか?

SetInputScope()でIME設定をして、IME問い合わせGetInputScope()?があってもいいと思いますが
Win8では見当たりません、

TF_GetInputScope()があったのですが使えるのか使えないのか…。

どなたか知っている方ヒントだけでも教えて下さい!

61 :デフォルトの名無しさん:2015/08/21(金) 10:27:50.79 ID:v385Kh+A.net
inet_ntoa ってchara*返すけどWCHAR*返すのおしえてよ

62 :デフォルトの名無しさん:2015/08/21(金) 10:45:39.38 ID:c/THd06T.net
InetNtop

63 :デフォルトの名無しさん:2015/08/21(金) 17:48:25.85 ID:NHu7az4C.net
VC++でWin32APIを使いゲームを制作しようと思っています。
http://zahyou.6.ql.bz/cgame/

↑のサイトを参考に簡単なゲームをつくってみたのですが

効果音を鳴らすとそれまで流れていたBGMが少し止まってしまいます。

BGMと効果音を止まることなく流すにはどうすればいいでしょうか?

使用している関数はmciSendCommandです

64 :デフォルトの名無しさん:2015/08/21(金) 18:03:56.39 ID:106+9rwN.net
MCI だと止まる

65 :デフォルトの名無しさん:2015/08/21(金) 18:11:32.53 ID:c/THd06T.net
>>63
同期・非同期

66 :デフォルトの名無しさん:2015/08/21(金) 18:12:03.16 ID:106+9rwN.net
waveoutを使うといいです

67 :デフォルトの名無しさん:2015/08/21(金) 18:12:28.78 ID:106+9rwN.net
あとダブルバッファリンもした方がさらに良くなります

68 :デフォルトの名無しさん:2015/08/21(金) 21:00:41.93 ID:Tu1fJmAa.net
優しいなお前ら

69 :デフォルトの名無しさん:2015/08/21(金) 21:04:35.93 ID:x7vlwrmr.net
子供は1回1錠な

70 :デフォルトの名無しさん:2015/08/21(金) 21:15:40.67 ID:AXgC1r2C.net
痛風の発作が出ているときにバッファリンを飲むと悪化します

71 :デフォルトの名無しさん:2015/08/22(土) 03:43:30.96 ID:R1h6gxCt.net
バファリンは、胃にやさしくない成分と、頭痛に効かない成分とで出来ています。

72 :デフォルトの名無しさん:2015/08/22(土) 08:20:07.85 ID:cPJQ97tL.net
おい子供にバファリン使うな
小児用バファリン使え

73 :デフォルトの名無しさん:2015/08/22(土) 09:44:24.66 ID:OcPmzwVT.net
え、ワーファリン?

74 :デフォルトの名無しさん:2015/08/22(土) 10:06:15.94 ID:fLuaARar.net
>>66
効果音をwaveoutやmidioutにしたところBGMに支障なく流すことができました。
本当にありがとうございます。

75 :デフォルトの名無しさん:2015/08/27(木) 12:14:42.27 ID:RnCy/tzb.net
C#でアプリを作ってはいるんですがwindowsAPIを使ったことがほとんどありません
windowsAPIを覚えたいんですが、どういうアプリを作りながら覚えたらいいでしょうか?

76 :デフォルトの名無しさん:2015/08/27(木) 12:21:31.54 ID:Eaj+az2t.net
Hello Windows

77 :デフォルトの名無しさん:2015/08/27(木) 13:10:33.61 ID:0465F1pc.net
C#だけで閉じこもってるなら必要ないだろ
使うならCくらいは読めて書けるようにならないと

78 :デフォルトの名無しさん:2015/08/27(木) 13:35:56.67 ID:RnCy/tzb.net
>>77
Cの読み書きはある程度はできます
windowsAPIを使えるようになるまですごい時間がかかりそうで・・・
何か作りながら覚えたいんですがむずかしいでしょうか?

79 :デフォルトの名無しさん:2015/08/27(木) 13:43:02.13 ID:Eaj+az2t.net
作りながらじゃなきゃ覚えられない。まずはこれ。
https://msdn.microsoft.com/ja-jp/library/windows/desktop/ff381409(v=vs.85).aspx

80 :デフォルトの名無しさん:2015/08/27(木) 13:43:17.06 ID:K9LHu2e1.net
>>78
自分が過去につくったC#アプリをWinAPIだけで再現してみたら?

81 :デフォルトの名無しさん:2015/08/27(木) 19:00:26.66 ID:tpdP6kqy.net
SetLayeredWindowAttributes みたいな感じで透過じゃなくフォーム全体を暗くしたりするAPIあったら教えて下さいね

82 :片山博文MZ ◆T6xkBnTXz7B0 :2015/08/27(木) 19:08:34.43 ID:oqQcnINP.net
>>81
p%透過にしてウィンドウの下に黒い別のウィンドウを重ねる。

83 :デフォルトの名無しさん:2015/08/29(土) 01:24:22.96 ID:rZ+W6Zab.net
>>78
作りながら覚えるなら簡単なアプリを作ればいいじゃん

ありきたりだけど例を挙げれば
 ・キッチンタイマー
 ・アラーム時計
 ・カレンダー
 ・電卓
 ・画像ビューア
 ・テキストエディタ
 ・音楽プレイヤー
上記の中で自分が作れそうな簡単そうなものを選んで作ればいい

最低限の機能を備えたものが出来たらリファクタリングやバージョンアップするといい

84 :デフォルトの名無しさん:2015/09/06(日) 17:45:58.22 ID:cLh5ZyHa.net
中途半端なAPIプログラマなので、C#の生産性に勝てない。

鍛えればなんとかなるのかな?

85 :デフォルトの名無しさん:2015/09/06(日) 17:50:23.11 ID:3Oih9VSM.net
C#キモい。
WinAPI一筋だ。

86 :デフォルトの名無しさん:2015/09/06(日) 18:20:23.46 ID:vWlWpWil.net
レイヤーが違う
C#だってWinAPI使えるで

87 :デフォルトの名無しさん:2015/09/06(日) 21:35:38.22 ID:ANWjJC8V.net
C++で、画面や文字列を簡単に扱えれば…
メッセージループとか、未だにわからないです。

洋書でもいいので、おすすめ書籍ないですか?

88 :デフォルトの名無しさん:2015/09/06(日) 21:45:59.52 ID:GpoQks5m.net
MFCとかWTL使っとけば
おすすめ書籍なら理解できるとか言われて本当かよ〜?って思うぜ
メッセージループすら理解できてない時点で

89 :デフォルトの名無しさん:2015/09/06(日) 23:34:08.57 ID:zJiA8SF0.net
メッセージポンプかい?

GUIアプリは、イベントドリブン(駆動)だから、
何かのイベントが起こるのを待つ、受け身の作り

イベントキューがあって、
そこにマウス操作やキーボードのイベントが投入されると、
そのキューから順番に、
イベントが取り出されて、処理される

自分で処理を書きたい、イベントの処理だけをOverrideする。
例えば、OnMouseClick()など。
Overrideしないイベントは、OSの既定の処理がされる

ただし、画面更新のイベントは、優先度が低いため、
一番最後に処理される

60フレームなら1秒間に60回、
30フレームなら1秒間に30回、画面が描かれる

90 :デフォルトの名無しさん:2015/09/07(月) 09:55:01.12 ID:ArTvcv08.net
ダイアログ/フォーム アプリケーションなら
ウインドウに直にデータを突っ込んで設計のことをあまり考えなくて済むよ
ぐふふ

91 :デフォルトの名無しさん:2015/09/07(月) 17:17:44.71 ID:ifJ6MFQh.net
ダイアログアプリケーションなら、なんとか・・

「ぐふふ」が気になる

92 :デフォルトの名無しさん:2015/09/07(月) 19:20:08.77 ID:kLL2g65z.net
目的:
 ダイアログ上に、"決定"ボタン、エディットコントロールを配置しています。
 エディットコントロールで"Enter"キーを入力された場合に、
 "決定"ボタンを押されたことにしたい。
やってみてダメだったこと:
 ダイアログのウインドウプロシージャに
  WM_KEYDOWN
 を追加しVK_ENTERを処理するコードを書いた。
  ↓
 どうやらダイアログのウインドウプロシージャにはWM_KEYDOWN自体がこない模様。

というところで困っています。
質問1
どのようにすれば目的の内容を実現できますか?
質問2
MFCのSubclassDlgItemの変わりになるようなものはありますか?

93 :デフォルトの名無しさん:2015/09/07(月) 19:30:42.31 ID:8kmrGT2g.net
>>92
IsDialogMessage

94 : ◆QZaw55cn4c :2015/09/07(月) 19:42:51.28 ID:w2psTc+y.net
>>92
それはエディットコントロールのウィンドウプロシージャで捕まえるもの
MFC は知らんが
GetWindowLong(hwndEdit, GWL_WNDPROC);

SetWindowLong(hwndEdit, GWL_WNDPROC, (LONG)callbackFunction);
でどうとでもなる,2〜3年に一回質問される FAQ だね

95 :デフォルトの名無しさん:2015/09/07(月) 19:43:17.81 ID:yWiuJpNl.net
>>92
回答2
CWnd::SubclassDlgItem() のソースを参照すると、GetDlgItem(), SetWindowLongPtr() 等を
使って関数に仕上げているだけなコトがわかる。

96 :デフォルトの名無しさん:2015/09/07(月) 20:02:17.05 ID:8kmrGT2g.net
>>92
それと>>93の場合決定ボタンをBS_DEFPUSHBUTTONにしてBN_CLICKEDを処理ね

97 :デフォルトの名無しさん:2015/09/07(月) 20:56:39.35 ID:kLL2g65z.net
>>93-96
すいません。
回答にたどり着けなくてコード貼りました。
見よう見まねでやっているので色々問題あるかもしれません。
 http://codepad.org/QAk329mZ
上記コードのWinProc、DlgProcともWM_KEYDOWNがこない状況です。
どんな感じに直せばいいでしょう?

98 :デフォルトの名無しさん:2015/09/07(月) 21:23:33.51 ID:8kmrGT2g.net
>>97
モーダルダイアログ、モードレスダイアログで調べて

99 :デフォルトの名無しさん:2015/09/07(月) 21:36:48.33 ID:P3iiIg+v.net
アニメーションカーソルについて質問です。
アニメーションカーソルを自分でHDCに描画したい場合どうすればいいですか?
作ってみたんですが、アニメーションカーソルの総数がうまく取得できないのとカーソルの登録を選べません。
アニメーションカーソルのフォーマットは拡張?された48x48っぽいものです。
島風 マウスカーソル 通常.aniは、ニコニコのリンクにあった素材です。
HICON hIcon;SHFILEINFO sfi;IImageList *pImageList;
BOOL MyInit(){hIcon = 0;
if (!SHGetFileInfo(L"島風 マウスカーソル 通常.ani", 0, &amp;sfi, sizeof(sfi), SHGFI_SYSICONINDEX)) return false;
if (SHGetImageList(SHIL_EXTRALARGE, IID_IImageList, (void**)&amp;pImageList) != S_OK) return false;
if (pImageList->GetIcon(sfi.iIcon, ILD_TRANSPARENT, &amp;hIcon) != S_OK) {hIcon = 0;return false;}
pImageList->Release();return TRUE;}
void MyFree(){if (hIcon) DestroyIcon(hIcon);}
void myDraw(HDC hdc,int number){DrawIconEx(hdc, 0, 0, hIcon, 0, 0, number, NULL, DI_NORMAL);}
よろしくお願いします。

100 :デフォルトの名無しさん:2015/09/07(月) 21:48:51.98 ID:yWiuJpNl.net
>>97
わからないから添削しろ、では芸がない。

そもそも、

>エディットコントロールで"Enter"キーを入力された場合に、
>"決定"ボタンを押されたことにしたい。

は、Windowsプログラムとして正しいのか考えてみよう。

ex) 漢字変換中に誤って2度 Enter キーを押したら誤動作する とかね。

101 :デフォルトの名無しさん:2015/09/07(月) 21:57:06.07 ID:yWiuJpNl.net
>>97
書き忘れた。

if (!hPreInst) { if (!RegisterClass(&iWCls)) return FALSE; }

みたいなコトは今はやらない。Win16 プログラムでないかぎり、hPreInst は常に NULL。

102 :92:2015/09/07(月) 22:04:52.49 ID:kLL2g65z.net
>>94
すいません。↑これでいけました。
http://codepad.org/GK39S71J

↑最初WM_KEYDOWNの中でVK_RETURNを処理して確認していたのですが、
EDITTEXTではEnterKeyが効かないみたいで、
"上手くいかない"と判断してました。
VK_RETURNが効かない件は別問題なので、これから調査します。
とりあえず >>92 の質問は解決しました。どうもありがとう。

103 :99:2015/09/07(月) 22:58:10.86 ID:P3iiIg+v.net
日本語が変だったので訂正です。
やりたいこと。
・アニメーションカーソルの総数を取得したい。
・アニメーションカーソルの画像をhDCにイメージ番号を指定して描画したい。
先ほど記述したソースだと、イメージ番号0番のみが表示されるだけみたいです。
素材の場所は ttp://www1.axfc.net/u/3454899 DLパス⇒かんこれ
です。
ご教授お願いします。

104 :92:2015/09/07(月) 23:33:31.78 ID:kLL2g65z.net
度々すいません。
>>102 のVK_RETURNが効かない件解決したので一応下記のソース報告します。
http://codepad.org/eniL7aC6
EDITTEXTのスタイルにES_MULTILINEを追加すればいいみたいです。
また >>92 の質問2ですが、意図としては上記のEditProc見たいな事をやりたかったので、
これも解決しました。

>>98
今回はモーダルの予定ですので必要ないですが、
今後のために調べときます。

>>100
> Windowsプログラムとして正しいのか
については少し考えて見ます。

105 :片山博文MZ ◆T6xkBnTXz7B0 :2015/09/07(月) 23:42:58.94 ID:wiJUwYLf.net
>>103
外部ライブラリ使う、RIFF形式ファイルとして解析する、以外に簡単な方法は無かったはず

106 :片山博文MZ ◆T6xkBnTXz7B0 :2015/09/07(月) 23:50:26.92 ID:wiJUwYLf.net
アイコンの抽出はExtractIcon,ExtractIconEx,IExtractIconと
いろいろサポートしてるのにアニメカーソル抽出のサポートは貧弱

107 :デフォルトの名無しさん:2015/09/08(火) 02:00:50.39 ID:WpGjOpsu.net
>>92
>エディットコントロールで、"Enter"キーを入力された場合に、
>"決定"ボタンを押されたことにしたい
この仕様自体が、おかしいような気がする

筋論で言うと、
1. エディットコントロールで、キーイベントを取る
2. エディットコントロールから、
その親であるダイアログにアクセスする
3. ダイアログから、その子である決定ボタンに、
ボタンを押すイベントを投入する
4. 決定ボタンで、既定のボタンが押されたイベントを処理する

親 ダイアログ
子 エディットコントロール
子 決定ボタン

こういう階層では、子1から子2へは(兄弟間では)、
直接アクセスできないので、
子1 → 親 → 子2 という経路でアクセスする

108 :デフォルトの名無しさん:2015/09/08(火) 02:12:44.72 ID:WpGjOpsu.net
>>99
SHGetImageList で、連続するアニメの、
複数のイメージが取得できているの?

取得できないのなら、プロジェクトのアセットのパスに、
正しく取得できるように置く

また画像は、正しいファイル名の連番とするなど、
正しい形式で並べる
(もし連番としている場合の話です。
漏れはどういう形式か、よく知らないけど)

109 :99:2015/09/08(火) 08:39:26.20 ID:M6zfIWdf.net
>>106,108
アニメーションカーソルは複雑なんですね。
SHGetImageListそのものが使うの初めてだったのでよくわかってないです。
情報集めて、アニメーションカーソルの制御どうするか考えます。
外部ライブラリーとかで、組み込みフリー的な便利なものあればいいですが。。
あとは、MSDNあたり調べてみるかなぁ。。

110 :デフォルトの名無しさん:2015/09/08(火) 08:50:14.73 ID:uJSOxUGR.net
最初にMSDNあたれよバカ

111 :デフォルトの名無しさん:2015/09/08(火) 09:17:02.10 ID:S6LsUKWF.net
>>104
そんな事しなくても
16行目 PUSHBUTTON → DEFPUSHBUTTON にするだけで
エンター押した時にWM_COMMAND IDC_SET BN_CLICKEDが発生するから
EditProcもGet/SetWindowLongも不要

112 :デフォルトの名無しさん:2015/09/09(水) 11:52:53.38 ID:zLKTZ6N+.net
>>99
そもそも最終的に何がしたいの?
描画しただけで終わりじゃないんじゃないの?
条件後出しして嫌がられるパターンにみえる

113 :デフォルトの名無しさん:2015/09/09(水) 14:46:05.94 ID:UbDBGCr0.net
win32の色んな意味で時代遅れな関数群を使うのが億劫になって来た。

114 :デフォルトの名無しさん:2015/09/09(水) 16:44:51.77 ID:61epwTm+.net
クラス化しないで直呼び?

115 :デフォルトの名無しさん:2015/09/09(水) 18:10:55.30 ID:tEPd2G1m.net
"ゴミ箱にいれないで完全に削除する"の意味でNukeという用語を使っているMSを告訴しよう
9条マンセー

116 :デフォルトの名無しさん:2015/09/10(木) 10:35:49.99 ID:pvKn3bkq.net
アプリケーションキューに入っているメッセージが消えるタイミングは普通に考えてプロシージャの処理が完了した後ですよね?
誰か確実に知りませんか

117 :デフォルトの名無しさん:2015/09/10(木) 10:40:17.77 ID:DGBnp3I7.net
WM_PAINTを除いて GetMessage() が削除するんじゃなかったっけ。

118 :デフォルトの名無しさん:2015/09/10(木) 11:19:27.31 ID:pvKn3bkq.net
>>117
調べたらそうっぽいですね
っていうか普通に考えたらそうですよね
ありがとうございまいた

119 :デフォルトの名無しさん:2015/09/10(木) 23:43:53.85 ID:Lt3YsJ/Z.net
WM_PAINT?
BeginPaintを呼ばないとループするって話?

120 :デフォルトの名無しさん:2015/09/10(木) 23:53:28.53 ID:DGBnp3I7.net
WM_PAINTは GetMessage() を実行した時点では削除されず
ウィンドウプロシージャでの処理が終了した時点で消える という話

121 :デフォルトの名無しさん:2015/09/11(金) 10:56:33.16 ID:IOXejlDX.net
SetThreadAffinityMaskやSetThreadIdealProcessorを使用して
CPUコアの割り振りを明示的にしないとマルチコアに最適化されたアプリケーションとは言えない?

122 :デフォルトの名無しさん:2015/09/11(金) 11:17:24.29 ID:GHVwR1ig.net
>>121
そんなのやらなくてもosが勝手にやってくれるだろ

123 :デフォルトの名無しさん:2015/09/11(金) 13:09:56.43 ID:WE/d+c/8.net
物理的にマウスボタンが押されている状態で、
SendInput等のAPIによってマウスのボタンを上げられた状態であることを判定する方法ってありますか?

124 :デフォルトの名無しさん:2015/09/11(金) 13:29:49.05 ID:dcIIi90q.net
どういう場面で必要になるのかな?

「マウスボタンは物理的に押されている」
  ↓
「SendInput等によってマウスのボタンが離されているよう偽装している」
  ↓
「このたわけモノが! 実際には押されているだろ!?」←これを判定する方法でしょ?

125 :デフォルトの名無しさん:2015/09/11(金) 13:37:43.79 ID:WE/d+c/8.net
状況としてはですね、
自作アプリにマウス右ボタンを使った機能があるんですが
外部のマウスジェスチャー系の常駐アプリが右クリックを戻しているようなんです
GetKeyState/GetAsyncKeyState などでVK_RBUTTONの状態が取れません。

126 :デフォルトの名無しさん:2015/09/12(土) 00:01:38.57 ID:t9wfuOfk.net
そういうのは競合状態といってな
どっちかを無効にするもんだよ
無理になんとかしようとしても時間の無駄

127 :デフォルトの名無しさん:2015/09/12(土) 08:59:57.32 ID:lTmP7o65.net
ボクの知らない常駐アプリを同時に使わないでくださーい
ってのは割りと当たり前のこと

だけど初心者にはその主張は通用しないので
自アプリの起動時に常駐アプリの有無をチェックして警告を出すのがスマート

128 :デフォルトの名無しさん:2015/09/12(土) 09:15:16.54 ID:bK+LJe1a.net
>>125
右クリックのマウスジェスチャーにマウスを右クリックする機能を割り当てて解決

129 :デフォルトの名無しさん:2015/09/12(土) 09:26:53.57 ID:OKvTRLUv.net
>>122
そうなんかありがとう

130 :sage:2015/09/17(木) 15:36:32.51 ID:rzmccn0E.net
Win32APIを使ってテキストファイルから1文字だけ取り出そうとしているのですが、できません。
アドバイスもらえないでしょうか?
以下ソースコードです。
=====ここから=====
int _tmain()
{
HANDLE hFile = NULL;
TCHAR *strFileName = 0;
TCHAR buff = 0;
DWORD byte_read = 0;

_tsetlocale(LC_ALL, TEXT("ja"));

// 読み込むファイルのフルパス。
strFileName = TEXT("D:/visualStudio/test/test3.txt");

131 :sage:2015/09/17(木) 15:37:04.86 ID:rzmccn0E.net
// 読み込むファイルのファイルハンドル。
hFile = CreateFile(
strFileName, GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL
);
// ファイルハンドルのエラー処理。
if (hFile == INVALID_HANDLE_VALUE || hFile == NULL) {
_tprintf(TEXT("hFile error.\n"));
_gettchar();
return 0;
}

// ファイルから1文字読み込む。
ReadFile(hFile, &buff, (DWORD)sizeof(TCHAR), &byte_read, NULL);

// 読み込んだ1文字を表示。
_tprintf(TEXT("%c\n"), &buff);

CloseHandle(hFile);

_gettchar();
return 0;

}
=====ここまで=====

132 :デフォルトの名無しさん:2015/09/17(木) 15:49:41.02 ID:U6MHK03R.net
×_tprintf(TEXT("%c\n"), &buff);
○_tprintf(TEXT("%c\n"), buff);

133 :デフォルトの名無しさん:2015/09/17(木) 15:53:01.19 ID:b2VOzBjq.net
test3.txtの文字コードも見てみてね

134 :デフォルトの名無しさん:2015/09/17(木) 15:53:11.74 ID:9BEBkVT9.net
ファイル自体読み込めてないんだろう

135 :130:2015/09/17(木) 16:06:25.74 ID:rzmccn0E.net
レスありがとうございます。
>>132
>>133
&buff→buffに変更してもコマンドプロンプトには?しか表示されないままです。
test3.txtはサクラエディタを使って、Unicode、改行文字コードCRLFで保存しています。
test3.txtの内容は1行目にabcという文字列があります。

>>134
temp = ReadFile(hFile, &buff, (DWORD)sizeof(TCHAR), &byte_read, NULL);
// 読み込みのエラー処理。
if (temp == 0) {
_tprintf(TEXT("ReadFile error.\n"));
_gettchar();
return 0;
}
としてみましたが、特にエラーは出てないようです。

なぜできないのか、心当たりが無くなってしまって途方に暮れています。
ちなみに1文字ではなく、文字列全体を取得することならできました。

136 :デフォルトの名無しさん:2015/09/17(木) 16:15:22.60 ID:Nh2CPZLE.net
BOMのせいに決まってんじゃん

137 :130:2015/09/17(木) 16:26:57.31 ID:rzmccn0E.net
>>136
ありがとうございます!
試してきます!

138 :デフォルトの名無しさん:2015/09/17(木) 16:50:41.97 ID:b2VOzBjq.net
>>137
まず%cじゃなく%02Xで値見てみる

139 :130:2015/09/17(木) 17:23:07.39 ID:rzmccn0E.net
>>138
つかめてきました!
ありがとうございます!

結局引っかかっていたのはUnicodeのBOMが大きな要因でした。
助かりましたorz

140 :デフォルトの名無しさん:2015/09/18(金) 20:40:35.95 ID:BAj7A7iY.net
VC++2012でプログラミングをしています
win32APIでmidの音声を流そうと思い、
↓のサイトを見つけました。
http://eternalwindows.jp/winmm/midi/midi10.html
コンパイルしたところ何も起きませんでした。
調べたところ84行目の
midiOutOpen関数を使ったところで戻り値(mr)の値がMMSYSERR_ERRORになっていたためだと思われます。
どうすればうまく再生できますか?

141 :デフォルトの名無しさん:2015/09/18(金) 20:51:59.51 ID:5egfmsiH.net
>>140
https://msdn.microsoft.com/ja-jp/library/windows/desktop/dd798476(v=vs.85).aspx
MIDIERR_NODEVICE
MMSYSERR_ALLOCATED
MMSYSERR_BADDEVICEID
MMSYSERR_INVALPARAM
MMSYSERR_NOMEM
のどれでもないの?

142 :デフォルトの名無しさん:2015/09/18(金) 21:55:21.54 ID:BAj7A7iY.net
>>141
調べてみたら不明なエラーと書かれていました

143 :デフォルトの名無しさん:2015/09/18(金) 21:57:15.78 ID:5egfmsiH.net
>>142
どこで調べるとそのMMSYSERR_ERRORのことが書かれているの?
あと MMSYSERR_ERROR であることはどうしてわかったの?

144 :デフォルトの名無しさん:2015/09/18(金) 22:03:48.69 ID:wagSxeCs.net
実際の値は何?

145 :デフォルトの名無しさん:2015/09/18(金) 22:05:51.25 ID:wagSxeCs.net
>>140
これか

VC++2012でプログラミングをしています win32APIでmidの音声を流そうと思い、 ↓...
tukareteruhitoさん
ttp://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14150460584

146 :デフォルトの名無しさん:2015/09/18(金) 22:17:00.89 ID:44vNChaT.net
つ を tu と表記されると、どうしても ちゅ と読んでしまう。。。

147 :デフォルトの名無しさん:2015/09/18(金) 22:25:24.12 ID:BAj7A7iY.net
>>143
以前たまたまコンパイラでMIDIERR_NODEVICE を右クリックして宣言へ移動をクリックしたところ
MMSystem.hにいろいろ載ってました
#define MMSYSERR_ERROR (MMSYSERR_BASE + 1) /* unspecified error */
>>144
1です

148 :デフォルトの名無しさん:2015/09/18(金) 23:21:06.71 ID:BAj7A7iY.net
>>140
書き足すのを忘れていました。
win7のパソコンではうまくいったのですが、win10の方のパソコンだとうまくいきません。
midiを鳴らすのにはソフトを入れたり、設定を変えないといけないのですか?

149 :デフォルトの名無しさん:2015/09/19(土) 00:44:50.98 ID:njZddJ5V.net
Win7,10は異なるシステムだよ

アプリ・デバドラ・ハードウェアなどが、
簡単に動くと思ったの?

150 :デフォルトの名無しさん:2015/09/19(土) 02:51:01.30 ID:oxCTiUGx.net
ドヤッ

が足りないぞ。
しかし的外れ。

151 :デフォルトの名無しさん:2015/09/19(土) 06:11:59.58 ID:z4P1u9xK.net
>>148
MSDN(>>141のリンク先)の一番下のコミュニティーの追加の所にも、
Windows10のmidiOutOpenは明らかに壊れてて常に1(MMSYSERR_ERROR)を返すって書かれてるな。
Windows10の不具合じゃないの。

152 :デフォルトの名無しさん:2015/09/19(土) 06:33:58.45 ID:rDYKlt+c.net
ありがとうございました

153 :デフォルトの名無しさん:2015/09/19(土) 07:10:53.65 ID:UO4hLF9u.net
MMSYSERR_ERROR1つでえらい突っ込まれようだな。
APIがそれのドキュメントに載ってない汎用的なエラーを返すなんてそんなに珍しいことでもないだろうに。

154 :デフォルトの名無しさん:2015/09/19(土) 14:23:45.31 ID:qGt1VSMn.net
ダイアログにある拡張コンボボックスの右側のボタンがちぎれて
一部表示されない。どうすればいい?

155 :デフォルトの名無しさん:2015/09/19(土) 15:41:27.60 ID:qGt1VSMn.net
事故解決。WS_BORDERが余分でした

156 :デフォルトの名無しさん:2015/09/24(木) 07:26:25.75 ID:1vbsv5/O.net
音と映像のコントロールソフト作ろうと思ってるんだけど、
WTL覚えた方が便利ですかね

157 :デフォルトの名無しさん:2015/09/24(木) 20:42:58.82 ID:wqNNiZah.net
有料の時点で萎える

158 :デフォルトの名無しさん:2015/09/24(木) 21:43:34.07 ID:KIOkH3Y/.net
>>156
C++を使えるなら便利

159 :デフォルトの名無しさん:2015/09/25(金) 02:29:42.77 ID:d9V+/CgL.net
>>158
マジですか覚えてみるよ

>>157
空ウインドウ作るまでは無料でできたけど
お金かかるの?

160 :デフォルトの名無しさん:2015/09/25(金) 07:48:00.36 ID:femLeyq9.net
>>159
WTLはExpressには入ってない。
でも、調べてみたら後から追加して使うことができるみたいだね。
>>159は有料版のVS?

161 :デフォルトの名無しさん:2015/09/25(金) 08:47:49.18 ID:d9V+/CgL.net
>>160
無料のVS2013 Communityですん
WinDDK追加して使ってる

162 :デフォルトの名無しさん:2015/09/25(金) 09:02:33.39 ID:ISU02i/F.net
Communityなら最初からATL入ってるから小細工要らんぞ?
おかげでWin32ゴリゴリ書きたい人には勧めやすくなった

NuGetにも登録されてるけど1年以上前の安定版だから2015のAppWizとかには対応してない
(レポジトリのは一応2015対応用の修正はされている)

163 :デフォルトの名無しさん:2015/09/25(金) 13:02:22.26 ID:x3Qy+zME.net
PIXELFORMATDESCRIPTOR structureの質問なのですが,
32ビット色深度で,32ビットz深度(24 + 8ステンシル)の書き方は
これであっているんでしょうか?あるいはこれも等価でしょうか?
というのも,初心者講座みたいなサイトだと,コメントの->後の数値に
設定されているものが多いんです.

0だと自動判定なのかなとか思ったんですが,MSDNでは0設定で自動的に
判定してくれるとは書いてないので・・・.
あとcolor shiftの説明も文献が全然見当たらないので,
憶測でbit位置のことかと思って,24, 16, 8, 0(ARGB)で設定しました.
表記がRGBAなのにARGBと並べたのは,「8, 16, 8, 8, 8, 0, 0, 0」と
設定している記事があったからです.
32の方は多いというわけはないのですが,そう書いてあるサイトがあるので不安になりました.
MSDN見る限りは24, 8の方が正しそうだなという感想です.

PIXELFORMATDESCRIPTOR pfd =
{

 24,  // color bitplane depth
 8, 16, // red   -> 0, 0
 8, 8, // green  -> 0, 0
 8, 0, // blue  -> 0, 0
 8, 24, // alpha  -> 0, 0
 
 24, // z buf depth.24bit.24bit + 8bit stencil. -> 32
 8, // stencil buf.

};

164 :160:2015/09/25(金) 19:29:22.01 ID:femLeyq9.net
>>161
ああ、Communityがあったな。
失礼した。

165 :デフォルトの名無しさん:2015/09/26(土) 21:57:31.31 ID:wwGWY9bl.net
俺、家でも会社のプロ使っているからCommunityさっぱり何だけど
ATL使ってWinプログラムってCommunityにはMFCは入ってないってこと?

166 :デフォルトの名無しさん:2015/09/26(土) 22:09:02.67 ID:vzGjXFWa.net
入ってるよ
インストール時に選択しないと入らないけど

167 :デフォルトの名無しさん:2015/09/26(土) 22:09:29.60 ID:7ELa66Bu.net
>>165
(少なくとも2015は)ATLとMFCの両方無料で入れられる

168 :デフォルトの名無しさん:2015/09/26(土) 22:10:27.46 ID:Wtpb5D+v.net
いやMFCもついてる。もう、使う気にならんけど。

169 :デフォルトの名無しさん:2015/09/26(土) 22:13:52.09 ID:Tp58P9Fq.net
Express版と違ってCommunity版はATLもMFCもリソースエディタも入ってるよ
宗教上の理由とかでMFCというフレームワークを使わずに
ATLベースの軽量コンポーネントを好むのが一定数居るというだけだ

170 :デフォルトの名無しさん:2015/09/26(土) 22:21:24.87 ID:0JcUeR/y.net
宗教上の理由www

171 :デフォルトの名無しさん:2015/09/26(土) 22:31:39.68 ID:6OIyVqiT.net
宗教は精神衛生において大事だぞ

172 :デフォルトの名無しさん:2015/09/26(土) 23:30:37.68 ID:rvfN9kdt.net
そして繰り返される宗教戦争

173 :デフォルトの名無しさん:2015/09/26(土) 23:43:11.75 ID:f4irwjf7.net
神は戦争を肯定しない
ゆえに戦争を肯定するものは神ではない

174 :デフォルトの名無しさん:2015/09/26(土) 23:52:17.43 ID:0JcUeR/y.net
マイクロソフト社内でも、//の後にスペースを挟むかどうかで戦争が起こるそうだしねw

175 :デフォルトの名無しさん:2015/09/27(日) 03:01:58.92 ID:uC+Ymhd4.net
システムハンガリアンみたいな猿主張が通ったりもするね

176 :デフォルトの名無しさん:2015/09/27(日) 11:50:51.32 ID:tDcA70Zp.net
そりゃマルチスレッドもない20年以上前だぞ

177 :デフォルトの名無しさん:2015/09/27(日) 12:25:11.27 ID:wOuxiHo1.net
このプログラムを×ボタンで終了させるとタスクマネージャのプロセスに残るんですけど、
そういうモンなんですかね。
exit(0)で終わらせるとちゃんと消えるんだけど・・・


LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp) {
 switch (msg){
 case WM_DESTROY:
   if (handle) usb_delete();
   PostQuitMessage(0);
   return 0;

 case WM_LBUTTONUP:
   MessageBox(hwnd, TEXT("終了"), TEXT("終了"), MB_ICONINFORMATION);
   exit(0);
   return 0;

 case WM_COMMAND:
   (省略)

 case WM_TIMER:
   (省略)
 }
 return DefWindowProc(hwnd, msg, wp, lp);
}

178 :デフォルトの名無しさん:2015/09/27(日) 12:26:58.10 ID:3ktkQrgJ.net
>>177
WM_CLOSEでDestroyWindowするのがお作法だけど、それだとどう?
use_delete()もWM_CLOSEですべきだと思う。

179 :デフォルトの名無しさん:2015/09/27(日) 12:35:34.20 ID:puEp1GjQ.net
>>178
usb usb

180 :デフォルトの名無しさん:2015/09/27(日) 12:36:34.18 ID:wOuxiHo1.net
>>178
こう変えてみたんですが残りますねぇ・・・
謎すぐる

case WM_CLOSE:
  if (handle) usb_delete();
  DestroyWindow(hwnd);
  return 0;
case WM_DESTROY:
  PostQuitMessage(0);
  return 0;

181 :デフォルトの名無しさん:2015/09/27(日) 12:43:37.60 ID:puEp1GjQ.net
>>180
uns_deleteに関連するのをコメントアウトしたらどうなる?

182 :デフォルトの名無しさん:2015/09/27(日) 12:44:40.77 ID:Oa1I2Bnn.net
GetMessageループはどう書いてんの

183 :デフォルトの名無しさん:2015/09/27(日) 12:46:18.05 ID:wOuxiHo1.net
>>181
//if (handle) usb_delete();
にしたけど変わらないですねぇ・・・


中身もこんな感じなので影響はないはず・・
int usb_delete(){

  if (!handle) return 2; //接続されてない
  if (CloseHandle(handle)) return 1; //切断成功
  else return 0; //切断失敗
}

184 :デフォルトの名無しさん:2015/09/27(日) 12:48:34.90 ID:wOuxiHo1.net
>>182
こんな具合の入門サイトコピペです


int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,PSTR lpCmdLine, int nCmdShow) {
 HWND hwnd;
 MSG msg;
 WNDCLASS winc;


 (省略)


 while (TRUE) {
  GetMessage(&msg, NULL, 0, 0);
  DispatchMessage(&msg);
 }
 return 0;
}

185 :デフォルトの名無しさん:2015/09/27(日) 12:49:24.83 ID:puEp1GjQ.net
>>183
ブレイクポイントでどこで止まってるか見てみて

186 :デフォルトの名無しさん:2015/09/27(日) 12:49:59.95 ID:puEp1GjQ.net
>>184
おい・・・おい・・・

187 :デフォルトの名無しさん:2015/09/27(日) 12:50:42.48 ID:Oa1I2Bnn.net
クソワロタ
その入門サイトは処刑で

188 :デフォルトの名無しさん:2015/09/27(日) 12:53:13.08 ID:wOuxiHo1.net
>>185-186
あああああああああこいつかwwwwwwwwww  → while (TRUE) {


マジでごめんなさい吊ってくる

189 :デフォルトの名無しさん:2015/09/27(日) 13:28:48.04 ID:d0o/2Ok+.net
Wisdomかよ。
http://wisdom.桜.ne.jp/system/winapi/win32/win10.html
(↑NGワードのためsakuraを桜に置き換え)

一応注意書きはしてるがこんなコード公開しちゃダメだろ。

190 :デフォルトの名無しさん:2015/09/27(日) 13:32:38.26 ID:zkeDatYv.net
>>188
アーヒャヒャヒャヒャヒャヒャヒャヒャヒャヒャヒャヒャヽ(゚∀゚)ノ

酷いトラップスレにひっかったもんだな
悪意のある入門サイトに注意w

191 :デフォルトの名無しさん:2015/09/27(日) 13:46:14.96 ID:Oa1I2Bnn.net
コピペするとバックドアが仕込まれるサンプルコードとか
探せばありそうだ

192 :デフォルトの名無しさん:2015/09/27(日) 13:53:33.43 ID:puEp1GjQ.net
>>189
それかw

そういう所はサブタイトルの内容以外は手抜きだしな

193 :デフォルトの名無しさん:2015/09/27(日) 13:54:15.71 ID:XMfaJ+0C.net
どうみても注意書きを読まない方が悪い
http://wisdom.sak ura.ne.jp/system/winapi/win32/win10.html

194 :デフォルトの名無しさん:2015/09/27(日) 13:55:33.30 ID:Oa1I2Bnn.net
>>189
よく見るとwin11.html以降のGetMessageループも
戻り値の-1を無視したコードで正しくない
糞翻訳でおなじみの日本語MSDNにすら避けろと書いてあるぞ
https://msdn.microsoft.com/ja-jp/library/cc364699.aspx

195 :デフォルトの名無しさん:2015/09/27(日) 13:59:21.19 ID:puEp1GjQ.net
>>193
正しいアプリケーションの終了
ttp://wisdom.s akura.ne.jp/system/winapi/win32/win11.html

どこがだよっていう

196 :デフォルトの名無しさん:2015/09/27(日) 14:04:05.46 ID:XMfaJ+0C.net
>PostQuitMessage() 関数で WM_QUIT をメッセージキューにポストし
>GetMessage() 関数がそれを受け取り、戻り値に 0 を返します
>こうして、メッセージループを抜けてアプリケーションは終了します

なるほど

197 :デフォルトの名無しさん:2015/09/27(日) 14:11:19.80 ID:YZLivW0I.net
>while (GetMessage(&msg , NULL , 0 , 0)) DispatchMessage(&msg);

これもまずいな。GetMessage() が -1 を返す場面を想定してない

198 :デフォルトの名無しさん:2015/09/27(日) 14:17:29.27 ID:sYzB7PIZ.net
>>197
公式に避けろと書いてあるな



戻り値

WM_QUIT 以外のメッセージを取得した場合、0 以外の値が返ります。

WM_QUIT メッセージを取得した場合、0 が返ります。

エラーが発生した場合、-1 が返ります。たとえば、hWnd パラメータで無効なウィンドウハンドルを指定した場合や、lpMsg で無効なポインタを指定した場合は、エラーが発生します。拡張エラー情報を取得するには、 関数を使います。

警告 GetMessage 関数は、0 以外の値、0、-1 のいずれかを返します。したがって、次のようなコードは避けてください。

while (GetMessage(lpMsg, hWnd, 0, 0)) ...

このようなコードを作成すると、GetMessage 関数が失敗して -1(0xFFFFFFFF、つまり TRUE)が返った場合、ループが持続し、致命的なアプリケーションエラーを発生させる可能性があります。

199 :デフォルトの名無しさん:2015/09/27(日) 14:19:43.14 ID:Oa1I2Bnn.net
18年くらい前のMSDN Libraryには書いてなかったかも
確かね

200 :デフォルトの名無しさん:2015/09/27(日) 14:26:15.80 ID:YZLivW0I.net
>>199
すまん、>>194でもう指摘してたのね。読んでなかった。orz

201 :デフォルトの名無しさん:2015/09/27(日) 14:31:10.49 ID:9nB30GXC.net
BOOLでそんな値をわたさんで欲しいわ。

202 :デフォルトの名無しさん:2015/09/27(日) 14:32:06.11 ID:hEAZFQJb.net
GetMessageの戻り値の型はBOOLなのに
>0 以外の値、0、-1 のいずれかを返します。
これは酷い

203 :デフォルトの名無しさん:2015/09/27(日) 14:34:59.89 ID:YZLivW0I.net
・・・そこツッコむと宗教戦争始まるから ^^;

「BOOLは0か1だろ」
「いや、BOOLは0か0以外だ」
「-1は0以外だから正しい」
「じゃ、-1は真かよ」
「そもそもBOOLは…」

いつも平行線

204 :デフォルトの名無しさん:2015/09/27(日) 14:36:46.98 ID:zkeDatYv.net
>>202
これは酷い

205 :デフォルトの名無しさん:2015/09/27(日) 14:37:43.17 ID:us1PQXsq.net
Win32にはよくあること

206 :デフォルトの名無しさん:2015/09/27(日) 14:41:31.38 ID:NRLqsz4V.net
win32api は boolean のない C 前提なんだろう?
そもそも int GetMessage() が正しいのにだれが返り値 BOOL といっているんだ?

207 :デフォルトの名無しさん:2015/09/27(日) 14:41:59.45 ID:jzpWzA1C.net
この話題も定期的に出るなwww

208 :デフォルトの名無しさん:2015/09/27(日) 14:44:03.48 ID:sYzB7PIZ.net
だってtypedef int BOOLだしな

209 :デフォルトの名無しさん:2015/09/27(日) 14:44:06.88 ID:Oa1I2Bnn.net
BOOLなのになんで2値論理じゃねーんだよタワケ
が適当

210 :デフォルトの名無しさん:2015/09/27(日) 14:51:26.57 ID:8A5jeRhu.net
-1から漂う後から付け足した感が非常にポイント高い

211 :デフォルトの名無しさん:2015/09/27(日) 14:51:42.01 ID:ENvts9qq.net
ほかにおすすめの入門サイトある?

212 :デフォルトの名無しさん:2015/09/27(日) 14:53:24.53 ID:ENvts9qq.net
知っていたら、教えてください。

213 :デフォルトの名無しさん:2015/09/27(日) 14:54:51.35 ID:XMfaJ+0C.net
>エラーが発生した場合、-1 が返ります。たとえば、hWnd パラメータで無効なウィンドウハンドルを指定した場合や、lpMsg で無効なポインタを指定した場合は、エラーが発生します。拡張エラー情報を取得するには、 関数を使います。

GetMessage() の戻り値が -1 の場合はエラーなんだろ?
Windows アプリを終了するべきではなくエラー処理をするべきじゃないのか?
while を抜けるべきではない

214 :デフォルトの名無しさん:2015/09/27(日) 14:55:25.97 ID:zkeDatYv.net
>>206
msdnさん自身が
ttps://msdn.microsoft.com/ja-jp/library/cc364699.aspx

ちなみに↓では
ttps://msdn.microsoft.com/ja-jp/library/ms644936.aspx

Minimum supported client Windows 2000 Professional [desktop apps only]
となっているのでintだった時期も確かにあったんだろう

215 :デフォルトの名無しさん:2015/09/27(日) 14:59:07.04 ID:jzpWzA1C.net
そもそもエラーだからメッセージループ抜けるってのが横暴だ
ちゃんとGetLastErrorさんの話を聞かないとな

216 :デフォルトの名無しさん:2015/09/27(日) 15:05:58.13 ID:hEAZFQJb.net
BOOLという独自型を定義したのもMSだし
TRUEという独自マクロを定義したのもMSだから
MSはC言語の仕様とは関係なく常に
BOOLの真の値として1を使わなければならないし
(だって自分で勝手に決めたんだろ)
そうじゃなかったとしても
BOOLなのに真とも偽とも明言されてない
エラーを表現する-1を返すのは良くないね

217 :デフォルトの名無しさん:2015/09/27(日) 15:34:06.02 ID:nsZcbsgt.net
>>213
>hWnd パラメータで無効なウィンドウハンドルを指定した場合や、lpMsg で無効なポインタを指定した場合は、エラーが発生します。

本人がポカしなけりゃ -1 は無視して良いな。

218 :デフォルトの名無しさん:2015/09/27(日) 15:35:30.62 ID:LjMVY2UB.net
宗教戦争突入阻止!

アッラーアクバル!

219 :デフォルトの名無しさん:2015/09/27(日) 15:40:00.11 ID:nsZcbsgt.net
>BOOLなのに真とも偽とも明言されてない
>エラーを表現する-1を返すのは良くないね

BOOL なら -1 は真だよ。

220 :デフォルトの名無しさん:2015/09/27(日) 15:51:43.88 ID:YZLivW0I.net
>>215
WTLだと、エラーを返したときもループ継続

221 :デフォルトの名無しさん:2015/09/27(日) 15:54:52.54 ID:hEAZFQJb.net
>>219
それはC言語の仕様でしかない
MSDNにはただ単にエラーの時-1を返すとしか書いてない
ここでの-1の意味は真でも偽でもなくて、エラー

>BOOLなのに真とも偽とも明言されてない
>エラーを表現する-1を返すのは良くないね

しかしこの文章は誤解を生じるな

BOOLなのに真とも偽とも分類されないような
エラーの-1を定義して3値で返すのは良くないね

に訂正しておく

222 :デフォルトの名無しさん:2015/09/27(日) 15:57:22.56 ID:jzpWzA1C.net
>>216
そのMSも-1はTRUEと明言しているよ
> -1(0xFFFFFFFF、つまり TRUE)が返った場合
                  ~~~~~~
>>217
「例えば」だから、エラーの原因がそれだけという保証がない

223 :デフォルトの名無しさん:2015/09/27(日) 17:13:27.56 ID:9nB30GXC.net
この例では戻り値チェックしてないな。
https://msdn.microsoft.com/ja-jp/library/bb384843.aspx

224 :デフォルトの名無しさん:2015/09/27(日) 17:27:24.32 ID:hEAZFQJb.net
>>222
整数の-1が真なのはC言語の仕様でしかなく
今言っているのは「意味の上で」の話だから
-1のときエラーと書いてあったのならそれ以上の意味はない

例えばメモリエラーのときに「2」を返す関数があったとして
「2」はC言語の仕様的には「2」でしかないが
意味の上ではメモリエラー

225 :デフォルトの名無しさん:2015/09/27(日) 17:31:35.93 ID:3ktkQrgJ.net
>>184
久々にお茶フイタwww

226 :デフォルトの名無しさん:2015/09/27(日) 18:23:00.63 ID:UYzM99J3.net
きったねーな 死ねよ

227 :デフォルトの名無しさん:2015/09/27(日) 18:24:33.95 ID:jzpWzA1C.net
>>224
何言っているのか(何を言いたいのか)分からん

>MSDNにはただ単にエラーの時-1を返すとしか書いてない
C言語の仕様という意味であっても、 -1 がTRUEであると書いている(MSが認めている)

で話を戻して、

>BOOLなのに真とも偽とも明言されてない

エラーの場合は-1を返す
MSDNで-1は「つまりはTRUE」と書いているんだから
エラーの場合も真を返すと明言しているわけだ
関数の仕様としておかしいとしても「意味の上で」なら真か偽かははっきりしているだろ

228 :デフォルトの名無しさん:2015/09/27(日) 18:38:33.35 ID:hEAZFQJb.net
それはC言語の仕様としては真になるという但し書きでしかないと思うが

それに俺は言い直している

>BOOLなのに真とも偽とも分類されないような
>エラーの-1を定義して3値で返すのは良くないね

229 :デフォルトの名無しさん:2015/09/27(日) 19:08:43.46 ID:8A5jeRhu.net
言い争いするところじゃないっスよー
糞仕様は糞仕様なんだから

230 :デフォルトの名無しさん:2015/09/27(日) 19:28:41.21 ID:hEAZFQJb.net
>警告 GetMessage 関数は、0 以外の値、0、-1 のいずれかを返します。したがって、次のようなコードは避けてください。
>while (GetMessage(lpMsg, hWnd, 0, 0)) ...
>このようなコードを作成すると、
>GetMessage 関数が失敗して -1(0xFFFFFFFF、つまり TRUE)が返った場合、ループが持続し、
>致命的なアプリケーションエラーを発生させる可能性があります。
この警告の文における
「0xFFFFFFFF、つまり TRUE」が
・エラーだとー1が返るがC言語の仕様では-1は真になるからループの終了条件に使うと危険、と言う但し書きか、
・APIの戻り値として真の意味がある、と捉えるかは、人それぞれかもしれんが
そもそも大元の「戻り値」の説明には「真」とか「偽」とかは出てこなくて
エラーなら-1が返るとしか書いてなくて、ここに
-1(0xFFFFFFFF、つまり TRUE)という補足は書かれていないのだから、
例の補足は「警告」内のサンプルコードに対して、コードの動きの補足しているものだとわかるし
「警告」内の一文の、それも括弧の中に補足的に書いてあるだけだし
それもサンプルコードの終了条件に対する説明だし

231 :デフォルトの名無しさん:2015/09/27(日) 19:34:53.06 ID:YZLivW0I.net
while(TRUE)
{
    ::MessageBox(NULL, _T("言い争いするところじゃないっスよー"),
_T("糞仕様は糞仕様なんだから"), MB_OK | MB_ICONEXCLAMATION);
}

232 :デフォルトの名無しさん:2015/09/27(日) 20:02:19.00 ID:jzpWzA1C.net
戻り値の説明には、WM_QUIT 以外のメッセージなら0 以外の値、WM_QUIT なら 0 、エラーなら-1が返ると書いてある

MSがTRUEを1と定義しているかどうかに関係なく、式評価で0以外なら真、0なら偽と分かっているんだから
WM_QUIT 以外のメッセージ、もしくはエラーなら「真」で、WM_QUIT なら「偽」ってだけだろ

そもそも戻り値がBOOLと書かれているが、TRUEとして定義した1ではなく 「0 以外の値」 と言っている時点で
MSの定義したTRUE 1 ってのがただの便宜上のものだと分かると思うが

つまり関数としての戻り値は「WM_QUIT以外の『真』」か「WM_QUITの『偽』」の2値
あとは「WM_QUIT以外の『真』」にエラーも含ませるのはどうよって話ではあるが、
そもそも関数の戻り値からしてそれは成功失敗を表現しているわけではないのだから
エラーの-1は真として分類されている

233 :デフォルトの名無しさん:2015/09/27(日) 21:34:28.74 ID:x2H664Vf.net
こう言う奴がプロジェクトにいると面倒だな

234 :デフォルトの名無しさん:2015/09/27(日) 21:59:38.37 ID:zkeDatYv.net
BOOLが必ずしも(TRUE,FALSE)≡(1,0)を意味しないとしても、
文脈によって0以外の値が変動する戻り値にBOOL型を当てるのはやはりおかしい
TRUEがどんな値でもいいが常にその値でなければならない

しかしまあ何でこんなことになったんだろうねぇ

235 :デフォルトの名無しさん:2015/09/27(日) 22:13:58.95 ID:jzpWzA1C.net
>TRUEがどんな値でもいいが常にその値でなければならない

その思考の結果が if(func()==TRUE) ... みたいなものじゃね?

>文脈によって0以外の値が変動する戻り値にBOOL型を当てるのはやはりおかしい
こっちは同意

236 :デフォルトの名無しさん:2015/09/27(日) 22:17:21.80 ID:us1PQXsq.net
でも実装する側としては理解できるだろ?

あーBOOLにしちゃったけど他の情報も戻り値に含めたいなぁみたいなぁみたいな

237 :デフォルトの名無しさん:2015/09/27(日) 22:38:34.32 ID:x2H664Vf.net
>>236
できねーよ
戻り値の型を int にするなりするだろ

238 :デフォルトの名無しさん:2015/09/27(日) 22:40:56.03 ID:YZLivW0I.net
あの… BOOL は int ですけど。。。

239 :デフォルトの名無しさん:2015/09/27(日) 23:06:54.37 ID:LjMVY2UB.net
だから宗教戦争すんなよ。

アッラーアクバル

240 :デフォルトの名無しさん:2015/09/27(日) 23:07:01.32 ID:jzpWzA1C.net
そういう意味の指摘ではないと思うがな

241 :デフォルトの名無しさん:2015/09/28(月) 06:49:36.12 ID:Rj5Nu0nM.net
>>238
こう言うアホはどうしようもないな…
なんの為に BOOL を定義してるのかすら理解してないんだろうな w

242 :デフォルトの名無しさん:2015/09/28(月) 07:07:15.77 ID:oN5IJNc7.net
bool

243 :デフォルトの名無しさん:2015/09/28(月) 07:57:15.09 ID:e7uUBDed.net
IntなのにBOOLなんて名前付けた奴がアホだろ。俺だったらbint にする。

244 :デフォルトの名無しさん:2015/09/28(月) 08:25:36.70 ID:gscNduJW.net
俺ならiboolだな

245 :デフォルトの名無しさん:2015/09/28(月) 08:37:54.88 ID:4BqA6VyM.net
もう少し後の時代のMSだったら
GetMessageEx を作って GetMessage を 非推奨に変えていただろう

246 :デフォルトの名無しさん:2015/09/28(月) 08:54:05.03 ID:e7uUBDed.net
或いはboin がいいな

247 :デフォルトの名無しさん:2015/09/28(月) 13:18:19.09 ID:YLupfTzg.net
>>243
理解しようともしないドアホだな
typedefすら否定してそうだわ

248 :デフォルトの名無しさん:2015/09/28(月) 13:34:04.05 ID:JfTylyW8.net
糞仕様に迎合することをMS語では理解すると言います

249 :デフォルトの名無しさん:2015/09/28(月) 16:47:13.24 ID:Io5caW0J.net
メッセージボックスのボタンが一個だけだとマウスポインタがボタンに移動しないんですけど、何が悪いんでしょうか?

250 :デフォルトの名無しさん:2015/09/28(月) 16:54:41.98 ID:lTbRmqcc.net
普通は移動しないと思うが

251 :デフォルトの名無しさん:2015/09/28(月) 17:02:56.55 ID:0jKDP4UE.net
設定でデフォルトのボタンに移動するようにしてるんだろ

252 :デフォルトの名無しさん:2015/09/28(月) 19:15:30.70 ID:s/OnR4Ys.net
http://blogs.msdn.com/b/oldnewthing/archive/2013/03/22/10404367.aspx

But don't worry, the standard message pump is safe. If your parameters are exactly
•a valid pointer to a valid MSG structure,
•a null window handle,
•no starting message range filter,
•no ending message range filter,

then Get&shy;Message will not fail with -1.

253 :デフォルトの名無しさん:2015/09/28(月) 20:12:46.31 ID:91/ACm3S.net
>>243 以降はネタだと思うが、>>248 は単に Windows を dis れるオレカッケー君かな w

254 :デフォルトの名無しさん:2015/09/28(月) 20:44:33.42 ID:FF3rjUqv.net
>>248

255 :デフォルトの名無しさん:2015/09/29(火) 06:51:33.28 ID:RQ7ZrE+f.net
そんなことより&shy;の用法について勉強になったわ

256 :デフォルトの名無しさん:2015/09/29(火) 19:30:39.39 ID:714Z1PTP.net
typedefされているかどうか、enumされているか調べる方法はありますか?

質問意図。

例1)
#ifndef bool
#define bool int
#define true (1)
#define false (0)
#endif

例1のようなことを下記で定義してあるものに対して行いたい。
typedef int bool;
enum{false,true};

257 :デフォルトの名無しさん:2015/09/29(火) 19:35:28.79 ID:TPU2zcec.net
WindowsAPIと何ら関係のない質問とは・・・

258 :デフォルトの名無しさん:2015/10/01(木) 21:44:10.72 ID:yzt9uPit.net
includeの先をtypedefで全検索掛けてかたっぱしから#defineすればええ
簡単でしょ?

259 :デフォルトの名無しさん:2015/10/05(月) 09:53:29.16 ID:PVqgELRl.net
dll内のダイアログリソースから文字列を「簡単に」抜き出せるAPIってありませんか?
SHLoadIndirectString みたいな感じで。

もしくはDLGTEMPLATEEX 構造体から簡単に(以下同文)

260 :デフォルトの名無しさん:2015/10/05(月) 14:06:09.49 ID:Xe1CseJq.net
Googleの検索ボックスみたいに、
入力内容に応じて逐次、こちらが用意した候補を表示したいんだが
楽な実装方法ある?
便利さがあれと同程度であれば見た目はそっくりじゃなくてもいい。

261 :デフォルトの名無しさん:2015/10/05(月) 14:31:48.50 ID:Xe1CseJq.net
エディットテキストとリストビューで実装してみるわ。

262 :デフォルトの名無しさん:2015/10/05(月) 15:36:54.33 ID:PVqgELRl.net
>>259
ちくちくポインタ計算するしかないか……

263 :デフォルトの名無しさん:2015/10/05(月) 15:41:12.48 ID:Gxee2tr0.net
>>262
そんな事せずにリソースファイルを新しく作りなさいよ

264 :デフォルトの名無しさん:2015/10/05(月) 17:07:33.06 ID:PVqgELRl.net
いや例えばshell32.dll内のリソースとかだが
もう作ったからいい

265 :デフォルトの名無しさん:2015/10/05(月) 21:20:01.79 ID:+kYnElcl.net
つ FindResource() & Load & Lock

266 :デフォルトの名無しさん:2015/10/06(火) 07:07:57.43 ID:+MMTk5e6.net
構造体配列の内容の一部をリストビューに入れた状態で、リストビューのアイテム(行)と構造体配列の要素はどうやって対応させたらいいの?

例)
struct TEST{
int ID;//ユニーク
char name[16];
int age;
}test[64];

この中で、リストビューにはnameとageだけを表示したい。

名前 | 年齢
――――――――
山田 | 28
田中 | 25

ここで山田が選択されているときに、testの中の山田の要素に対応させたい。
リストビューの要素からアイテムを取得して自力でtestを検索しても、28歳の山田が2人いれば判別つかなくてアウト。
リストビューに見えないようにIDを仕込めれば解決するが、できないみたいだ。

267 :デフォルトの名無しさん:2015/10/06(火) 08:10:35.92 ID:RmS10x6f.net
LVITEMのlParamあたりに構造体へのポインタでもしこんどけよ

268 :デフォルトの名無しさん:2015/10/06(火) 15:32:28.15 ID:+MMTk5e6.net
>>267
マジでありがとう!
そういう情報が欲しかった!
その情報を元に調べたら色々出てきた!
何とかできそうだ!

https://msdn.microsoft.com/en-us/library/windows/desktop/bb774760(v=vs.85).aspx
http://www.g-ishihara.com/mfc_lc_06.htm

269 :デフォルトの名無しさん:2015/10/06(火) 15:50:07.83 ID:uga0EVZs.net
ブラウザのような選択できるテキストをDirectWriteで描画するにはどうすれば良いでしょうか?
DirectWriteのサンプルだと文字を選択できないしエディットコントロールだとどこでDirectWriteを噛ませればいいか分かりません

270 :デフォルトの名無しさん:2015/10/06(火) 19:44:04.77 ID:RIAMP3y9.net
>>268
reallocでハマらないようにね

271 :デフォルトの名無しさん:2015/10/07(水) 20:43:54.09 ID:olmGB7G8.net
>>269
DirectWriteはDrawTextと比べて特別速いという印象はなく
ほぼ同じぐらいの速度だったように記憶しているので
普通にエディットコントロールを使えばいいと思う
どうしてもDirectWriteが使いたければWPFを使えば
勝手にDirectWriteを使ってくれるかもしれないね
ただしWPFはスレチなんでWPFを使うならスレを移動してね

272 :デフォルトの名無しさん:2015/10/07(水) 20:45:06.18 ID:5JMb1/3S.net
パフォーマンス重視ならDirectTKのSpriteFont一択

273 :デフォルトの名無しさん:2015/10/07(水) 20:50:51.43 ID:olmGB7G8.net
ここだけの話、Win32API最大の汚点は
ウィンドウプロシージャの引数にインスタンスポインタが無いことだよな
初心者が必ず疑問に思う点だし
必ず必要と言っていいデータなのにウィンドウ作るたびに毎回
SetWindowSubclassとかSetWindowLongPtrとか
設計ミスだよね

でも本当の汚点はLOWORD、GET_X_LPARAM、など16bit幅のアレやコレかもしれない

274 :デフォルトの名無しさん:2015/10/07(水) 21:02:21.93 ID:gQOBln3k.net
WinMainの第二引数とか

275 :デフォルトの名無しさん:2015/10/07(水) 21:23:55.22 ID:DDTC7KB4.net
うん十年前の設計上の問題をSetWindowSubclassの
呼び出しひとつ程度で解決できるなら別にどうでも

276 :デフォルトの名無しさん:2015/10/07(水) 21:35:42.36 ID:6dKnmfm7.net
>>273
ウインドウハンドルがあるじゃん

277 :デフォルトの名無しさん:2015/10/07(水) 21:50:45.60 ID:7k7eABWe.net
ここだけの話とか馬鹿じゃねーの
そんな後出しジャンケンオナニーレスなんて自分の秘密鍵付きノートにでも書いとけよ

278 :デフォルトの名無しさん:2015/10/07(水) 22:38:04.21 ID:0FYyDCxK.net
しゃべり場か

279 :デフォルトの名無しさん:2015/10/07(水) 22:48:18.06 ID:ItwNCUpp.net
チョベリバだろう(すでに死語の世界)

280 :デフォルトの名無しさん:2015/10/07(水) 23:28:39.54 ID:gQOBln3k.net
秘密鍵って用語の使い方が変なのがいるな

281 :デフォルトの名無しさん:2015/10/07(水) 23:41:15.18 ID:diu86Nw7.net
それ以前の問題のような気がするが

282 :デフォルトの名無しさん:2015/10/08(木) 00:54:08.31 ID:08uRUrkN.net
返信ありがとうございます
vimのソースコードを見てみたところ文字ごとに色を変えているようでした
なので、エディットコントロールのようなものも自分で実装したいと思います

283 :デフォルトの名無しさん:2015/10/08(木) 13:22:45.90 ID:jZEKLa+0.net
どこの誰かは知らんが
や め て お け
リッチエディットコントロール的なものを使えばいいんじゃないかと

284 :デフォルトの名無しさん:2015/10/08(木) 14:02:16.80 ID:9yien46K.net
>>273
一体どんな馬鹿が設計したらこんなヘンテコな仕様になるんだろうと今でも思うよWin32API

285 :デフォルトの名無しさん:2015/10/08(木) 14:24:20.32 ID:/fJJ0sXBD
>>284
C++がまだ黎明期だったから仕方ない。
言語のクラスやインスタンスの機能の代わりに
WNDCLASSのcbClsExtraやcbWndExtraを使う設計なら、理解できなくはない。

だが、SetWindowsHookExにユーザーデータが渡せない設計は許してないぞ。

286 :デフォルトの名無しさん:2015/10/08(木) 15:15:26.59 ID:/fJJ0sXBD
リボン (CLSID_UIRibbonFrameworkで作るやつ) で
日本語のラベルが改行されるのを抑制する方法ってわかります?
「Open」なら1行なんだけど、「開(改行)く」と縦書きみたいになっちゃう。
非アルファベットのワードブレーク処理が期待する動きではない感じ。

語末に全角スペースを追加する誤魔化しは使いたくないです。

287 :デフォルトの名無しさん:2015/10/08(木) 16:51:02.24 ID:66tpBgx2.net
リボン (CLSID_UIRibbonFrameworkで作るやつ) で
日本語のラベルが改行されるのを抑制する方法ってわかります?
「Open」なら1行なんだけど、「開(改行)く」と縦書きみたいになっちゃう。
非アルファベットのワードブレーク処理が期待する動きではない感じ。

語末に全角スペースを追加する誤魔化しは使いたくないです。

288 :デフォルトの名無しさん:2015/10/08(木) 20:49:08.25 ID:9MeqRRt4.net
>>284
Win32APIに限らず、Microsoftの提供するAPIは首を傾げるものが多いな。
本当に頭いいヤツが入社してるんだろうか・・・?

289 :デフォルトの名無しさん:2015/10/08(木) 20:51:55.26 ID:7AIOKY49.net
逆に並べるのが好きな奴はいるな
VFAT、BMP、LINQ、等々

290 :デフォルトの名無しさん:2015/10/08(木) 21:35:51.12 ID:1TGlpU6G.net
倒立ビットマップとかいらねーし

291 :デフォルトの名無しさん:2015/10/09(金) 00:36:37.21 ID:hQOu+a4V.net
頭のいいやつが設計したからWin95で作ったアプリが未だに動くんだろ。
どっかの糞OSなんてバージョンアップのたびに動かなくなるぞ。

292 :デフォルトの名無しさん:2015/10/09(金) 01:02:33.88 ID:m6l+7vgz.net
初期の設計が良かったからというよりは
その後の改築に頭を使い続けたという雰囲気だが
64bit化やDWMは頑張ったのでは

293 :デフォルトの名無しさん:2015/10/09(金) 11:48:17.82 ID:vp8UwouF.net
そうだなあ
開発側もその都度API仕様が変更されると死ぬし

294 :デフォルトの名無しさん:2015/10/09(金) 12:41:13.75 ID:yBCegUEL.net
CreateFileでFILE_FLAG_OVERLAPPED 指定ありで開いているファイルに対して(CloseHandleせずに)CopyFileで上書きしても問題ないでしょうか?
(システムで問題が起きた時にファイルを閉じることなく、事前に退避しておいたファイルに戻したいです。)

295 :デフォルトの名無しさん:2015/10/09(金) 13:15:28.85 ID:mu8Iv9Yi.net
>>294
たぶん期待している動作にはならない
おそらくFILE_SHARE_DELETEについて調べると良いと思われる

296 :デフォルトの名無しさん:2015/10/09(金) 13:32:02.08 ID:qYdPFK/f.net
なんで作業中は別ファイルでやっておいて最後に上書きしないの?

297 :デフォルトの名無しさん:2015/10/09(金) 13:48:37.07 ID:oOXSiJnl.net
面倒くさいから

298 :デフォルトの名無しさん:2015/10/09(金) 14:01:37.94 ID:SqKziDAZ.net
本当は、上書きも危ないので、

最初に、元のファイルを、renameする。
次に、新しいファイルを、元のファイル名で作成する

最後に、元のファイルを削除する

299 :デフォルトの名無しさん:2015/10/09(金) 14:22:05.37 ID:qYdPFK/f.net
その手順だと、元のファイル名のファイルが作成途中で他から参照される
タイミングがあるからお勧めできないと思う…

300 :デフォルトの名無しさん:2015/10/09(金) 17:40:13.90 ID:uuceUKZS.net
>>288
たいていの疑問はthe old new thingに書いてる

301 :デフォルトの名無しさん:2015/10/09(金) 18:50:43.73 ID:mhM1aSp5.net
MCIについての質問スレが見当たらないけどここでいい?

302 :片山博文MZ ◆T6xkBnTXz7B0 :2015/10/09(金) 19:22:23.07 ID:W40lUqcY.net
>>301
おk

303 :デフォルトの名無しさん:2015/10/09(金) 21:30:52.86 ID:oggkbSfr.net
>>300
old newの作者がヘンテコなwin32api作った犯人なのか?

304 :デフォルトの名無しさん:2015/10/09(金) 22:30:53.93 ID:McJpsKEc.net
上書きいくない
オリジナルはきちんと連番の隠し属性にして隠しとくべきですう

305 :デフォルトの名無しさん:2015/10/10(土) 12:01:31.39 ID:wZWPBuKi.net
俺はNTFSの 代替ストリームに突っ込むことにしている
まずバレ無いよ

306 :デフォルトの名無しさん:2015/10/10(土) 12:54:07.63 ID:/egW/Cb1.net
間違ってコピー時に消してロストですね

307 :デフォルトの名無しさん:2015/10/12(月) 02:12:30.20 ID:Y1aqG/NX.net
>>288
頭いいけど、ちょっと斜め上を行ってるだけなんだよきっと

308 :デフォルトの名無しさん:2015/10/12(月) 10:30:51.96 ID:dOqq0AtQ.net
Windows 8, 8.1, 10 だと Win32 には新機能は追加されてなさそう?
検索してもあんまり出てこない
Win32というよりもWindowsプログラミング自体の話題が減っている気もするけど……

309 :デフォルトの名無しさん:2015/10/12(月) 11:58:32.65 ID:GW+oKPBf.net
みんなWEBプログラマー目指してるんだろうね
子供プログラミング教室とかそんなのばっかり
そしてそこから踏み出すこともない

310 :デフォルトの名無しさん:2015/10/12(月) 12:00:54.79 ID:ntYAJ4A2.net
お前の領分を食われないのは好都合だろ
何をやっかんでいる

311 :デフォルトの名無しさん:2015/10/12(月) 13:42:42.03 ID:0aVLwZvg.net
スマホアプリだろ。

312 :デフォルトの名無しさん:2015/10/12(月) 14:11:22.42 ID:QD0vOYoj.net
というかWin8RTだした時点で.NET+HTML5ベースのOSへの移行を目論んでたんでしょ。
RTが受けなかったのでWin32世代の互換性を強化してるけど、いまだ諦めてないと思うね。
企業ユースが.NETに移行できるように、WEBサービス強化を優先的にやってるし

その時、ひょっとすると端末側のOSはLinuxということもありうるだろうし、場合によっては
OSをハードウェア化してHTML5が動作すればいい程度になってる可能性もある。

313 :デフォルトの名無しさん:2015/10/12(月) 14:18:15.92 ID:GN4/i3DY.net
>>308
普通に8以降もWin32APIはどんどこ追加されてるよ
各カテゴリのWhat' Newなんちゃらとかにまとまってる時もあるけど
.NETやらWinRTやらの土台としての扱いなのかおざなりなドキュメントが多いな

314 :デフォルトの名無しさん:2015/10/12(月) 15:52:31.97 ID:DSHcQooM.net
MSからしたらWin32APIを捨てるメリットがまるでないんだよね

315 :デフォルトの名無しさん:2015/10/12(月) 17:00:02.70 ID:GAOSSbAR.net
画像サイズを縮小する方法、ご存じありませんか?

316 :デフォルトの名無しさん:2015/10/12(月) 17:01:31.57 ID:nie80ABu.net
StretchBlt()

317 :デフォルトの名無しさん:2015/10/12(月) 19:38:20.65 ID:zL9czuyO.net
自分が作成したアプリのウィンドウの上に
他のアプリが重なっているか確認したいんですけど
EnumWindowsかGetWindowで列挙したウィンドウの矩形をいちいち取得し
自ウィンドウと重なっているか判定するといった手順より
簡単な方法があったりするでしょうか?

318 :デフォルトの名無しさん:2015/10/13(火) 04:37:06.38 ID:9NxpwIPd.net
一つのプログラム内でCreateWindowを使って複数のウインドウを開いているときに、
いずれかのウインドウでダイアログ(ファイルを選択するダイアログとか)を開くと、
ダイアログを開いたウインドウはダイアログが閉じられるまで前面にも来ず、ユーザーは操作もできなくなります。
しかし、ダイアログを開いたウインドウ以外のウインドウは操作できますし、クリックすればダイアログより前にも来ます。
ダイアログを開いたウインドウ同様に他のウインドウも操作を受け付けないようにしたいのですが、そういう設定はないのでしょうか。
ダイアログ表示前後に他ウインドウへの操作を無効にするコードをゴリゴリ書いてもいいのですが、何か設定ができるならそちらを使いたいです。
同じプログラム内で作られたウインドウなら何か設定がある気がします。

319 :デフォルトの名無しさん:2015/10/13(火) 05:00:16.14 ID:IpNepCXz.net
コモンダイアログを開く前に、それの親となるウィンドウを CreateWindow し、
そいつの WM_CREATE タイミングでコモンダイアログを呼べば?

320 :デフォルトの名無しさん:2015/10/13(火) 07:26:53.27 ID:WAwM6nXZ.net
>>317
いちいち取得し判定するしかないと思うよ。めったにない需要だし。

>>318
親ウィンドウ
├他のウィンドウ
└ダイアログ
という親子関係にすれば良いのでは?

321 :デフォルトの名無しさん:2015/10/13(火) 08:13:32.00 ID:L59Au/Rr.net
かつて DOSのサブシステムだった Win3-4 が 母屋を乗っ取ったように
Win32もステラルヒが来るのだ

322 :デフォルトの名無しさん:2015/10/13(火) 10:17:12.50 ID:qKlLexPE.net
DOSのサブシステムという位置づけで作られたのはdosshellだよ

WindowsはいきなりNTなんか作ってもユーザーが付いてこないから、
DOSユーザーにとって取っつきやすくexeにしたってだけ

実際、OS/2の出足の鈍さがすごかったろ
マルチタスクとプロテクトメモリは欲しかったけど
HDDをフォーマットする必要があったのが最大のネックで

323 :デフォルトの名無しさん:2015/10/13(火) 11:20:20.25 ID:oaoMXMKz.net
ふむ、WindowFromPointも出てこんか
相変わらず初心者が馴れ合ってるだけの程度の低いスレだな
ざっと見渡しても質問に対してピンポイントに正解を答えてるレス無いもんな
質問の意味すら理解できん馬鹿ばっかなんだろうな
質問するだけ時間の無駄だわ

324 :デフォルトの名無しさん:2015/10/13(火) 11:33:32.82 ID:WPI+iK8W.net
え、>>317を解決するために
自ウィンドウの全てのピクセルに対して、WindowFromPointを呼ぶの?
640x480のウィンドウだったとしても30万回もコールしなきゃならんわけだが
これが君の言うピンポイントの回答なの?

325 :デフォルトの名無しさん:2015/10/13(火) 12:08:05.88 ID:HOdVfJRd.net
" c:\\aaaa\\bbbb \\ cc cc\\dddd "

"c:\\aaaa\\bbbb\\cc cc\\dddd"

というように、階層ごとに前後の空白を削除する方法は、
Path〜関数や、それらの組み合わせなどでありませんでしょうか。

326 :デフォルトの名無しさん:2015/10/13(火) 12:17:02.30 ID:WPI+iK8W.net
正規表現を使えばよいんじゃね?

327 :デフォルトの名無しさん:2015/10/13(火) 12:44:50.23 ID:9UjSekpe.net
正規表現APIを教えれ

328 :デフォルトの名無しさん:2015/10/13(火) 14:48:20.02 ID:3EVIu19y.net
>>323を晒しあげ

ところでListViewのワーキングエリアって使われてるのを見たことある?

329 :デフォルトの名無しさん:2015/10/13(火) 14:53:08.71 ID:e0HEbvMz.net
偉そうにしといて、これは恥ずかしいw

330 :デフォルトの名無しさん:2015/10/13(火) 14:56:14.54 ID:1nentuZe.net
TreeViewに表示される横スクロールバーを削除するのおしエロ下さいよ

331 :デフォルトの名無しさん:2015/10/13(火) 15:17:05.76 ID:DtroG4QR.net
>>330
WS_HSCROLLスタイルを削除

332 :デフォルトの名無しさん:2015/10/13(火) 15:28:45.54 ID:gLNTLW9u.net
TVS_EX_AUTOHSCROLL

333 :デフォルトの名無しさん:2015/10/13(火) 15:32:00.28 ID:1nentuZe.net
どやって

334 :デフォルトの名無しさん:2015/10/13(火) 15:38:19.73 ID:1nentuZe.net
GetWindowLongでGWL_STYLE取って
WS_HSCROLLとTVS_EX_AUTOHSCROLLのビット落としてSetWindowLongしてもダメでした
やり方間違ったんかな全然違ったなかな

335 :デフォルトの名無しさん:2015/10/13(火) 15:43:04.02 ID:gLNTLW9u.net
::SendMessage(hWnd, TVM_SETEXTENDEDSTYLE, 0, TVS_EX_AUTOHSCROLL);

336 :デフォルトの名無しさん:2015/10/13(火) 16:00:20.58 ID:1nentuZe.net
>>335
ソースありがとうございます。
しかしやはりスクロールバー消えてくれないです。

C++BuilderXE8なのですが、自動(TreeViewの幅変更)で表示ON/OFFしちゃうから
そのアレで勝手に表示されちゃうんのかなあ

337 :デフォルトの名無しさん:2015/10/13(火) 16:04:54.55 ID:gLNTLW9u.net
ちなみに Vista 以降

338 :デフォルトの名無しさん:2015/10/13(火) 16:08:51.48 ID:1nentuZe.net
Win7です^^

339 :デフォルトの名無しさん:2015/10/13(火) 16:14:31.66 ID:gLNTLW9u.net
じゃ、単に TreeView の Windows スタイルに TVS_NOHSCROLL を追加してないだけかな

340 :デフォルトの名無しさん:2015/10/14(水) 05:52:00.33 ID:Z0PqNaXB.net
>>324
いるよねー、文句言うだけで建設的な発言できない奴って
さすが初心者が簡単な質問に答えて俺スゲーするだけの程度の低いスレ民の意見だわ
君は1x1のウィンドウを想定して30万回コールすればいいやん

341 :デフォルトの名無しさん:2015/10/14(水) 07:48:26.80 ID:HVSBvHHm.net
>>340
ぜひ君の「建設的な発言」を聞かせて欲しい。
まぁそれには、1x1のウィンドウに対応できない不具合があるんだろうがな。

元の質問が「重なっているか確認」でなく「自分が最前面である保証」なら
色々とやり方もあるのかもしれないが、それはまた別の話。

342 :デフォルトの名無しさん:2015/10/14(水) 08:19:36.28 ID:UG0pkAng.net
ほかに方法がないのならどんな案でも建設的なんだろうけど、>>317の質問は
「全ウィンドウ列挙して矩形の重なりで判定するより簡単な方法はあるか?」だからなぁ。

343 :デフォルトの名無しさん:2015/10/14(水) 09:14:39.32 ID:OmtAhGc1.net
それが充分に簡単な方法なんだが

344 :デフォルトの名無しさん:2015/10/14(水) 11:02:20.59 ID:oRHV6ndY.net
まさかあれだけ恥ずかしい発言をしておいて
複数人から晒し上げにされたのに
のこのこ出てきて更に煽るとはね

345 :デフォルトの名無しさん:2015/10/14(水) 11:35:51.39 ID:EGTHNy+H.net
画面キャプチャして自分のウィンドウのクライアント領域のキャプチャ画像と比べたらどうだろう
md5とかで比較でも良いし

346 :デフォルトの名無しさん:2015/10/14(水) 11:46:04.64 ID:oRHV6ndY.net
md5で比較する意味は有るの?
自分のウィンドウのクライアント領域のビットマップが
常に固定ならmd5を計算しておく意味も少しは出てくるが
普通は都度都度に刻々に変化するものなのではないかね
更にmd5を算出するには全てのピクセルを読まなきゃダメなんじゃないの?
普通に単純に頭からピクセル同士を比較していくやり方なら
違っていた時点で早期打ち切りが出来るわけだが

347 :デフォルトの名無しさん:2015/10/14(水) 12:02:16.92 ID:8Sy25YjX.net
自分のウィンドウのクライアント領域のビットマップが常に固定かどうかは >317 の条件に含まれていないね

348 :デフォルトの名無しさん:2015/10/14(水) 12:17:16.46 ID:oRHV6ndY.net
仮に自ウィンドウが固定だったとしても、
画面キャプチャのほうは毎回md5を計算するために
嘗め回さなければならないでしょう
早期打ち切りが出来ない分、不利では?

349 :デフォルトの名無しさん:2015/10/14(水) 12:42:21.24 ID:8Sy25YjX.net
ラスタ毎のmd5とかを記録しとけば打ち切りにも対応可能

350 :デフォルトの名無しさん:2015/10/14(水) 12:45:42.57 ID:8Sy25YjX.net
ちなみに
「簡単な方法」の定義があいまいだけど
目的が速度が速いのを目指したいなら
手順が簡単かどうかよりも
API呼ぶ回数が少ない方が有利だと思います

351 :デフォルトの名無しさん:2015/10/14(水) 12:59:23.41 ID:oRHV6ndY.net
でも、画面キャプチャのmd5を計算する箇所で
普通に自ウィンドウのクライアント画像と比較をすれば
よくね?

352 :デフォルトの名無しさん:2015/10/14(水) 13:11:26.25 ID:8Sy25YjX.net
その方が速いんならそれでいいよ
だれも否定はしていないはず

353 :デフォルトの名無しさん:2015/10/14(水) 14:29:56.75 ID:LplWxa35.net
知らないならレスしないで下さい。ウザいだけです。

354 :デフォルトの名無しさん:2015/10/14(水) 15:11:41.07 ID:PR+BbI9O.net
123 名無し~3.EXE sage 2015/10/13(火) 20:33:32.95 w37h7XvB

オプションの更新にWin10へのアップグレードに、レ点がデフォではいってるから
意図しないのにWin10にアップグレードしちゃった人いるんじゃないの
悪質だよなあ

124 名無し~3.EXE 2015/10/14(水) 02:05:05.54 G959FkfV

KB-3035583をアンインストールしたのに、
GWXConfigManager.exeが動いているのをなんとかしたい。

あと、それ以上に面倒なのが、
WindowsUpdateでの10への更新が、いちど非表示に入れたのにまた出ていること。
しかもデフォルトでインストールにチェックが入っているし。
さすがにここまで来ると悪質だ。
標準がオフで目につくというだけなら、ここまでいらだちはしないのだが…。

355 :デフォルトの名無しさん:2015/10/14(水) 15:37:17.44 ID:oRHV6ndY.net
MSはゲイツが居なくなってから本当に酷いな
普通の会社ならとっくに見放されてる
VWはちょっと悪戯しただけで、あのざま
環境問題なんか消費者には関係ないし
燃費が伸びるのなら寧ろ良いと考える人も要るだろう
一方でソフトウェアは互換性という資産に守られているから
全くのやりたい放題だな
北の将軍様レベルで無茶苦茶されても
過去の資産を盾にされて、逃げる事ができないね

356 :デフォルトの名無しさん:2015/10/14(水) 16:24:18.77 ID:JRiou96q.net
おいおいいつからポエム披露場になったんだここは

357 :デフォルトの名無しさん:2015/10/14(水) 16:28:32.54 ID:PR+BbI9O.net
チラシは日記の裏に

358 :デフォルトの名無しさん:2015/10/14(水) 16:42:08.70 ID:OmtAhGc1.net
EnumWindowsに渡す関数は1発書けばそれまでだし、
RECTの当たり判定くらい汎用ライブラリ化してねーやつはモグリってだけ

359 :デフォルトの名無しさん:2015/10/14(水) 18:06:17.54 ID:78XEzKH1.net
ゲーム作りたいんですけどwin32ってどうなんですか?古い?
DirectX?のほうがいい?

360 :デフォルトの名無しさん:2015/10/14(水) 18:14:11.00 ID:HVSBvHHm.net
>>358
このスレ的には IntersectRect を使うべきだろう

361 :デフォルトの名無しさん:2015/10/14(水) 18:18:51.71 ID:OmtAhGc1.net
まあそうだ

362 :デフォルトの名無しさん:2015/10/14(水) 18:21:28.05 ID:j19XNlRE.net
>>359
OpenGL/WebGLおぬぬめ

363 :デフォルトの名無しさん:2015/10/14(水) 18:41:37.35 ID:78XEzKH1.net
>>362
おぬぬめ言われてもそれ理解するのに果てしなく時間がかかりそう

364 :デフォルトの名無しさん:2015/10/14(水) 18:51:35.80 ID:JRiou96q.net
あなたならどれに手を出しても変わらないよ
…これだと良い方にも悪い方にも受け取れるな

365 :316:2015/10/14(水) 19:12:32.49 ID:kP0Tau7M.net
>>319-320
ありがとうございます。

ちょっとよく分かりませんが、>>319氏のはその言葉通りにコード書けば期待通りの動作になるんでしょうか。
どういう原理で期待通りの動作をするのか分かりませんがやってみます。
>>320さんのはメインの親ウインドウ以外のウインドウにWS_CHILDを設定せよということでしょうか。
WS_CHILDを設定すると親ウインドウの領域からそのウインドウが出られないから外したのですが。

366 :デフォルトの名無しさん:2015/10/14(水) 19:16:49.44 ID:oRHV6ndY.net
>メインの親ウインドウ以外のウインドウにWS_CHILDを設定せよということでしょうか。

違うと思います

367 :デフォルトの名無しさん:2015/10/15(木) 00:49:31.57 ID:VpGjS7sW.net
>>363
win32+directx12でいいんでね?
最新だぞ最新
まあwin32部分はウィンドウ出すだけで残りのdirectxがほとんどだけどね

368 :デフォルトの名無しさん:2015/10/15(木) 01:06:47.38 ID:whFEoHyO.net
お前鬼畜wwww

369 :デフォルトの名無しさん:2015/10/15(木) 11:03:19.33 ID:bdlPZJI1.net
「SHA-1の廃止前倒しを」 専門家チームが提言
http://www.itmedia.co.jp/enterprise/articles/1510/09/news054.html

 Webサイトでの認証やデジタル署名に使われるハッシュ関数の「SHA-1」について、暗号解読の国際専門家チームが10月8日、廃止の時期を現在のスケジュールよりも前倒しする必要があると勧告した。
SHA-1がこれまで考えられていたよりも大幅に安いコストで破れることが分かり、犯罪集団に悪用される危険が迫ったと指摘している。

 SHA-1は以前から脆弱性が指摘され、MicrosoftやGoogleなど主要ブラウザメーカーや電子証明書の発行機関が段階的な廃止に向けたスケジュールを公表している。

370 :デフォルトの名無しさん:2015/10/15(木) 18:00:29.14 ID:bdlPZJI1.net
環境汚すからな

371 :デフォルトの名無しさん:2015/10/16(金) 14:29:12.49 ID:IIEWzpZc.net
SPY++であるウィンドウに来るメッセージを覗いてて
R(Return)だけが観察されるというのはどういう状況が考えられますか?
普通はSendされるメッセージです。

372 :デフォルトの名無しさん:2015/10/17(土) 17:36:45.64 ID:HFus6TsS.net
>普通はSendされるメッセージです。
これは当たり前でしたね……

373 :デフォルトの名無しさん:2015/10/18(日) 11:00:40.65 ID:vJDQVwJW.net
そうでもない

374 :デフォルトの名無しさん:2015/10/18(日) 17:30:31.18 ID:hcyPsAl4.net
Spy++がSendされたメッセージを捉えるのはどうやってるんだろう
SendMessage系のAPIをフックしてるのかな?
それとも
SetWindowsHookExでWH_CALLWNDPROC/WH_CALLWNDPROCRETでグローバルなフックをかけてるの?

Returnだけが観察されたことと関係してるかな?

375 :デフォルトの名無しさん:2015/10/18(日) 17:58:11.54 ID:fswpyLwB.net
Windows SDK の 6 あたりにソースついてなかったっけ、Spy++

376 :デフォルトの名無しさん:2015/10/18(日) 18:09:14.26 ID:81sora9Q.net
DLLインジェクションかな

377 :デフォルトの名無しさん:2015/10/18(日) 21:32:04.08 ID:P1RRHvzY.net
>>375
何気に有用な情報

378 :デフォルトの名無しさん:2015/10/18(日) 21:40:15.64 ID:1MrL9p77.net
>>375
そーっすか?!
thx!

379 :デフォルトの名無しさん:2015/10/19(月) 22:57:12.18 ID:cIYsWzpl.net
オーナードローのスプレッドシートを作っています。
セルの編集をする際、セルの位置にEditControlを作り、入力完了後に削除し
表に反映する手法をとっているのですが、この手法についてどう思いますか。

キャレットが出ていない状態(セルの選択状態)からの日本語入力の際
自分のマシンでは問題は起きないのですが、他のマシンでは予期せぬ入力が
される事があります。実装ミスだとは思うんですが、より良い設計があるのでは
と思っての質問です。

380 :デフォルトの名無しさん:2015/10/20(火) 10:41:35.61 ID:TzbTJ/Sf.net
コモンコントロールのListViewとかはそういう実装だわよね

381 :デフォルトの名無しさん:2015/10/20(火) 13:41:26.89 ID:3vGCFixJ.net
VS2013でビルドしたら
GetModuleFileNameがC:\aaa\bbb\ccc\..\..\..\out見たいの吐くんだが
これに*.extを追加してFindFirstFile呼ぶとエラーになる。

どうすればいいんだ

382 :デフォルトの名無しさん:2015/10/20(火) 13:42:54.85 ID:xP4cg3Iy.net
\\

383 :379:2015/10/20(火) 13:48:37.15 ID:3vGCFixJ.net
すまんエラーはにはならなかった。

384 :377:2015/10/20(火) 18:05:53.18 ID:z+IONYCc.net
>>380
レスありがとうございます。
ListViewが編集可能なのを何故か忘れてましたw
ちょっとサンプルを漁ってみたところ、EditBox表示後に
入力を受け付けるのばっかりで、ちょっと残念。
Excelみたいに子ウィンドウのない状態からでも入力を
受けたかったのですが、方向性は間違ってなかったぽいので
もうちょい頑張ってみます。

385 :デフォルトの名無しさん:2015/10/21(水) 09:18:14.97 ID:jQM6AnWx.net
リストビューで思い出した。

リストビューで列が多くあり表に収まりきらない場合は横スクロールとなりますが、
最左端の列のみ常時表示しつつ、2列目以降のみ横スクロールさせたい場合、
左端用のリストビューと横スクロールできるリストビューの2つを並べるしかないですよね?

過去、オーナードローで実現できないか試行錯誤して断念したことがあります。

386 :片山博文MZ ◆T6xkBnTXz7B0 :2015/10/23(金) 18:41:00.13 ID:/zhY2mEN.net
//フレームレートを表示
static DWORD dw0 = 0;
DWORD dw1 = GetTickCount();
printf("\r%luHz ", 1000 / (dw1 - dw0));
dw0 = dw1;
...
このコード、どう思います?

387 :デフォルトの名無しさん:2015/10/23(金) 18:56:09.27 ID:3PXVM0Vu.net
0で割るかも知れないね

388 :デフォルトの名無しさん:2015/10/23(金) 18:56:41.12 ID:ogfwTZEM.net
アカンと思います

389 :デフォルトの名無しさん:2015/10/23(金) 19:05:18.92 ID:g6RvQfmz.net
急いで0で割れ

390 :片山博文MZ ◆T6xkBnTXz7B0 :2015/10/23(金) 19:25:03.75 ID:/zhY2mEN.net
皆さん、有り難う御座います。
ゼロ除算になりそうなときは非表示にすると行けそうですね。

391 :デフォルトの名無しさん:2015/10/23(金) 19:26:43.65 ID:h7v1F5gE.net
片山先生にも分からない事があるのか!

392 :デフォルトの名無しさん:2015/10/23(金) 20:21:07.65 ID:ded5JV/s.net
dw1 - dw0が0になることはあるのか?
ループにsleepもなくぶんまわすとかしなけりゃ起きない
逆にそういう場合には起きる
文脈による

393 :デフォルトの名無しさん:2015/10/23(金) 20:29:44.41 ID:E9Sd6aCq.net
一回目のGetTickCountがたまたま0だったら0で割る事になるし
そうじゃなくても1000Hz以上の速度で動いたら0で割る事になるね
内容にもよるけど、1000Hzぐらいは普通にありえる範囲だよねぇ

394 :デフォルトの名無しさん:2015/10/23(金) 21:30:58.46 ID:CrI38Gq0.net
>>392
> ループにsleepもなくぶんまわすとかしなけりゃ起きない

49日ちょいでラップするから、その考えは浅すぎる

395 :デフォルトの名無しさん:2015/10/23(金) 21:37:01.60 ID:ded5JV/s.net
>>394
49日とか関係なしに連続で同じ値が出るなんてそれこそ1000Hzないとないだろ

396 :デフォルトの名無しさん:2015/10/23(金) 21:40:53.46 ID:ded5JV/s.net
うおおDWORDか
浅すぎて新島が誕生するレベルだったよ・・・

397 :デフォルトの名無しさん:2015/10/23(金) 21:47:41.71 ID:1FmkefyV.net
コントやめろ

398 :デフォルトの名無しさん:2015/10/23(金) 21:53:44.01 ID:ded5JV/s.net
だがちょっと待ってほしい
unsigned って1 - 2 = 0だったか?

399 :デフォルトの名無しさん:2015/10/23(金) 21:58:07.21 ID:h7v1F5gE.net
>>397
初心者なんで、どの辺りが笑いどころかサッパリ分かりません

400 :デフォルトの名無しさん:2015/10/23(金) 22:06:11.62 ID:E9Sd6aCq.net
なんか急にスレのレベルが急降下しているような

401 :片山博文MZ ◆T6xkBnTXz7B0 :2015/10/23(金) 22:14:50.12 ID:/zhY2mEN.net
頻繁にフレームレート更新を繰り返すと、タイトルバーが
ちらつくので、1秒ごとにフレームレートの平均値を表示してくれ、
とのことです。できますか?

402 :デフォルトの名無しさん:2015/10/23(金) 22:32:30.30 ID:E9Sd6aCq.net
お前本当にバカだな
一秒間の間に何回フレームが更新されたか数えて表示すればよいだけだろ
FPSの定義そのものだ

403 :デフォルトの名無しさん:2015/10/23(金) 22:34:47.28 ID:ded5JV/s.net
ドヤッ

static DWORD dw0 = 0;
DWORD dw;
DWORD dw1 = GetTickCount();
static int n = 0;
if( dw0 > dw1 ){
dw = ( 0xFFFFFFFF - dw1 ) + dw0;
}else{
dw = dw1 - dw0;
}
n++;
if( dw0 >= 1000 ){
printf("\r%luHz ", n);
n = 0;
dw0 = 0;
}

404 :デフォルトの名無しさん:2015/10/23(金) 22:40:23.49 ID:ded5JV/s.net
>if( dw0 >= 1000 ){

if( dw >= 1000 ){
  orz
}

405 :デフォルトの名無しさん:2015/10/23(金) 22:50:29.05 ID:ded5JV/s.net
>dw = ( 0xFFFFFFFF - dw1 ) + dw0;
dw = ( 0xFFFFFFFF - dw0 ) + dw1;
>printf("\r%luHz ", n);
printf("\r%dHz ", n);
orz = 3;

憑かれているようだ吊ってくる・・・

406 :デフォルトの名無しさん:2015/10/24(土) 04:06:02.84 ID:7oDBCbbL.net
>>403-405
dw = dw1 - dw0;
だけで十分。
ラップアラウンドしても問題無い。

407 :デフォルトの名無しさん:2015/10/24(土) 06:14:20.31 ID:1uTcqIZi.net
dw0が常に0なんだが意味あんのか

408 :片山博文MZ ◆T6xkBnTXz7B0 :2015/10/24(土) 07:46:57.94 ID:E5/Z8Xm5.net
CHAR title[64];
static DWORD count = 0;
static DWORD dw0 = 0;
DWORD dw1 = GetTickCount();
LONG span = dw1 - dw0;
if (span >= 1000) {
DWORD fps = count * 1000 / span;
DWORD dotzero = count * 10000 / span % 10;
wsprintfA(title, "%u.%u fps.", fps, dotzero);
SetWindowTitleA(hwnd, title);
dw0 = GetTickCount();
} else {
++count;
}

409 :デフォルトの名無しさん:2015/10/24(土) 09:02:02.42 ID:ddZkBitk.net
>>406
なるほど〜

dw = ( 0xFFFFFFFF - dw0 ) + dw1;※
= 0xFFFFFFFF + dw1 - dw0;
= ( dw1 - dw0 ) + 0xFFFFFFFF;

1 + 0xFFFFFFFF = 0;
( dw1 - dw0 ) + 0xFFFFFFFF = ( dw1 - dw0 ) - 1;
dw = dw1 - dw0 - 1;???

※orz≡3;

dw = ( ( 0xFFFFFFFF - dw0 ) + dw1 ) + 1;

0xFFFFFFFF->0x100000000にしたいがはいんねーし・・・
結局dw = dw1 - dw0で覚えといたほうがいいな・・・

410 :デフォルトの名無しさん:2015/10/24(土) 17:42:31.85 ID:FPe1odjO.net
GetTickCount では分解能がどうのこうのって問題は無いの?
だからといって timeGetTime 使っても大差無さそうだけど。

411 :デフォルトの名無しさん:2015/10/24(土) 17:50:12.21 ID:JWOZBggM.net
1sを計るのに1msの分解能で不都合があると思えない

412 :デフォルトの名無しさん:2015/10/24(土) 17:50:36.95 ID:VnqcBtM+.net
http://y-okamoto-psy1949.la.coocan.jp/VCpp/checktime/

>GetTickCountは分解能が悪い、QueryPerformanceCounterを使うべきである

413 :デフォルトの名無しさん:2015/10/24(土) 17:53:41.55 ID:VnqcBtM+.net
今どきなら、std::chronoを使った方がクールじゃね?

414 :デフォルトの名無しさん:2015/10/24(土) 18:33:54.83 ID:niXzNvfm.net
>>410-411
サンプリング定理では対象の2倍の周波数があればいいことになってるな

415 :デフォルトの名無しさん:2015/10/24(土) 18:46:57.38 ID:E5/Z8Xm5.net
分解能の低いアナログ時計よりも原子時計を使いましょう

416 :デフォルトの名無しさん:2015/10/27(火) 21:51:46.93 ID:aTkGcr+4.net
水素メーザーだろjk

417 :デフォルトの名無しさん:2015/10/27(火) 22:01:44.22 ID:ksuKqf7O.net
腹時計で十分

418 :デフォルトの名無しさん:2015/10/27(火) 22:04:34.96 ID:I14zLtiA.net
"ごくごく低確率でも問題があるかもしれない"ならばなんらか対策するべきだと思う。
そういうコードがあちこちにあると、どれか一つ考えぬけとかでバグが顕在化するから。
しかも再現率低くて問題箇所の発見が非常に困難になる場合があるし。

419 :379:2015/10/27(火) 22:11:39.82 ID:cfkfKsSk.net
外から例外でくくればいいな
なかでごちゃごちゃやると遅くなる

420 :デフォルトの名無しさん:2015/10/28(水) 13:41:57.74 ID:9zUX3+we.net
>>381
キサマは再帰でファイル削除するときに範囲外までぶっ壊すタイプだ

421 :デフォルトの名無しさん:2015/10/28(水) 20:55:38.12 ID:DIDF3JCG.net
システムディレクトリのパスを得るために、パスの格納先であるクラスメンバのTCHAR型の配列を

GetSystemDirectory(Path, MAX_PATH + 1);

この様に渡すと、アクセス違反が発生するんですが
何故アクセス違反になるのか原因がさっぱり分かりません。
C++のクラスを使ったプログラミングはこれが初めてです。

422 :デフォルトの名無しさん:2015/10/28(水) 21:13:30.20 ID:bZn9m5X1.net
Path 自体はどう宣言しているの?

普通なら

TCHAR Path[MAX_PATH + 1];

GetSystemDirectory(Path, MAX_PATH);

じゃね?

423 :デフォルトの名無しさん:2015/10/28(水) 21:31:49.85 ID:DIDF3JCG.net
>>422
TCHAR Path[MAX_PATH + 1];
こんな感じで宣言してあります。

その方法でやってみてもアクセス違反になりますね。
MSDNによるとGetSystemDirectoryの第2引数はMAX_PATH以上の値を指定しろとのことです。
通常の関数プログラミングではこんな問題に直面したことはないのですが。
ちなみにクラスのインスタンスはグローバルな領域に確保しています。

クラスの宣言はこんな感じです。実際のものと異なっていますが、質問の件のために割愛。

class AppBase
{
 TCHAR Path[MAX_PATH + 1];

 static LRESULT CALLBACK HookProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp);
 LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp);
};

プロシージャのクラス化を施しています。
GetSystemDirectoryはWndProc内のWM_CREATEメッセージをハンドルする際に実行しています。

424 :片山博文MZ ◆T6xkBnTXz7B0 :2015/10/28(水) 21:39:19.05 ID:5FN/U/Ps.net
WndProcの型が違う。
WndProcをstaticにするか、クラスの外に出せ。

425 :デフォルトの名無しさん:2015/10/28(水) 21:39:24.41 ID:UJXuJHMq.net
WndProcもstaticじゃないの?

426 :デフォルトの名無しさん:2015/10/28(水) 21:46:47.48 ID:DIDF3JCG.net
>>424>>425
WndProcはstaticではありません。
staticにするとメンバのアクセスに制限があるそうなのでstaticにしていませんでした。
試してみます。

427 :デフォルトの名無しさん:2015/10/28(水) 21:51:39.30 ID:gVmYV2et.net
>>423
static LRESULT CALLBACK HookProc LRESULT CALLBACK HookProc
には何でstatic つけているの?
で、TCHAR Path[MAX_PATH + 1]; はにはなんでstaticないの?

428 :デフォルトの名無しさん:2015/10/28(水) 21:52:32.96 ID:DIDF3JCG.net
予想通りWndProcをstaticにすると静的ではないメンバへのアクセスができませんでした。
>>424さんが仰るとおり、WndProcをクラスの外に出すしか方法がないようです。

折角クラス化してスマートに書けると思っていたのに
まどろっこしいですね・・・。

429 :片山博文MZ ◆T6xkBnTXz7B0 :2015/10/28(水) 21:53:01.80 ID:5FN/U/Ps.net
WM_CREATEのときにメッセージ経由でWndProcにポインター引数を渡す方法がある。
詳しくはWM_CREATEとCreateWindowを参照。

430 :片山博文MZ ◆T6xkBnTXz7B0 :2015/10/28(水) 21:57:08.81 ID:5FN/U/Ps.net
ポインター引数を関数内static変数に保存しておくか、
SetWindowLongPtrでウィンドウハンドルと関連付けするか、
自前でハンドルマップを用意するか

431 :デフォルトの名無しさん:2015/10/28(水) 21:57:42.68 ID:gVmYV2et.net
>>428
そして、クラス内のTCHAR Pathにアクセスすると

432 :デフォルトの名無しさん:2015/10/28(水) 21:58:44.54 ID:DIDF3JCG.net
>>427
なんかウィンドウプロシージャをクラス内に内包して使うには
staticなフック用のプロシージャ関数と実際の処理内容を書くプロシージャのふたつが必要なみたいなんです。
この場合、HookProc内でWndProcを呼ぶ形になります。

TCHAR型の配列をstaticにしていないのはWndProc内から参照できるようにするためです。
って、これはどっちでも参照できますね・・・。
普段やり慣れていないことをするとどうも頭が回らなくなってしまう。

433 :デフォルトの名無しさん:2015/10/28(水) 22:02:36.33 ID:DIDF3JCG.net
メンバ変数を全部staticにしてしまうのが一番手っ取り早いかもしれない。
やってることがC言語で書いてた時と変わってない気がするけど。

434 :片山博文MZ ◆T6xkBnTXz7B0 :2015/10/28(水) 22:04:32.58 ID:5FN/U/Ps.net
ウィンドウのインスタンスが複数あれば全部staticにすることはできない。

435 :デフォルトの名無しさん:2015/10/29(木) 05:31:45.36 ID:BoW22xta.net
元の質問はGetSystemDirectoryだからまずそれが正しく動作することを確認

436 :デフォルトの名無しさん:2015/10/29(木) 09:01:57.91 ID:IDJmDfji.net
>>432
>なんかウィンドウプロシージャをクラス内に内包して使うには
>staticなフック用のプロシージャ関数と実際の処理内容を書くプロシージャのふたつが必要なみたいなんです。

LRESULT CALLBACK HookProc( HWND hWnd, UINT msg, WPARAM wp, LPARAM lp )
{
  return Window.WndProc( hWnd, msg, wp, lp );
}

こういうこと?
それならWndProcにstaticは要らないよ

437 :デフォルトの名無しさん:2015/10/29(木) 09:21:01.44 ID:ytDduPxZ.net
GWLP_USERDATAとかでインスタンス渡して
staticなWndProcからインスタンスごとのWndProc呼び出すためだろ

438 :デフォルトの名無しさん:2015/10/29(木) 12:06:45.89 ID:IDJmDfji.net
彼のレベルでそういうことは無理だと思われ

439 :デフォルトの名無しさん:2015/10/29(木) 12:07:41.20 ID:IDJmDfji.net
どうしてもって言うなら、
SetWindowSubclass
を薦めるべき
何も考えずに済むから

440 :デフォルトの名無しさん:2015/10/29(木) 15:43:47.89 ID:NLVhxZ3A.net
>>435
インスタンスのメンバを渡そうとするとアクセス違反が発生するのは相変わらずです。
恐らくインスタンスのポインタが不正なアドレスを指し示しているからなのでしょうが
その原因が釈然としないんですよね。グローバル領域でインスタンスを生成しているので
どこからでもアクセス可能なはずなんですが・・・。

>>436
staticなのはHookProcのみでWndProcはstaticを付けていません。

>>437
WNDCLASSEXのlpfnWndProcにHookProcを指定し
CreateWindowExのlpParamにインスタンス自身のポインタを渡してから
コールバックでHookProcが呼び出された時にGetWindowLongでLPARAMに格納されている
インスタンス自身のポインタを受け取り、それからWndProcを呼び出しています。

>>439
将来的には子ウィンドウをサブクラス化してひとつのインスタンスからすべてのウィンドウを管理するつもりです。

441 :デフォルトの名無しさん:2015/10/29(木) 15:53:33.92 ID:RcFd5cz1.net
static な WndProc を用意すれば HookProc なんぞ不要だが、

>なんかウィンドウプロシージャをクラス内に内包して使うには
>staticなフック用のプロシージャ関数と実際の処理内容を書くプロシージャのふたつが必要なみたいなんです。

この根拠(出典)がわからん。

442 :デフォルトの名無しさん:2015/10/29(木) 16:03:24.63 ID:ytDduPxZ.net
>>440
CreateWindowExのlpParamはWM_CREATEでLPARAMとして受け取れるLPCREATESTRUCTのlpCreateParamsな
GetWindowLongPtrのGWLP_USERDATAを使いたいならWM_CREATE時に自分でSetWindowLongPtr使うなりしろ

>>441
名前がHookProcになってるだけで正体はstaticなWndProcなんだろ

443 :デフォルトの名無しさん:2015/10/29(木) 16:07:34.46 ID:RcFd5cz1.net
>>442
それはわかっている。

質問者はもしかして「静的なウィンドウプロシージャと動的なウィンドウプロシージャの2つが
必要」と思っているのではないか、と思っての確認だ

444 :デフォルトの名無しさん:2015/10/29(木) 16:45:51.79 ID:IDJmDfji.net
>将来的には子ウィンドウをサブクラス化してひとつのインスタンスからすべてのウィンドウを管理するつもりです。

これの意味が良く分らないけど、一つのインスタンスですべてのウィンドウを管理したいんなら
>>436にも書いたけど、

LRESULT CALLBACK HookProc( HWND hWnd, UINT msg, WPARAM wp, LPARAM lp )
{
  return Global_Window_Manager.WndProc( hWnd, msg, wp, lp );
}

↑こういうことがしたいの?
しかし、一つのインスタンスですべてのウィンドウを管理するってのは
ここにいる殆どの人にとっては、???だと思うし、適切な助言はもらえないかも
普通この手の話題はSetWindowSubclassが最適解なんだが・・・

445 :デフォルトの名無しさん:2015/10/29(木) 17:15:19.02 ID:NLVhxZ3A.net
>>441
参照したページは下記以外にもありますが、一応の出典はこちらになります。
■■Programmer's Studio■■
http://members3.jcom.home.ne.jp/progstudio/win_tips1.html
■■Programmer's Studio■■
http://members3.jcom.home.ne.jp/progstudio/win_tips2.html

>>442
はい。CreateWindowExのlpParamに渡したインスタンス自身のポインタはGetWindowLongで受けとることができます。
勿論、lp->lpCreateParamsからも受け取ることができます。

>>443
コールバック関数からはインスタンスのアドレスが取れないそうです。
ですので、staticが付いているプロシージャとstaticが付いていないプロシージャがあるわけです。
この辺の理由について私にはよく分かりません。言語的な仕様なのかWindowsの仕様なのか。

446 :デフォルトの名無しさん:2015/10/29(木) 17:26:21.42 ID:NLVhxZ3A.net
>>444
ベースとなる親ウィンドウについてはサブクラス化は必要なく
ウィンドウ内に配置するフォームやボタンなどの子ウィンドウについてはサブクラス化する必要がありますね。
そうしないと1つのプロシージャの中に全部のプロシージャを書かないといけなくなりますから。
ソースコードが読みづらくなりますし、そのことがバグの温床になりえるので。

1つのインスタンスでアプリケーション内のすべての子ウィンドウを管理するのは
一般的なアプリケーションで実装している方法ではないのかな?

447 :デフォルトの名無しさん:2015/10/29(木) 17:26:43.70 ID:IDJmDfji.net
もう何に困っているのかサッパリだが、流儀に従って
XP以降から登場したSetWindowSubclassつかうか
GetWindowLongでインスタンス取得してinst->WndProcしろよ

>CreateWindowExのlpParamに渡したインスタンス自身のポインタはGetWindowLongで受けとることができます。

これは初耳だな
これで落ちてるだけじゃね?

448 :デフォルトの名無しさん:2015/10/29(木) 17:33:07.82 ID:IDJmDfji.net
>>446
>1つのインスタンスでアプリケーション内のすべての子ウィンドウを管理するのは
>一般的なアプリケーションで実装している方法ではないのかな?

それなら同じクラスのボタンを複数個表示したい場合はどうするんだ?
auto *button = new button_class( parent, x, y, w, h );
とすればいくらでも生成出来たほうが良いだろう

449 :デフォルトの名無しさん:2015/10/29(木) 17:44:38.19 ID:IDJmDfji.net
まぁ別に絶対一つのオーバーラップウィンドウに対して一つしかインスタンスが無いことが決まっている子ウィンドウなら
オーバーラップのウィンドウクラスで子ウィンドウのサブクラスを管理しても良いんだが
その辺は自由といっちゃ自由なんだが・・・
既存のウィンドウクラスをサブクラス化するなら結局SetWindowSubclassを使うことになるから
どうせなら親のオーバーラップウィンドウのインスタンスの紐付けにもSetWindowSubclassを使えばよいだろう
そういうのの専用のAPIなのでまず間違いが無い

450 :デフォルトの名無しさん:2015/10/29(木) 18:01:42.16 ID:RcFd5cz1.net
>>442
>CreateWindowExのlpParamに渡したインスタンス自身のポインタはGetWindowLongで受けとることができます。

これは君の誤解。WM_CREATE時にSetWindowLong()してるから受け取れるんだよ。参照しているページの
コードを正しく読みとかなきゃ。


たぶん基本的なことがわかっていないので、俺のコメントはここまで。あとは他の方にまかせる。

451 :デフォルトの名無しさん:2015/10/29(木) 18:02:20.98 ID:RcFd5cz1.net
すまん、>>442じゃなくて>>445

452 :デフォルトの名無しさん:2015/10/29(木) 19:59:21.22 ID:lCX/HIGL.net
x64時代は GetWindowLongPtr じゃないのん

と思ったがやはり
>>450 >>438
につきるな

453 :デフォルトの名無しさん:2015/10/29(木) 23:14:44.05 ID:NLVhxZ3A.net
皆さんに大変申し訳ないんですが、アクセス違反の原因が判明致しました。

>>445の参照先のCBaseWnd::CallProc内の
//_thisポインタが取得できなかった場合...
   if( ! thisPtr )
この部分に該当する私が作成しているソースコードがif(thisPtr = NULL)になっていたのが原因でした。
本来ならif(thisPtr == NULL)ですね。
以前ポインタを使ったプログラムでif(!〜)で書くとうまく動かないケースがあったので
if(〜 == NULL)と書こうとしたところを打ち間違えていただけでした。大変失礼しました。

なんでデバッガの自動変数のthisポインタがいつも0(NULL)なんだろうと不思議に思っていたら・・・ですね。
質問の件のアクセス違反の問題は自己解決しました。

>>447>>450
ううう、SetWindowLongをコメントアウトしたらウィンドウを閉じてもIDEがデバッグ中のままですね。
それじゃあ、CreateWindowExのlpParamにセットしたthisポインタは一体なんなんだろう・・・。
2回同じthisポインタをセットしてることになりませんか?

>>448
それはですね、ベースのインスタンス内のコンテナに入れようかと思っています。
その場合もプロシージャが二段構成になるのでしょうか、面倒ですね。
こんなことしなくちゃいけないならプロシージャは普通の関数にした方がいいかもしれないですね。

>>449>>452
SetWindowSubclassは使ったことはあります。同じことがSetWindowLongでもできますけど。
GetWindowLongPtrは32bitと64bit両方対応できる書き方のようですね。

はい、質問の件は解決しちゃったのでこの質問はこれで閉じます。
スレの流れが意味不明ですみません。みなさん、ありがとうございました。

454 :デフォルトの名無しさん:2015/10/30(金) 01:24:20.19 ID:9r6cQokq.net
サブクラス化において SetWindowLong じゃなくて SetWindowSubclass が
推奨されている理由を理解してるなら好きにすればいいと思うよ。

455 :デフォルトの名無しさん:2015/10/30(金) 10:55:25.00 ID:bGTI8z09.net
if(thisPtr == NULL) 文法エラー出ない
if(thisPtr = NULL) 文法エラー出ない
if(NULL == thisPtr) 文法エラー出ない
if(NULL = thisPtr) 文法エラー出る

456 :デフォルトの名無しさん:2015/10/30(金) 11:00:33.58 ID:9r6cQokq.net
なるほじ

457 :デフォルトの名無しさん:2015/10/30(金) 12:57:44.73 ID:FKezdCzi.net
>>455
そんな化石みたいなノウハウは忘れて、コンパイルオプションに /Wall 付けとけ

458 :デフォルトの名無しさん:2015/10/30(金) 13:05:37.49 ID:fK4ls09n.net
まぁでも定数を左に書いたほうが重要な情報がエディタの左に集中して読みやすい場合も有るよね

459 :デフォルトの名無しさん:2015/10/30(金) 14:36:20.28 ID:d4FfMDoX.net
少なくとも片方が定数でなければ使えないノウハウだし
「thisPtrがNULLのとき」と、thisPtrについて問いたいのを、
「NULLがthisPtrのとき」のように、NULLについて問う文面に変形したからって
はたして読みやすくなるのか、甚だ疑問だなあ
命題の逆という意味でも気持ち悪いし

460 : ◆QZaw55cn4c :2015/10/30(金) 16:02:06.42 ID:ydpR+iDi.net
昔から話題になり賛否両論だが、即効性はあるだろう

461 :デフォルトの名無しさん:2015/10/30(金) 16:35:01.19 ID:fK4ls09n.net
>「NULLがthisPtrのとき」

そういう風に読むからそう感じるだけで、詠み方は個人の自由だから本質的に関係なくね?
NULL==thisPtrなんだから、そのまま
「NULLと等しいthisPtrのとき」
って読んでも良いわけでさ

462 :デフォルトの名無しさん:2015/10/30(金) 16:38:25.59 ID:WKDnxxt/.net
というか、

> if(thisPtr = NULL) 文法エラー出ない

お前らのコンパイラさんは警告出してくれないの?

463 :デフォルトの名無しさん:2015/10/30(金) 16:46:58.80 ID:d4FfMDoX.net
比較を=と書いてしまうどんくさ過ぎるやつは論外として...
「thisPtrがダメなら」をif(!thisPtr)と正直に書けばいいのにね

464 :デフォルトの名無しさん:2015/10/30(金) 16:52:12.91 ID:tBRMFkFs.net
そもそも参照しているページからして冗長なコードを書いているのだから
質問者のレベルもわかろうというもの。

文法の話題はその辺にしておこうや。

465 :デフォルトの名無しさん:2015/10/30(金) 16:54:57.38 ID:WKDnxxt/.net
「NULLだからダメという意味」がいいとしても
「ダメならNULLが入っている」というのは危険やろ
0xFFFFFFFF(-1)が入っていたらアウトやで

466 :デフォルトの名無しさん:2015/10/30(金) 17:03:08.13 ID:WKDnxxt/.net
あと個人的に

if(thisPtr) は良いとしても
if(!thisPtr) は使わないようにしている
! の存在が分かりづらいから

467 :デフォルトの名無しさん:2015/10/30(金) 17:08:51.57 ID:4lmsW84L.net
フォント、もしくはモニターを変えるべきじゃね?

468 :デフォルトの名無しさん:2015/10/30(金) 17:14:41.49 ID:d4FfMDoX.net
>>465
ダメか否かを0と非0で示すのはB言語の時代から続いてる慣習で
そこを今さらゴネる奴ぁ破門でおk

HRESULTみたいのはともかくINVALID_HANDLE_VALUEはクソ

469 :デフォルトの名無しさん:2015/10/30(金) 17:58:47.68 ID:EtgcZYvF.net
>>462
警告が出ないとは書いてないな
エラーが出ないと書いてある
良く嫁

470 :デフォルトの名無しさん:2015/10/30(金) 18:59:11.28 ID:WKDnxxt/.net
>>469
ミスしてても警告出るなら気づくし直せるんじゃね?そうしたら

>この部分に該当する私が作成しているソースコードがif(thisPtr = NULL)になっていたのが原因でした。

ということも無かったよな?と言っているわけではっきりそう書かないと分からないのか?
というかその点については>>457でも指摘されているんだが
お前はよく読んだ上でそういうこと言っているの?

471 :デフォルトの名無しさん:2015/10/30(金) 19:05:07.31 ID:BpwNkir2.net
>>462
このスレ住人のプログラムは警告がいっぱい出すぎていやぽになるから、
出すのはエラーだけで警告は出ないようにしている奴がスレの大多数だよ

>>467
おっさん目・脳が原因だから、そんなことしても駄目なんだよ

472 :デフォルトの名無しさん:2015/10/30(金) 19:33:22.34 ID:GDTU3KP4.net
警告無視したら事故るだけなんですけどね
単独事故はいくらでもしていいが他人を巻き込むなよ

473 :デフォルトの名無しさん:2015/10/30(金) 21:32:15.65 ID:7o442mgO.net
そういえば最近IEウェブブラウザコンポーネントがすごく調子いい
あまりに落ちるのでchoromeにしようとしてたのに

474 :デフォルトの名無しさん:2015/10/30(金) 21:59:26.07 ID:XZwfZSuT.net
1つ120円のお菓子を5個買いました。
合計いくらでしょう?

○ 120 * 5 = 600
× 5 * 120 = 600

最近の小学校ではこうなるしな

475 :デフォルトの名無しさん:2015/10/30(金) 22:44:57.11 ID:S9hryATs.net
>>474
最近じゃない、大昔からや

朝日新聞社(1972年1月26日).
“正しい 答えの式: 4 × 6 = 24−これは間違い: 6 × 4 = 24−大阪府の小学校のテスト”.
朝日新聞(朝日新聞社): p. 17

476 :デフォルトの名無しさん:2015/10/30(金) 22:53:29.75 ID:GDTU3KP4.net
横井庄一が見つかった年だってのは覚えてる

477 :デフォルトの名無しさん:2015/10/30(金) 23:07:00.22 ID:gPbmFrsE.net
なるほど朝日新聞から間違っていたんだな
理解した

478 :デフォルトの名無しさん:2015/10/30(金) 23:11:57.95 ID:81BFIqC3.net
>>468
ちょっとずれた話だけど、慣習というなら「0がダメ」「非0がダメ」両方存在するからややこしい。
整数と真偽値の区別がなくしたことで言語仕様を小さく抑えるのに役立ったけど、今となっては
やっかいな負の遺産だな。

479 :デフォルトの名無しさん:2015/10/31(土) 00:27:54.26 ID:VI585LHq.net
>>475
40年が大昔なんか!
新聞に取り上げられる話なんかw

480 :デフォルトの名無しさん:2015/10/31(土) 08:35:58.58 ID:lwmwKgKI.net
>>478
言語仕様だけの話じゃなくなってるぞ
いろんなライブラリの規約で0ターミネートが広く浸透してるからな
ところで、0ターミネートを0xffffffffターミネートにしたら
やっかいな負の遺産とやらが片付くのか?

481 :デフォルトの名無しさん:2015/10/31(土) 09:29:08.11 ID:/3zA5kgS.net
>>480
こんなのが両方存在するからややこしい。

int err = func();
if ( ! err ) {
}

if ( func() ) {
}

さすがにboolだったら成功をfalseとするやつはいないだろう。

482 :デフォルトの名無しさん:2015/10/31(土) 10:29:15.04 ID:XOcT6ZqB.net
#ifndef NDEBUGみたいなもんか

483 :デフォルトの名無しさん:2015/10/31(土) 11:32:55.48 ID:NotpAYNa.net
>>481
それはネーミングがクソ
せめて errno とか err_code とかにしてくれ

484 :デフォルトの名無しさん:2015/10/31(土) 12:01:05.96 ID:eH4IcMDe.net
一方Win32APIはHRESULTを採用した

485 :デフォルトの名無しさん:2015/10/31(土) 12:29:13.90 ID:/3zA5kgS.net
>>483
よくあるひとつの「慣習」だな。0以外の値がエラーだからエラーの有無を表す真偽値として扱うという。
それ自体糞だが。

486 :デフォルトの名無しさん:2015/10/31(土) 12:37:38.70 ID:VI585LHq.net
真偽だけじゃエラーの種類なんやねんってなるわな

487 :デフォルトの名無しさん:2015/10/31(土) 12:51:33.88 ID:CR8bSv/n.net
BOOLと型指定してるくせに戻り値が3値だったりしなければどうでもいい
つまりINVALID_HANDLE_VALUEはクソ

488 :デフォルトの名無しさん:2015/10/31(土) 12:57:44.74 ID:tqUin/Ts.net
>INVALID_HANDLE_VALUE

こいつのせいで安全な終了処理がどれだけ煩雑になることか

489 :デフォルトの名無しさん:2015/10/31(土) 13:00:30.50 ID:/3zA5kgS.net
>>487
「ネーミングがクソ」ってのはそっちのが的確だな。

490 :デフォルトの名無しさん:2015/10/31(土) 13:13:43.82 ID:tqUin/Ts.net
>>474
まず
120 * 5 = 600
整数ないしは実数の四則演算は可換である
したがって
5 * 120 = 600

と書けば小学校でも正解にされる

491 :デフォルトの名無しさん:2015/10/31(土) 13:16:19.32 ID:VI585LHq.net
>>490
掛け算の順序問題

492 :デフォルトの名無しさん:2015/10/31(土) 15:44:33.25 ID:RIZFllKe.net
文脈からしたら本当の正解は
1 * 120 * 5 = 600
なんじゃないのー
最初の1を省略すんなよ
0個かもしれないだろう?

493 :デフォルトの名無しさん:2015/10/31(土) 15:49:06.96 ID:GVk0olpQ.net
×1 * 120 * 5 = 600

掛けられる数は答えと同じ単位になるんでしたね?
次からは気をつけましょう

494 :デフォルトの名無しさん:2015/10/31(土) 15:54:53.79 ID:eH4IcMDe.net
120(円/個)*5個=600円
5個*120(円/個)=600円
どっちも正解

495 :デフォルトの名無しさん:2015/10/31(土) 15:59:20.41 ID:IVNTd+mA.net
>>492
>1つ120円のお菓子を5個買いました。
だから
120 / 1 * 5 = 600
か、もしくは5個=5セット、という意味なら単に
120 * 5 = 600
じゃね?

例えば「5つ120円のお菓子を5個買いました」だったとして
5 * 120 * 5 =
で値段を求める解釈は無理じゃね?
普通に考えて120円か600円のどっちかじゃね?

496 :デフォルトの名無しさん:2015/10/31(土) 16:16:44.01 ID:RIZFllKe.net
プログラミング言語的に解釈すると
左端のオペランドの型が式の型という考え方か

497 :デフォルトの名無しさん:2015/10/31(土) 16:18:13.74 ID:RIZFllKe.net
小学生からやり直したいわー

498 :デフォルトの名無しさん:2015/10/31(土) 17:30:40.43 ID:jgYZGk3p.net
小学生からやり直したら童貞卒業出来ますか?

499 :デフォルトの名無しさん:2015/10/31(土) 18:40:14.44 ID:VXrj8Wc8.net
>>487
> BOOLと型指定してるくせに戻り値が3値だったりしなければどうでもいい

これは同意するけど
INVALID_HANDLE_VALUE になんの関係が?

500 :デフォルトの名無しさん:2015/10/31(土) 19:10:00.57 ID:IS0mfGaY.net
またGetMessageの話繰り返すのか…

501 :デフォルトの名無しさん:2015/10/31(土) 19:24:23.76 ID:qtS/NLO9.net
無限ループってこわくね?

502 :デフォルトの名無しさん:2015/10/31(土) 19:29:57.81 ID:/3zA5kgS.net
まぁ、結論は「BOOLやHANDLEを暗黙に真理値とみなす条件式は書くな」ってことだな。
BOOLをTRUE/FALSEと比較する式を書くなという人がいるようだが、ここは明示的に比較するのが正しい。

503 :デフォルトの名無しさん:2015/10/31(土) 20:31:10.80 ID:IVNTd+mA.net
そんなこと無いよ

https://msdn.microsoft.com/ja-jp/library/cc411211.aspx

BOOL ShowWindow(

戻り値

ウィンドウが以前から表示されていた場合は、0 以外の値が返ります。


↑ほら、TRUEを返すとは書いてないよ

504 :デフォルトの名無しさん:2015/10/31(土) 20:38:53.32 ID:GVk0olpQ.net
TRUEマクロはBOOLに代入する時用の非FALSEのサンプルって認識だわ

505 :デフォルトの名無しさん:2015/10/31(土) 21:30:23.02 ID:BXlIMP23.net
>>502
TRUEと比較するな
です

506 :デフォルトの名無しさん:2015/10/31(土) 23:26:01.93 ID:9zRzzHDy.net
>>502
無効のとき0と規定されているものを真偽判定することの何が「暗黙に」なんだ?
まさかとは思うがif(some_func())よりもif(some_func() == TRUE)が正しいと言っているのか?

507 :デフォルトの名無しさん:2015/10/31(土) 23:40:02.48 ID:aOI+99BR.net
BOOL XXX;
if(XXX == TRUE ) いくない
if(XXX) いいよ
if(!XXX) いいよ

508 :デフォルトの名無しさん:2015/10/31(土) 23:44:09.17 ID:/3zA5kgS.net
そこは0と比較するんだよ。0,-1,その他、なら0か-1と明示的に比較する。
some_func()がBOOLのときif(some_func())とするのが糞。
BOOLだがTRUEを返すとされていないならif(some_func() == TRUE)はそもそも仕様と合致していない。

509 :デフォルトの名無しさん:2015/11/01(日) 00:00:44.95 ID:a/KTrDXN.net
そんなにあいてしてほしい?

510 :デフォルトの名無しさん:2015/11/01(日) 00:16:05.43 ID:SE20IW2P.net
>>508
仲間を連れてくるか、一人二役にしないと続かないぜそれ

511 :デフォルトの名無しさん:2015/11/01(日) 00:27:14.62 ID:U4S4bby1.net
>>508
BOOLを-1と比較しろと?
BOOLという命名を差し置いて何がクソなんだ?
TRUEを返さない関数の戻りをTRUEと比較する話はイミフすぎ

512 :デフォルトの名無しさん:2015/11/01(日) 00:48:02.08 ID:YfxO7Cob.net
結局ループか。

513 :デフォルトの名無しさん:2015/11/01(日) 02:37:27.29 ID:Ni/K5kZr.net
c#が有るのにwin32使ってウインドウプログラミングする理由は何?

514 :デフォルトの名無しさん:2015/11/01(日) 03:22:19.74 ID:l/1SHJPi.net
C#なんて触ったこと無いけどどうやってwindow出すん

515 :デフォルトの名無しさん:2015/11/01(日) 07:56:42.08 ID:CjOActT4.net
>>513
C#はWindowsアプリケーションの雛型を強制的に使わせられるので、OS、システムに突っ込んだ自由なことはできない。

516 :デフォルトの名無しさん:2015/11/01(日) 08:07:26.53 ID:xZNvf6uK.net
ドットネットは無駄なインストールや更新を強いられるのがウザい
あと起動も遅い

517 :デフォルトの名無しさん:2015/11/01(日) 10:35:59.99 ID:iCjS0aFW.net
>>515
コンソールアプリとかも作れますが…

518 :デフォルトの名無しさん:2015/11/01(日) 11:23:37.35 ID:jrBbxAac.net
簡単に書けるようになるなら別に自由である必要はないが
C#で別の意味で難しくなることが増える
同じ難しいならPCの仕組みに肉迫している方が勉強になる

519 :デフォルトの名無しさん:2015/11/01(日) 12:21:02.83 ID:xuiW6lxi.net
>>515
C#からWin32APIを呼ぶことも出来るし、(推奨されてないが)必要に応じてポインターとかも使える。
デバイスドライバーを作るのでもなければ、自由度で困ることないんじゃないか。
リアルタイム処理をしようとするとGCが絡んできちゃうけど。

520 :デフォルトの名無しさん:2015/11/01(日) 14:10:14.00 ID:xuiW6lxi.net
>>514
var form = new System.Windows.Form();
form.ShowDialog(); // モードレスなら、form.Show();

521 :デフォルトの名無しさん:2015/11/01(日) 14:43:19.93 ID:tjf5Il2M.net
どうせ net native になるんだろ?

522 :デフォルトの名無しさん:2015/11/01(日) 17:08:02.46 ID:l/1SHJPi.net
>>520
内部でWin32API呼ばれてたりしないん?

523 :デフォルトの名無しさん:2015/11/01(日) 17:37:44.50 ID:8eOJvOce.net
>>513
おっさんはC#を覚えることが出来ないからだよ
(C++ Winの標準のMFCすらできなくて、Win32APIってのもあるだろう)
俺はいまから言語覚えてWinプログラムする奴にはC#を使えってアドバイスするよ

524 :デフォルトの名無しさん:2015/11/01(日) 18:00:00.72 ID:tjf5Il2M.net
ペゾルド本も今やC#になってしまったからなぁ‥

525 :デフォルトの名無しさん:2015/11/01(日) 18:26:04.54 ID:dVueqhOd.net
Visual Studio で C# のひな形を吐かせると、わけのわからないファイルがいっぱいだから
何が何やらさっぱりピーマン。:-)

なので、シンプルな ATL/WTL を使い続けてる俺はおっさん。

526 :デフォルトの名無しさん:2015/11/01(日) 20:38:06.85 ID:iCjS0aFW.net
>>522
そりゃ呼ばれまくってるよ
System.Windows.FormsはWin32の高度なラッパーだよ

つかなんで今の時代でそんな疑問が湧くのかが疑問だよ

527 :デフォルトの名無しさん:2015/11/01(日) 21:42:12.60 ID:9iW+1wjJ.net
デスクトップの背景に貼りつくアプリを作成しようとしてるのですがデスクトップアイコンと壁紙の間にウィンドウを置くのは可能でしょうか?
自作アプリのハンドルをとってWorkerWやSHELL_DefViewの子にして順序を入れ替えてみたりしたのですがうまくいきません。
winapiは今回初めて触ったレベルなのでウィンドウの仕組みをちゃんと理解できてないのですが構造的に無理なのでしょうか

osはwin8.1です。助言いただければ幸いです

528 :デフォルトの名無しさん:2015/11/01(日) 21:45:10.78 ID:VmCqG/zA.net
C#って他社も追従してるの?

529 :デフォルトの名無しさん:2015/11/01(日) 21:52:08.17 ID:lhwvxGV2.net
>>527
ガジェット

530 :デフォルトの名無しさん:2015/11/01(日) 22:15:37.95 ID:IUMffqeL.net
>>529
ありがとうございます!
win7はほとんど触った事がなかったので盲点でした
その方向でまた調べてみます

531 :デフォルトの名無しさん:2015/11/02(月) 00:56:48.05 ID:B+3rH0MH.net
もうGUIアプリはC#でしか作らないな。
開発効率が圧倒的に違うし。

532 :デフォルトの名無しさん:2015/11/02(月) 01:30:43.87 ID:idmQOjMo.net
>>526
なら>>513もwin32使ってるよな?

533 :デフォルトの名無しさん:2015/11/02(月) 01:48:14.22 ID:SpPr0mCa.net
画面はwebベースで作った方が楽じゃないの
わざわざC#とかでやる意味あるかな

534 :デフォルトの名無しさん:2015/11/02(月) 01:59:02.76 ID:YYtynqW4.net
>>533
c#だと好きな位置に好きな部品を置けるからいい

535 :デフォルトの名無しさん:2015/11/02(月) 02:16:51.34 ID:L8jwvCBDo
>>532
それは揚げ足取り。間接的に使ってはいるけど、
Formsでラップされてるから、直接Win32APIを意識する必要は無い。

536 :デフォルトの名無しさん:2015/11/02(月) 06:59:59.05 ID:6BSNMQg5.net
ガジェットって廃止されたよな?

537 :デフォルトの名無しさん:2015/11/02(月) 07:08:26.19 ID:X4MwKL6E.net
あんなデスクトップの邪魔になるもの流行るわけないと思ってたが一瞬で消えたな

538 :デフォルトの名無しさん:2015/11/02(月) 09:10:22.37 ID:jypI/AIk.net
だが横にムダに広いディスプレイは残った
縦を伸ばせ
タスクバーを横置きしてるが不自由

539 :デフォルトの名無しさん:2015/11/02(月) 09:31:10.98 ID:Oo4chQlF.net
目は横についてるからな

540 :デフォルトの名無しさん:2015/11/02(月) 10:25:18.08 ID:MWHqCb8w.net
タコ?

541 :デフォルトの名無しさん:2015/11/02(月) 10:38:08.45 ID:u1Xcwdjg.net
キーボードが縦に90度回転するノートがあれば良いんだよな

542 :デフォルトの名無しさん:2015/11/02(月) 21:36:03.71 ID:X4MwKL6E.net
今だにA4を一画面に表示できないなんて

543 :片山博文MZ ◆T6xkBnTXz7B0 :2015/11/02(月) 21:41:39.70 ID:N6XDKRqL.net
>>542
A4表示専用用のディスプレイか、需要あんのか

544 :デフォルトの名無しさん:2015/11/02(月) 23:09:49.75 ID:YJ91Wm1P.net
ディスプレイ縦にして表示を90度回転させればいいだけだろ
マルチディスプレイの1つをそうやってる奴はいるよ

545 :デフォルトの名無しさん:2015/11/03(火) 14:04:14.68 ID:C0Kah9v/.net
>A4を一画面

それこそDPI次第だろうに

546 :デフォルトの名無しさん:2015/11/03(火) 16:09:42.06 ID:p2mb8RLL.net
https://www.youtube.com/watch?v=m1RJASQT5i8

これがいい

547 :デフォルトの名無しさん:2015/11/03(火) 19:09:00.75 ID:IYCkVucX.net
https://www.google.co.jp/search?q=pc-100&biw=762&bih=438&tbm=isch&tbo=u&source=univ&sa=X&sqi=2&ved=0CCkQsARqFQoTCI2nl4OB9MgCFSYipgodfOoJdA#imgrc=1tC29M6lbDrDuM%3A

548 :デフォルトの名無しさん:2015/11/05(木) 13:37:18.60 ID:k1mCzttB.net
無駄に長いURL貼ってあると
個人情報が含まれてる気がしてくる

549 :デフォルトの名無しさん:2015/11/05(木) 22:38:09.49 ID:8vWqbQMQ.net
たまにアドレスよく見ると自分のID入ってたりするよな。
だからゴチャゴチャしたの消して、
そのURLで同じもの表示されるならそっち貼るように気をつけてるな。

550 :デフォルトの名無しさん:2015/11/05(木) 22:53:38.21 ID:q6SXWkeZ.net
いかにも暗号な部分は本当やだね

551 :デフォルトの名無しさん:2015/11/06(金) 17:06:20.32 ID:iMrwfLZD.net
確かアマゾンとかのURL貼ると検索ワードわかるんじゃなかったっけ

552 :デフォルトの名無しさん:2015/11/06(金) 21:10:06.89 ID:rwaJO4C4.net
ドロップダウンリストを持つウィンドウを作ったのですが、
これを実行してドロップダウンリストをクリックすると、
http://wktk.vip2ch.com/vipper0097.png のようになってしまい、
他のコントロールをクリックしても反応しなくなってしまいます。
どうしたら正しく動作するようにできるのでしょうか?

int CALLBACK wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow){
WNDCLASSEXW mainWindow = { sizeof(WNDCLASSEXW) , CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW ,
DefWindowProcW, 0 , 0 , hInstance , LoadIconW(hInstance, IDI_APPLICATION) , LoadCursorW(hInstance, IDC_ARROW) ,
(HBRUSH)(COLOR_WINDOW + 1) , NULL , L"mainWindow" , NULL };
ATOM mainWindowClass = RegisterClassExW(&mainWindow);
HWND hMainWindow = CreateWindowExW(WS_EX_OVERLAPPEDWINDOW, (LPCWSTR)mainWindowClass, L"Window",
WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);
ShowWindow(hMainWindow, nCmdShow);
/*中略*/
HWND hCombobox3 = CreateWindowExW(0, L"COMBOBOX", L"Combo Box", WS_CHILD | WS_VISIBLE | CBS_DROPDOWNLIST, 96 * 1, 30 * 5, 90, 24, hMainWindow, NULL, hInstance, NULL);
SendMessageW(hCombobox3, CB_ADDSTRING, 0, (LPARAM)L"(None)");
SendMessageW(hCombobox3, CB_ADDSTRING, 0, (LPARAM)L"text");
SendMessageW(hCombobox3, CB_ADDSTRING, 0, (LPARAM)L"Combo Box");
SendMessageW(hCombobox3, CB_ADDSTRING, 0, (LPARAM)L"Add String");
SendMessageW(hCombobox3, CB_SETCURSEL, 0, 0);
/*中略*/
MSG msg;
BOOL bRet;
while ((bRet = GetMessageW(&msg, hMainWindow, 0, 0)) != 0){
if (bRet == -1) break;
else{
TranslateMessage(&msg);
DispatchMessageW(&msg);
}
}
return msg.wParam;}

553 :デフォルトの名無しさん:2015/11/07(土) 01:47:54.37 ID:57BfyfLk.net
90, 24をそれぞれデカくしてやればいいんじゃね

554 :片山博文MZ ◆T6xkBnTXz7B0 :2015/11/07(土) 05:43:01.33 ID:b7KKpBJq.net
>>552
DefWindowProcWじゃなくてちゃんとウィンドウプロシージャを指定しないとダメ。

555 :デフォルトの名無しさん:2015/11/07(土) 08:59:28.58 ID:RwXev/UR.net
俺もコンボボックスの縦のサイズを増やすに一票

556 :デフォルトの名無しさん:2015/11/07(土) 12:45:52.16 ID:Lam93S6q.net
コンボボックスの謎

557 :デフォルトの名無しさん:2015/11/07(土) 15:04:10.72 ID:RwXev/UR.net
俺も昔コンボボックスの縦サイズではまった事あるんだわ
本当に謎仕様

558 :デフォルトの名無しさん:2015/11/07(土) 21:34:04.52 ID:AjJRvCBZ.net
ドロップダウンした時の縦サイズ

559 :デフォルトの名無しさん:2015/11/07(土) 23:19:12.39 ID:bQCknPED.net
>>556
懐かしくてフイタw

560 :デフォルトの名無しさん:2015/11/08(日) 02:04:59.85 ID:w5WQ9GZh.net
タイトルは謎だし、中身はクソゲーだったな。

561 :デフォルトの名無しさん:2015/11/10(火) 18:45:13.27 ID:co6NjOXk.net
VS2013を使っています

RECTのポインタの引数をとるAPIなどに

func( &RECT{ 0, 0, w, h } )

のようにして引数を与えるとコンパイルは通るしwarningも出ないのに
インテリセンスに

>IntelliSense: 式は左辺値または関数指定子である必要があります

という風に怒られ、ソースコードに赤の波線がついて鬱陶しいです
エラー一覧にも同様の文章が列挙され、これも鬱陶しいです
どうやったら黙らせる事が出来ますでしょうか

562 :デフォルトの名無しさん:2015/11/10(火) 20:06:38.54 ID:ll/jQOrE.net
pragma waning

563 :デフォルトの名無しさん:2015/11/10(火) 23:09:15.72 ID:elivAdat.net
>>561
確かに、アドレス演算子のオペランドが
左辺値でも関数指定子でもないね
純右辺値だぞこれ
&1つってんのと同じ

警告が聞きたくなければ吊るしか・・・

564 :uy ◆Qawu9.2l1E :2015/11/11(水) 06:03:51.37 ID:uYSp+fPE.net
VSみたいな劣等IDEモドキ使ってる奴がいることに驚く

何故そんな初歩的なバグが放置されてるか?


A : 誰も使ってないから

565 :デフォルトの名無しさん:2015/11/11(水) 06:56:06.60 ID:86F6q36J.net
文句言ってる割にはwin32apiスレにいるっていう

566 :デフォルトの名無しさん:2015/11/11(水) 08:32:07.52 ID:rzj2E3oc.net
char *fuga = &"hoge"[2];

こんなのも同じ警告出る?

567 :デフォルトの名無しさん:2015/11/11(水) 12:07:01.93 ID:WDtG518P.net
>>563
それがコンパイラの警告は出ないんですよ
VSは大昔からこの書き方に対応していて
DirectXなんかでは良くfunc( &D3DXVECTOR3( x, y, z ) );
とか便利なんでよく使っていました
コンパイラは警告も出さないしコンパイルも通るし
動作も期待通りなのに
インテリセンスだけが文句言ってくるんです
コンパイラとインテリセンスで動作がチグハグなんです

568 :デフォルトの名無しさん:2015/11/11(水) 12:48:49.97 ID:yiYjUqQw.net
>>567
バグじゃね?
2010 の頃にも class enum でインテリセンスとコンパイラがちぐはぐだったし

569 :デフォルトの名無しさん:2015/11/11(水) 13:56:12.23 ID:WDtG518P.net
struct test1{ int x; }; //コンストラクタ無し
struct test2{ int x; test2(){} }; //コンストラクタ有り
void func( test1 *t ){}
void func( test2 *t ){}
func( &test1{} ); //インテリセンスが警告
func( &test2{} ); //OK
func( &test1() ); //デフォルトのコンストラクタを呼び出すスタイルならOK

色々試してみたんだけど、コンストラクタが有る構造体ならインテリセンスの警告は出ません
コンストラクタがない構造体の場合のみインテリセンスが文句を言ってきます
しかし、コンストラクタが無い構造体でも、&test1()という風に
デフォルトのコンストラクタを呼び出すスタイルだとインテリセンスのエラーは消えます
(しかし、コンストラクタの無い構造体を初期化リストで初期化した物のポインタをAPIに渡したい 
 というのが元々の悩みだったので、デフォルトのコンストラクタでは役にただず、意味がありません)
いずれの場合でも、コンパイラは警告もエラーも出さず、コンパイルは通ります
C++0xの細部は複雑すぎてよく分りませんわ

570 :デフォルトの名無しさん:2015/11/11(水) 16:57:49.05 ID:1hY3wyl+.net
テキスト編集を遅延させずにインクルードを再帰的に追いかけて静的演算と条件コンパイルかまして実コンパイラと寸分違わずかつリアルタイムにシンタクスハイライトするくらい常識だろー

571 :デフォルトの名無しさん:2015/11/11(水) 19:38:27.44 ID:YDOXgbvn.net
もちろん

572 :デフォルトの名無しさん:2015/11/14(土) 12:05:04.37 ID:kYx4kaK6.net
今日おぼえた英語
short flush
long flush
bottom spray

573 :デフォルトの名無しさん:2015/11/15(日) 16:50:10.08 ID:PpDrlMq1.net
winsockについてなんですが、
sendを1回コールして送られたパケットは、
recvを1回コールして全て受け取れることは保証されてるんでしょうか?

例えば、sendは1回で送ったけど、recvは2回かけて受け取るケースがあったりするんでしょうか?

574 :デフォルトの名無しさん:2015/11/15(日) 17:09:21.28 ID:PV6fOtMt.net
>sendを1回コールして送られたパケットは、
>recvを1回コールして全て受け取れることは保証されてるんでしょうか?

いいえ

>例えば、sendは1回で送ったけど、recvは2回かけて受け取るケースがあったりするんでしょうか?

はい

575 :デフォルトの名無しさん:2015/11/15(日) 18:43:50.08 ID:Vi+EqW0v.net
データグラムなら保証されてる
ストリームは保証されてない

576 :571:2015/11/15(日) 19:24:09.72 ID:PpDrlMq1.net
>>574
ありがとうございます。
分かりました。

>>575
失礼しました。
TCP/IP通信が前提です。
UDPの場合はパケットが届かずに捨てられる可能性を考慮しないといけませんよね。

577 :デフォルトの名無しさん:2015/11/15(日) 23:26:37.86 ID:bwAQtTVZ.net
デバイスコンテキストのハンドルHDCが
有効であるかどうかテストする関数または方法を教えてください
宜しくお願いします

578 :デフォルトの名無しさん:2015/11/15(日) 23:31:55.73 ID:DVr3HCs9.net
CreateDC()の戻り値は失敗するとNULL

579 :デフォルトの名無しさん:2015/11/15(日) 23:44:58.72 ID:SwaoEtt5.net
適当にCreateCompatibleDCでも呼んでみて
失敗したら無効なハンドルなんじゃね?
しらんが

580 :デフォルトの名無しさん:2015/11/15(日) 23:48:38.46 ID:bwAQtTVZ.net
>>578
質問の仕方が悪かったです、すみません

過去に取得したHDCが、現在でも有効というか利用可能であるかどうかを確認する関数はありませんか?

例えばHWNDの場合だとIsWindow関数を使うことで有効であるかどうかを見極めることができます
それと同じようなものが無いかという質問です
宜しくお願いします

581 :デフォルトの名無しさん:2015/11/15(日) 23:49:21.25 ID:bwAQtTVZ.net
>>579
有難う御座います
もう少しスマートな方法でお願いします

582 :デフォルトの名無しさん:2015/11/16(月) 00:39:27.67 ID:QnJE0SEP.net
そ、そう?
じゃぁGetNearestColorはどう?
コスト低そうだよ

583 :デフォルトの名無しさん:2015/11/16(月) 00:47:49.59 ID:QnJE0SEP.net
と思ったけど、ディスプレイが32bitモードだと
HDCに関係なく引数そのまま返す可能性も有るな
まーでもGet系のAPIはほかにも沢山有るから
好きなの使えば?HDCが無効なら失敗しそうな奴

584 :デフォルトの名無しさん:2015/11/16(月) 00:49:37.84 ID:QnJE0SEP.net
さらに思ったんだけど、HDCが既に無効かどうか調べたいって事は
その後何かに使うつもりなんだろうから
実際に何かしようとして失敗したら無効だったってことでよいんじゃね?

585 :デフォルトの名無しさん:2015/11/16(月) 04:57:13.17 ID:hnRSxFKX.net
それでは >>581 的にはスマートじゃないんでしょう
好きにしろと突き放すのが吉かと

586 :デフォルトの名無しさん:2015/11/16(月) 05:07:17.50 ID:WTn2umFu.net
>>585
結局、こういう人が出てくるんですよね
まあWindowsプログラミングに則してるかどうかを理解できないことに起因する発言だと思いますけど
そういうこと言うなら
WindowFromDC単独、または、WindowFromDCからのIsWindowで判断しろ位の回答出してから言ったらどうですか?

ID:QnJE0SEPの提案は、彼にしてはよく考えてくれたと思ってるし感謝もしてますよ

587 :デフォルトの名無しさん:2015/11/16(月) 06:25:34.35 ID:xp46TE2K.net
mallocで確保したポインタが有効であるか確認する関数または方法を教えてください
宜しくお願いします

588 :片山博文MZ ◆T6xkBnTXz7B0 :2015/11/16(月) 06:54:01.40 ID:FxCdLFu/.net
GetDeviceCaps

589 :デフォルトの名無しさん:2015/11/16(月) 09:54:33.55 ID:HIZPDz5u.net
使って落ちたらそれは悪いポインタだ

590 :デフォルトの名無しさん:2015/11/16(月) 10:03:19.32 ID:6H4dK92G.net
>>587
使ってみればいいんじゃないか?

591 :デフォルトの名無しさん:2015/11/16(月) 10:31:47.38 ID:QnJE0SEP.net
>>586
それお前、後付じゃねーか
WindowsFromDCはメモリDCでは失敗するんだぞ
調べたい対象のDCは必ずウィンドウのDCってのは、俺は知らなかった情報だぞ

592 :デフォルトの名無しさん:2015/11/16(月) 13:39:16.61 ID:SczSLJRd.net
GetObjectTypeでいいでしょ

593 :デフォルトの名無しさん:2015/11/16(月) 18:24:25.92 ID:l2x/CNAR.net
にゃんぱすー

594 :デフォルトの名無しさん:2015/11/16(月) 20:06:37.73 ID:sBUCKle7.net
>>592
これだ

595 :デフォルトの名無しさん:2015/11/16(月) 21:06:03.20 ID:nSSKBNI/.net
>>587
mallocのラッパーを作っとく
全てをmymalloc経由で呼び出してテストで問題がなかったら
#defeine mymalloc mallocする
おれはやらないけどね

596 :デフォルトの名無しさん:2015/11/16(月) 21:30:12.35 ID:QnJE0SEP.net
>>595
適当にアクセスしてみて例外が出たら捕まえれば?
例外はC++のじゃなくてMS独自の構文の方な
でも例外でなくても他に再利用されている状態かもしれないから
結局安全性は確保できないと思うがやってみれば、知らんが

597 :デフォルトの名無しさん:2015/11/16(月) 21:30:47.06 ID:QnJE0SEP.net
アンカ間違えたわ

598 :デフォルトの名無しさん:2015/11/16(月) 21:32:11.63 ID:c+JfJrRB.net
HDCやmallocで確保したポインタの有効性が当てにならないって…
そもそものプログラムの組み方がマズいんでないかい?

599 :デフォルトの名無しさん:2015/11/16(月) 22:40:09.48 ID:KqlZhPmb.net
>>576
ttp://www1.axfc.net/uploader/so/2729229.zip

600 :デフォルトの名無しさん:2015/11/16(月) 22:50:08.47 ID:KqlZhPmb.net
*printfの戻り値が有効であるか確認する関数または方法を教えてください

601 :デフォルトの名無しさん:2015/11/16(月) 23:08:54.03 ID:fdnGG03D.net
>>598
自分の書いたプログラムが有効であるか確認する関数または方法を教えてください
宜しくお願いします


って感じか

602 :デフォルトの名無しさん:2015/11/16(月) 23:36:03.19 ID:rgt/lt++.net
自分の脳をマイクロ診断する方法かw
DC X'83

603 :デフォルトの名無しさん:2015/11/18(水) 11:10:46.15 ID:Amh1/iYO.net
ジバニャンウィルス
http://www.sankei.com/west/news/151117/wst1511170067-n1.html

604 :デフォルトの名無しさん:2015/11/20(金) 17:05:25.15 ID:pS4guF6V.net
シングルスレッドビルドとマルチスレッドビルドで速度が3倍ぐらい違うんだけど、こういうものなんですか?

605 :デフォルトの名無しさん:2015/11/20(金) 21:28:57.87 ID:ph+B6Bvv.net
赤く塗って角を付けよう

606 :デフォルトの名無しさん:2015/11/20(金) 21:30:30.96 ID:mWax20BT.net
異常加速効果調べてみろ

607 :デフォルトの名無しさん:2015/11/20(金) 21:49:23.14 ID:97LExnIK.net
>>604
マルチスレッドコンパイルの速さ、尋常じゃないよねw
タスクマネージャ見たら、全コア100%で貼りついてるw
これまで見た中で、最もCPUの能力を引き出しきったプログラムだよ、VC++2015はw

608 :デフォルトの名無しさん:2015/11/20(金) 22:02:52.88 ID:pS4guF6V.net
>>607
いや、シングルスレッドのほうが速いんです…

LHa for UNIXのデコーダーをWin32向けに書き換えてビルドしたやつなんですが
グローバル変数だらけでそれに頻繁にアクセスする構造になってるのでそれが影響しているような気もするんですがね

609 :デフォルトの名無しさん:2015/11/20(金) 23:01:27.23 ID:97LExnIK.net
>>608
えぇ!?びっくりぽんや・・・
原理的には、ソースファイルをオブジェクトファイルにコンパイルする作業は
翻訳単位(.cpp)で独立している=並列化できるはずだし、
遅くなるようなことがあるとは考えにくいなぁ。

610 :デフォルトの名無しさん:2015/11/20(金) 23:03:28.43 ID:tEYsBkPr.net
ヒント:切り替わる手間

611 :デフォルトの名無しさん:2015/11/20(金) 23:14:24.26 ID:5Nrp/FGL.net
HDD遅いと同時にアクセスしたときシークで時間取られるよな

612 :デフォルトの名無しさん:2015/11/20(金) 23:20:04.30 ID:pS4guF6V.net
マルチスレッドビルドのほうが速ければ何の問題も無かったんですが、
シングルスレッドアプリケーションなんてとてもじゃないけど使い物にならないですから

デコーダーだけシングルスレッドビルドのDllにしてスレッドから呼び出せば速度も速いままいい感じにはなるんですが
このやりかたは推奨されないみたいですし
どちらにしろスレッドセーフではないので同時にデコーダーを呼び出すことは事は無いのですが、それでもやっぱり問題あるのかな
この辺が何ともわからない…

613 :デフォルトの名無しさん:2015/11/20(金) 23:20:34.29 ID:97LExnIK.net
>>610
スレッド切り替えのオーバーヘッド?
Microsoftが、それが露呈するような間抜けな組み方をするとは思え・・・  いや、あるかw

>>611
あー、I/Oがボトルネックになるとキツいね。
んでも、その場合でも最悪時間はシングルスレッドと同じくらいになりそうなものだけどね。

614 :デフォルトの名無しさん:2015/11/20(金) 23:29:58.12 ID:lixacdxh.net
並列ビルドの話なのか、/MTコンパイルの話なのか

615 :デフォルトの名無しさん:2015/11/20(金) 23:33:27.15 ID:pS4guF6V.net
>>614
/MTの方です…

616 :デフォルトの名無しさん:2015/11/20(金) 23:33:56.29 ID:5Nrp/FGL.net
>>604 >>607 の流れでコンパイル速度の話と思ってたけど違ったのか
> シングルスレッドビルドとマルチスレッドビルド
これはマルチスレッド対応のライブラリのことだったんだな。
マルチスレッド対応するということは同じメモリ領域等に同時にアクセスしない仕組みが
増えてるから、その分遅くなる。
> グローバル変数だらけでそれに頻繁にアクセスする構造
最適化しにくくなるし書き込みは排他処理になるので遅くなる

617 :デフォルトの名無しさん:2015/11/20(金) 23:39:04.30 ID:97LExnIK.net
あー、並列コンパイルの話ちゃうんかw
失礼したw

>>616
たしかにそれはあるだろうけど、それでも3倍の差になるだろうか?
スレッド生成や終了のオーバーヘッドでもないとそこまでの差にはならないんじゃないかなぁ?
もっとデカいペナルティってある?

618 :デフォルトの名無しさん:2015/11/20(金) 23:52:14.27 ID:t7TDAkzV.net
処理じゃなくてプロセス生成から終了までの時間測ってるんじゃ?

619 :デフォルトの名無しさん:2015/11/20(金) 23:58:00.82 ID:5Nrp/FGL.net
httpサーバか何かでマルチスレッドとイベントドリブンで負荷が大きい時に
なんたらかんたらとかあったな

620 :デフォルトの名無しさん:2015/11/20(金) 23:58:27.12 ID:pS4guF6V.net
>>616
そのような気がしてたのですが
全てローカル変数にすれば少しはましになるのかな…

>>618
具体的には、300MBほどのlh7圧縮ファイルの展開速度で、/MLでは6秒ぐらい、/MTだと16秒ぐらいですね
かなりの差が出ます

621 :デフォルトの名無しさん:2015/11/21(土) 05:24:33.16 ID:TBiDBsF1.net
/MLなんてかなり昔に廃止されてないか?
MSDNに残ってる最古の2005でさえ、
The single-threaded CRT is no longer available.
と、書かれてたので使おうとすら思わなかったわ。
その記事の中に↓とも書かれている。今回のケースでは有効そうだが。
Defining _CRT_DISABLE_PERFCRIT_LOCKS forces all I/O operations to assume a single-threaded I/O model and use the _nolock forms of the functions.This allows highly I/O-based single-threaded applications to get better performance.
Exposure of the CRT heap handle allows you to enable the Windows Low Fragmentation Heap (LFH) for the CRT heap, which can substantially improve performance in highly scaled scenarios.

622 :デフォルトの名無しさん:2015/11/21(土) 05:36:41.11 ID:TBiDBsF1.net
ちなみに
/MP (Build with Multiple Processes)
なので、マルチスレッドでなくてマルチプロセスな。
コンパイルをマルチプロセスで高速化するのはMITのpmakeが最初で、pmakrのオプション-jはいろんなmakeに取り入れられてる。
googleによると1970年代から存在する。

623 :デフォルトの名無しさん:2015/11/21(土) 08:40:08.83 ID:H2tpzR2c.net
>>621
参考になります
どうやらCのシングルスレッドライブラリが使われることでパフォーマンスが悪くなるようですね
確かにそれらのC関数が至る所で頻繁に呼び出されています;

これならいくらでも回避方法がありそうです
原因がわかって助かりました ノシ

624 :549:2015/11/21(土) 10:10:41.74 ID:JyKECnY5.net
>>552 ですが、
リスト部分は正しく表示されるようになりましたが、
リストボックスを含め、マウスからの操作を受け付けない状態になってしまいます。
どうしたら正しく動作するようにできるのでしょうか?

625 :デフォルトの名無しさん:2015/11/21(土) 13:58:19.88 ID:EEYvP2Nj.net
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.

/MD link with MSVCRT.LIB
/ML link with LIBC.LIB
/MT link with LIBCMT.LIB

/MPなんてありませんがな。

626 :デフォルトの名無しさん:2015/11/21(土) 14:25:17.12 ID:6HcvIKiz.net
はあ?
https://msdn.microsoft.com/ja-jp/library/bb385193.aspx

627 :デフォルトの名無しさん:2015/11/21(土) 14:32:51.56 ID:+qmJr5EI.net
>>623
コード見ないと確実なことは言えないけど、排他の多いコードはシングルスレッドの方が速いよ
マルチスレッドで速くなるのは、スレッド生成や排他コストに比べて、並列に処理する区間が多い場合のみね(当たり前だけど)

628 :デフォルトの名無しさん:2015/11/21(土) 14:38:23.97 ID:JXjswKeV.net
ままだ並列make、並列build、並列compileの話を続けている奴がいるのか…

629 :デフォルトの名無しさん:2015/11/21(土) 15:04:49.37 ID:H2tpzR2c.net
>>627
https://msdn.microsoft.com/ja-jp/library/ms235505%28v=vs.90%29.aspx

この辺ですね、シングルスレッドライブラリはマルチスレッドライブラリより速いようですが
/MTでビルドすると頻繁にロックが発生してとても遅くなるようです

あえてロックを外してスレッドセーフでない事を理解して扱うことでマルチスレッドライブラリの関数よりさらに高いパフォーマンスを得ることができるという事のようですね

630 :デフォルトの名無しさん:2015/11/21(土) 15:14:51.80 ID:sbaJbg4X.net
>>628
「一歩引いた冷静な視点で状況を俯瞰する俺」気取りの割には、
自分のレスの推敲すらできない精神状態なんですね。
ご立派です。

631 :デフォルトの名無しさん:2015/11/21(土) 15:27:03.86 ID:779MWCli.net
>>630
論点ずらしブーメラン乙
そもそも驚きの表現として「ななんだって」とかあるだろ

632 :デフォルトの名無しさん:2015/11/21(土) 16:29:02.36 ID:JXjswKeV.net
>>630
どこが間違っているの?

633 :デフォルトの名無しさん:2015/11/21(土) 17:32:41.77 ID:TBiDBsF1.net
>>625
| Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
って、VisualStudioのバージョンは幾つだよ? VS6位? 動体保存されてるとはビックリだよ。

VS2013は
C:\>cl -? |findstr /C:/M
Microsoft (R) C/C++ Optimizing Compiler Version 18.00.31101 for x86
Copyright (C) Microsoft Corporation. All rights reserved.

/MP[n] use up to 'n' processes for compilation
/link [linker options and libraries] /MD link with MSVCRT.LIB
/MT link with LIBCMT.LIB /MDd link with MSVCRTD.LIB debug lib
/MTd link with LIBCMTD.LIB debug lib

634 :デフォルトの名無しさん:2015/11/21(土) 20:11:08.78 ID:lo2qe4EW.net
>>633
VC++ 1.52 持ってて仮想環境ではあるが動かせるよ w

635 :デフォルトの名無しさん:2015/11/21(土) 21:53:43.77 ID:rACYfPqD.net
マルチスレッドプログラムを/MTしないでビルドすると、
プログラムはどんな動作になるんだ? ちゃんとマルチスレッドしてくれるのか

636 :デフォルトの名無しさん:2015/11/21(土) 22:00:37.16 ID:o0TZz0/L.net
ランタイムライブラリの関数がスレッドセーフじゃなくなるだけだよ
だからnewなんかするときも自分で排他処理しなければならなくなるよ
もちろんその他の関数呼び出すときも自前で排他処理が必要だよ
面倒だね

637 :デフォルトの名無しさん:2015/11/21(土) 22:01:21.59 ID:574qcmik.net
よいだろう思い切り釣られてしんぜよう

ビルドをマルチスレッドでするのとビルドしたプログラムがマルチスレッドで動くのは違うぞ

638 :デフォルトの名無しさん:2015/11/21(土) 22:02:29.34 ID:lYZv+i2L.net
釣られてるのかマジボケなのか分からないレスはよせよ

639 :デフォルトの名無しさん:2015/11/21(土) 22:04:41.16 ID:o0TZz0/L.net
釣られているつもりが釣っていたってのは
いつもと逆のパターンで斬新だわ

640 :デフォルトの名無しさん:2015/11/21(土) 22:10:03.68 ID:rACYfPqD.net
>>636
シングルスレでマルチスレランタイム使うと遅くなるからなのかな
Cはスピードが大事だからな
STLもシングルスレ用、マルチ用ってあるのかな

641 :デフォルトの名無しさん:2015/11/21(土) 22:31:22.02 ID:TBiDBsF1.net
>>637
ビルドはマルチスレッドじゃなくてマルチプロセスだと言ってるだろうが。馬鹿者。

642 :デフォルトの名無しさん:2015/11/21(土) 22:43:21.52 ID:lYZv+i2L.net
怖いお兄さんはマジボケと判断したのか

643 :デフォルトの名無しさん:2015/11/22(日) 14:57:54.38 ID:d6PbDxmS.net
>>591
じゃ、知った上で何かまともな回答を書いてみろよ
結局、知っていても知らなくても、まともな回答ないんだろ?
言い訳見苦しいわ

644 :デフォルトの名無しさん:2015/11/22(日) 15:01:12.80 ID:d6PbDxmS.net
>>592
これだね、一番いい

645 :デフォルトの名無しさん:2015/11/22(日) 15:08:13.14 ID:d6PbDxmS.net
>>598
>そもそものプログラムの組み方がマズいんでないかい?

他プロセスが作成したウィンドウのHDCを操作してる場合ってのがあるし
とりあえずHDCに関しては、そうでもない

646 :デフォルトの名無しさん:2015/11/22(日) 15:37:24.13 ID:vggKhYqJ.net
終わった話をいつまでも

いちいちDCが有効かどうか判断しなくても
対象のDCに対して一番最後に呼び出したAPIが成功していたら
それ以前のAPIも成功しているだろうし、それで十分だろ

647 :デフォルトの名無しさん:2015/11/22(日) 15:49:02.18 ID:rXOpUu6m.net
>>642
merci beaucoup

648 :デフォルトの名無しさん:2015/11/22(日) 17:32:36.93 ID:NW0PnoYA.net
win32を勉強するにはどの本を読めばいいんですか

649 :デフォルトの名無しさん:2015/11/22(日) 17:39:08.81 ID:msJD2Q/g.net
>>648
msdn

いまは本などない。

650 :デフォルトの名無しさん:2015/11/22(日) 17:57:37.70 ID:WMp4alla.net
使い方なら目的とする言語の関連本だろうし
win32の中身ならヘルプとかmsdnじゃね?

651 :デフォルトの名無しさん:2015/11/22(日) 18:07:03.05 ID:j30Wwuuw.net
実行した時に全てのcpuが100%の使用率になるプログラムがマルチスレッドプログラムだろ。

652 :デフォルトの名無しさん:2015/11/22(日) 18:10:41.71 ID:YBzI3bTB.net
スレッド数が2でコア数が4ならその条件満たさないっすね
ボケはもう少し面白い奴を頼む

653 :デフォルトの名無しさん:2015/11/22(日) 18:34:26.14 ID:1TN3WChP.net
>>648
http://www.amazon.co.jp/product-reviews/4797347597/ref=cm_cr_dp_see_all_btm?ie=UTF8&showViewpoints=1&sortBy=bySubmissionDateDescending

654 :デフォルトの名無しさん:2015/11/22(日) 18:48:44.74 ID:NW0PnoYA.net
>>653
面白そうなので買いました
>>649
MSDNをまだまともに読めるレベルじゃないので本がいいんですよ
最近ようやく読めるようになってきたけど、ある程度知識のまとまりと目的意識がほしいので

655 :デフォルトの名無しさん:2015/11/22(日) 21:11:50.80 ID:Zdp83ecD.net
>>633
VC++ 6 (SPなし)は
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for 80x86
Copyright (C) Microsoft Corp 1984-1998. All rights reserved.

13.10.3077は
Microsoft Visual C++ Toolkit 2003 (or VC .NET 2003)

656 :デフォルトの名無しさん:2015/11/22(日) 21:36:55.00 ID:Zdp83ecD.net
>>634
Windows 3.1・・・

657 :デフォルトの名無しさん:2015/11/22(日) 22:20:38.47 ID:PowSWGiN.net
>>648
猫でもわかるゲームプログラミング 第2版、2009

グラフィックス描画からアニメーション、
マルチスレッドまで、C言語でWin32APIを用いて、
ゲームプログラミングに必要な基本テクを解説

各サンプルプログラムにリファインを加えるなどした第2版

658 :デフォルトの名無しさん:2015/11/22(日) 22:22:12.31 ID:rVLRuBGq.net
Advanced Windowsってもう読む価値ないの?

659 :デフォルトの名無しさん:2015/11/23(月) 00:26:49.20 ID:1m62BNI1.net
猫は古すぎねーか

660 :デフォルトの名無しさん:2015/11/23(月) 01:37:06.45 ID:KbsdUeA8.net
どういう物を作りたいかによるんじゃ?
> ・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
ってあるけどAPIフックすらググればできるし

661 :デフォルトの名無しさん:2015/11/23(月) 10:20:21.95 ID:LhpXJjp9.net
>>659
Win32APエ も古すぎーるからちょうどいい

662 :デフォルトの名無しさん:2015/11/23(月) 10:27:35.49 ID:Pq9DNQfd.net
ペゾルト本はちょっと違うか?

663 :デフォルトの名無しさん:2015/11/23(月) 13:49:18.46 ID:JWzW06M6.net
今はC#だよ<ペゾルド

664 :デフォルトの名無しさん:2015/11/23(月) 14:05:35.98 ID:qqa6ydJw.net
>>660
オンラインでなんでもググれる時代だから本より便利なんだよな

665 :デフォルトの名無しさん:2015/11/23(月) 14:26:22.15 ID:+Ddm9172.net
コピペできるしね

666 :デフォルトの名無しさん:2015/11/23(月) 14:44:00.43 ID:5yZmzCJ8.net
記述間違いとか誤字脱字や新情報について
オンラインの方が改訂も早ければ有利なんだけどね

667 :デフォルトの名無しさん:2015/11/23(月) 16:57:02.17 ID:PZ2Lz8BK.net
それを期待するなら英語版では

668 :デフォルトの名無しさん:2015/11/23(月) 22:09:47.41 ID:tQcIQ+xW.net
>>663
いまペゾルドはC#なのか
WinでプログラムするならC#だよってことか

669 :デフォルトの名無しさん:2015/11/23(月) 22:18:21.01 ID:lEPcq6Ag.net
それどころかストアアプリの本になってるよ。
MSの意向だろうけど、WinForm〜WPF世代がすっ飛ばされたのは痛い。

670 :デフォルトの名無しさん:2015/11/24(火) 09:52:12.84 ID:Ujv1VvaP.net
猫でも系は網羅性が低いのと無駄に筆者が読書に理解を強要させる書き方してるのでイライラしますよ
まぁ分かりやすいけど

671 :デフォルトの名無しさん:2015/11/24(火) 10:02:31.82 ID:nrP7706V.net
教えてもらう立場なのに「理解を強要させる」と怒るのか…

672 :デフォルトの名無しさん:2015/11/24(火) 12:24:13.31 ID:/bCK1VnE.net
>>671
667じゃないけど、言葉遊びでしかないしょーもないレスすんなよ
お前みたいな奴が身の回りにいたらうぜえな〜完全に時間の無駄
正味の話って概念をいい加減覚えろ

673 :デフォルトの名無しさん:2015/11/24(火) 12:51:56.91 ID:aCNlMk5p.net
正味の話とか言うなら、>>670の「理解を強要させる書き方」はどうなん?
>>671は言葉遊びじゃない、態度の問題を提起してるだけじゃないか。

674 :デフォルトの名無しさん:2015/11/24(火) 12:56:47.01 ID:R6RYUl/w.net
面倒くさい奴らだな
お前はプログラミングすんの止めろ

675 :デフォルトの名無しさん:2015/11/24(火) 13:13:04.35 ID:cksHvZaS.net
猫のエサを食ってマズいと腹を立ててる阿呆がいると聞いて

676 :デフォルトの名無しさん:2015/11/24(火) 20:06:15.03 ID:Xp7UCn3h.net
Win32 API入門
http://wisdom.s akura.ne.jp/system/winapi/

ここを一通り読んだら、後は検索で補ってくだけでいける。

677 :デフォルトの名無しさん:2015/11/24(火) 20:50:22.41 ID:ml2gyU90.net
>>674
あーだこーだの奴はプログラミングには向いていないから
誰かの作ったプログラムを使うだけの方が良いよね。
でも、それに対しても気に入らん、で、あーだこーだ文句言うんだろうが

678 :デフォルトの名無しさん:2015/11/24(火) 20:52:54.72 ID:7QWzGJiI.net
書き殴る奴は向いてる向いていない以前に有害なんで書かないで欲しい

679 :デフォルトの名無しさん:2015/11/24(火) 21:12:36.36 ID:rGZu8hHb.net
お前を殴るのはokだよな?

680 :デフォルトの名無しさん:2015/11/24(火) 21:17:37.84 ID:j8x8w3e7.net
まず脳みそへのプログラミングが必要

681 :デフォルトの名無しさん:2015/11/25(水) 00:18:18.81 ID:Vd1+RMMI.net
猫の餌をナメちゃいけません
金缶とかチャオほたてなど飼い主がうらやむわけで

682 :デフォルトの名無しさん:2015/11/25(水) 01:33:16.23 ID:l9uWvmmW.net
>>676
イコール >>653

683 :デフォルトの名無しさん:2015/11/25(水) 07:15:51.46 ID:zr1GKtWh.net
>>670
>網羅性が低い
何十ものすべての項目を、
一覧表にして載せている著者がいるけど、
何が重要なのかわからない

やたらと勉強時間がかかる割に、効果が低い。
そういう情報はインターネットで十分

50項目50時間かかって、70点しか取れない。
それより、10項目10時間で、60点取れた方がよい

著者がどの項目を選んで、説明したのかが重要。
そこがプロたるゆえんで、読者がお金を払う価値がある

TACなどの専門学校では、必ず言われる。
最も少ない情報で、短時間の勉強で、60点ギリギリで合格

684 :デフォルトの名無しさん:2015/11/25(水) 07:17:15.19 ID:rJmLSs5J.net
ことばあそびってなんですの

685 :デフォルトの名無しさん:2015/11/25(水) 10:17:46.18 ID:5wB+dJF6.net
煙に巻く手法の一つ

686 :デフォルトの名無しさん:2015/11/25(水) 10:38:32.86 ID:v92ZxAJW.net
わかりましたね?
もうわかりましたよね?

理解するのは読書なんだからこういう書き方は極力控えるべき

687 :デフォルトの名無しさん:2015/11/25(水) 11:09:39.93 ID:5wB+dJF6.net
君は存在を控えて

688 :デフォルトの名無しさん:2015/11/25(水) 11:18:56.05 ID:reKtKMrl.net
(´・ω・`).;:…(´・ω...:.;::..(´・;::: .:.;: サラサラ..

689 :デフォルトの名無しさん:2015/11/25(水) 19:23:04.55 ID:Ya2W2nCX.net
>>685
煙に巻いてるのはどっち?
言葉あそびしたと言われている方?言っている方?

690 :デフォルトの名無しさん:2015/11/25(水) 19:31:29.10 ID:Sra0FKsR.net
あなだのことです

691 :デフォルトの名無しさん:2015/11/25(水) 21:57:18.87 ID:VTzlMLYq.net
画面だけ見て仕事してると心に余裕がなくなるかね

692 :デフォルトの名無しさん:2015/11/25(水) 23:15:16.00 ID:G/n44URv.net
マって低脳・基地外で他の仕事に就けない奴らが就く底辺職業だからな
そんな奴らが集う板・スレはこれが普通

693 :デフォルトの名無しさん:2015/11/26(木) 00:01:46.98 ID:wLo/SUaP.net
よくご存知だ(児玉清)

694 :デフォルトの名無しさん:2015/11/26(木) 17:01:22.34 ID:yeqvnwwH.net
WScript.Shell の CLSID をレジストリで検索すると
72C24DD5-D70A-438B-8A42-98424B88AFB8
F935DC22-1CF0-11D0-ADB9-00C04FD58A0B
の二つ見つかるのですが
どっちが本物ですか?
両方本物なら何がどう違うんですか?

695 :デフォルトの名無しさん:2015/11/26(木) 17:02:55.99 ID:yeqvnwwH.net
WScript.Shell の CLSID をレジストリで検索すると
72C24DD5-D70A-438B-8A42-98424B88AFB8
F935DC22-1CF0-11D0-ADB9-00C04FD58A0B
の二つ見つかるのですが
どっちが本物ですか?
両方本物なら何がどう違うんですか?

696 :デフォルトの名無しさん:2015/11/26(木) 18:40:52.40 ID:uhVdTG0g.net
スレチっぽいけど
たぶん異なるCLSIDで登録してたオブジェクトを統合したとかの結果じゃねーの?
互換性的な話で

697 :デフォルトの名無しさん:2015/11/28(土) 22:36:17.56 ID:Fi4wDTmy.net
質問します
WS_POPUPで作ったふちなしウィンドウの親ウィンドウをSetParent()で変更しました
すると、まるでスタイルをWS_CHILDに変更したかのような挙動になります
具体的には親ウィンドウを動かすと一緒に動きますし、描画もクリップします
SetParentで親ウィンドウを設定すると自動でWS_CHILDが設定されるのかと思い
SetWindowLongでWS_POPUPを設定しなおしてもうまくいきません
どうすればよいでしょうか

698 :デフォルトの名無しさん:2015/11/29(日) 02:28:30.33 ID:xCgxYFc2.net
オーナーウィンドウと親ウィンドウは違うから
変更したいのは前者だろ?

699 :デフォルトの名無しさん:2015/11/29(日) 05:59:54.18 ID:Wjtvnm/I.net
>うまくいきません
>どうすればよいでしょうか
どうしたいのか
書け

700 :デフォルトの名無しさん:2015/11/29(日) 06:13:22.46 ID:fTNkyNl8.net
つ プラ窓より投擲

701 :デフォルトの名無しさん:2015/11/29(日) 11:23:43.23 ID:U49gaUJj.net
SetParentしたらあかん

702 :694:2015/11/29(日) 12:46:39.72 ID:c+9MHjtm.net
>どうしたいのか書け

ふしなしのWS_POPUPを使って、いわゆるツールウィンドウを作りました
ツールウィンドウなので親ウィンドウより手前に表示される必要があり
ツールウィンドウのCreateWindowで親ウィンドウを設定して作成しました
この時点では期待通りの動作をします

しかし、後からツールウィンドウの親ウィンドウを変更する必要が出てきました
そこでSetParentでツールウィンドウの親を変更すると
WS_POPUPの所謂オーバーラップ的な独立したウィンドウではなくなり
WS_CHILD風の、親ウィンドウのクライアント内だけで表示されるウィンドウになります

WS_POPUPスタイルのオーバーラップ的な動作を維持したまま
親ウィンドウを変更するにはどうしたらよいでしょうか

703 :デフォルトの名無しさん:2015/11/29(日) 14:12:41.71 ID:Cm5aRK3U.net
>しかし、後からツールウィンドウの親ウィンドウを変更する必要が出てきました
このあたりの設計を見直す

704 :デフォルトの名無しさん:2015/11/29(日) 14:34:03.32 ID:c+9MHjtm.net
今のところ、以下の方法で対処していますが・・・

・あらかじめツールウィンドウに配置したいものを一つのWS_CHILDなウインドウ内に収めておく
・それをWS_POPUPなウィンドウに納める
・親を変更する場合は新たにWS_POPUPなウィンドウを作って中身を移し変える

一応動いてはいるんですが、あまりスマートとは言えませんね

705 :デフォルトの名無しさん:2015/11/29(日) 17:59:59.36 ID:k+2nqD55.net
>>702
だから、親ウインドウじゃなくてオーナーウインドウだろ?
勘違いしてると思うから、そこを調べろ

706 :デフォルトの名無しさん:2015/11/29(日) 18:31:28.56 ID:eJ1soHzz.net
おまえが勘違いしてると思う。

707 :デフォルトの名無しさん:2015/11/29(日) 19:13:06.03 ID:xFlU/aUF.net
>>704
面倒ならその方法でいいんじゃない?
ツールウィンドウの親はデスクトップなので、SetParentするとそのウィンドウの子になる(デスクトップの子ではなくなる)ので
699の動作は正しい。
やりたいことはオーナーウィンドウを変更することだろうけど、そのような方法はないのでそのようなAPIもない。
まっとうな方法でやるのであれば、ダミーのウィンドウを作ってそれをオーナーウィンドウにしてツールウィンドウを作る。

708 :デフォルトの名無しさん:2015/11/29(日) 20:55:51.31 ID:Wjtvnm/I.net
大抵のことは非表示ウィンドウ経由でなんとかなると思う
オーナーウィンドウ関連で困った記憶は無いから

709 :デフォルトの名無しさん:2015/11/29(日) 21:03:09.00 ID:c+9MHjtm.net
皆さんの意見をまとめると
WS_CHILDでないとき、CreateWindowの引数で渡す親ウィンドウのパラメータは
親ウィンドウではなくオーナーウィンドウとして扱われる
(たしかにCreateWindowのMSDNに親ウィンドウまたはオーナーウィンドウって書いてありましたわ)
そして後からオーナーウィンドウを変更するAPIは用意されていない
ってことですね
失礼しました

710 :デフォルトの名無しさん:2015/11/30(月) 22:15:26.81 ID:xNC+/SUX.net
manifest

711 :デフォルトの名無しさん:2015/12/05(土) 00:24:02.73 ID:eGerJrSR.net
VS2015のスレにも書き込んだんですが、こちらの方にも書き込みます、マルチポスト失礼します
#include <windows.h>
int WINAPI wWinMain( HINSTANCE inst, HINSTANCE prev, wchar_t *cmdline, int show_cmd )
{
    HWND window, editor;
    WNDCLASS winc = {0};
    winc.style = CS_HREDRAW | CS_VREDRAW;
    winc.lpfnWndProc = ::DefWindowProc;
    winc.hInstance = ::GetModuleHandle( NULL );
    winc.hIcon = ::LoadIcon( NULL , IDI_APPLICATION );
    winc.hCursor = ::LoadCursor( NULL , IDC_ARROW );
    winc.hbrBackground = (HBRUSH)GetStockObject( NULL_BRUSH );
    winc.lpszClassName = L"window";
    ::RegisterClass( &winc );
    window = ::CreateWindow( L"window", L"test", WS_OVERLAPPED|WS_VISIBLE, 0, 0, 100, 100,
        nullptr, nullptr, ::GetModuleHandle( nullptr ), nullptr );
    editor = ::CreateWindow( L"EDIT", L"", WS_CHILD|WS_VISIBLE|ES_LEFT|ES_AUTOHSCROLL,
        0, 0, 300, 100, window, nullptr, ::GetModuleHandle( nullptr ), nullptr );
    MSG msg;
    for( ; ::GetMessage( &msg, nullptr, 0, 0 ); ){
        ::TranslateMessage( &msg );
        ::DispatchMessage( &msg );
    }
    return 0L;
}
↑のバグの混入しようのないシンプルなコードで、エディットボックスに日本語を入力しようとすると
VisualStudio2015が固まります 巻き添えでエスクプローらも固まります その他もいろいろ固まります
VisualStudio2015を強制終了すると回復します デバッグでもリリースでも固まります
おまかん、ですか?

712 :デフォルトの名無しさん:2015/12/05(土) 00:30:56.85 ID:eGerJrSR.net
OSはWin7のSP1でIMEは標準のMicrosoftIMEです

713 :デフォルトの名無しさん:2015/12/05(土) 00:33:16.52 ID:oCbOGloR.net
>>711
正しいウィンドウプロシージャーを正しく指定しろ

714 :デフォルトの名無しさん:2015/12/05(土) 00:37:52.97 ID:eGerJrSR.net
エディットボックスが載っているメインウィンドウのウインドウプロシージャが
DefWindowProcなのは再現する最小のコードにしたからです

問題になった実際のプログラムではメインウィンドウもエディットボックスも
SetWindowSubclassでサブクラス化しています
しかし同じように固まります

715 :デフォルトの名無しさん:2015/12/05(土) 00:40:21.12 ID:oCbOGloR.net
>>714
メインウィンドウはサブクラス化する必要はない。

716 :デフォルトの名無しさん:2015/12/05(土) 00:43:51.66 ID:eGerJrSR.net
メインウィンドウをSetWindowSubclassでサブクラス化したのは
ウインドウプロシージャにインスタンスポインタを渡すためです
他の方法もありますが、SetWindowSubclassが一番シンプルだと思うので
しかし、質問内容とまったく関係のないことです

717 :デフォルトの名無しさん:2015/12/05(土) 00:47:20.07 ID:oCbOGloR.net
>>716
メッセージの流れがループしてないか?
一つ古いプロシージャーはどうしてる?

718 :デフォルトの名無しさん:2015/12/05(土) 00:50:54.89 ID:eGerJrSR.net
DefSubclassProcを呼んでいます
しかし、関係ありません
なぜなら、私の環境では>>711のコードでフリーズするからです
ちなみにフリーズするのはVisualStudio上で実行したときだけです
普通にエクスプローラからプログラムを起動すれば日本語入力をしてもフリーズしません
VSのデバッガとIME周りで何か問題が起こっているみたいです
私のおまかんかとおもい書き込みました

719 :デフォルトの名無しさん:2015/12/05(土) 00:55:02.57 ID:oCbOGloR.net
2015のバグだろうな。バグレポート頼む。

720 :デフォルトの名無しさん:2015/12/05(土) 00:59:11.55 ID:eGerJrSR.net
とりあえずいつの間にか11月30日に
VS2015 Update1 というのが出ていたみたいなので
アップデートしてみます
ちなみにVS2013では上記のフリーズ現象は発生しませんでした
私のOS自体アップデートにアップデートを重ねたつぎはぎ状態なので
おまかんの可能性が高いですが

721 :デフォルトの名無しさん:2015/12/05(土) 01:18:58.12 ID:99U7SxwK.net
IME変えるとどうなる?

722 :デフォルトの名無しさん:2015/12/05(土) 01:52:34.90 ID:eGerJrSR.net
IMEはMicrosoftIMEしか入れてないんですよね
これ以上カオスな環境になるのはいやなので、あまりインストールしたくないんですが
お勧めのIMEあります?GoogleIMEは開発終了したとか聞いたんですが

723 :デフォルトの名無しさん:2015/12/05(土) 10:12:01.01 ID:VYsm12i0.net
>>718-719
bookliveがうんこなプロテクションコード仕込んでた時も似たような現象起きてたな
可能な限りシンプルな仮想実行環境作って試してみなよ

724 :デフォルトの名無しさん:2015/12/05(土) 10:24:16.91 ID:Rw/ONJyS.net
>>722
自由にできるなら、いろいろ試せばいいじゃないか?

725 :デフォルトの名無しさん:2015/12/05(土) 11:44:36.25 ID:pK0sc289.net
>バグの混入しようのないシンプルなコード

そうでもないですね

726 :デフォルトの名無しさん:2015/12/05(土) 15:07:59.42 ID:Pkwdo9n8.net
久しぶりに覗いてみたら、相変わらず馬鹿ばっかりだな
このスレで質問にまともに答えてるの見たこと無いわw

>>725
つまらん揚げ足取らなくていいんじゃない?
そうでもないってんなら、どこに混入する可能性があるのか具体的に言ってみろよ
言えない? あ、そうw わかってたw

>>711
こんなとこで質問しても、まともに解決できるスキル持ったやつなんて居ないって
見当違いの回答するか、センスの悪い解決策示してドヤ顔するか
どーでもいいところに着目して話しをぐちゃぐちゃにする奴ばっかなんだからw
スレにざっと目を通せばわかるだろw

727 :デフォルトの名無しさん:2015/12/05(土) 15:23:12.76 ID:ckYMWiJu.net
>どーでもいいところに着目して話しをぐちゃぐちゃにする奴

確かにこれが一番多い

728 :デフォルトの名無しさん:2015/12/05(土) 15:23:30.20 ID:CbmC10/1.net
ところで、結局お前も馬鹿じゃんかって言われそうなんで言うのをはばかるんだが
CreateWindowするとき、子ウィンドウのIDをNULLではなく
任意の数値を明確に指定したらどうなるのかは興味あるけどな

まあ、IME変えてみたら?みたいな馬鹿の提案よりはマシだろw

729 :デフォルトの名無しさん:2015/12/05(土) 15:30:43.14 ID:ckYMWiJu.net
GetMessageの戻り値チェックもいい加減ぽい

730 :デフォルトの名無しさん:2015/12/05(土) 15:45:37.31 ID:kb12RFmq.net
>>729
ほんまやなw
MSDNに書かれている警告と同じ問題が発生するコードになってるな
この問題如何にかかわらず避けるべきコードだな

731 :デフォルトの名無しさん:2015/12/05(土) 15:49:13.98 ID:ckYMWiJu.net
そもそもMSDNにGetMessageの戻り値がBOOLって書いてあるのが一番の問題

732 :デフォルトの名無しさん:2015/12/05(土) 15:51:40.28 ID:eGerJrSR.net
いやまー
問題が発生する最小限のコードにしただけだから
2chは行数制限あるでしょ

733 :デフォルトの名無しさん:2015/12/05(土) 15:53:27.88 ID:uW+W8BUz.net
しかしWin32アプリのスケルトンで
while (GetMessage(&msg, NULL, 0, 0))
を堂々と使用してるというMSの矛盾

734 :デフォルトの名無しさん:2015/12/05(土) 15:57:52.29 ID:ckYMWiJu.net
>>728
子ウィンドウのIDがNULLだとGetMessageの戻り値が-1になるのかもなー

735 :デフォルトの名無しさん:2015/12/05(土) 15:57:52.45 ID:J/Ic1PvJ.net
>>732
いや、別にいいんだよ
だけど、もしあなたが質問者ならその言い草はおかしいよね
だって、>>729は、それが問題かもしれないよね?って話しをしてるわけだからw

あなたが質問者なら、懸念を払拭するコードで試してみたけど
そこの部分は問題じゃなかったって言うのが筋じゃないの?w

736 :デフォルトの名無しさん:2015/12/05(土) 15:58:59.28 ID:J/Ic1PvJ.net
>>734
だけど、単独では固まることなく普通に動作するってことなんで
ちょっと、よくわからんよね

737 :デフォルトの名無しさん:2015/12/05(土) 16:00:39.72 ID:gzrRtkEa.net
hWnd パラメータで無効なウィンドウハンドルを指定した場合や、
lpMsg で無効なポインタを指定した場合は、エラーが発生します

だから

738 :デフォルトの名無しさん:2015/12/05(土) 16:18:05.48 ID:eGerJrSR.net
完全に自分の環境のVS2015のデバッガとIMEで何か問題が起こっている臭いです
VS2013ではデバッガ上で実行しても問題ないですし、問題になるのはVS2015だけみたいです
エクスプローラからデバッガ無しで実行しても問題ないです
普通プログラムにミスが有っても、プログラムがクラッシュするのは当たり前としても
VSを巻き添えにしてフリーズするのは何か変なわけです
ついでにエクスプローラも固まりますし、タスクマネージャもクリックできなくなり
VSを強制終了するしか復帰の方法がなくなります
通常の状況ではないです

潜在的にデバッガに不具合があって、同じことで困っている人が居ないかとおもい書き込みました
しかし、私だけみたいなので、完全に おまかん です
これ以上、私のおまかん、について話し合ってもスレの無駄なので、やめましょう

739 :デフォルトの名無しさん:2015/12/05(土) 16:18:07.73 ID:q1rcdCIy.net
スレ民:>>711のGetMessageのとこヤバくね?
質問者:いやまー、問題が発生する最小限のコードにしただけだから
スレ民:念のため修正して先に進めよ
質問者:しかし、関係ありません。なぜなら、私の環境では>>711のコードでフリーズするからです
スレ民:(白目)

740 :デフォルトの名無しさん:2015/12/05(土) 16:20:06.00 ID:q1rcdCIy.net
>VSを巻き添えにしてフリーズするのは何か変なわけです

その経験が無いってことは、初心者だってことを意味するので
もう少し頭をやわらかくした方がいいよ

741 :デフォルトの名無しさん:2015/12/05(土) 16:30:31.36 ID:ckYMWiJu.net
>普通プログラムにミスが有っても、プログラムがクラッシュするのは当たり前としても
>VSを巻き添えにしてフリーズするのは何か変なわけです

昔ネットワークドライブ上にプロジェクト作っててそうなったことはある

742 :デフォルトの名無しさん:2015/12/05(土) 16:39:03.00 ID:uFLCx2kQ.net
マルチスレッドノデッドロックナンカデモ
PCキョウセイサイキドウトカフツウニアルカラナ
ソノテイドデツウジョウノジョウキョウジャナイデスッテイイキルノハ
アタマガヨワインダロウナッテオモワレルダケ

743 :デフォルトの名無しさん:2015/12/05(土) 16:44:43.34 ID:HGRqjVZT.net
嫌みなら半角と全角を交互に使って書くとより良いぜ

744 :デフォルトの名無しさん:2015/12/05(土) 16:46:13.61 ID:oc+U1/Vu.net
嘘でも「お騒がせしました」とか、「有難う御座いました」などの社交辞令を言わずに
「スレの無駄なので、やめましょう」と捨て台詞吐いてどっか行ったマナーの悪さに草不可避www
マルチポストする奴が嫌われる理由ってこういうことだったんだなっていう見本www

745 :デフォルトの名無しさん:2015/12/05(土) 16:47:56.69 ID:zuUud8BL.net
呪文に見える

746 :デフォルトの名無しさん:2015/12/05(土) 16:49:21.41 ID:zuUud8BL.net
あ、そうだ。VS2015でクラッシュというのは、実行時だけ?デバッグ時は?

747 :デフォルトの名無しさん:2015/12/05(土) 16:49:58.74 ID:ifqUzVNW.net
エコエコアザラク

748 :デフォルトの名無しさん:2015/12/05(土) 17:03:59.94 ID:pK0sc289.net
シコシコピュッピュッ

749 :デフォルトの名無しさん:2015/12/05(土) 17:09:41.94 ID:NlJfEAqa.net
DDK使っている時なんかOS毎お亡くなりに
たまに、最新ソースも巻き添えとか

750 :デフォルトの名無しさん:2015/12/05(土) 17:29:46.75 ID:ckYMWiJu.net
DiskDestroyKiller

751 :デフォルトの名無しさん:2015/12/05(土) 17:33:12.23 ID:M4JOBDA+.net
下手なウィルスより極悪やなw

752 :デフォルトの名無しさん:2015/12/05(土) 18:07:17.82 ID:6eYmgp/j.net
>>738
Windows95時代を思い出すような現象だなぁw

753 :デフォルトの名無しさん:2015/12/05(土) 19:33:31.50 ID:HGRqjVZT.net
アンインストールするとディスクごと消し去るヤンデレみたいなエロゲ

754 :デフォルトの名無しさん:2015/12/05(土) 20:03:24.98 ID:ySecgDBd.net
うpでーとしたらCドライブルート以下消し去ったオンゲもあったよね

755 :デフォルトの名無しさん:2015/12/05(土) 20:05:20.94 ID:eGerJrSR.net
>>746
「デバッグ時」が何を指しているのかわかりませんが
VS2015のデバッガ上で実行した上で、プログラムのエディトに日本語入力をしようとするとVSがフリーズします
エクスプローラから普通に実行すれば普通に動きます
「デバッグ時」がステップ実行という意味でしたら
VSでステップ実行しながらプログラムに日本語入力をするのは困難なので試せません
フリーズするタイミングは、変換窓が出た直後です
何度やっても100%フリーズします

>>752
昔のVSはマルチスレッドプログラムをブレークポイントでとめると良く固まってました
あんな感じです
しかも日本語入力をするだけで100%フリーズするので、だましだましに使うことも出来ません

とりあえずVS2015を最新版にしてみます

756 :デフォルトの名無しさん:2015/12/05(土) 20:06:49.59 ID:ySecgDBd.net
スレの無駄なので、やめましょうって言って
舌の根も乾かない内に再降臨フイタw

757 :デフォルトの名無しさん:2015/12/05(土) 20:28:35.36 ID:wt9GdtlO.net
>>755
デバッガの仕組み理解してる?
ブレークポイントにしろステップ実行にしろ本来実行するべき命令をソフトウェア割り込みで乗っ取って別の処理走らせてるんだぞ
OSのカーネルレベルでデバッガ(VSのIDEだったか?)と何かが競合すればフリーズもするだろ
昔DRM絡みで何かのシステムファイルが問題起こしてただろ

758 :デフォルトの名無しさん:2015/12/05(土) 20:36:35.47 ID:37l+kYy9.net
>>757
同じマシン上でVS2013なら起こらないって言ってるから
質問者の環境+VS2015固有の問題なんだろう
本人もそう思ってるみたいだし

もっと優しく言ってあげなきゃ
また、「スレの無駄なので、やめましょう」ってすねちゃうぞw

759 :デフォルトの名無しさん:2015/12/05(土) 20:43:55.87 ID:b6zXTnH8.net
おまかんってどういう意味だろ?
検索してもわからんかったわ

760 :デフォルトの名無しさん:2015/12/05(土) 20:45:33.64 ID:zW/Ol4xt.net
つ PyDbg

761 :デフォルトの名無しさん:2015/12/05(土) 21:48:12.44 ID:wharPYQR.net
>>759
どこで検索したんだよ…
Google で おまかん って入れたら おま環 意味 って表示されるんだが

762 :デフォルトの名無しさん:2015/12/05(土) 22:26:09.42 ID:ls1Kp+wn.net
INT命令に書き換えてブレークポイント作るのは本当は気持ち悪いよな
EIPが特定の値になるのをトラップするマイクロ診断的なものでないと

763 :デフォルトの名無しさん:2015/12/05(土) 22:30:21.01 ID:3cIIMMg0.net
>>761
さあ? どこで検索したんやろwww
つか、解決したわw 俺天才www

#include <windows.h>
WNDPROC wndproc;
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
LRESULT lr = wndproc(hWnd, message, wParam, lParam);
if( message == WM_CLOSE ) { wndproc = NULL; }
return lr;
}
int WINAPI wWinMain( HINSTANCE inst, HINSTANCE prev, wchar_t *cmdline, int show_cmd )
{
HWND editor;
editor = ::CreateWindow(L"EDIT", L"", WS_OVERLAPPEDWINDOW|WS_VISIBLE, 0, 0, 300, 100, NULL, NULL, inst, NULL);
wndproc = (WNDPROC)(LONG_PTR)::SetWindowLongPtr(editor, GWLP_WNDPROC, (__int3264)(LONG_PTR)WndProc);
MSG msg;
while( wndproc )
{
::GetMessage( &msg, NULL, 0, 0 );
::TranslateMessage( &msg );
::DispatchMessage( &msg );
}
return 0;
}

764 :デフォルトの名無しさん:2015/12/05(土) 22:49:16.19 ID:9yCwvOA5.net
変なことしてたw どう考えてもこうだよなw

#include <windows.h>
WNDPROC wndproc;
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
LRESULT lr = wndproc(hWnd, message, wParam, lParam);
if( message == WM_CLOSE ) { PostQuitMessage(0); }
return lr;
}
int WINAPI wWinMain( HINSTANCE inst, HINSTANCE prev, wchar_t *cmdline, int show_cmd )
{
HWND editor;
editor = ::CreateWindow(L"EDIT", L"", WS_OVERLAPPEDWINDOW|WS_VISIBLE, 0, 0, 300, 100, NULL, NULL, inst, NULL);
wndproc = (WNDPROC)(LONG_PTR)::SetWindowLongPtr(editor, GWLP_WNDPROC, (__int3264)(LONG_PTR)WndProc);
MSG msg;
while( ::GetMessage( &msg, NULL, 0, 0 ) )
{
::TranslateMessage( &msg );
::DispatchMessage( &msg );
}
return 0;
}

765 :デフォルトの名無しさん:2015/12/06(日) 03:33:10.31 ID:RpqIStl8.net
どうせdllでデッドロップしてるとかだったんだろ

766 :デフォルトの名無しさん:2015/12/06(日) 03:34:15.74 ID:1bjsyoJR.net
VS2015でデバッグするだけのPCスペックが無いだけなんじゃね
IME起動時点で物理メモリいっぱいになっちゃうとか

767 :デフォルトの名無しさん:2015/12/06(日) 06:34:10.49 ID:1f6kb9ui.net
VMで走らせててもホストごとフリーズするから困ることがたまによくある

768 :デフォルトの名無しさん:2015/12/06(日) 08:32:26.41 ID:kqzpr8OR.net
>>767
物理メモリが足りないだけじゃないですか?

>>766
ですから、完全に自分の環境のVS2015のデバッガとIMEで何か問題が起こっている臭いと
前スレで申し上げたのが目に入らないのでしょうか?

私は、このスレ民が誰も持ってないVS2015を購入する財力があるんですよ?
物理メモリなんていつでも大人買いしてます
そのことを公表してしまうと、そんなに財力があるくせに、なぜ検証用のセカンドマシンを持ってないの?
という疑問を持たれるかと思いますが、その点について話し合ってもスレの無駄使いなので、やめましょう

また、この時代、IME起動した程度で物理メモリが足りなくなるなんてことありえません
アイデアを出して頂くのは歓迎ですが、幼稚すぎて話しになりません

>>765
当たり前じゃないですか

IME変換窓を表示する → 親であるエディットにメッセージをSendしようとする → エディットにコントロールIDが無いので
メインウィンドウであると勘違いしてトップレベルウィンドウのHWNDを取得し結果としてメインウィンドウ宛てに送る →
誤配で郵便局員と揉める → その間Sendしたメッセージが返ってこないのでIMEが固まる →
IMEを利用している全てのプログラムが固まる

ですよね? そんな当たり前のことも分からないのですか?

>>764
再三に渡り申し上げていますように、私のコードにはバグが入り込む余地など皆無ですから
勝手に修正するのはお止め下さい
コードに変更が加えられてバグが直っても何の意味もありません

しかしながら、これ以上の議論はスレの無駄使いなので、もうやめましょう

769 :デフォルトの名無しさん:2015/12/06(日) 08:58:43.45 ID:PCxLF6KN.net
>>759
おまえのおかんがでべそ
の略

770 :デフォルトの名無しさん:2015/12/06(日) 09:02:27.54 ID:wDKmKefW.net
>>769
おまえかんぺき

771 :デフォルトの名無しさん:2015/12/06(日) 13:48:49.22 ID:o47VB080.net
>>755
> >>746
> 「デバッグ時」が何を指しているのかわかりませんが
> VS2015のデバッガ上で実行した上で、プログラムのエディトに日本語入力をしようとするとVSがフリーズします
> エクスプローラから普通に実行すれば普通に動きます
> 「デバッグ時」がステップ実行という意味でしたら
> VSでステップ実行しながらプログラムに日本語入力をするのは困難なので試せません
> フリーズするタイミングは、変換窓が出た直後です
> 何度やっても100%フリーズします

ステップ実行なりブレークポイントを置くなり何でもいいけど、財力あるなら
マルチモニタでも複数台PCでリモートデバッグでも何でもして問題箇所を絞ってよ。

財力あるけど能(脳)力はありません?

772 :デフォルトの名無しさん:2015/12/06(日) 14:24:04.68 ID:OHUYOsyJ.net
たしかにエラーも出ないログも吐かない冷凍マグロだとやりにくいな

773 :デフォルトの名無しさん:2015/12/06(日) 16:51:18.20 ID:kqzpr8OR.net
>>771
まともな解決策の一つも示すことのできなかったスレ民に
私の能力云々について、とやかく言われる筋合いはありません

ただ、能力があるかないかということであれば、私の提示したサンプルコードが
バグの入り込む隙のまったくない洗練されたものであることから、その能力を疑う余地は無いでしょう
その点はあなたと対極にあると言って過言でないと思います

端的に言って頭が良い上に金も持ってるということを知られてしまうと
あなたのように嫉妬に駆られて噛み付いてくる輩が沸くのが分かっていたので
財力のことを公表することは差し控えさせて頂いておりました

>>772
いえいえ、その程度のことは私にとっては何の障害にもなりません
実際、スレ民の力を借りるまでも無く、即座に問題を解決できたことがその証拠です

また自慢と受け取られると心苦しいのですが一言付け加えさせて頂きますと
私のレベルに到達すればプレイクポイントはアセンブリレベルで設定しますので
どこで何が起こってるのかなど一目瞭然なのであります
今回は、あなたたち無能なスレ民が無い知恵を絞り右往左往してる滑稽な姿を見て楽しんでいただけです

しかしながら、これ以上の議論はスレの無駄使いなので、もうやめましょう

774 :デフォルトの名無しさん:2015/12/06(日) 17:25:27.91 ID:fphXThfE.net
>>773
みんな適当にレスしてるのにそれに対して真面目に長文で返すあなたは相当暇なんですね

775 :デフォルトの名無しさん:2015/12/06(日) 17:38:35.94 ID:kqzpr8OR.net
>>774
>みんな適当にレスしてる
実生活においても何をしても中途半端な人たちですから
本気出しても中身が伴わずに適当にレスしてるように見えますよ

>相当暇なんですね
態々そんなことを言うために書き込みしたんですか?
どちらが暇なんでしょうね
ただの負け惜しみじゃないですか

776 :デフォルトの名無しさん:2015/12/06(日) 17:47:37.42 ID:fphXThfE.net
>>775
あれ?もう解決したんじゃないの?

777 :デフォルトの名無しさん:2015/12/06(日) 18:21:39.03 ID:al/vyHCs.net
解決したんなら、問題を起こしてたモジュールと発生条件教えてよ。
くれくれ君じゃないなら。

778 :デフォルトの名無しさん:2015/12/06(日) 18:23:36.29 ID:Z7509Thm.net
>>738
>普通プログラムにミスが有っても、プログラムがクラッシュするのは当たり前としても
>VSを巻き添えにしてフリーズするのは何か変なわけです
そうでもない
バグがあっても強引に通っていたコードがデバッガのコードが割り込むことで動かなくなる事は普通にある

>>765
バックドロップの仲間か?

>>768
>再三に渡り申し上げていますように、私のコードにはバグが入り込む余地など皆無ですから
>勝手に修正するのはお止め下さい
>コードに変更が加えられてバグが直っても何の意味もありません
「バグが入り込む余地など皆無」というのが間違いだとは思わないのか?
修正されたコードならデバッグ実行してもフリーズしないなら
修正された部分(の前のコード)がおかしいってことでしょ

779 :デフォルトの名無しさん:2015/12/06(日) 18:57:11.42 ID:F0HE3LOZ.net
>>778
> バグがあっても強引に通っていたコードがデバッガのコードが割り込むことで動かなくなる事は普通にある

それとVS巻き込んでフリーズするのは全然違うと思うが

780 :デフォルトの名無しさん:2015/12/06(日) 19:54:33.33 ID:XJADMoL5.net
Windows10でHookの使用が変わった?
別スレッドの子ウインドウのメッセージはHookに来るのか
それともライブラリの仕様が変わったのか

781 :デフォルトの名無しさん:2015/12/06(日) 20:50:17.67 ID:o47VB080.net
>>773
いや、俺前から真面目にレスしてるよ。
財力あるってアピールしてるんなら、財力使って解決する努力しろよ
って最後の行で皮肉書いてるだけだけど?

何にもやる気なく、あなたのソースが完璧と主張するだけならしかたないね。
ここで書くよりMSに言うべきでしょ?
言えないの?
なんで言えないの?

782 :デフォルトの名無しさん:2015/12/06(日) 21:22:57.43 ID:NAZd77H+.net
ID:eGerJrSRですが
VS2015をアップデートしてもフリーズは直りませんでした
しかしIMEをgoogle日本語入力にしたところ、フリーズしなくなりました
私の環境のMS-IMEとVS2015のデバッガの間でなにか不都合が起こっていたようです
お騒がせしました

ちなみに ID:kqzpr8OR は別人ですので気を悪くしないでください

ソースコードを貼り付けた意味ですが
他の人の環境でも同じことが発生するか同一コードで確かめて欲しかっただけでした
最初からおまかん、なのかどうかが知りたかっただけでした
その辺の認識の違いで食い違いが発生したみたいです
始めからそのように述べておけば良かったと反省しています

783 :デフォルトの名無しさん:2015/12/06(日) 22:02:20.58 ID:MC+a0W15.net
MSIMEは何かと不具合の噂多いからなー

784 :デフォルトの名無しさん:2015/12/06(日) 23:40:56.47 ID:CmQ2QDBG.net
ほんとスレの無駄だったね

785 :デフォルトの名無しさん:2015/12/07(月) 03:45:47.41 ID:8iat4Fp6.net
【 オンラインTCGエディター 】 >>1

デュエル・マスターズ的な非電源TCGの 《 オンライン化ツクール系ソフト 》 制作の企画。

例えば、ガチンコ・ジャッジを直ぐにでも導入できる機能を持っておりながら、
当面それを扱わず単純化させておいて、事後的に導入拡張する際に当該システムを
ブロック構造の組み合わせで後付け挿入できるように予めシステム化してあるソフト(エディター)。
既存の非電源TCGを劣らずに再現できるならば大概のニーズに応えられる筈。
バトスピ、ヴァンガ、ウィクロス、ポケカ、デジモン、ゼクス、モンコレ、ガンダム・ウォー、ライブオン、ディメンション・ゼロ、カードヒーロー、シャーマン・キングなど
のシステムを完全再現できるように設計するけど、他に此のTCGの此のシステムは再現希望とか有ったら書いて。
マジック:ザ・ギャザリングの全システムを完全に再現するのは無理だから、此れだけは必用だ!って部分のみリクエストして。
WEB通信での対戦は、個vs個、多数乱戦、チームvsチーム、個vsチームを可能な仕様とする方針。

設計思想は 《 RPGツクール 》 が良いかな?  他に、優れたエディター有ったら挙げてみて。

個人や企業などのベンダーが提示する開発費(見積もり)で折り合えば、発注する。

エディター群から基本コンセプトを絞り込む(もちろんオリジナルで優れた新ネタが有れば導入する)。

遊戯王OCGに関しては、タッグフォース、ADS、デュエルオンラインを発注先ベンダーに研究させる。
なるべく前述3つで可能な再現は全て実装させる方向を目指す。 まぁ努力する・・・
バトスピ、ヴァンガ、バディ、デュエマなど発売済みゲームソフトが存在してるケースはベンダーに研究させる。

各社TCGを再現するテストプレイ ⇒ 更に改良や修正。

機能制限した下位版を5万円以上で発売 + デュエリ−グ用に改造した上位版でサーバー稼動=営業開始。

下位版の改造および商用利用には、別途で当社との契約が必要。

さ〜て、製作ベンダー見つけよっと!ww(クス
http://wc2014.2ch.net/test/read.cgi/entrance2/1449039272/-18

786 :デフォルトの名無しさん:2015/12/07(月) 07:57:18.98 ID:WaL6xLeX.net
ガチンコ・ジャッジって何?
高度情報サイト調べたら書いてあるの?

787 :デフォルトの名無しさん:2015/12/07(月) 08:42:00.94 ID:rUHyUO/0.net
それから、誤解の無いように一言付け加えさせて頂きますと
「同一コードで同じ現象が発生するのか確かめて欲しかっただけ」という発言の真意は
あなたたち低脳スレ民に解決策を求めても、解決することなんて100%無いだろうから無駄という意味です

そのあたりは、普通に社会生活を営んでいれば推し量れそうなものですが
解決策になってない提案を自信満々で書き込んでくる愚か者の多さに唖然としました
図らずもここのスレ民が、プログラミング能力以前に、人間としての能力の低さが
浮き彫りになる形となり、関わりを持たないことが最善であると認識することができました

あと、横レス恐縮ですが、>>781さんはスレ民の方ですよね?
何故、安価が>>773なんでしょうか?
真面目にレスしてないって主張してるのは>>774さんで、
真面目にレスしてる(けど能力が低いから適当に見える)って言ってるのが>>773,>>775さんですよね?
知能指数が低すぎて話しの流れが読めないのか、あるいはそもそも言葉を理解する能力が無いのか
または、真性の馬鹿で安価すらまともに打てないのか
何れにしても、またここにスレ民が馬鹿という根拠が記されたことにより
逆説的に私の言い分が100%正しい事が証明されたわけです

788 :デフォルトの名無しさん:2015/12/07(月) 09:03:43.48 ID:3PFXwSng.net
論点からずれた事だらだら並べてそんなに暇なんか?

789 :デフォルトの名無しさん:2015/12/07(月) 09:04:19.05 ID:0+/WYlAQ.net
>>787
それが質問者の態度かよ!
そう思ってるならなんで質問するの?馬鹿なの?

790 :デフォルトの名無しさん:2015/12/07(月) 09:16:32.61 ID:sbn50vDX.net
>>787
いやいや、あんたも大概低脳だろ
MS-IMEとVS2015のデバッガの間で何か不具合が起こってることなんて
VS2013で問題ないってことからして最初から明白なのに
VS2015をアプデしてGoogleIMEをインストールして、それで初めてその結論に達するとか
低脳丸出しじゃん

ご主人様が低脳で、使われてるVS2015が真価発揮できなくて可哀相だわ

791 :デフォルトの名無しさん:2015/12/07(月) 09:24:18.11 ID:2WXCWQW+.net
つか、その結論に至るのに何日掛かってるんだよって話しだよなw

792 :デフォルトの名無しさん:2015/12/07(月) 10:26:18.94 ID:n4BtPw1p.net
>>787はいつもの煽るしか脳のないお子様の騙りだろ

偽質問者のプロフ
VS2015を購入できる財力がある、でもPCは1台しか持ってない
アセンブリレベルでブレークポイントが設定できる高度な技術力、でもたどり着いた解決方法はVSとIMEの入れ替え

793 :デフォルトの名無しさん:2015/12/07(月) 10:31:39.04 ID:tO/J50M7.net
確かに原因の特定すらできてないよな
興味ないからどうでもいいけど

794 :デフォルトの名無しさん:2015/12/07(月) 10:50:33.78 ID:GwFr+5pM.net
「おま勘」連呼して「いや、おまかんじゃないよ」って言ってもらえるのチラ見してるのがキモかった

795 :デフォルトの名無しさん:2015/12/07(月) 11:05:16.82 ID:V+HVpMUU.net
人間性についての言及があるけど他の技術系のスレに比べて意識高い人少ないのは事実だよな

796 :デフォルトの名無しさん:2015/12/07(月) 11:19:34.93 ID:V+HVpMUU.net
あ、意識他界の人は大勢居るけどね

797 :デフォルトの名無しさん:2015/12/07(月) 12:27:54.19 ID:6rSJBSiX.net
ID:eGerJrSRですが、
ID:rUHyUO/0 は私ではないので気を悪くしないでください
アラシです
反応しないでください

798 :デフォルトの名無しさん:2015/12/07(月) 12:29:33.19 ID:0b9CinAj.net
と、いいながらマッチポンプで荒らすという…

799 :デフォルトの名無しさん:2015/12/07(月) 12:38:36.81 ID:erlzR1YA.net
>>797
「ID:eGerJrSRですが」くらいは俺でも言えるのでアッピールする方が怪しい
そんなにアッピールしたきゃ名前欄に「fusianasan」って書け
できないのなら黙ってろ

800 :デフォルトの名無しさん:2015/12/07(月) 13:00:11.78 ID:PFJ6xruc.net
てか、いい加減スルーしようよ…

801 :デフォルトの名無しさん:2015/12/07(月) 13:01:09.37 ID:HgOqd3RD.net
誰が誰かなんて正直どーでもいい
少なくともID:eGerJrSRが
自分のやってることや考えに間違いは絶対にないと思い込んでる勘違い野郎だってことと
スレで暴れて他人に迷惑をかけても何とも思ってない痛々しい馬鹿だってことわはっきりしてる

802 :デフォルトの名無しさん:2015/12/07(月) 13:34:02.13 ID:KuRdWB2c.net
俺が村田だ
まで読んだ

803 :デフォルトの名無しさん:2015/12/07(月) 23:20:25.64 ID:4dGrKabk.net
>>711 が非常識なのは当然として、
まったくピント外れの書き込みで何の役にも立ってないのに偉そうにしてる奴らもどうかと思う

804 :デフォルトの名無しさん:2015/12/07(月) 23:26:56.96 ID:4dGrKabk.net
>>711
問題とは関係ないけど、
mainの最後、return 0L; なのは何か意味があるの?

805 :デフォルトの名無しさん:2015/12/08(火) 00:31:00.02 ID:zsH7v/oq.net
>>804
どういうこと?
「L」の意味合いについての質問か?

806 :デフォルトの名無しさん:2015/12/08(火) 01:10:17.18 ID:smcxnEg4.net
>>804
>>711様のバグのないコードだぞ?

807 :デフォルトの名無しさん:2015/12/08(火) 01:18:39.29 ID:BN6+7Zbb.net
その後も自力で何とか試行錯誤を繰り返しておりましたがフリーズ問題は解決に至っておりません
このまま無かったことにするのはスレを見てる方に対して失礼だと思いましたので
引き続き、皆様のお知恵を拝借してフリーズを解決できるコードを募りたいと思います
宜しくお願いします

#include <windows.h>
int WINAPI wWinMain( HINSTANCE inst, HINSTANCE prev, wchar_t *cmdline, int show_cmd )
{
HWND window, editor;
WNDCLASS winc = {0};
winc.style= CS_HREDRAW | CS_VREDRAW;
winc.lpfnWndProc= ::DefWindowProc;
winc.hInstance= inst;
winc.hIcon= ::LoadIcon( NULL , IDI_APPLICATION );
winc.hCursor= ::LoadCursor( NULL , IDC_ARROW );
winc.hbrBackground= (HBRUSH)GetStockObject( NULL_BRUSH );
winc.lpszClassName= L"window";
::RegisterClass( &winc );
window = ::CreateWindow( L"window", L"test", WS_OVERLAPPED|WS_VISIBLE,
0, 0, 300, 100, NULL, NULL, inst, NULL );
editor = ::CreateWindow( L"EDIT", L"", WS_CHILD|WS_VISIBLE,
0, 0, 300, 100, window, 0x03e8, inst, NULL );
MSG msg = {0};
while( ::GetMessage( &msg, NULL, 0, 0 ) > 0)
{
::TranslateMessage( &msg );
::DispatchMessage( &msg );
}
return 0;
}

808 :デフォルトの名無しさん:2015/12/08(火) 02:58:19.81 ID:2roaNsUx.net
コードの問題ではなくて環境の問題
仮想でもなんでもいいからクリーンなOS環境を確保する方が先決
その上で再現したらもう一度書き込みしなさい

809 :デフォルトの名無しさん:2015/12/08(火) 09:54:47.36 ID:A7OO03sB.net
低脳呼ばわりしたり、宜しくって言ってみたり
どうなってんだよ

810 :デフォルトの名無しさん:2015/12/08(火) 10:37:48.74 ID:vWX5dYCl.net
>>807
最小コードよりも、動くコード書くのが先じゃないの?
ビジュアルスタジオのWIN32プロジェクトで自動生成されるテンプレを元に下記の文を追加してみたらどうだい?
HWND hEditor; // エディタ
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message){
case WM_CREATE: hEditor = CreateWindow(L

811 :デフォルトの名無しさん:2015/12/08(火) 10:40:19.16 ID:vWX5dYCl.net
書き込みミスったorz
case WM_CREATE:
hEditor=CreateWindow(L"EDIT",L"",WS_CHILD|WS_VISIBLE,0,0,300,100,hWnd,NULL,hInst,NULL);break;
case WM_DESTROY:DestroyWindow(hEditor);PostQuitMessage(0);break;
default:return DefWindowProc(hWnd, message, wParam, lParam);}
return 0;}

812 :デフォルトの名無しさん:2015/12/08(火) 11:44:51.55 ID:rtJmb9vL.net
EditBoxコントロールのCreateWindow関数の一部にミスがあるみたいだけど修正すれば問題ないことは確認した
動作環境 : Windows10Pro(build10586.17), Microsoft IME
ビルド環境 : VisualStudioEnt2015Update1(Ver14.0.24720.00)

813 :デフォルトの名無しさん:2015/12/08(火) 12:37:52.55 ID:zjJIjn6V.net
>>809
別人がなりすましで書き込んでいるだけだからね
IMEをグーグル日本語入力に変えてフリーズしなくなったから
本人的にはもう解決している話

814 :デフォルトの名無しさん:2015/12/08(火) 12:47:54.43 ID:WQt5IVqj.net
>>809
構ってちゃんでしょ
スルーしようよ

815 :デフォルトの名無しさん:2015/12/08(火) 17:36:04.71 ID:eJubGLpd.net
>>805
そう
戻り値がintなのになんでわざわざLを付けたのかってこと

816 :デフォルトの名無しさん:2015/12/08(火) 17:37:05.84 ID:eJubGLpd.net
>>807では消えてるからただのミスかな

817 :デフォルトの名無しさん:2015/12/08(火) 19:57:13.33 ID:9OJSSokt.net
誘導されてきました。
------------
開発環境 XP SP3 VC++2008EE
Win32 コンソール アプリケーション
MFC=標準Windowsライブラリを使用
ATL=使用しない
文字セット=マルチバイト

実行環境 Windows NT系OS

この環境で以下のような改造したファイルオープンダイアログを
実装しようと思ってるのですが、
http://i.imgur.com/lgk1ApU.jpg

どのようにしたらいいのでしょうか?
検索してもうまく探せませんでした。

818 :デフォルトの名無しさん:2015/12/08(火) 20:05:24.43 ID:V92FzyIA.net
>>817
lpfnHookで探してみて

819 :デフォルトの名無しさん:2015/12/08(火) 20:47:49.78 ID:9OJSSokt.net
>>818
ありがとうございます

820 :デフォルトの名無しさん:2015/12/08(火) 20:56:35.07 ID:pU1qoPPC.net
>>817
あとテンプレートもだな

821 :デフォルトの名無しさん:2015/12/09(水) 16:00:41.28 ID:Z+x1QnkM.net
>>815
意味については分からん
本人が独自に決めたコーディング規約だろうくらいに思っておけばいいんじゃないの

822 :デフォルトの名無しさん:2015/12/10(木) 16:40:50.35 ID:xYVEMhSB.net
Windows板の10スレで、沢山の人がIME固まると言ってるやつの再現コードなのかな

この症状は10586から出始めたから、10240で出ないなら10586そのものか、10586付属IMEの問題だったりして

財力あるなら、MSの有償テクニカルサポートに問い合わせれば真面目に対応してもらえると思う
バグならカネはかからないはず

823 :デフォルトの名無しさん:2015/12/11(金) 21:01:12.91 ID:7hEsJRkD.net
どんなコーディング規約だよwww

824 :デフォルトの名無しさん:2015/12/12(土) 10:28:00.67 ID:npRd3MLZ.net
おおかた 3.1/16bit -> Win32に移行したばかりの化石層から発掘されたコードのコピペだろ

825 :デフォルトの名無しさん:2015/12/12(土) 11:20:47.34 ID:MmL5lxhk.net
文字列リテラルの前部には"L"を
整数リテラルの後部には"L"を付ければおkって
意味も分からずに覚えたからでしょ

826 :デフォルトの名無しさん:2015/12/13(日) 04:54:19.11 ID:GpCTMsCJ.net
文字列に"L"付けるとどうなるの?

827 :デフォルトの名無しさん:2015/12/13(日) 07:31:56.73 ID:eaDqvpLQ.net
ワイド文字しらんの?
std::locale::global( "japanese" ); // ユーザ変換によりstd::locale( "japanese" ,locale::category cat=LC_ALL )が渡される
std::wstring str( L"こんにちは" );

828 :デフォルトの名無しさん:2015/12/13(日) 12:59:24.78 ID:wmJ8ONej.net
Windows XP登場あたりから特別な理由が無い限りUnicodeでプログラム組むことが推奨されてきたのに
この時代にL(_T)知らん奴が居ることに驚いた

829 :デフォルトの名無しさん:2015/12/13(日) 13:11:12.55 ID:2pFFNjWZ.net
この時代にLつけないとワイド文字認識しないことに驚いた

830 :デフォルトの名無しさん:2015/12/13(日) 13:26:16.21 ID:wmJ8ONej.net
>>829
既存コードとの互換性を考えたら”L無し=ワイド文字”ってのはやばいでしょ
プロジェクトのプロパティやpragmaディレクティブで、Lついてない文字列を
一括でワイド文字と認識させるようにするって案ならあってもいいかなって思う

831 :デフォルトの名無しさん:2015/12/13(日) 14:55:28.61 ID:S5USnmm8.net
winでしかC言語触ったことがないピーヒョロな頭なんで考えが及ばなくても仕方ないじゃん。
やばいとか知らねー。

832 :デフォルトの名無しさん:2015/12/13(日) 21:27:00.40 ID:ScgB15D7.net
LなしはUTF8にしてくれた方が

833 :デフォルトの名無しさん:2015/12/13(日) 21:38:50.72 ID:2pFFNjWZ.net
コマンドプロンプトがマルチバイトでないとちゃんと表示できない
からGUIと組み合わせる場合にめんどくさいんだよな
あと古い上に代わりがないタイプのAPIがchar*しか対応なかったり

834 :名無しさん@そうだ選挙に行こう:2015/12/14(月) 12:11:01.23 ID:hRRo1CCV.net
そうそう、includeもマルチバイトなんだよな

835 :名無しさん@そうだ選挙に行こう:2015/12/14(月) 14:23:41.55 ID:baKxaSGv.net
>>825-828
wchar(UTF-16) と char(UTF-8) をどっちも
wchar(UTF-8) と char(UTF-8) だと思ってる人が結構いる

836 :名無しさん@そうだ選挙に行こう:2015/12/14(月) 14:56:24.64 ID:K7v/F4Aj.net
>>835
いねーよそんな奴w

837 :名無しさん@そうだ選挙に行こう:2015/12/14(月) 15:29:30.45 ID:hRRo1CCV.net
>>835
まー確かに0x00ffまではUTF-8といえないことも・・・、いやいや、いねーわそんな奴w

838 :名無しさん@そうだ選挙に行こう:2015/12/14(月) 15:38:58.09 ID:DSJzQQ/E.net
>>835
wcharのwは何のwなんだよw

839 :名無しさん@そうだ選挙に行こう:2015/12/14(月) 16:37:25.30 ID:hRRo1CCV.net
>>838
「なんだよw」のwは何のwなんだよw

840 :名無しさん@そうだ選挙に行こう:2015/12/14(月) 18:00:55.66 ID:Ag+6b4jq.net
>>839
「なんだよw」のwは何のwなんだよw

841 :名無しさん@そうだ選挙に行こう:2015/12/14(月) 18:11:14.75 ID:reTGASBb.net
ユニコードなのに色んなコードがあるのがなんとも

842 :名無しさん@そうだ選挙に行こう:2015/12/14(月) 18:29:10.36 ID:W0/Eg9YL.net
文字集合は一つ
符号化方式は一つじゃないから

843 :デフォルトの名無しさん:2015/12/14(月) 20:57:07.79 ID:mQKSdQ1D.net
charw

844 :デフォルトの名無しさん:2015/12/15(火) 07:39:41.73 ID:9P3I1wS2.net
>>839
昔ネトゲでは半角しか入力できませんでした・・・
て続けたらいいのかw

845 :デフォルトの名無しさん:2015/12/15(火) 09:40:51.53 ID:GmzcEDm2.net
ωchar_t *ω = NULLPO;

846 :デフォルトの名無しさん:2015/12/15(火) 21:36:27.75 ID:PseeQbpS.net
半角カタカナとはなんだったのか

847 :デフォルトの名無しさん:2015/12/15(火) 22:44:46.92 ID:o5vxE/KH.net
char(笑)

848 :デフォルトの名無しさん:2015/12/16(水) 04:38:00.32 ID:JxdBAlmf.net
>>845-846
ガッ

旧サロゲートだなー

849 :デフォルトの名無しさん:2015/12/16(水) 14:14:35.28 ID:EEnl9+ch.net
>>841
ほんこれ
16bit(65,536通り)じゃ、世界中の文字を表現するのに最初から足りないんだよな
日本の絵文字も一億個くらい入れたいから
LCHAR=32bit char を作って、文字コード統一してくれ

850 :デフォルトの名無しさん:2015/12/16(水) 21:34:08.98 ID:YGwjiYwh.net
もうぜんぶ64ビットでいいよ・・・

851 :デフォルトの名無しさん:2015/12/17(木) 00:48:21.74 ID:Vfp48Rrj.net
UTF32でいいじゃん

852 :デフォルトの名無しさん:2015/12/17(木) 12:09:01.46 ID:Szn4FINI.net
始皇帝に頼めばやってくれそう

853 :デフォルトの名無しさん:2015/12/17(木) 19:15:30.59 ID:Szn4FINI.net
鯖落ちてたぬ

854 :デフォルトの名無しさん:2015/12/17(木) 20:00:08.82 ID:MUNBX9mT.net
>>849
世界中の文字を入れる必要なんかない
ある程度メジャーな言語が表現できれば十分

855 :デフォルトの名無しさん:2015/12/17(木) 21:33:30.91 ID:o7OE0QW2.net
>>854
君みたいな奴がウニコードの仕様を決めたんだろうな

856 :デフォルトの名無しさん:2015/12/17(木) 22:37:13.62 ID:O/TlL5Ei.net
世界中のあらゆる文字を表現するなんて大それた目標はTRONコードみたいな
拡張可能な可変長コードでやってりゃよかったんだよ。
今のゴミ溜めみたいになったUnicodeみてると、オリジナルのUnicodeは妥協も多いが
そのぶん現実的、実用的だったと思うわ。

857 :デフォルトの名無しさん:2015/12/18(金) 23:29:03.09 ID:Pd1EZ5ai.net
プログラマはMacを使ってるってマジ?
http://hayabusa3.2ch.net/test/read.cgi/news/1450395043/

858 :デフォルトの名無しさん:2015/12/19(土) 06:36:23.57 ID:JTS0FgkK.net
雰囲気プログラマな

859 :デフォルトの名無しさん:2015/12/19(土) 13:09:27.46 ID:EW8XrhCB.net
画面上の座標を指定して、そこにある文字を取得するAPIがあったとおもったんですが、なんて関数だったかわかる方教えてください。

860 :デフォルトの名無しさん:2015/12/19(土) 13:13:29.63 ID:omg72g7V.net
そんなのが存在してるとして、どういう仕組で動くんだろう

861 :デフォルトの名無しさん:2015/12/19(土) 13:29:57.81 ID:2CKHjxE+.net
>>859
文字を画像で取得するならCOPYRECT

862 :デフォルトの名無しさん:2015/12/19(土) 13:39:36.64 ID:nLbzSKo0.net
>>860
fontの画像と比較するとか?

863 :デフォルトの名無しさん:2015/12/19(土) 15:20:19.93 ID:cnr2UN2D.net
OCRがやってることなんだから対して驚くことなかろう

864 :デフォルトの名無しさん:2015/12/19(土) 15:22:50.20 ID:iG82T79N.net
captcha解くために別のURLで人間に回答させてDB化するソフトがあったな

865 :デフォルトの名無しさん:2015/12/19(土) 17:07:21.92 ID:JTS0FgkK.net
>>860
テキストVRAMを読むんですよ。

866 :デフォルトの名無しさん:2015/12/19(土) 23:02:33.63 ID:NrSgV7LX.net
指定した位置の文字を読み取るWin32API
https://msdn.microsoft.com/ja-jp/library/cc429673.aspx
https://msdn.microsoft.com/ja-jp/library/cc429664.aspx

867 :デフォルトの名無しさん:2015/12/19(土) 23:06:47.65 ID:nLbzSKo0.net
>>866
どう言う原理か30文字で要約してくれ

868 :デフォルトの名無しさん:2015/12/19(土) 23:48:08.03 ID:NHtd1Eg1.net
コンソールだったら文字ベースで情報保持してるんだから、訳ないでしょ。

869 :デフォルトの名無しさん:2015/12/19(土) 23:52:15.16 ID:nLbzSKo0.net
>>868
文字数オーバー
答えになっていない
20点
やり直し

870 :デフォルトの名無しさん:2015/12/20(日) 02:06:05.56 ID:56xMgfm6.net
バカが偉そうなのは何で?

871 :デフォルトの名無しさん:2015/12/20(日) 07:18:46.95 ID:37nsyMmy.net
>>867
MSがそのように作ったからだよ。ばか。

872 :デフォルトの名無しさん:2015/12/20(日) 07:46:34.97 ID:uuZPbj7S.net
>>870
馬鹿はエラが張ってるだろ

873 :デフォルトの名無しさん:2015/12/20(日) 11:00:10.04 ID:8RLYRFXT.net
consoleならallocconsoleで自前でバッファ用意出来るから
画面の位置のを読むのは時間の無駄

874 :デフォルトの名無しさん:2015/12/20(日) 12:27:47.08 ID:zAzsvh37.net
引数の座標データがPOINTS構造体ではなくてCOORD構造体な件について。

875 :デフォルトの名無しさん:2015/12/20(日) 13:48:28.72 ID:8RLYRFXT.net
coord: 座標
何が問題?

876 :デフォルトの名無しさん:2015/12/20(日) 15:46:54.52 ID:hmqFHT/t.net
POINTSと複数形になってるところがポイントじゃね
ということでCOORD構造体の配列じゃなくてふざけんなってことかね。

877 :片山博文MZ ◆T6xkBnTXz7B0 :2015/12/20(日) 15:50:10.13 ID:DvVXmBam.net
そのSはSHORTのSだろ

878 :デフォルトの名無しさん:2015/12/20(日) 16:18:02.21 ID:8RLYRFXT.net
最小化が(-32768,-32768)かなんかだったけど
32768以上のサイズのウィンドウだったら隠しきれないな

879 :デフォルトの名無しさん:2015/12/20(日) 17:11:38.42 ID:KkGGgVF0.net
>>878
世界のどこかで試したことのある愛すべきバカはいないのだろうか?

880 :デフォルトの名無しさん:2015/12/20(日) 17:30:51.78 ID:MKBZtdD0.net
POINTSはスクリーン座標(マウスで取得するクライアント領域の座標)、CHOORDはコンソールスクリーンバッファの座標だろ
ピクセル単位とコンソール文字単位じゃまるで意味が違う

881 :デフォルトの名無しさん:2015/12/20(日) 17:33:13.91 ID:MKBZtdD0.net
訂正:COORD

882 :デフォルトの名無しさん:2015/12/21(月) 22:35:49.69 ID:FHH9nXMk.net
うちの環境でさえ 7680x1600 だから、
これの4倍くらいなら、そんな凄いバカでなくてもやらかすだろ

883 :デフォルトの名無しさん:2015/12/22(火) 10:14:24.66 ID:rqbDbnyc.net
ウィンドウアプリでも_cprintfを使いたいのですが代替APIはありますか?

884 :片山博文MZ ◆T6xkBnTXz7B0 :2015/12/22(火) 10:38:01.21 ID:Ho+K44el.net
>>883
SetTextColor
TextOut
DrawText
DrawTextEx

885 :デフォルトの名無しさん:2015/12/22(火) 13:03:35.05 ID:rqbDbnyc.net
>>884
対応できました。ありがとうございます。

886 :デフォルトの名無しさん:2015/12/22(火) 20:30:17.58 ID:0q8I2qvC.net
ncurses

887 :デフォルトの名無しさん:2015/12/22(火) 23:54:02.55 ID:cFhaBXKc.net
>>882
そんなアホみたいにデカイ液晶有るのか?
何に使っている?

888 :デフォルトの名無しさん:2015/12/23(水) 00:13:35.04 ID:IHjjwtj5.net
何枚か並べているんだろう

889 :デフォルトの名無しさん:2015/12/23(水) 02:57:17.09 ID:/wOBmLFi.net
>>887
何も知らないゴミは書き込むなよ。
幅1920pxのディスプレイでクアッドディスプレイやれば7680になるだろうが。
グラボ2枚刺にディスプレイ4枚程度なら今時どんな貧乏人でもできる。
お前みたいに知識もなく調べもせずに書き込んでスレを消費するゴミクズは目障りなんだよ。
知識もない調べない知恵送れのゴミクズがまともな人間の会話に混ざろうとするな、身の程を知れ。
アホはお前だろ。と言いたいところだがお前はアホ未満のゴミだから言えないな。
出ていけ。

890 :デフォルトの名無しさん:2015/12/23(水) 03:38:24.63 ID:h+VA4S6f.net
無知なのにおかしなこと書き込む奴も大概だが環境の自慢厨はもっと目障りなんだよ
自慢したいのなら知識だけにしとけ

891 :デフォルトの名無しさん:2015/12/23(水) 06:12:37.31 ID:Bay2doKJ.net
>>889
なぜそんなにイライラしているのですか?
君みたいな童貞は余裕が無いのは分かりますが…

892 :デフォルトの名無しさん:2015/12/23(水) 08:50:14.87 ID:2F8TsTF+.net
実際に第三象限に描かれた最小化ウィンドウが
第一象限に現れてくることってあるの?
どんなでかいディスプレイ用意しても無駄じゃね?

893 :デフォルトの名無しさん:2015/12/23(水) 14:02:06.27 ID:v0nEZQ5O.net
>>889
煽っているところ申し訳ないんだが
「1920pxディスプレイを4枚並べて」という場合、32768を超えるためには18枚必要なんだが
2560pxディスプレイでも13枚必要
シャープあたりが1600万円の7,680×4,320pxディスプレイを出すらしいがそれでも5枚必要だ

>>882は「うちの環境の4倍」と言っている
仮にすでに何枚か並べているとして全部で12枚とか16枚以上のディスプレイを使うというのは「普通にやらかす」ことなのだろうか
値段的なことはおいておいても1枚から追加して4枚というのはありえることと思うが
4枚の人が16枚にするというのは「凄いバカ」ではないだろうか
そういう点から>>887は物理的に7,680×4,320pxディスプレイと解釈したんだと思う

ちなみにアスキーさんの記事
http://weekly.ascii.jp/elem/000/000/285/285487/

>>892
ディスプレイの配置によるんじゃないだろうか
プライマリディスプレイが基準になるはずでセカンダリ以降をプライマリの左に配置するとマイナス座標になる
プライマリが下で上にセカンダリを配置するとこれももマイナス座標になる

894 :デフォルトの名無しさん:2015/12/24(木) 02:23:52.41 ID:h3JTIwaN.net
>環境の自慢厨
どこの誤爆か知らんが
環境の自慢厨とやらがいるスレでやれ発達障害

895 :デフォルトの名無しさん:2015/12/24(木) 03:31:04.38 ID:5C+hR802.net
>>889のことを言ってるんだろ

896 :デフォルトの名無しさん:2015/12/24(木) 03:51:07.60 ID:cfkhT3OL.net
わざわざID変わった後に亀レスしてくるところを見ると
>>882>>889>>894
は同一人物か?

897 :デフォルトの名無しさん:2015/12/24(木) 05:47:25.79 ID:h3JTIwaN.net
反論できなくなると自演認定する奴いるよな
追い詰められると関係ない話をこじつけて保身しようとするのは発達障害の典型

898 :デフォルトの名無しさん:2015/12/24(木) 06:28:11.13 ID:jvPsYvZG.net
自演否定でも自演擁護でも構わんがいちいちスレを荒らすな
自己主張したいなら余所でやれ

899 :デフォルトの名無しさん:2015/12/24(木) 11:10:35.00 ID:h3JTIwaN.net
>>898=鏡に向かって喋ってる内容をわざわざ書き込む発達障害

900 :デフォルトの名無しさん:2015/12/24(木) 11:44:25.08 ID:+OAEjoT0.net
>>896
>は同一人物か?
そうだろう。かつ童貞で頭も悪い。

901 :デフォルトの名無しさん:2015/12/24(木) 17:31:01.76 ID:MjLZfEC/.net
>>899
お前が話ずらしてんじゃねーかw

902 :デフォルトの名無しさん:2015/12/24(木) 17:39:29.34 ID:dt2VllYo.net
ここで髪の話はよせ

903 :デフォルトの名無しさん:2015/12/24(木) 18:14:59.25 ID:4YM2CMve.net
900

904 :デフォルトの名無しさん:2015/12/24(木) 20:03:32.93 ID:edQDesEY.net
お前らメリクリ!

905 :デフォルトの名無しさん:2015/12/24(木) 20:38:50.32 ID:mFTVVltg.net
このディスプレイ横に並べたらいけそう

https://www.youtube.com/watch?v=m1RJASQT5i8

906 :デフォルトの名無しさん:2015/12/24(木) 21:23:19.78 ID:DECH3WsR.net
Win32はLPARAMに符号ありのxとyを詰め込んでいるから
-32768〜32767までしか座標を扱えないんだよな

907 :デフォルトの名無しさん:2015/12/25(金) 12:25:35.03 ID:ISLz7uba.net
関連動画にやたらボウリングが出てくるのはおま環?

908 :デフォルトの名無しさん:2015/12/25(金) 15:54:07.14 ID:jK/x+z8S.net
905

909 :デフォルトの名無しさん:2015/12/25(金) 18:28:59.25 ID:AIOAKki4.net
ぷ。

910 :デフォルトの名無しさん:2015/12/26(土) 14:09:13.88 ID:E3MIEZFa.net
質問します
実行するのに長い時間のかかる関数があります
呼び出すと処理が終わるまで帰ってこず、途中で中断するような仕組みも用意されていません
この関数はソースがない外部のものなので修正はできません
この関数を呼び出すとUIが長い間固まるので、当然ワーカースレッドで実行します
ここまでは良いです

しかしユーザが中断ボタンを押した時は処理を中断させたいです
TerminateThreadでワーカースレッドを無理やり終了することは出来ます
若干メモリリークするでしょうが、頻度は多くないので諦めることすら検討しています

問題はクリティカルセクションです
マルチスレッドなのでクリティカルセクションを使っているわけですが
EnterしたままLeaveせずにスレッドが終了するとクリティカルセクションは未定義な状態になると書いてあります
https://msdn.microsoft.com/ja-jp/library/cc429095.aspx
最低でもクリティカルセクションだけはLeaveしてから終了しなければなりません

一つ考えたのは、長い時間のかかる関数を別プロセスで実行することです
キャンセルする場合はプロセスごと殺します
もっとうまい方法はないですか?

http://www.codeproject.com/Articles/71529/Exception-Injection-Throwing-an-Exception-in-Other
一応ここに答えのようなものが載っているのですが

911 :デフォルトの名無しさん:2015/12/26(土) 14:17:19.97 ID:E3MIEZFa.net
どちらにせよ、
http://www.codeproject.com/Articles/71529/Exception-Injection-Throwing-an-Exception-in-Other
に書いてある方法でワーカースレッドに外から無理やり例外を発生させたとしても
今対象の長い時間のかかる関数の中がどうなっているかわかからないので難しいと思いました

長い時間のかかる関数が、C++の例外機構を使ってRAIIでクリティカルセクションを管理していれば
無理やり例外を発生させることでLeaveさせることが出来るかもしれませんが
そうじゃなかった場合、Leaveせずに関数を抜けることになります
もちろんメモリリークもしますでしょう

別プロセスで実行するしか他にやりようがないように思えてきましたが
何か良い案はありますでしょうか

912 :デフォルトの名無しさん:2015/12/26(土) 14:21:43.20 ID:E3MIEZFa.net
>C++の例外機構を使ってRAIIで

この日本語はちょっとおかしいですね

例外機構を使うか、もしくはRAIIで

に訂正しておきます

913 :デフォルトの名無しさん:2015/12/26(土) 14:29:31.38 ID:E3MIEZFa.net
世の中には処理に時間のかかる関数がゴマンとあると思います
それらが外部のライブラリで修正不可能な事も一般的なことだと思います
加えて、長く時間のかかる処理は、ユーザーは何時でもキャンセルできるのも普通なことと思います

皆さん一体どうしているんですか?

実はキャンセルしているように見えて、キャンセルしておらず、最後まで走っており
キャンセルした場合は、結果データを捨てているだけ、とかですか?

914 :デフォルトの名無しさん:2015/12/26(土) 14:35:54.26 ID:PvF8tuZ2.net
DOSコマンドで中断しようとして^C押したら
延々と時間が経った後に
結果を表示せず「中断しました(キリっ)」
って出て
どうせ最後まで実行するなら結果表示しろってむかついたのは良い思い出

915 :デフォルトの名無しさん:2015/12/26(土) 14:40:32.69 ID:MqeDNb2X.net
クリティカルセクションにEnterしてるのはどっちのコードなんだよ。
自分のコードからEnterしてるんじゃねぇの?そんだったら、
TerminateThreadを呼び出すとともに、クリティカルセクションLeaveすれば
いいだけじゃねぇのか??
まぁ、クリティカルセクションは特定のスレッドにアタッチされると思ったから、カウント1の
バイナリセマフォ使えばいいんじゃねぇのかな。
使って。

916 :デフォルトの名無しさん:2015/12/26(土) 14:45:55.06 ID:Sgv0r5+y.net
プロセスをキルすればいいだろ。
簡単なことさ

917 :デフォルトの名無しさん:2015/12/26(土) 14:49:45.60 ID:MqeDNb2X.net
つか、まぁ、厳密にはTerminateThreadでキルするタイミングとスレッドが普通に
スレッドが終了するタイミングが重なったりするから、もっと制御必要か。

918 :デフォルトの名無しさん:2015/12/26(土) 15:07:23.22 ID:Igcba1qr.net
>>911
> 別プロセスで実行するしか他にやりようがないように思えてきましたが
これだね。長い処理ならプロセス生成のペナルティなんてゴミでしょ。

919 :デフォルトの名無しさん:2015/12/26(土) 15:52:38.79 ID:MqeDNb2X.net
つか、間違えた。TerminateThreadの説明みると、TerminateThreadの前ではバイナリセマフォとか
関係なくなすすべなしだわ。ごめん。別プロセスがいいね。

920 :デフォルトの名無しさん:2015/12/26(土) 17:22:27.23 ID:E3MIEZFa.net
>>915
どっちと言われても両方だと思います

自分のプログラム側も自分を守るためにクリティカルセクションは使っていますが
こっちは自分のコードなので好きにできるので
>>911の方法でメインスレッドからワーカースレッドに無理やり例外を発生させる方法でも
なんとかなるので構わないんですけども

呼びだされ側の、時間のかかる関数側も、そっちはそっちで自分を守るために
クリティカルセクションなどを使っている可能性がありまして
ソースコードがないので実際にどういう実装になっているかは定かではないのですが・・・
勝手に想定外の例外を発生させて関数を巻き戻して上手く開放処理が走る
保証はないといった感じです
もし関数側が例外機構もRAIIも使わずにCスタイルでEnter/Leaveしていたら
>>911の方法で無理やり外から例外を発生させても意味無いですから

別プロセスで走らすしかなさそうですね

921 :デフォルトの名無しさん:2015/12/26(土) 23:51:05.38 ID:7vqLpcYG.net
>>920
馬鹿には無理
身の程を知れ

ここはお前みたいな奴がヴァカアピールするスレではない

922 :デフォルトの名無しさん:2015/12/27(日) 03:07:52.61 ID:vtL+jd1t.net
ブーメラン

923 :デフォルトの名無しさん:2015/12/27(日) 03:21:59.70 ID:uDQp4eWs.net
ソースないならアセンブリ見て解析しろよ

924 :デフォルトの名無しさん:2015/12/27(日) 05:06:34.16 ID:n35dT9A9.net
アセンブリ?
アセンブルのはソースだべ?

925 :デフォルトの名無しさん:2015/12/27(日) 09:46:06.79 ID:W/VOfYcN.net
あせんぶろーぜ

926 :デフォルトの名無しさん:2015/12/27(日) 14:33:06.55 ID:Acfv8QHx.net
WM_MOUSEWHEELのLPARAMに入ってるマウス座標って、クライアント座標じゃなくてスクリーン座標なんだね
下らんことで詰んでもうた

927 :デフォルトの名無しさん:2015/12/27(日) 14:40:36.28 ID:IeXywcCL.net
>>926
ScreenToClient()で変換すりゃ良いんじゃない?

928 :デフォルトの名無しさん:2015/12/27(日) 14:51:26.69 ID:Acfv8QHx.net
>>927
それでやります。あざます

929 :デフォルトの名無しさん:2015/12/27(日) 18:05:29.28 ID:zGVY6mFV.net
よくハマるところだよね。

930 :デフォルトの名無しさん:2015/12/27(日) 23:11:12.75 ID:wEcqjPTL.net
MSDNに書いてる事をドヤ顔で・・・

931 :デフォルトの名無しさん:2015/12/28(月) 12:22:33.02 ID:Y4DeX8w+.net
クライアントの左上が (0, 0) じゃなくて
タイトルバーとかウィンドウ枠の分ずれてるのはなんでなん?

932 :デフォルトの名無しさん:2015/12/28(月) 12:56:04.56 ID:dgI6+oKo.net
>>930
> MSDNに書いてる事をドヤ顔で・・・
語れなくて悔しいのはわかった

933 :デフォルトの名無しさん:2015/12/28(月) 12:59:54.19 ID:b3qQlUF/.net
>>931
クライアントじゃないから

934 :デフォルトの名無しさん:2015/12/28(月) 16:20:50.20 ID:i875NmCw.net
じゃー
ツールバーとかステータスバーの分はズレなかったように思うけど
メニューバーとスクロールバーだけ特別扱いなのは何で?
あとから拡張したからってのは分かってることだけどまるで一貫性がないよね

メニューバーもただのWS_CHILDだった方が後々都合が良かったのにね

935 :デフォルトの名無しさん:2015/12/28(月) 16:45:13.81 ID:EuCUuVkC.net
タイトルバーとかはNC(非クライアント)領域って呼ばれててる。
WM_PAINTに対してWM_NCPAINTって。
まぁ、ただの呼び名の問題だからな。そんなこだわっても。

936 :デフォルトの名無しさん:2015/12/28(月) 18:19:55.77 ID:Y4DeX8w+.net
左右の幅を縮めるとメニューバーが二段になって
クライアント領域が全部ずれたりするよね

937 :デフォルトの名無しさん:2015/12/28(月) 18:39:36.94 ID:By8jd1bH.net
それはない。

938 :デフォルトの名無しさん:2015/12/29(火) 00:36:46.96 ID:NmwzIy5H.net
>>932
自己紹介はしなくていい

939 :デフォルトの名無しさん:2015/12/29(火) 00:50:08.25 ID:ngajy4jA.net
>>938
単発w

940 :デフォルトの名無しさん:2015/12/29(火) 01:08:23.57 ID:NmwzIy5H.net
>>939
ID変わるタイミング知らんのかw

941 :デフォルトの名無しさん:2015/12/29(火) 06:43:26.45 ID:x2QuPiOh.net
わざわざそのタイミング狙ってまでレスすることかよ w
ってことだろ

942 :デフォルトの名無しさん:2015/12/29(火) 11:39:54.40 ID:6CCbAlEQ.net
くやしかったの?ごめんねw

943 :デフォルトの名無しさん:2015/12/29(火) 18:26:58.60 ID:a9NNa9Ep.net
30分も経ってるのに、タイミングとか言われてもなあ

944 :デフォルトの名無しさん:2015/12/30(水) 00:32:40.72 ID:6CJqV1bM.net
>>941
30分しか経ってないのに「単発w」とか単発って言いたいだけだろw

945 :デフォルトの名無しさん:2015/12/30(水) 01:41:46.09 ID:eZTJN+3O.net
キッズ多いのなぁ

946 :デフォルトの名無しさん:2015/12/30(水) 02:11:12.54 ID:Ov2mfylL.net
最近このスレには頭悪いのが多いな

947 :デフォルトの名無しさん:2015/12/30(水) 02:22:22.51 ID:tlmx9qoR.net
分からないなら黙っててください。
ウザイだけです。
時代とどっちがいい?

948 :デフォルトの名無しさん:2015/12/30(水) 07:54:15.63 ID:IhDAQ//h.net
>>946
ID導入されてからだよ。
まともな回答も全く返ってこなくなった。
恐らくまともな回答者と悪質な荒らし両方が消えて、
そのどちらでもない中途半端な層だけが残ったんだろう。
少なくとも問題を解決するために質問する場所ではなくなった。
回答の質と回答がくるまでにかかる時間を考えるとここは効率悪すぎる。
そして効率の悪すぎる選択肢を選ぶプログラマに成長はない。

949 :デフォルトの名無しさん:2015/12/30(水) 08:31:48.19 ID:ceGJ3m+f.net
3行以上書くのは文章構成力のない痰カスと相場が決まっておる

950 :デフォルトの名無しさん:2015/12/30(水) 09:21:12.55 ID:WpIjR9s5.net
>>834←中途半端な層
>>950も中途半端な層

951 :デフォルトの名無しさん:2015/12/30(水) 09:23:21.08 ID:WpIjR9s5.net
安価間違えるのも中途半端な層
>>949への誤安価

952 :デフォルトの名無しさん:2015/12/30(水) 09:39:25.78 ID:Jq3rckJ5.net
無様すぎ

953 :デフォルトの名無しさん:2015/12/30(水) 10:08:42.12 ID:z3VqKnG6.net
>>950
なにこの年末カミングアウト

954 :デフォルトの名無しさん:2015/12/30(水) 11:16:54.04 ID:DYiybrjz.net
>>1-1000
中途半端な層

955 :デフォルトの名無しさん:2015/12/30(水) 12:58:58.92 ID:t7rYBktz.net
>>1-1000
中途半端な唇

956 :デフォルトの名無しさん:2015/12/30(水) 13:45:28.41 ID:uafjeGLa.net
底辺同士仲良くやれ

957 :デフォルトの名無しさん:2015/12/30(水) 13:47:12.22 ID:Q+ZAoAOe.net
>>956
「一歩引いた目線で事態を俯瞰できる冷静な俺」を演出しようとする中途半端な層

958 :デフォルトの名無しさん:2015/12/30(水) 13:52:42.30 ID:1eDT/VUE.net
うぜえ
止めねえと殺すぞ

959 :デフォルトの名無しさん:2015/12/30(水) 14:20:38.06 ID:/HMKIoW3.net
>>957
厨二臭い層

960 :デフォルトの名無しさん:2015/12/30(水) 22:14:25.35 ID:z3VqKnG6.net
通報しました

961 :デフォルトの名無しさん:2015/12/31(木) 10:28:39.23 ID:KKAqg1l1.net
>回答の質と回答がくるまでにかかる時間を考えるとここは効率悪すぎる。

2ちゃんはとっくにオワコン

962 :デフォルトの名無しさん:2015/12/31(木) 17:08:02.56 ID:0eyIQ7zd.net
>>958=ロクに回答もできないくせに威勢だけは一人前の中途半端な層

963 :デフォルトの名無しさん:2015/12/31(木) 17:17:59.10 ID:gJy9w4AY.net
>>946
ID導入の前は荒しの巣窟と化していた
ID導入で落ち着いたやり取りが続くようになった
>>948 はたぶん昔の荒し野郎

964 :デフォルトの名無しさん:2015/12/31(木) 17:56:06.76 ID:2PlDRXcT.net
>>564
紅白見る→録画したガキ使見る→お前らのレポ見る→寝る

965 :デフォルトの名無しさん:2015/12/31(木) 18:50:58.09 ID:0eyIQ7zd.net
落ち着いてやり取りはできるようになったけど、
情報価値のない雑談レベルのやり取りばっか

そして何よりいきなりレッテル貼ってる辺り
>>963がID出る前に荒らし回ってた奴だろうな
前に荒らしてた奴もいきなりレッテル貼ったり罵倒したりするパターンだったしな

自演で荒らす→ID導入→回答者流出により情報価値がなくなる、という完璧なコンボを決めた>>963

966 :デフォルトの名無しさん:2015/12/31(木) 20:10:34.60 ID:NXxyivrJ.net
>>965
> そして何よりいきなりレッテル貼ってる辺り

なにこのでかいブーメラン w

967 :デフォルトの名無しさん:2015/12/31(木) 21:50:22.63 ID:nJLqX/zt.net
一度リセットした方がいいなこのスレ

968 :デフォルトの名無しさん:2015/12/31(木) 22:12:55.21 ID:F75alAnQ.net
CopyRectと構造体代入の相違について100字以内で説明せよ

969 :デフォルトの名無しさん:2015/12/31(木) 22:21:11.76 ID:KP9fkYAQ.net
CopyRectと構造体代入には100字以内ぐらいの相違があるのである。

970 :デフォルトの名無しさん:2016/01/01(金) 00:51:59.47 ID:Robe7ssm.net
>>968
ウザい。
ここは出題スレじゃないがそれも分からないほど知能が低いのか?
消えろゴミクズ。

971 :デフォルトの名無しさん:2016/01/01(金) 02:07:38.70 ID:Y4ZB9vSq.net
お前らあけおめ

972 :デフォルトの名無しさん:2016/01/02(土) 15:04:41.20 ID:dDeNCcj5.net
めりくり

973 :デフォルトの名無しさん:2016/01/02(土) 18:12:53.46 ID:wHwB68HU.net
むりくり

974 :デフォルトの名無しさん:2016/01/02(土) 23:23:35.90 ID:EH4JctI/.net
スカートめくり

975 :デフォルトの名無しさん:2016/01/03(日) 00:02:41.64 ID:qiKwbZ3e.net
初めて通信ポート(COM?)が接続された状態では
送受信タイムアウトは無しですかい?

976 :デフォルトの名無しさん:2016/01/03(日) 07:45:08.78 ID:WvZ6ZWof.net
タイムアウトに頼ってる時点で
アウト

977 :デフォルトの名無しさん:2016/01/03(日) 14:32:54.55 ID:wr72odRt.net
タイム(アウトに頼ってる時点で)アウト

978 :デフォルトの名無しさん:2016/01/03(日) 17:49:43.90 ID:7mAtatH9.net
(このスレで質問してる時点で)アウト

979 :デフォルトの名無しさん:2016/01/03(日) 20:05:36.34 ID:buM4hFpe.net
ここは半年くらい前から偏差値20くらいのレベルになっているな。

980 :デフォルトの名無しさん:2016/01/03(日) 20:18:59.08 ID:dC+f8AkW.net
1年前は偏差値22くらいはあったよな

981 :デフォルトの名無しさん:2016/01/03(日) 22:59:52.74 ID:cm6nEbxV.net
偏差値20もあったの?

982 :デフォルトの名無しさん:2016/01/03(日) 23:17:05.65 ID:qiKwbZ3e.net
接続直後にGetCommTimeoutsしたらいいじゃん

983 :デフォルトの名無しさん:2016/01/03(日) 23:17:58.29 ID:qiKwbZ3e.net
という結論になりますた

984 :デフォルトの名無しさん:2016/01/04(月) 04:46:02.89 ID:xj/2f+ZR.net
あけおめ

985 :デフォルトの名無しさん:2016/01/04(月) 11:01:30.01 ID:AAcHANMO.net
ことよろ

986 :デフォルトの名無しさん:2016/01/04(月) 19:00:39.97 ID:uh/Y4MEw.net
>>975
N81X

987 :デフォルトの名無しさん:2016/01/05(火) 07:23:36.17 ID:4YKOrwwk.net
vc2010でドラゴンクエストXのキーボード入力をフックするプログラムを作っているのですが、
実際、キーボードをフックするまでは出来たのですが、実際にドラクエXを実行しても
キーボードが入力されたことになりません。原因は何が考えられますでしょうか
キーボードのフックはメモ帳などに実際に出てきているので問題ないです

988 :デフォルトの名無しさん:2016/01/05(火) 08:19:19.23 ID:7Q2tXWc2.net
>>987
ドラクエXのプロテクトどんなのか知らんけど
・管理者として起動
・起動のタイミング
いろいろ試した?

989 :デフォルトの名無しさん:2016/01/05(火) 08:34:02.91 ID:QQENqvYE.net
>>988
家に帰ってから試してみます。

990 :デフォルトの名無しさん:2016/01/05(火) 13:45:12.72 ID:lhyUPbMU.net
あと、ゲームの場合はDirectXから入力とってたりするとやり方によってはうまくいかない

991 :デフォルトの名無しさん:2016/01/05(火) 15:50:55.71 ID:Woj1scU2.net
クラック系は板違いじゃ

992 :デフォルトの名無しさん:2016/01/05(火) 17:02:32.92 ID:B9TyBRm4.net
DirectInput使ってるだろうから、WinAPIでやりくりしても無駄のような

993 :デフォルトの名無しさん:2016/01/05(火) 17:21:41.22 ID:QQENqvYE.net
こういう関数作ってますが、setKeyDown(VK_F1, 1)と呼び出しても入りません。
void setKeyDown(WORD VirtualKey, BOOL bKeepPressing)
{
INPUT data;
data.type = INPUT_KEYBOARD;
data.ki.wVk = VirtualKey;
data.ki.wScan = MapVirtualKey(data.ki.wVk, 0);
data.ki.time = 0;
data.ki.dwFlags = KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYDOWN;
data.ki.dwExtraInfo = ::GetMessageExtraInfo();
::SendInput(1, &data, sizeof(INPUT));
if (!bKeepPressing){
data.ki.dwFlags = KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP;
::SendInput(1, &data, sizeof(INPUT));
}
}

994 :デフォルトの名無しさん:2016/01/05(火) 18:57:40.55 ID:MmiOC2W0.net
あけうめ

995 :デフォルトの名無しさん:2016/01/05(火) 19:04:03.54 ID:IesHwkgH.net


Win32API質問箱 Build122
http://peace.2ch.net/test/read.cgi/tech/1451988219/

996 :デフォルトの名無しさん:2016/01/05(火) 20:03:03.22 ID:ZQLyvfM1.net
DirectInputとか

997 :デフォルトの名無しさん:2016/01/05(火) 20:44:31.27 ID:3P8foX3g.net
>>995
おつ

998 :デフォルトの名無しさん:2016/01/05(火) 21:04:10.66 ID:nA3aY+gr.net
>>987
ドライバ作れ

>>992
自動芋・・・

999 :デフォルトの名無しさん:2016/01/05(火) 21:09:36.93 ID:4YKOrwwk.net
DirectInputのフックってどうやるんですか?

1000 :デフォルトの名無しさん:2016/01/05(火) 21:11:11.35 ID:4YKOrwwk.net
というか矢印キーとか入るキーは入るんですが、入るキーと入らないキーの違いがわからない

1001 :片山博文MZ ◆T6xkBnTXz7B0 :2016/01/05(火) 21:15:48.75 ID:bG6ahL5d.net
キーボードフィルタドライバを作ればフックできる。DDKのインストール必須。

1002 :デフォルトの名無しさん:2016/01/05(火) 21:19:40.79 ID:4YKOrwwk.net
次スレでもよろしく

1003 :デフォルトの名無しさん:2016/01/05(火) 21:29:52.48 ID:IesHwkgH.net
1000
http://i.imgur.com/BpoUAOA.jpg

1004 :2ch.net投稿限界:Over 1000 Thread
2ch.netからのレス数が1000に到達しました。

総レス数 1004
254 KB
掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★