Win32API質問箱 Build121at TECH
Win32API質問箱 Build121 - 暇つぶし2ch2:デフォルトの名無しさん
15/08/05 14:10:04.50 OyFAH2W/.net
OSのっていうか、コントロールパネルの地域で選択されている国(場所)又は言語を取得するAPI教えてくださ

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

4:デフォルトの名無しさん
15/08/05 14:28:06.28 e4gAPQI9.net
言語はGetUserDefaultUILanguage
地域と言語は別だよね

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

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

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

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

9:デフォルトの名無しさん
15/08/06 19:14:01.34 79+p9Mbt.net
WM_SIZING message
URLリンク(msdn.microsoft.com)(v=vs.85).aspx
このメッセージを受け取れば、lParamで変更しようとしているウィンドウサイズを取得できますが、
そのウィンドウサイズでのクライアントサイズを取得したい場合、
GetClientRectは使えず(ウィンドウサイズ変更はまだ完了していないため、現在のクライアント領域が返ってくる)、
現状はGetSystemMetricsでクライアント領域周りの枠などのサイズを取得して
変更しようとしているウィンドウサイズから引いて算出しています。
しかし、この方法だと、ウィンドウスタイルを変えたときに、併せて変更せねばならず、
保守性の点では好ましくありません。
ウィンドウスタイルごとに条件分岐すれば対応できるものの、あまり美しくありません。
これら以外の方法で、スマートに変更しようとしているウィンドウサイズにおけるクライアント領域を
取得する方法があればご教示ください。
よろしくお願いします。

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

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

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

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

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

15:9
15/08/07 23:44:31.50 AvOHJMxe.net
>>10
その方法でいけました!
これでウィンドウスタイルに依存せずにWM_SIZINGでクライアント領域を取得できるようになりました。
ありがとうございました!
>>11
やりたいことはクライアント領域のアスペクト比を固定する処理で、
最初はWM_SIZEでやってたんですが、
何だかぎこちない動きになってしまったので、調べていたらWM_SIZINGの存在を知り、
そちらでやると滑らかな動きになったのでWM_SIZINGで何とかしたいと思った次第です。
>>12
ご助言ありがとうございます。
今回は>>10さんの方法で対処できましたが、
教えていただいたWM_NCCALCSIZEを使う方法についても調べてみます。

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

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

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

19:デフォルトの名無しさん
15/08/10 00:56:39.57 sjbJ+sY3.net
>>18
(俺は>>17氏ではないが)
URLリンク(msdn.microsoft.com)
のコメントには、以下の3通りの主張がされている(ように思われる)
1. >>16の後者だ(…と言う前提で書いてあるMSの記事がある)
2. いや全く当てにしてはならない
3. BIOSで事実上>>16の前者に設定されてる
ひとまずご自身で内容を吟味されたし。

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

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

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

23:デフォルトの名無しさん
15/08/10 15:31:07.76 Vh7AZwN0.net
自プロセスを呼び出した親プロセスEXEのフルパスを取得したいのですが、
親プロセスは自プロセスを呼び出したら即終了してしまいます。
なので、Process32First()などで情報を取得しようにもその時には列挙されません。
別の監視プロセスを用意するなりの対処法はあるでしょうが、自プロセス
だけで親プロセスを知る方法はありませんか?

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

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

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

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

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

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

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

31:デフォルトの名無しさん
15/08/10 21:49:23.32 k4VnlTc/.net
ケツ…!!
  ( ゚д゚ ) ガタッ
  .r   ヾ
__l_l / ̄ ̄ ̄/_
  \/    /

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

33:デフォルトの名無しさん
15/08/10 22:35:38.71 Vh7AZwN0.net
不正コピーされたインストーラーでインストールされた場合、インストール直後に
インストーラーから起動されたプロセスからインストーラーを特定したかったんです。
フルスキャンする訳にも行かないし。
Process32First()とか使ってフルパスを得るところまで作って、インストーラーが
終了していることに気付いた次第で代替案を探していました。
ここまで詳しい経緯は長すぎ産業でOKと思ったので省略してました。
無理そうですね。
どうもありがとうございました。

34:デフォルトの名無しさん
15/08/10 23:24:56.99 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:デフォルトの名無しさん
15/08/10 23:34:24.57 5q1c3acf.net
自分のプログラムならソースに追加すればいいだろ
他人のプログラムなら改竄するな

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

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

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

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

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

41:デフォルトの名無しさん
15/08/11 15:36:53.18 HguuZcyi.net
そういえば一時期、Office2013にも似たようなカーネルエラーが頻発してたけど
あれも理論上は回避可能ということか
解決策としては
①exeにpsapi.dllのAPIを使用するよう指定ソースを組みこむ
②VISTA用の拡張カーネルを作成して、kernel32.dllにK32GetProcessMemoryInfoを追加する
いつかXPやVISTAにも某黒翼猫氏のような救世主が現れて、拡張カーネルが用意されるのかしら

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

43:デフォルトの名無しさん
15/08/14 07:54:19.40 vjnCwLdg.net
>>33
ただで


44:さえインストーラは環境依存のクレーム地獄になりがちなのに おかしなことをするんじゃない >>34 きさまぷろぐらまじゃないな 帰れ >>41 >救世主が現れて、拡張カーネルが用意されるのかしら Windows Update サーバーを乗っ取ることが前提かな よし全機撃墜



45:デフォルトの名無しさん
15/08/14 11:01:39.44 IL9iPg3p.net
アホはお帰りください

46:デフォルトの名無しさん
15/08/14 11:03:06.69 2p3m0KlY.net
みんな帰ろう

47:デフォルトの名無しさん
15/08/14 11:27:26.86 WAFSmjQt.net
そして誰もいなくなった

48:デフォルトの名無しさん
15/08/14 13:17:55.88 Q/AtP1Be.net
7 x 7 = 49

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

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

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

52:デフォルトの名無しさん
15/08/14 22:35:47.25 qMkXaiUF.net
>がも
はい、減点。

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

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

55:デフォルトの名無しさん
15/08/15 04:44:29.63 Yk3bSSFS.net
>片山博文MZ ◆T6xkBnTXz7B0
はい、減点。

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

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

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

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

60:デフォルトの名無しさん
15/08/18 19:00:36.45 eHhh5Jxo.net
>>56
MIT
.

61:デフォルトの名無しさん
15/08/18 21:51:06.26 LehTl7m4.net
一つIMEで質問がありますが、ここで良いですか?
SetInputScope()でIME設定をして、IME問い合わせGetInputScope()?があってもいいと思いますが
Win8では見当たりません、
TF_GetInputScope()があったのですが使えるのか使えないのか…。
どなたか知っている方ヒントだけでも教えて下さい!

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

63:デフォルトの名無しさん
15/08/21 10:45:39.38 c/THd06T.net
InetNtop

64:デフォルトの名無しさん
15/08/21 17:48:25.85 NHu7az4C.net
VC++でWin32APIを使いゲームを制作しようと思っています。
URLリンク(zahyou.6.ql.bz)
↑のサイトを参考に簡単なゲームをつくってみたのですが
効果音を鳴らすとそれまで流れていたBGMが少し止まってしまいます。
BGMと効果音を止まることなく流すにはどうすればいいでしょうか?
使用している関数はmciSendCommandです

65:デフォルトの名無しさん
15/08/21 18:03:56.39 106+9rwN.net
MCI だと止まる

66:デフォルトの名無しさん
15/08/21 18:11:32.53 c/THd06T.net
>>63
同期・非同期

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

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

69:デフォルトの名無しさん
15/08/21 21:00:41.93 Tu1fJmAa.net
優しいなお前ら

70:デフォルトの名無しさん
15/08/21 21:04:35.93 x7vlwrmr.net
子供は1回1錠な

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

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

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

74:デフォルトの名無しさん
15/08/22 09:44:24.66 OcPmzwVT.net
え、ワーファリン?

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

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

77:デフォルトの名無しさん
15/08/27 12:21:31.54 Eaj+az2t.net
Hello Windows

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

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

80:デフォルトの名無しさん
15/08/27 13:43:02.13 Eaj+az2t.net
作りながらじゃなきゃ覚えられない。まずはこれ。
URLリンク(msdn.microsoft.com)(v=vs.85).aspx

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

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

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

84:デフォルトの名無しさん
15/08/29 01:24:22.96 rZ+W6Zab.net
>>78
作りながら覚えるなら簡単なアプリを作ればいいじゃん
ありきたりだけど例を挙げれば
 ・キッチンタイマー
 ・アラーム時計
 ・カレンダー
 ・電卓
 ・画像ビューア
 ・テキストエディタ
 ・音楽プレイヤー
上記の中で自分が作れそうな簡単そうなものを選んで作ればいい
最低限の機能を備えたものが出来たらリファクタリングやバージョンアップするといい

85:デフォルトの名無しさん
15/09/06 17:45:58.22 cLh5ZyHa.net
中途半端なAPIプログラマなので、C#の生産性に勝てない。
鍛えればなんとかなるのかな?

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

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

88:デフォルトの名無しさん
15/09/06 21:35:38.22 ANWjJC8V.net
C++で、画面や文字列を簡単に扱えれば…
メッセージループとか、未だにわからないです。
洋書でもいいので、おすすめ書籍ないですか?

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

90:デフォルトの名無しさん
15/09/06 23:34:08.57 zJiA8SF0.net
メッセージポンプかい?
GUIアプリは、イベントドリブン(駆動)だから、
何かのイベントが起こるのを待つ、受け身の作り
イベントキューがあって、
そこにマウス操作やキーボードのイベントが投入されると、
そのキューから順番に、
イベントが取り出されて、処理される
自分で処理を書きたい、イベントの処理だけをOverrideする。
例えば、OnMouseClick()など。
Overrideしないイベントは、OSの既定の処理がされる
ただし、画面更新のイベントは、優先度が低いため、
一番最後に処理される
60フレームなら1秒間に60回、
30フレームなら1秒間に30回、画面が描かれる

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

92:デフォルトの名無しさん
15/09/07 17:17:44.71 ifJ6MFQh.net
ダイアログアプリケーションなら、なんとか・・
「ぐふふ」が気になる

93:デフォルトの名無しさん
15/09/07 19:20:08.77 kLL2g65z.net
目的:
 ダイアログ上に、"決定"ボタン、エディットコントロールを配置しています。
 エディットコントロールで"Enter"キーを入力された場合に、
 "決定"ボタンを押されたことにしたい。
やってみてダメだったこと:
 ダイアログのウインドウプロシージャに
  WM_KEYDOWN
 を追加しVK_ENTERを処理するコードを書いた。
  ↓
 どうやらダイアログのウインドウプロシージャにはWM_KEYDOWN自体がこない模様。
というところで困っています。
質問1
どのようにすれば目的の内容を実現できますか?
質問2
MFCのSubclassDlgItemの変わりになるようなものはありますか?

94:デフォルトの名無しさん
15/09/07 19:30:42.31 8kmrGT2g.net
>>92
IsDialogMessage

95: ◆QZaw55cn4c
15/09/07 19:42:51.28 w2psTc+y.net
>>92
それはエディットコントロールのウィンドウプロシージャで捕まえるもの
MFC は知らんが
GetWindowLong(hwndEdit, GWL_WNDPROC);
SetWindowLong(hwndEdit, GWL_WNDPROC, (LONG)callbackFunction);
でどうとでもなる,2~3年に一回質問される FAQ だね

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

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

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

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

100:デフォルトの名無しさん
15/09/07 21:36:48.33 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);}
よろしくお願いします。

101:デフォルトの名無しさん
15/09/07 21:48:51.98 yWiuJpNl.net
>>97
わからないから添削しろ、では芸がない。
そもそも、
>エディットコントロールで"Enter"キーを入力された場合に、
>"決定"ボタンを押されたことにしたい。
は、Windowsプログラムとして正しいのか考えてみよう。
ex) 漢字変換中に誤って2度 Enter キーを押したら誤動作する とかね。

102:デフォルトの名無しさん
15/09/07 21:57:06.07 yWiuJpNl.net
>>97
書き忘れた。
if (!hPreInst) { if (!RegisterClass(&iWCls)) return FALSE; }
みたいなコトは今はやらない。Win16 プログラムでないかぎり、hPreInst は常に NULL。

103:92
15/09/07 22:04:52.49 kLL2g65z.net
>>94
すいません。↑これでいけました。
URLリンク(codepad.org)
↑最初WM_KEYDOWNの中でVK_RETURNを処理して確認していたのですが、
EDITTEXTではEnterKeyが効かないみたいで、
"上手くいかない"と判断してました。
VK_RETURNが効かない件は別問題なので、これから調査します。
とりあえず >>92 の質問は解決しました。どうもありがとう。

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

105:92
15/09/07 23:33:31.78 kLL2g65z.net
度々すいません。
>>102 のVK_RETURNが効かない件解決したので一応下記のソース報告します。
URLリンク(codepad.org)
EDITTEXTのスタイルにES_MULTILINEを追加すればいいみたいです。
また >>92 の質問2ですが、意図としては上記のEditProc見たいな事をやりたかったので、
これも解決しました。
>>98
今回はモーダルの予定ですので必要ないですが、
今後のために調べときます。
>>100
> Windowsプログラムとして正しいのか
については少し考えて見ます。

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

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

108:デフォルトの名無しさん
15/09/08 02:00:50.39 WpGjOpsu.net
>>92
>エディットコントロールで、"Enter"キーを入力された場合に、
>"決定"ボタンを押されたことにしたい
この仕様自体が、おかしいような気がする
筋論で言うと、
1. エディットコントロールで、キーイベントを取る
2. エディットコントロールから、
その親であるダイアログにアクセスする
3. ダイアログから、その子である決定ボタンに、
ボタンを押すイベントを投入する
4. 決定ボタンで、既定のボタンが押されたイベントを処理する
親 ダイアログ
子 エディットコントロール
子 決定ボタン
こういう階層では、子1から子2へは(兄弟間では)、
直接アクセスできないので、
子1 → 親 → 子2 という経路でアクセスする

109:デフォルトの名無しさん
15/09/08 02:12:44.72 WpGjOpsu.net
>>99
SHGetImageList で、連続するアニメの、
複数のイメージが取得できているの?
取得できないのなら、プロジェクトのアセットのパスに、
正しく取得できるように置く
また画像は、正しいファイル名の連番とするなど、
正しい形式で並べる
(もし連番としている場合の話です。
漏れはどういう形式か、よく知らないけど)

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

111:デフォルトの名無しさん
15/09/08 08:50:14.73 uJSOxUGR.net
最初にMSDNあたれよバカ

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

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

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

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

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

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

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

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

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

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

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

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

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

125:デフォルトの名無しさん
15/09/11 13:29:49.05 dcIIi90q.net
どういう場面で必要になるのかな?
「マウスボタンは物理的に押されている」
  ↓
「SendInput等によってマウスのボタンが離されているよう偽装している」
  ↓
「このたわけモノが! 実際には押されているだろ!?」←これを判定する方法でしょ?

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

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

128:デフォルトの名無しさん
15/09/12 08:59:57.32 lTmP7o65.net
ボクの知らない常駐アプリを同時に使わないでくださーい
ってのは割りと当たり前のこと
だけど初心者にはその主張は通用しないので
自アプリの起動時に常駐アプリの有無をチェックして警告を出すのがスマート

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

130:デフォルトの名無しさん
15/09/12 09:26:53.57 OKvTRLUv.net
>>122
そうなんかありがとう

131:sage
15/09/17 15:36:32.51 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");

132:sage
15/09/17 15:37:04.86 rzmccn0E.net
// 読み込むファイルのファイルハンドル。
hFile = CreateFile(
strFileName, GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUT


133:E_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; } =====ここまで=====



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

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

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

137:130
15/09/17 16:06:25.74 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文字ではなく、文字列全体を取得することならできました。

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

139:130
15/09/17 16:26:57.31 rzmccn0E.net
>>136
ありがとうございます!
試してきます!

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

141:130
15/09/17 17:23:07.39 rzmccn0E.net
>>138
つかめてきました!
ありがとうございます!
結局引っかかっていたのはUnicodeのBOMが大きな要因でした。
助かりましたorz

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

143:デフォルトの名無しさん
15/09/18 20:51:59.51 5egfmsiH.net
>>140
URLリンク(msdn.microsoft.com)(v=vs.85).aspx
MIDIERR_NODEVICE
MMSYSERR_ALLOCATED
MMSYSERR_BADDEVICEID
MMSYSERR_INVALPARAM
MMSYSERR_NOMEM
のどれでもないの?

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

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

146:デフォルトの名無しさん
15/09/18 22:03:48.69 wagSxeCs.net
実際の値は何?

147:デフォルトの名無しさん
15/09/18 22:05:51.25 wagSxeCs.net
>>140
これか
VC++2012でプログラミングをしています win32APIでmidの音声を流そうと思い、 ↓...
tukareteruhitoさん
URLリンク(detail.chiebukuro.yahoo.co.jp)

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

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

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

151:デフォルトの名無しさん
15/09/19 00:44:50.98 njZddJ5V.net
Win7,10は異なるシステムだよ
アプリ・デバドラ・ハードウェアなどが、
簡単に動くと思ったの?

152:デフォルトの名無しさん
15/09/19 02:51:01.30 oxCTiUGx.net
ドヤッ
が足りないぞ。
しかし的外れ。

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

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

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

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

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

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

159:デフォルトの名無しさん
15/09/24 20:42:58.82 wqNNiZah.net
有料の時点で萎える

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

161:デフォルトの名無しさん
15/09/25 02:29:42.77 d9V+/CgL.net
>>158
マジですか覚えてみるよ
>>157
空ウインドウ作るまでは無料でできたけど
お金かかるの?

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

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

164:デフォルトの名無しさん
15/09/25 09:02:33.39 ISU02i/F.net
Communityなら最初からATL入ってるから小細工要らんぞ?
おかげでWin32ゴリゴリ書きたい人には勧めやすくなった
NuGetにも登録されてるけど1年以上前の安定版だから2015のAppWizとかには対応してない
(レポジトリのは一応2015対応用の修正はされている)

165:デフォルトの名無しさん
15/09/25 13:02:22.26 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.
};

166:160
15/09/25 19:29:22.01 femLeyq9.net
>>161
ああ、Communityがあったな。
失礼した。

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

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

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

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

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

172:デフォルトの名無しさん
15/09/26 22:21:24.87 0JcUeR/y.net
宗教上の理由www

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

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

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

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

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

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

179:デフォルトの名無しさん
15/09/27 12:25:11.27 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);
}

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

181:デフォルトの名無しさん
15/09/27 12:35:34.20 puEp1GjQ.net
>>178
usb usb

182:デフォルトの名無しさん
15/09/27 12:36:34.18 wOuxiHo1.net
>>178
こう変えてみたんですが残りますねぇ・・・
謎すぐる
case WM_CLOSE:
  if (handle) usb_delete();
  DestroyWindow(hwnd);
  return 0;
case WM_DESTROY:
  PostQuitMessage(0);
  return 0;

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

184:デフォルトの名無しさん
15/09/27 12:44:40.77 Oa1I2Bnn.net
GetMessageループはどう書いてんの

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

中身もこんな感じなので影響はないはず・・
int usb_delete(){
  if (!handle) return 2; //接続されてない
  if (CloseHandle(handle)) return 1; //切断成功
  else return 0; //切断失敗
}

186:デフォルトの名無しさん
15/09/27 12:48:34.90 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;
}

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

188:デフォルトの名無しさん
15/09/27 12:49:59.95 puEp1GjQ.net
>>184
おい・・・おい・・・

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

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

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

191:デフォルトの名無しさん
15/09/27 13:28:48.04 d0o/2Ok+.net
Wisdomかよ。
URLリンク(wisdom.)桜.ne.jp/system/winapi/win32/win10.html
(↑NGワードのためsakuraを桜に置き換え)
一応注意書きはしてるがこんなコード公開しちゃダメだろ。

192:デフォルトの名無しさん
15/09/27 13:32:38.26 zkeDatYv.net
>>188
アーヒャヒャヒャヒャヒャヒャヒャヒャヒャヒャヒャヒャヽ(゚∀゚)ノ
酷いトラップスレにひっかったもんだな
悪意のある入門サイトに注意w

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

194:デフォルトの名無しさん
15/09/27 13:53:33.43 puEp1GjQ.net
>>189
それかw
そういう所はサブタイトルの内容以外は手抜きだしな

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

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

197:デフォルトの名無しさん
15/09/27 13:59:21.19 puEp1GjQ.net
>>193
正しいアプリケーションの終了
URLリンク(wisdom.s) akura.ne.jp/system/winapi/win32/win11.html
どこがだよっていう

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

199:デフォルトの名無しさん
15/09/27 14:11:19.80 YZLivW0I.net
>while (GetMessage(&msg , NULL , 0 , 0)) DispatchMessage(&msg);
これもまずいな。GetMessage() が -1 を返す場面を想定してない

200:デフォルトの名無しさん
15/09/27 14:17:29.27 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)が返った場合、ループが持続し、致命的なアプリケーションエラーを発生させる可能性があります。

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

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

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

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

205:デフォルトの名無しさん
15/09/27 14:34:59.89 YZLivW0I.net
・・・そこツッコむと宗教戦争始まるから ^^;
「BOOLは0か1だろ」
「いや、BOOLは0か0以外だ」
「-1は0以外だから正しい」
「じゃ、-1は真かよ」
「そもそもBOOLは…」
いつも平行線

206:デフォルトの名無しさん
15/09/27 14:36:46.98 zkeDatYv.net
>>202
これは酷い

207:デフォルトの名無しさん
15/09/27 14:37:43.17 us1PQXsq.net
Win32にはよくあること

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

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

210:デフォルトの名無しさん
15/09/27 14:44:03.48 sYzB7PIZ.net
だってtypedef int BOOLだしな

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

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

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

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

215:デフォルトの名無しさん
15/09/27 14:54:51.35 XMfaJ+0C.net
>エラーが発生した場合、-1 が返ります。たとえば、hWnd パラメータで無効なウィンドウハンドルを指定した場合や、lpMsg で無効なポインタを指定した場合は、エラーが発生します。拡張エラー情報を取得するには、 関数を使います。
GetMessage() の戻り値が -1 の場合はエラーなんだろ?
Windows アプリを終了するべきではなくエラー処理をするべきじゃないのか?
while を抜けるべきではない

216:デフォルトの名無しさん
15/09/27 14:55:25.97 zkeDatYv.net
>>206
msdnさん自身が
URLリンク(msdn.microsoft.com)
ちなみに↓では
URLリンク(msdn.microsoft.com)
Minimum supported client Windows 2000 Professional [desktop apps only]
となっているのでintだった時期も確かにあったんだろう

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

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

219:デフォルトの名無しさん
15/09/27 15:34:06.02 nsZcbsgt.net
>>213
>hWnd パラメータで無効なウィンドウハンドルを指定した場合や、lpMsg で無効なポインタを指定した場合は、エラーが発生します。
本人がポカしなけりゃ -1 は無視して良いな。

220:デフォルトの名無しさん
15/09/27 15:35:30.62 LjMVY2UB.net
宗教戦争突入阻止!
アッラーアクバル!

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

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

223:デフォルトの名無しさん
15/09/27 15:54:52.54 hEAZFQJb.net
>>219
それはC言語の仕様でしかない
MSDNにはただ単にエラーの時-1を返すとしか書いてない
ここでの-1の意味は真でも偽でもなくて、エラー
>BOOLなのに真とも偽とも明言されてない
>エラーを表現する-1を返すのは良くないね
しかしこの文章は誤解を生じるな
BOOLなのに真とも偽とも分類されないような
エラーの-1を定義して3値で返すのは良くないね
に訂正しておく

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

225:デフォルトの名無しさん
15/09/27 17:13:27.56 9nB30GXC.net
この例では戻り値チェックしてないな。
URLリンク(msdn.microsoft.com)

226:デフォルトの名無しさん
15/09/27 17:27:24.32 hEAZFQJb.net
>>222
整数の-1が真なのはC言語の仕様でしかなく
今言っているのは「意味の上で」の話だから
-1のときエラーと書いてあったのならそれ以上の意味はない
例えばメモリエラーのときに「2」を返す関数があったとして
「2」はC言語の仕様的には「2」でしかないが
意味の上ではメモリエラー

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

228:デフォルトの名無しさん
15/09/27 18:23:00.63 UYzM99J3.net
きったねーな 死ねよ

229:デフォルトの名無しさん
15/09/27 18:24:33.95 jzpWzA1C.net
>>224
何言っているのか(何を言いたいのか)分からん
>MSDNにはただ単にエラーの時-1を返すとしか書いてない
C言語の仕様という意味であっても、 -1 がTRUEであると書いている(MSが認めている)
で話を戻して、
>BOOLなのに真とも偽とも明言されてない
エラーの場合は-1を返す
MSDNで-1は「つまりはTRUE」と書いているんだから
エラーの場合も真を返すと明言しているわけだ
関数の仕様としておかしいとしても「意味の上で」なら真か偽かははっきりしているだろ

230:デフォルトの名無しさん
15/09/27 18:38:33.35 hEAZFQJb.net
それはC言語の仕様としては真になるという但し書きでしかないと思うが
それに俺は言い直している
>BOOLなのに真とも偽とも分類されないような
>エラーの-1を定義して3値で返すのは良くないね

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

232:デフォルトの名無しさん
15/09/27 19:28:41.21 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)という補足は書かれていないのだから、
例の補足は「警告」内のサンプルコードに対して、コードの動きの補足しているものだとわかるし
「警告」内の一文の、それも括弧の中に補足的に書いてあるだけだし
それもサンプルコードの終了条件に対する説明だし

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

234:デフォルトの名無しさん
15/09/27 20:02:19.00 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は真として分類されている

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

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

237:デフォルトの名無しさん
15/09/27 22:13:58.95 jzpWzA1C.net
>TRUEがどんな値でもいいが常にその値でなければならない
その思考の結果が if(func()==TRUE) ... みたいなものじゃね?
>文脈によって0以外の値が変動する戻り値にBOOL型を当てるのはやはりおかしい
こっちは同意

238:デフォルトの名無しさん
15/09/27 22:17:21.80 us1PQXsq.net
でも実装する側としては理解できるだろ?
あーBOOLにしちゃったけど他の情報も戻り値に含めたいなぁみたいなぁみたいな

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

240:デフォルトの名無しさん
15/09/27 22:40:56.03 YZLivW0I.net
あの… BOOL は int ですけど。。。

241:デフォルトの名無しさん
15/09/27 23:06:54.37 LjMVY2UB.net
だから宗教戦争すんなよ。
アッラーアクバル

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

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

244:デフォルトの名無しさん
15/09/28 07:07:15.77 oN5IJNc7.net
bool

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

246:デフォルトの名無しさん
15/09/28 08:25:36.70 gscNduJW.net
俺ならiboolだな

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

248:デフォルトの名無しさん
15/09/28 08:54:05.03 e7uUBDed.net
或いはboin がいいな

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

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

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

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

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

254:デフォルトの名無しさん
15/09/28 19:15:30.70 s/OnR4Ys.net
URLリンク(blogs.msdn.com)
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.

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

256:デフォルトの名無しさん
15/09/28 20:44:33.42 FF3rjUqv.net
>>248

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

258:デフォルトの名無しさん
15/09/29 19:30:39.39 714Z1PTP.net
typedefされているかどうか、enumされているか調べる方法はあ


259:りますか? 質問意図。 例1) #ifndef bool #define bool int #define true (1) #define false (0) #endif 例1のようなことを下記で定義してあるものに対して行いたい。 typedef int bool; enum{false,true};



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

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

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

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

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

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

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

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

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

269:デフォルトの名無しさん
15/10/06 07:07:57.43 +MMTk5e6.net
構造体配列の内容の一部をリストビューに入れた状態で、リストビューのアイテム(行)と構造体配列の要素はどうやって対応させたらいいの?
例)
struct TEST{
int ID;//ユニーク
char name[16];
int age;
}test[64];
この中で、リストビューにはnameとageだけを表示したい。
名前 | 年齢
――――
山田 | 28
田中 | 25
ここで山田が選択されているときに、testの中の山田の要素に対応させたい。
リストビューの要素からアイテムを取得して自力でtestを検索しても、28歳の山田が2人いれば判別つかなくてアウト。
リストビューに見えないようにIDを仕込めれば解決するが、できないみたいだ。

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

271:デフォルトの名無しさん
15/10/06 15:32:28.15 +MMTk5e6.net
>>267
マジでありがとう!
そういう情報が欲しかった!
その情報を元に調べたら色々出てきた!
何とかできそうだ!
URLリンク(msdn.microsoft.com)(v=vs.85).aspx
URLリンク(www.g-ishihara.com)

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

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

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

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

276:デフォルトの名無しさん
15/10/07 20:50:51.43 olmGB7G8.net
ここだけの話、Win32API最大の汚点は
ウィンドウプロシージャの引数にインスタンスポインタが無いことだよな
初心者が必ず疑問に思う点だし
必ず必要と言っていいデータなのにウィンドウ作るたびに毎回
SetWindowSubclassとかSetWindowLongPtrとか
設計ミスだよね
でも本当の汚点はLOWORD、GET_X_LPARAM、など16bit幅のアレやコレかもしれない

277:デフォルトの名無しさん
15/10/07 21:02:21.93 gQOBln3k.net
WinMainの第二引数とか

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

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

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

281:デフォルトの名無しさん
15/10/07 22:38:04.21 0FYyDCxK.net
しゃべり場か

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

300:デフォルトの名無しさん
15/10/09 13:48:37.07 oOXSiJnl.net
面倒くさいから

301:デフォルトの名無しさん
15/10/09 14:01:37.94 SqKziDAZ.net
本当は、上書きも危ないので、
最初に、元のファイルを、renameする。
次に、新しいファイルを、元のファイル名で作成する
最後に、元のファイルを削除する

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

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

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

305:片山博文MZ ◆T6xkBnTXz7B0
15/10/09 19:22:23.07 W40lUqcY.net
>>301
おk

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

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

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

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

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

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

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

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

314:デフォルトの名無しさん
15/10/12 13:42:42.03 0aVLwZvg.net
スマホアプリだろ。

315:デフォルトの名無しさん
15/10/12 14:11:22.42 QD0vOYoj.net
というかWin8RTだした時点で.NET+HTML5ベースのOSへの移行を目論んでたんでしょ。
RTが受けなかったのでWin32世代の互換性を強化してるけど、いまだ諦めてないと思うね。
企業ユースが.NETに移行できるように、WEBサービス強化を優先的にやってるし
その時、ひょっとすると端末側のOSはLinuxということもありうるだろうし、場合によっては
OSをハードウェア化してHTML5が動作すればいい程度になってる可能性もある。

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

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

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

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

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

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

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

323:デフォルトの名無しさん
15/10/13 07:26:53.27 WAwM6nXZ.net
>>317
いちいち取得し判定するしかないと思うよ。めったにない需要だし。
>>318
親ウィンドウ
├他のウィンドウ
└ダイアログ
という親子関係にすれば良いのでは?

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

325:デフォルトの名無しさん
15/10/13 10:17:12.50 qKlLexPE.net
DOSのサブシステムという位置づけで作られたのはdosshellだよ
WindowsはいきなりNTなんか作ってもユーザーが付いてこないから、
DOSユーザーにとって取っつきやすくexeにしたってだけ
実際、OS/2の出足の鈍さがすごかったろ
マルチタスクとプロテクトメモリは欲しかったけど
HDDをフォーマットする必要があったのが最大のネックで

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

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

328:デフォルトの名無しさん
15/10/13 12:08:05.88 HOdVfJRd.net
" c:\\aaaa\\bbbb \\ cc cc\\dddd "

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

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

330:デフォルトの名無しさん
15/10/13 12:44:50.23 9UjSekpe.net
正規表現APIを教えれ

331:デフォルトの名無しさん
15/10/13 14:48:20.02 3EVIu19y.net
>>323を晒しあげ
ところでListViewのワーキングエリアって使われてるのを見たことある?

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

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

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

335:デフォルトの名無しさん
15/10/13 15:28:45.54 gLNTLW9u.net
TVS_EX_AUTOHSCROLL

336:デフォルトの名無しさん
15/10/13 15:32:00.28 1nentuZe.net
どやって

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

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

339:デフォルトの名無しさん
15/10/13 16:00:20.58 1nentuZe.net
>>335
ソースありがとうございます。
しかしやはりスクロールバー消えてくれないです。
C++BuilderXE8なのですが、自動(TreeViewの幅変更)で表示ON/OFFしちゃうから
そのアレで勝手に表示されちゃうんのかなあ

340:デフォルトの名無しさん
15/10/13 16:04:54.55 gLNTLW9u.net
ちなみに Vista 以降

341:デフォルトの名無しさん
15/10/13 16:08:51.48 1nentuZe.net
Win7です^^

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

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

344:デフォルトの名無しさん
15/10/14 07:48:26.80 HVSBvHHm.net
>>340
ぜひ君の「建設的な発言」を聞かせて欲しい。
まぁそれには、1x1のウィンドウに対応できない不具合があるんだろうがな。
元の質問が「重なっているか確認」でなく「自分が最前面である保証」なら
色々とやり方もあるのかもしれないが、それはまた別の話。

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

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

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

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

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

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

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

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

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

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

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

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

357:デフォルトの名無しさん
15/10/14 15:11:41.07 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への更新が、いちど非表示に入れたのにまた出ていること。
しかもデフォルトでインストールにチェックが入っているし。
さすがにここまで来ると悪質だ。
標準がオフで目につくというだけなら、ここまでいらだちはしないのだが…。

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

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

360:デフォルトの名無しさん
15/10/14 16:28:32.54 PR+BbI9O.net
チラシは日記の裏に

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

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

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

364:デフォルトの名無しさん
15/10/14 18:18:51.71 OmtAhGc1.net
まあそうだ

365:デフォルトの名無しさん
15/10/14 18:21:28.05 j19XNlRE.net
>>359
OpenGL/WebGLおぬぬめ

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

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

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

369:デフォルトの名無しさん
15/10/14 19:16:49.44 oRHV6ndY.net
>メインの親ウインドウ以外のウインドウにWS_CHILDを設定せよということでしょうか。
違うと思います

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

371:デフォルトの名無しさん
15/10/15 01:06:47.38 whFEoHyO.net
お前鬼畜wwww

372:デフォルトの名無しさん
15/10/15 11:03:19.33 bdlPZJI1.net
「SHA-1の廃止前倒しを」 専門家チームが提言
URLリンク(www.itmedia.co.jp)
 Webサイトでの認証やデジタル署名に使われるハッシュ関数の「SHA-1」について、暗号解読の国際専門家チームが10月8日、廃止の時期を現在のスケジュールよりも前倒しする必要があると勧告した。
SHA-1がこれまで考えられていたよりも大幅に安いコストで破れることが分かり、犯罪集団に悪用される危険が迫ったと指摘している。
 SHA-1は以前から脆弱性が指摘され、MicrosoftやGoogleなど主要ブラウザメーカーや電子証明書の発行機関が段階的な廃止に向けたスケジュールを公表している。

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

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

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

376:デフォルトの名無しさん
15/10/18 11:00:40.65 vJDQVwJW.net
そうでもない

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

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

379:デフォルトの名無しさん
15/10/18 18:09:14.26 81sora9Q.net
DLLインジェクションかな

380:デフォルトの名無しさん
15/10/18 21:32:04.08 P1RRHvzY.net
>>375
何気に有用な情報

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

382:デフォルトの名無しさん
15/10/19 22:57:12.18 cIYsWzpl.net
オーナードローのスプレッドシートを作っています。
セルの編集をする際、セルの位置にEditControlを作り、入力完了後に削除し
表に反映する手法をとっているのですが、この手法についてどう思いますか。
キャレットが出ていない状態(セルの選択状態)からの日本語入力の際
自分のマシンでは問題は起きないのですが、他のマシンでは予期せぬ入力が
される事があります。実装ミスだとは思うんですが、より良い設計があるのでは
と思っての質問です。

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

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

385:デフォルトの名無しさん
15/10/20 13:42:54.85 xP4cg3Iy.net
\\

386:379
15/10/20 13:48:37.15 3vGCFixJ.net
すまんエラーはにはならなかった。

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

388:デフォルトの名無しさん
15/10/21 09:18:14.97 jQM6AnWx.net
リストビューで思い出した。
リストビューで列が多くあり表に収まりきらない場合は横スクロールとなりますが、
最左端の列のみ常時表示しつつ、2列目以降のみ横スクロールさせたい場合、
左端用のリストビューと横スクロールできるリストビューの2つを並べるしかないですよね?
過去、オーナードローで実現できないか試行錯誤して断念したことがあります。

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

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

391:デフォルトの名無しさん
15/10/23 18:56:41.12 ogfwTZEM.net
アカンと思います

392:デフォルトの名無しさん
15/10/23 19:05:18.92 g6RvQfmz.net
急いで0で割れ

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

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

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

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

397:デフォルトの名無しさん
15/10/23 21:30:58.46 CrI38Gq0.net
>>392
> ループにsleepもなくぶんまわすとかしなけりゃ起きない
49日ちょいでラップするから、その考えは浅すぎる

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

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

400:デフォルトの名無しさん
15/10/23 21:47:41.71 1FmkefyV.net
コントやめろ

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

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

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

404:片山博文MZ ◆T6xkBnTXz7B0
15/10/23 22


405::14:50.12 ID:/zhY2mEN.net



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

407:デフォルトの名無しさん
15/10/23 22:34:47.28 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;
}

408:デフォルトの名無しさん
15/10/23 22:40:23.49 ded5JV/s.net
>if( dw0 >= 1000 ){
if( dw >= 1000 ){
  orz
}

409:デフォルトの名無しさん
15/10/23 22:50:29.05 ded5JV/s.net
>dw = ( 0xFFFFFFFF - dw1 ) + dw0;
dw = ( 0xFFFFFFFF - dw0 ) + dw1;
>printf("\r%luHz ", n);
printf("\r%dHz ", n);
orz = 3;
憑かれているようだ吊ってくる・・・

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

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

412:片山博文MZ ◆T6xkBnTXz7B0
15/10/24 07:46:57.94 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;
}

413:デフォルトの名無しさん
15/10/24 09:02:02.42 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で覚えといたほうがいいな・・・


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch