トップページ⇒tech
1002コメント318KB

Win32API質問箱 Build121 [転載禁止]©5ch.io

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2015/08/04(火) 22:34:50.61ID:tKzV+rUu
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/
0002デフォルトの名無しさん2015/08/05(水) 14:10:04.50ID:OyFAH2W/
OSのっていうか、コントロールパネルの地域で選択されている国(場所)又は言語を取得するAPI教えてくださ
0003デフォルトの名無しさん2015/08/05(水) 14:26:46.22ID:e4gAPQI9
GetUserDefaultLCID とかじゃね?
0004デフォルトの名無しさん2015/08/05(水) 14:28:06.28ID:e4gAPQI9
言語はGetUserDefaultUILanguage

地域と言語は別だよね
0005デフォルトの名無しさん2015/08/05(水) 15:37:41.50ID:MnmW9vnG
               ノ      ゚.ノヽ  , /}      ...
            ,,イ`"     、-'   `;_' '    ..::::::::::::::...
   ,-、  _.._   (        (,(~ヽ'~     ..:::::::::::::::::::::::
 )'~  レー'  〉   ヽ       i`'}       .:::::::::::::::::::::::
 ~つ     '-ー、  i       | i'     ...:::::::::::::::::::::::
 /       <  /     。/   !  ......:::::::::::::::::::::::::    これは>>1乙じゃなくて
/         ~^´     /},-'' ,●::::::::::::::::::::::::::::::::::::
i、        ,i' _,,...,-‐-、/    i  ::::::::  .:::::::::::::
..ゝ        <,,-==、   ,,-,/      .:::::::::::            放射能がうんたら
 )       {~''~>`v-''`ー゙`'~       ..:::::::::                          ........::.
 {        レ_ノ            ..::::::::.                         ......:::::::::
ノ         ''           ..:::::::                        ...::.:...:::::::::
                     .:::::::::                     ...:......:::::::::::: .
                    .:::::::::::.        .....      ..  ..::::::::::::::::::::::::   :::.
                    ::::::::::::::::.::::::....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.. ::  ::..
                    .:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::    ::.
                    ::::::::::::::::: :::::::::::::::::::::::::::::: :::::
                          .::    ::.  :::
0006デフォルトの名無しさん2015/08/06(木) 15:23:29.70ID:c3bf75DV
windows7なんですかテストモードONにしてもデジタル署名を要求されます
テストモードは未署名のドライバでも動かせるのではないのですか
未署名ドライバを署名無しのまま動作させるAPIを教えろください
0007デフォルトの名無しさん2015/08/06(木) 16:54:34.81ID:/1pEP5C4
お断りします
0008片山博文MZ ◆T6xkBnTXz7B0 2015/08/06(木) 17:21:33.98ID:4xD13DN7
>>7
よいではないか
0009デフォルトの名無しさん2015/08/06(木) 19:14:01.34ID:79+p9Mbt
WM_SIZING message
https://msdn.microsoft.com/ja-jp/library/windows/desktop/ms632647(v=vs.85).aspx

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

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

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

よろしくお願いします。
0010デフォルトの名無しさん2015/08/06(木) 19:23:52.88ID:YtIxgi9m
1.GetWindowRectとGetClientRectを呼んで、差分を計算する
2.AdjustWindowRectを呼んで、差分を計算する
そんで、WM_SIZINGのlParamから逆算するとかどうでしょうか
でも、スクロールバーがある場合は面倒なことになりそう
0011デフォルトの名無しさん2015/08/06(木) 19:30:52.64ID:oUBwSLmn
単にWM_SIZEを使えばいいのでは
確かWindows98あたりでサイズ変更中に描画を更新するオプションができて
WM_SIZINGのように使えるようになった
0012デフォルトの名無しさん2015/08/06(木) 21:35:17.53ID:SdwUOFG4
WM_NCCALCSIZE送ったら計算してくれなかったっけ
0013片山博文MZ ◆T6xkBnTXz7B0 2015/08/07(金) 15:57:03.53ID:UeH7dSGn
MAKEROP4(SRCCOPY,0xED0000)
↑何だこれ?
0014デフォルトの名無しさん2015/08/07(金) 18:20:35.84ID:5Zt0WqrR
ググレカス
001592015/08/07(金) 23:44:31.50ID:AvOHJMxe
>>10
その方法でいけました!
これでウィンドウスタイルに依存せずにWM_SIZINGでクライアント領域を取得できるようになりました。
ありがとうございました!

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

>>12
ご助言ありがとうございます。
今回は>>10さんの方法で対処できましたが、
教えていただいたWM_NCCALCSIZEを使う方法についても調べてみます。
0016デフォルトの名無しさん2015/08/09(日) 21:51:12.54ID:nWjgkEEO
i7 2600Kみたいな4コア8スレッドのCPUで、プロセスのアフィニティを変更する時
8ビットをそれぞれ1論理コアに対応させて使う論理コアを指定しますが、
その時に1と2が1つの物理コアに対応してるのでしょうか?
それとも1と5が1つの物理コアに対応してるのでしょうか?
0017デフォルトの名無しさん2015/08/09(日) 22:50:57.54ID:nd2w8Mp+
どれが物理コアかなんて区別はないよ
ゲームで物理4コアのi5が好まれる理由もそれ
0018デフォルトの名無しさん2015/08/09(日) 23:49:21.06ID:nWjgkEEO
>>17
ちょっと回答の意味がわからないです
どのビットがどの物理コアに割り当てられるかは変動的で決まってない、ということですか?
i7のスレッド2倍化は1つの物理コアの余ってる時間に割り込ませるものなので、
確実に1つの物理コアを空けたいんです。なので同じ2つの論理コアを不使用にさせるにしても、
8ビットあるうち例えば1|2を休ませるか、1|16を休ませるかの、どっちかが1つの物理コアを確実に休ませる指定になると思うんです
(ビット1と2がセットで1物理コア、またはビット1と5がセットで1物理コアとなっているかのどっちかだと想像してます)
その割り当てが知りたいんです
熱対策や故障コアのために1つの物理コアを確実に開けたいんだと読み替えてもらっても結構です
0019デフォルトの名無しさん2015/08/10(月) 00:56:39.57ID:sjbJ+sY3
>>18
(俺は>>17氏ではないが)
https://msdn.microsoft.com/ja-jp/library/windows/desktop/ms686223
のコメントには、以下の3通りの主張がされている(ように思われる)
1. >>16の後者だ(…と言う前提で書いてあるMSの記事がある)
2. いや全く当てにしてはならない
3. BIOSで事実上>>16の前者に設定されてる

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

ただ、こういうのは >>19 の 2 のように、はっきり決められた事ではないんじゃないかなと思ってます。
0021デフォルトの名無しさん2015/08/10(月) 05:14:15.39ID:joKVIITR
APIのスレで聞くことじゃないな
0022デフォルトの名無しさん2015/08/10(月) 12:40:35.44ID:a4ap/1LI
>>21
APEだから仕方ない
0023デフォルトの名無しさん2015/08/10(月) 15:31:07.76ID:Vh7AZwN0
自プロセスを呼び出した親プロセスEXEのフルパスを取得したいのですが、
親プロセスは自プロセスを呼び出したら即終了してしまいます。

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

別の監視プロセスを用意するなりの対処法はあるでしょうが、自プロセス
だけで親プロセスを知る方法はありませんか?
0024デフォルトの名無しさん2015/08/10(月) 15:55:46.59ID:5q1c3acf
自プロセスを呼び出す際に親プロセス(?) のフルパスを渡せばいい
0025デフォルトの名無しさん2015/08/10(月) 16:36:29.46ID:Vh7AZwN0
どうもすみません。
前提条件として、親プロセスの修正は不可能です。
0026デフォルトの名無しさん2015/08/10(月) 16:52:54.44ID:HDdiOC7r
親プロセスを実行しているのはだれ?
0027デフォルトの名無しさん2015/08/10(月) 16:55:45.28ID:5q1c3acf
修正不可能な親プロセスは赤の他人
親プロセスの定義は?
0028デフォルトの名無しさん2015/08/10(月) 20:07:24.73ID:8ijckzev
スレチは氏ね
0029デフォルトの名無しさん2015/08/10(月) 21:36:23.15ID:65tjAOy9
親プロセス名を渡さないときは強制終了すればいい
0030デフォルトの名無しさん2015/08/10(月) 21:39:02.42ID:/eMcOwxL
馬鹿なことやってないでまともな設計しろよ
質問箱と尻拭い相談所はちげーぞ
てめえのケツはてめえで拭け
0031デフォルトの名無しさん2015/08/10(月) 21:49:23.32ID:k4VnlTc/
ケツ…!!

  ( ゚д゚ ) ガタッ
  .r   ヾ
__l_l / ̄ ̄ ̄/_
  \/    /
0032デフォルトの名無しさん2015/08/10(月) 21:57:46.69ID:joKVIITR
親のインスタンスが二つ以上いることは考えにくいから
ウィンドウクラスで検索すれば特定できるかも知れない
0033デフォルトの名無しさん2015/08/10(月) 22:35:38.71ID:Vh7AZwN0
不正コピーされたインストーラーでインストールされた場合、インストール直後に
インストーラーから起動されたプロセスからインストーラーを特定したかったんです。
フルスキャンする訳にも行かないし。

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

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

無理そうですね。
どうもありがとうございました。
0034デフォルトの名無しさん2015/08/10(月) 23:24:56.99ID:oSHGrBYa
初歩的な質問なのですが、教えてください

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ファイルに追加するにはどうすればいいのでしょうか
単純にバイナリエディタで開いただけでは無意味な英数字が並んでいるだけでした
よろしくお願いします
0035デフォルトの名無しさん2015/08/10(月) 23:34:24.57ID:5q1c3acf
自分のプログラムならソースに追加すればいいだろ
他人のプログラムなら改竄するな
0036デフォルトの名無しさん2015/08/10(月) 23:44:38.23ID:AMzePwd7
不正である事を確認しようとするより正規である事を確認するほうが楽
0037デフォルトの名無しさん2015/08/10(月) 23:52:40.03ID:4jBvfEp+
スレチの説教好きだねぇ
0038デフォルトの名無しさん2015/08/11(火) 07:35:15.78ID:LfA/skDI
>>33
APIフックは?
0039デフォルトの名無しさん2015/08/11(火) 09:56:56.39ID:sbfi/bwK
常駐して監視するのでもなければ、
親プロセスが死んでいる前提なら無理。親プロセスIDしか情報が無い上にそのIDすら親の死亡時に付け替えられる。
0040デフォルトの名無しさん2015/08/11(火) 14:59:02.28ID:dsDvvWMK
よく使うアプリの一覧とかあるじゃん。
実行アプリの履歴がレジストリかどこかに残ってないの?
0041デフォルトの名無しさん2015/08/11(火) 15:36:53.18ID:HguuZcyi
そういえば一時期、Office2013にも似たようなカーネルエラーが頻発してたけど
あれも理論上は回避可能ということか

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

いつかXPやVISTAにも某黒翼猫氏のような救世主が現れて、拡張カーネルが用意されるのかしら
0042デフォルトの名無しさん2015/08/12(水) 23:53:20.47ID:G8qcToBK
どっかでフックしてIAT書き換るかDLL挿げ替えかな
0043デフォルトの名無しさん2015/08/14(金) 07:54:19.40ID:vjnCwLdg
>>33
ただでさえインストーラは環境依存のクレーム地獄になりがちなのに
おかしなことをするんじゃない

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

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

よし全機撃墜
0044デフォルトの名無しさん2015/08/14(金) 11:01:39.44ID:IL9iPg3p
アホはお帰りください
0045デフォルトの名無しさん2015/08/14(金) 11:03:06.69ID:2p3m0KlY
みんな帰ろう
0046デフォルトの名無しさん2015/08/14(金) 11:27:26.86ID:WAFSmjQt
そして誰もいなくなった
0047デフォルトの名無しさん2015/08/14(金) 13:17:55.88ID:Q/AtP1Be
7 x 7 = 49
0048片山博文MZ ◆T6xkBnTXz7B0 2015/08/14(金) 21:49:09.41ID:qMkXaiUF
IATを書き換えて実行ファイルを再構築できるようなハッカーはここには居ない
0049デフォルトの名無しさん2015/08/14(金) 22:14:26.57ID:2p3m0KlY
それが存在しないのは、それが必要ないからであることが多い
0050デフォルトの名無しさん2015/08/14(金) 22:31:22.18ID:WAFSmjQt
お金は必要だけど、オレの財布にはあまり存在しないという例がもある
0051デフォルトの名無しさん2015/08/14(金) 22:35:47.25ID:qMkXaiUF
>がも

はい、減点。
0052デフォルトの名無しさん2015/08/14(金) 23:04:18.82ID:2p3m0KlY
なんでID晒して名前隠してんの?
はい、減点。つーか0点。
0053デフォルトの名無しさん2015/08/15(土) 02:12:39.84ID:Krwjugvl
まあ大概のことは「片山さんだから仕方ない」で済ませられる程度だろ
0054デフォルトの名無しさん2015/08/15(土) 04:44:29.63ID:Yk3bSSFS
>片山博文MZ ◆T6xkBnTXz7B0

はい、減点。
0055デフォルトの名無しさん2015/08/15(土) 07:15:55.06ID:7sJYyU2X
>>48
APIフックする過程でIAT云々はさわるだろうけど
実行ファイルを再構築なんてできたらSAOの世界じゃね
0056デフォルトの名無しさん2015/08/15(土) 08:04:09.11ID:lGrRobx2
岩手朝日テレビがどうしたって?
0057デフォルトの名無しさん2015/08/15(土) 08:25:24.67ID:SxlpnIr4
メモリ上の再構築は共有セクションの扱い以外は別に難しくはない。改変チェックが入っている場合は潰す必要があるが。
0058片山博文MZ ◆T6xkBnTXz7B0 2015/08/18(火) 00:37:16.25ID:7ZRpZn5E
>>57
その辺を詳しくブログに書いて下さい、お願いします。
0059デフォルトの名無しさん2015/08/18(火) 19:00:36.45ID:eHhh5Jxo
>>56
MIT
.
0060デフォルトの名無しさん2015/08/18(火) 21:51:06.26ID:LehTl7m4
一つIMEで質問がありますが、ここで良いですか?

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

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

どなたか知っている方ヒントだけでも教えて下さい!
0061デフォルトの名無しさん2015/08/21(金) 10:27:50.79ID:v385Kh+A
inet_ntoa ってchara*返すけどWCHAR*返すのおしえてよ
0062デフォルトの名無しさん2015/08/21(金) 10:45:39.38ID:c/THd06T
InetNtop
0063デフォルトの名無しさん2015/08/21(金) 17:48:25.85ID:NHu7az4C
VC++でWin32APIを使いゲームを制作しようと思っています。
http://zahyou.6.ql.bz/cgame/

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

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

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

使用している関数はmciSendCommandです
0064デフォルトの名無しさん2015/08/21(金) 18:03:56.39ID:106+9rwN
MCI だと止まる
0065デフォルトの名無しさん2015/08/21(金) 18:11:32.53ID:c/THd06T
>>63
同期・非同期
0066デフォルトの名無しさん2015/08/21(金) 18:12:03.16ID:106+9rwN
waveoutを使うといいです
0067デフォルトの名無しさん2015/08/21(金) 18:12:28.78ID:106+9rwN
あとダブルバッファリンもした方がさらに良くなります
0068デフォルトの名無しさん2015/08/21(金) 21:00:41.93ID:Tu1fJmAa
優しいなお前ら
0069デフォルトの名無しさん2015/08/21(金) 21:04:35.93ID:x7vlwrmr
子供は1回1錠な
0070デフォルトの名無しさん2015/08/21(金) 21:15:40.67ID:AXgC1r2C
痛風の発作が出ているときにバッファリンを飲むと悪化します
0071デフォルトの名無しさん2015/08/22(土) 03:43:30.96ID:R1h6gxCt
バファリンは、胃にやさしくない成分と、頭痛に効かない成分とで出来ています。
0072デフォルトの名無しさん2015/08/22(土) 08:20:07.85ID:cPJQ97tL
おい子供にバファリン使うな
小児用バファリン使え
0073デフォルトの名無しさん2015/08/22(土) 09:44:24.66ID:OcPmzwVT
え、ワーファリン?
0074デフォルトの名無しさん2015/08/22(土) 10:06:15.94ID:fLuaARar
>>66
効果音をwaveoutやmidioutにしたところBGMに支障なく流すことができました。
本当にありがとうございます。
0075デフォルトの名無しさん2015/08/27(木) 12:14:42.27ID:RnCy/tzb
C#でアプリを作ってはいるんですがwindowsAPIを使ったことがほとんどありません
windowsAPIを覚えたいんですが、どういうアプリを作りながら覚えたらいいでしょうか?
0076デフォルトの名無しさん2015/08/27(木) 12:21:31.54ID:Eaj+az2t
Hello Windows
0077デフォルトの名無しさん2015/08/27(木) 13:10:33.61ID:0465F1pc
C#だけで閉じこもってるなら必要ないだろ
使うならCくらいは読めて書けるようにならないと
0078デフォルトの名無しさん2015/08/27(木) 13:35:56.67ID:RnCy/tzb
>>77
Cの読み書きはある程度はできます
windowsAPIを使えるようになるまですごい時間がかかりそうで・・・
何か作りながら覚えたいんですがむずかしいでしょうか?
0079デフォルトの名無しさん2015/08/27(木) 13:43:02.13ID:Eaj+az2t
作りながらじゃなきゃ覚えられない。まずはこれ。
https://msdn.microsoft.com/ja-jp/library/windows/desktop/ff381409(v=vs.85).aspx
0080デフォルトの名無しさん2015/08/27(木) 13:43:17.06ID:K9LHu2e1
>>78
自分が過去につくったC#アプリをWinAPIだけで再現してみたら?
0081デフォルトの名無しさん2015/08/27(木) 19:00:26.66ID:tpdP6kqy
SetLayeredWindowAttributes みたいな感じで透過じゃなくフォーム全体を暗くしたりするAPIあったら教えて下さいね
0082片山博文MZ ◆T6xkBnTXz7B0 2015/08/27(木) 19:08:34.43ID:oqQcnINP
>>81
p%透過にしてウィンドウの下に黒い別のウィンドウを重ねる。
0083デフォルトの名無しさん2015/08/29(土) 01:24:22.96ID:rZ+W6Zab
>>78
作りながら覚えるなら簡単なアプリを作ればいいじゃん

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

最低限の機能を備えたものが出来たらリファクタリングやバージョンアップするといい
0084デフォルトの名無しさん2015/09/06(日) 17:45:58.22ID:cLh5ZyHa
中途半端なAPIプログラマなので、C#の生産性に勝てない。

鍛えればなんとかなるのかな?
0085デフォルトの名無しさん2015/09/06(日) 17:50:23.11ID:3Oih9VSM
C#キモい。
WinAPI一筋だ。
0086デフォルトの名無しさん2015/09/06(日) 18:20:23.46ID:vWlWpWil
レイヤーが違う
C#だってWinAPI使えるで
0087デフォルトの名無しさん2015/09/06(日) 21:35:38.22ID:ANWjJC8V
C++で、画面や文字列を簡単に扱えれば…
メッセージループとか、未だにわからないです。

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

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

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

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

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

60フレームなら1秒間に60回、
30フレームなら1秒間に30回、画面が描かれる
0090デフォルトの名無しさん2015/09/07(月) 09:55:01.12ID:ArTvcv08
ダイアログ/フォーム アプリケーションなら
ウインドウに直にデータを突っ込んで設計のことをあまり考えなくて済むよ
ぐふふ
0091デフォルトの名無しさん2015/09/07(月) 17:17:44.71ID:ifJ6MFQh
ダイアログアプリケーションなら、なんとか・・

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

というところで困っています。
質問1
どのようにすれば目的の内容を実現できますか?
質問2
MFCのSubclassDlgItemの変わりになるようなものはありますか?
0093デフォルトの名無しさん2015/09/07(月) 19:30:42.31ID:8kmrGT2g
>>92
IsDialogMessage
0094 ◆QZaw55cn4c 2015/09/07(月) 19:42:51.28ID:w2psTc+y
>>92
それはエディットコントロールのウィンドウプロシージャで捕まえるもの
MFC は知らんが
GetWindowLong(hwndEdit, GWL_WNDPROC);

SetWindowLong(hwndEdit, GWL_WNDPROC, (LONG)callbackFunction);
でどうとでもなる,2〜3年に一回質問される FAQ だね
0095デフォルトの名無しさん2015/09/07(月) 19:43:17.81ID:yWiuJpNl
>>92
回答2
CWnd::SubclassDlgItem() のソースを参照すると、GetDlgItem(), SetWindowLongPtr() 等を
使って関数に仕上げているだけなコトがわかる。
0096デフォルトの名無しさん2015/09/07(月) 20:02:17.05ID:8kmrGT2g
>>92
それと>>93の場合決定ボタンをBS_DEFPUSHBUTTONにしてBN_CLICKEDを処理ね
0097デフォルトの名無しさん2015/09/07(月) 20:56:39.35ID:kLL2g65z
>>93-96
すいません。
回答にたどり着けなくてコード貼りました。
見よう見まねでやっているので色々問題あるかもしれません。
 http://codepad.org/QAk329mZ
上記コードのWinProc、DlgProcともWM_KEYDOWNがこない状況です。
どんな感じに直せばいいでしょう?
0098デフォルトの名無しさん2015/09/07(月) 21:23:33.51ID:8kmrGT2g
>>97
モーダルダイアログ、モードレスダイアログで調べて
0099デフォルトの名無しさん2015/09/07(月) 21:36:48.33ID:P3iiIg+v
アニメーションカーソルについて質問です。
アニメーションカーソルを自分で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);}
よろしくお願いします。
0100デフォルトの名無しさん2015/09/07(月) 21:48:51.98ID:yWiuJpNl
>>97
わからないから添削しろ、では芸がない。

そもそも、

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

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

ex) 漢字変換中に誤って2度 Enter キーを押したら誤動作する とかね。
0101デフォルトの名無しさん2015/09/07(月) 21:57:06.07ID:yWiuJpNl
>>97
書き忘れた。

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

みたいなコトは今はやらない。Win16 プログラムでないかぎり、hPreInst は常に NULL。
0102922015/09/07(月) 22:04:52.49ID:kLL2g65z
>>94
すいません。↑これでいけました。
http://codepad.org/GK39S71J

↑最初WM_KEYDOWNの中でVK_RETURNを処理して確認していたのですが、
EDITTEXTではEnterKeyが効かないみたいで、
"上手くいかない"と判断してました。
VK_RETURNが効かない件は別問題なので、これから調査します。
とりあえず >>92 の質問は解決しました。どうもありがとう。
0103992015/09/07(月) 22:58:10.86ID:P3iiIg+v
日本語が変だったので訂正です。
やりたいこと。
・アニメーションカーソルの総数を取得したい。
・アニメーションカーソルの画像をhDCにイメージ番号を指定して描画したい。
先ほど記述したソースだと、イメージ番号0番のみが表示されるだけみたいです。
素材の場所は ttp://www1.axfc.net/u/3454899 DLパス⇒かんこれ
です。
ご教授お願いします。
0104922015/09/07(月) 23:33:31.78ID:kLL2g65z
度々すいません。
>>102 のVK_RETURNが効かない件解決したので一応下記のソース報告します。
http://codepad.org/eniL7aC6
EDITTEXTのスタイルにES_MULTILINEを追加すればいいみたいです。
また >>92 の質問2ですが、意図としては上記のEditProc見たいな事をやりたかったので、
これも解決しました。

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

>>100
> Windowsプログラムとして正しいのか
については少し考えて見ます。
0105片山博文MZ ◆T6xkBnTXz7B0 2015/09/07(月) 23:42:58.94ID:wiJUwYLf
>>103
外部ライブラリ使う、RIFF形式ファイルとして解析する、以外に簡単な方法は無かったはず
0106片山博文MZ ◆T6xkBnTXz7B0 2015/09/07(月) 23:50:26.92ID:wiJUwYLf
アイコンの抽出はExtractIcon,ExtractIconEx,IExtractIconと
いろいろサポートしてるのにアニメカーソル抽出のサポートは貧弱
0107デフォルトの名無しさん2015/09/08(火) 02:00:50.39ID:WpGjOpsu
>>92
>エディットコントロールで、"Enter"キーを入力された場合に、
>"決定"ボタンを押されたことにしたい
この仕様自体が、おかしいような気がする

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

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

こういう階層では、子1から子2へは(兄弟間では)、
直接アクセスできないので、
子1 → 親 → 子2 という経路でアクセスする
0108デフォルトの名無しさん2015/09/08(火) 02:12:44.72ID:WpGjOpsu
>>99
SHGetImageList で、連続するアニメの、
複数のイメージが取得できているの?

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

また画像は、正しいファイル名の連番とするなど、
正しい形式で並べる
(もし連番としている場合の話です。
漏れはどういう形式か、よく知らないけど)
0109992015/09/08(火) 08:39:26.20ID:M6zfIWdf
>>106,108
アニメーションカーソルは複雑なんですね。
SHGetImageListそのものが使うの初めてだったのでよくわかってないです。
情報集めて、アニメーションカーソルの制御どうするか考えます。
外部ライブラリーとかで、組み込みフリー的な便利なものあればいいですが。。
あとは、MSDNあたり調べてみるかなぁ。。
0110デフォルトの名無しさん2015/09/08(火) 08:50:14.73ID:uJSOxUGR
最初にMSDNあたれよバカ
0111デフォルトの名無しさん2015/09/08(火) 09:17:02.10ID:S6LsUKWF
>>104
そんな事しなくても
16行目 PUSHBUTTON → DEFPUSHBUTTON にするだけで
エンター押した時にWM_COMMAND IDC_SET BN_CLICKEDが発生するから
EditProcもGet/SetWindowLongも不要
0112デフォルトの名無しさん2015/09/09(水) 11:52:53.38ID:zLKTZ6N+
>>99
そもそも最終的に何がしたいの?
描画しただけで終わりじゃないんじゃないの?
条件後出しして嫌がられるパターンにみえる
0113デフォルトの名無しさん2015/09/09(水) 14:46:05.94ID:UbDBGCr0
win32の色んな意味で時代遅れな関数群を使うのが億劫になって来た。
0114デフォルトの名無しさん2015/09/09(水) 16:44:51.77ID:61epwTm+
クラス化しないで直呼び?
0115デフォルトの名無しさん2015/09/09(水) 18:10:55.30ID:tEPd2G1m
"ゴミ箱にいれないで完全に削除する"の意味でNukeという用語を使っているMSを告訴しよう
9条マンセー
0116デフォルトの名無しさん2015/09/10(木) 10:35:49.99ID:pvKn3bkq
アプリケーションキューに入っているメッセージが消えるタイミングは普通に考えてプロシージャの処理が完了した後ですよね?
誰か確実に知りませんか
0117デフォルトの名無しさん2015/09/10(木) 10:40:17.77ID:DGBnp3I7
WM_PAINTを除いて GetMessage() が削除するんじゃなかったっけ。
0118デフォルトの名無しさん2015/09/10(木) 11:19:27.31ID:pvKn3bkq
>>117
調べたらそうっぽいですね
っていうか普通に考えたらそうですよね
ありがとうございまいた
0119デフォルトの名無しさん2015/09/10(木) 23:43:53.85ID:Lt3YsJ/Z
WM_PAINT?
BeginPaintを呼ばないとループするって話?
0120デフォルトの名無しさん2015/09/10(木) 23:53:28.53ID:DGBnp3I7
WM_PAINTは GetMessage() を実行した時点では削除されず
ウィンドウプロシージャでの処理が終了した時点で消える という話
0121デフォルトの名無しさん2015/09/11(金) 10:56:33.16ID:IOXejlDX
SetThreadAffinityMaskやSetThreadIdealProcessorを使用して
CPUコアの割り振りを明示的にしないとマルチコアに最適化されたアプリケーションとは言えない?
0122デフォルトの名無しさん2015/09/11(金) 11:17:24.29ID:GHVwR1ig
>>121
そんなのやらなくてもosが勝手にやってくれるだろ
0123デフォルトの名無しさん2015/09/11(金) 13:09:56.43ID:WE/d+c/8
物理的にマウスボタンが押されている状態で、
SendInput等のAPIによってマウスのボタンを上げられた状態であることを判定する方法ってありますか?
0124デフォルトの名無しさん2015/09/11(金) 13:29:49.05ID:dcIIi90q
どういう場面で必要になるのかな?

「マウスボタンは物理的に押されている」
  ↓
「SendInput等によってマウスのボタンが離されているよう偽装している」
  ↓
「このたわけモノが! 実際には押されているだろ!?」←これを判定する方法でしょ?
0125デフォルトの名無しさん2015/09/11(金) 13:37:43.79ID:WE/d+c/8
状況としてはですね、
自作アプリにマウス右ボタンを使った機能があるんですが
外部のマウスジェスチャー系の常駐アプリが右クリックを戻しているようなんです
GetKeyState/GetAsyncKeyState などでVK_RBUTTONの状態が取れません。
0126デフォルトの名無しさん2015/09/12(土) 00:01:38.57ID:t9wfuOfk
そういうのは競合状態といってな
どっちかを無効にするもんだよ
無理になんとかしようとしても時間の無駄
0127デフォルトの名無しさん2015/09/12(土) 08:59:57.32ID:lTmP7o65
ボクの知らない常駐アプリを同時に使わないでくださーい
ってのは割りと当たり前のこと

だけど初心者にはその主張は通用しないので
自アプリの起動時に常駐アプリの有無をチェックして警告を出すのがスマート
0128デフォルトの名無しさん2015/09/12(土) 09:15:16.54ID:bK+LJe1a
>>125
右クリックのマウスジェスチャーにマウスを右クリックする機能を割り当てて解決
0129デフォルトの名無しさん2015/09/12(土) 09:26:53.57ID:OKvTRLUv
>>122
そうなんかありがとう
0130sage2015/09/17(木) 15:36:32.51ID:rzmccn0E
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");
0131sage2015/09/17(木) 15:37:04.86ID:rzmccn0E
// 読み込むファイルのファイルハンドル。
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;

}
=====ここまで=====
0132デフォルトの名無しさん2015/09/17(木) 15:49:41.02ID:U6MHK03R
×_tprintf(TEXT("%c\n"), &buff);
○_tprintf(TEXT("%c\n"), buff);
0133デフォルトの名無しさん2015/09/17(木) 15:53:01.19ID:b2VOzBjq
test3.txtの文字コードも見てみてね
0134デフォルトの名無しさん2015/09/17(木) 15:53:11.74ID:9BEBkVT9
ファイル自体読み込めてないんだろう
01351302015/09/17(木) 16:06:25.74ID:rzmccn0E
レスありがとうございます。
>>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文字ではなく、文字列全体を取得することならできました。
0136デフォルトの名無しさん2015/09/17(木) 16:15:22.60ID:Nh2CPZLE
BOMのせいに決まってんじゃん
01371302015/09/17(木) 16:26:57.31ID:rzmccn0E
>>136
ありがとうございます!
試してきます!
0138デフォルトの名無しさん2015/09/17(木) 16:50:41.97ID:b2VOzBjq
>>137
まず%cじゃなく%02Xで値見てみる
01391302015/09/17(木) 17:23:07.39ID:rzmccn0E
>>138
つかめてきました!
ありがとうございます!

結局引っかかっていたのはUnicodeのBOMが大きな要因でした。
助かりましたorz
0140デフォルトの名無しさん2015/09/18(金) 20:40:35.95ID:BAj7A7iY
VC++2012でプログラミングをしています
win32APIでmidの音声を流そうと思い、
↓のサイトを見つけました。
http://eternalwindows.jp/winmm/midi/midi10.html
コンパイルしたところ何も起きませんでした。
調べたところ84行目の
midiOutOpen関数を使ったところで戻り値(mr)の値がMMSYSERR_ERRORになっていたためだと思われます。
どうすればうまく再生できますか?
0141デフォルトの名無しさん2015/09/18(金) 20:51:59.51ID:5egfmsiH
>>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
のどれでもないの?
0142デフォルトの名無しさん2015/09/18(金) 21:55:21.54ID:BAj7A7iY
>>141
調べてみたら不明なエラーと書かれていました
0143デフォルトの名無しさん2015/09/18(金) 21:57:15.78ID:5egfmsiH
>>142
どこで調べるとそのMMSYSERR_ERRORのことが書かれているの?
あと MMSYSERR_ERROR であることはどうしてわかったの?
0144デフォルトの名無しさん2015/09/18(金) 22:03:48.69ID:wagSxeCs
実際の値は何?
0145デフォルトの名無しさん2015/09/18(金) 22:05:51.25ID:wagSxeCs
>>140
これか

VC++2012でプログラミングをしています win32APIでmidの音声を流そうと思い、 ↓...
tukareteruhitoさん
ttp://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14150460584
0146デフォルトの名無しさん2015/09/18(金) 22:17:00.89ID:44vNChaT
つ を tu と表記されると、どうしても ちゅ と読んでしまう。。。
0147デフォルトの名無しさん2015/09/18(金) 22:25:24.12ID:BAj7A7iY
>>143
以前たまたまコンパイラでMIDIERR_NODEVICE を右クリックして宣言へ移動をクリックしたところ
MMSystem.hにいろいろ載ってました
#define MMSYSERR_ERROR (MMSYSERR_BASE + 1) /* unspecified error */
>>144
1です
0148デフォルトの名無しさん2015/09/18(金) 23:21:06.71ID:BAj7A7iY
>>140
書き足すのを忘れていました。
win7のパソコンではうまくいったのですが、win10の方のパソコンだとうまくいきません。
midiを鳴らすのにはソフトを入れたり、設定を変えないといけないのですか?
0149デフォルトの名無しさん2015/09/19(土) 00:44:50.98ID:njZddJ5V
Win7,10は異なるシステムだよ

アプリ・デバドラ・ハードウェアなどが、
簡単に動くと思ったの?
0150デフォルトの名無しさん2015/09/19(土) 02:51:01.30ID:oxCTiUGx
ドヤッ

が足りないぞ。
しかし的外れ。
0151デフォルトの名無しさん2015/09/19(土) 06:11:59.58ID:z4P1u9xK
>>148
MSDN(>>141のリンク先)の一番下のコミュニティーの追加の所にも、
Windows10のmidiOutOpenは明らかに壊れてて常に1(MMSYSERR_ERROR)を返すって書かれてるな。
Windows10の不具合じゃないの。
0152デフォルトの名無しさん2015/09/19(土) 06:33:58.45ID:rDYKlt+c
ありがとうございました
0153デフォルトの名無しさん2015/09/19(土) 07:10:53.65ID:UO4hLF9u
MMSYSERR_ERROR1つでえらい突っ込まれようだな。
APIがそれのドキュメントに載ってない汎用的なエラーを返すなんてそんなに珍しいことでもないだろうに。
0154デフォルトの名無しさん2015/09/19(土) 14:23:45.31ID:qGt1VSMn
ダイアログにある拡張コンボボックスの右側のボタンがちぎれて
一部表示されない。どうすればいい?
0155デフォルトの名無しさん2015/09/19(土) 15:41:27.60ID:qGt1VSMn
事故解決。WS_BORDERが余分でした
0156デフォルトの名無しさん2015/09/24(木) 07:26:25.75ID:1vbsv5/O
音と映像のコントロールソフト作ろうと思ってるんだけど、
WTL覚えた方が便利ですかね
0157デフォルトの名無しさん2015/09/24(木) 20:42:58.82ID:wqNNiZah
有料の時点で萎える
0158デフォルトの名無しさん2015/09/24(木) 21:43:34.07ID:KIOkH3Y/
>>156
C++を使えるなら便利
0159デフォルトの名無しさん2015/09/25(金) 02:29:42.77ID:d9V+/CgL
>>158
マジですか覚えてみるよ

>>157
空ウインドウ作るまでは無料でできたけど
お金かかるの?
0160デフォルトの名無しさん2015/09/25(金) 07:48:00.36ID:femLeyq9
>>159
WTLはExpressには入ってない。
でも、調べてみたら後から追加して使うことができるみたいだね。
>>159は有料版のVS?
0161デフォルトの名無しさん2015/09/25(金) 08:47:49.18ID:d9V+/CgL
>>160
無料のVS2013 Communityですん
WinDDK追加して使ってる
0162デフォルトの名無しさん2015/09/25(金) 09:02:33.39ID:ISU02i/F
Communityなら最初からATL入ってるから小細工要らんぞ?
おかげでWin32ゴリゴリ書きたい人には勧めやすくなった

NuGetにも登録されてるけど1年以上前の安定版だから2015のAppWizとかには対応してない
(レポジトリのは一応2015対応用の修正はされている)
0163デフォルトの名無しさん2015/09/25(金) 13:02:22.26ID:x3Qy+zME
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.

};
01641602015/09/25(金) 19:29:22.01ID:femLeyq9
>>161
ああ、Communityがあったな。
失礼した。
0165デフォルトの名無しさん2015/09/26(土) 21:57:31.31ID:wwGWY9bl
俺、家でも会社のプロ使っているからCommunityさっぱり何だけど
ATL使ってWinプログラムってCommunityにはMFCは入ってないってこと?
0166デフォルトの名無しさん2015/09/26(土) 22:09:02.67ID:vzGjXFWa
入ってるよ
インストール時に選択しないと入らないけど
0167デフォルトの名無しさん2015/09/26(土) 22:09:29.60ID:7ELa66Bu
>>165
(少なくとも2015は)ATLとMFCの両方無料で入れられる
0168デフォルトの名無しさん2015/09/26(土) 22:10:27.46ID:Wtpb5D+v
いやMFCもついてる。もう、使う気にならんけど。
0169デフォルトの名無しさん2015/09/26(土) 22:13:52.09ID:Tp58P9Fq
Express版と違ってCommunity版はATLもMFCもリソースエディタも入ってるよ
宗教上の理由とかでMFCというフレームワークを使わずに
ATLベースの軽量コンポーネントを好むのが一定数居るというだけだ
0170デフォルトの名無しさん2015/09/26(土) 22:21:24.87ID:0JcUeR/y
宗教上の理由www
0171デフォルトの名無しさん2015/09/26(土) 22:31:39.68ID:6OIyVqiT
宗教は精神衛生において大事だぞ
0172デフォルトの名無しさん2015/09/26(土) 23:30:37.68ID:rvfN9kdt
そして繰り返される宗教戦争
0173デフォルトの名無しさん2015/09/26(土) 23:43:11.75ID:f4irwjf7
神は戦争を肯定しない
ゆえに戦争を肯定するものは神ではない
0174デフォルトの名無しさん2015/09/26(土) 23:52:17.43ID:0JcUeR/y
マイクロソフト社内でも、//の後にスペースを挟むかどうかで戦争が起こるそうだしねw
0175デフォルトの名無しさん2015/09/27(日) 03:01:58.92ID:uC+Ymhd4
システムハンガリアンみたいな猿主張が通ったりもするね
0176デフォルトの名無しさん2015/09/27(日) 11:50:51.32ID:tDcA70Zp
そりゃマルチスレッドもない20年以上前だぞ
0177デフォルトの名無しさん2015/09/27(日) 12:25:11.27ID:wOuxiHo1
このプログラムを×ボタンで終了させるとタスクマネージャのプロセスに残るんですけど、
そういうモンなんですかね。
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);
}
0178デフォルトの名無しさん2015/09/27(日) 12:26:58.10ID:3ktkQrgJ
>>177
WM_CLOSEでDestroyWindowするのがお作法だけど、それだとどう?
use_delete()もWM_CLOSEですべきだと思う。
0179デフォルトの名無しさん2015/09/27(日) 12:35:34.20ID:puEp1GjQ
>>178
usb usb
0180デフォルトの名無しさん2015/09/27(日) 12:36:34.18ID:wOuxiHo1
>>178
こう変えてみたんですが残りますねぇ・・・
謎すぐる

case WM_CLOSE:
  if (handle) usb_delete();
  DestroyWindow(hwnd);
  return 0;
case WM_DESTROY:
  PostQuitMessage(0);
  return 0;
0181デフォルトの名無しさん2015/09/27(日) 12:43:37.60ID:puEp1GjQ
>>180
uns_deleteに関連するのをコメントアウトしたらどうなる?
0182デフォルトの名無しさん2015/09/27(日) 12:44:40.77ID:Oa1I2Bnn
GetMessageループはどう書いてんの
0183デフォルトの名無しさん2015/09/27(日) 12:46:18.05ID:wOuxiHo1
>>181
//if (handle) usb_delete();
にしたけど変わらないですねぇ・・・


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

  if (!handle) return 2; //接続されてない
  if (CloseHandle(handle)) return 1; //切断成功
  else return 0; //切断失敗
}
0184デフォルトの名無しさん2015/09/27(日) 12:48:34.90ID:wOuxiHo1
>>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;
}
0185デフォルトの名無しさん2015/09/27(日) 12:49:24.83ID:puEp1GjQ
>>183
ブレイクポイントでどこで止まってるか見てみて
0186デフォルトの名無しさん2015/09/27(日) 12:49:59.95ID:puEp1GjQ
>>184
おい・・・おい・・・
0187デフォルトの名無しさん2015/09/27(日) 12:50:42.48ID:Oa1I2Bnn
クソワロタ
その入門サイトは処刑で
0188デフォルトの名無しさん2015/09/27(日) 12:53:13.08ID:wOuxiHo1
>>185-186
あああああああああこいつかwwwwwwwwww  → while (TRUE) {


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

一応注意書きはしてるがこんなコード公開しちゃダメだろ。
0190デフォルトの名無しさん2015/09/27(日) 13:32:38.26ID:zkeDatYv
>>188
アーヒャヒャヒャヒャヒャヒャヒャヒャヒャヒャヒャヒャヽ(゚∀゚)ノ

酷いトラップスレにひっかったもんだな
悪意のある入門サイトに注意w
0191デフォルトの名無しさん2015/09/27(日) 13:46:14.96ID:Oa1I2Bnn
コピペするとバックドアが仕込まれるサンプルコードとか
探せばありそうだ
0192デフォルトの名無しさん2015/09/27(日) 13:53:33.43ID:puEp1GjQ
>>189
それかw

そういう所はサブタイトルの内容以外は手抜きだしな
0193デフォルトの名無しさん2015/09/27(日) 13:54:15.71ID:XMfaJ+0C
どうみても注意書きを読まない方が悪い
http://wisdom.sak ura.ne.jp/system/winapi/win32/win10.html
0194デフォルトの名無しさん2015/09/27(日) 13:55:33.30ID:Oa1I2Bnn
>>189
よく見るとwin11.html以降のGetMessageループも
戻り値の-1を無視したコードで正しくない
糞翻訳でおなじみの日本語MSDNにすら避けろと書いてあるぞ
https://msdn.microsoft.com/ja-jp/library/cc364699.aspx
0195デフォルトの名無しさん2015/09/27(日) 13:59:21.19ID:puEp1GjQ
>>193
正しいアプリケーションの終了
ttp://wisdom.s akura.ne.jp/system/winapi/win32/win11.html

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

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

これもまずいな。GetMessage() が -1 を返す場面を想定してない
0198デフォルトの名無しさん2015/09/27(日) 14:17:29.27ID:sYzB7PIZ
>>197
公式に避けろと書いてあるな



戻り値

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

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

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

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

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

このようなコードを作成すると、GetMessage 関数が失敗して -1(0xFFFFFFFF、つまり TRUE)が返った場合、ループが持続し、致命的なアプリケーションエラーを発生させる可能性があります。
0199デフォルトの名無しさん2015/09/27(日) 14:19:43.14ID:Oa1I2Bnn
18年くらい前のMSDN Libraryには書いてなかったかも
確かね
0200デフォルトの名無しさん2015/09/27(日) 14:26:15.80ID:YZLivW0I
>>199
すまん、>>194でもう指摘してたのね。読んでなかった。orz
0201デフォルトの名無しさん2015/09/27(日) 14:31:10.49ID:9nB30GXC
BOOLでそんな値をわたさんで欲しいわ。
0202デフォルトの名無しさん2015/09/27(日) 14:32:06.11ID:hEAZFQJb
GetMessageの戻り値の型はBOOLなのに
>0 以外の値、0、-1 のいずれかを返します。
これは酷い
0203デフォルトの名無しさん2015/09/27(日) 14:34:59.89ID:YZLivW0I
・・・そこツッコむと宗教戦争始まるから ^^;

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

いつも平行線
0204デフォルトの名無しさん2015/09/27(日) 14:36:46.98ID:zkeDatYv
>>202
これは酷い
0205デフォルトの名無しさん2015/09/27(日) 14:37:43.17ID:us1PQXsq
Win32にはよくあること
0206デフォルトの名無しさん2015/09/27(日) 14:41:31.38ID:NRLqsz4V
win32api は boolean のない C 前提なんだろう?
そもそも int GetMessage() が正しいのにだれが返り値 BOOL といっているんだ?
0207デフォルトの名無しさん2015/09/27(日) 14:41:59.45ID:jzpWzA1C
この話題も定期的に出るなwww
0208デフォルトの名無しさん2015/09/27(日) 14:44:03.48ID:sYzB7PIZ
だってtypedef int BOOLだしな
0209デフォルトの名無しさん2015/09/27(日) 14:44:06.88ID:Oa1I2Bnn
BOOLなのになんで2値論理じゃねーんだよタワケ
が適当
0210デフォルトの名無しさん2015/09/27(日) 14:51:26.57ID:8A5jeRhu
-1から漂う後から付け足した感が非常にポイント高い
0211デフォルトの名無しさん2015/09/27(日) 14:51:42.01ID:ENvts9qq
ほかにおすすめの入門サイトある?
0212デフォルトの名無しさん2015/09/27(日) 14:53:24.53ID:ENvts9qq
知っていたら、教えてください。
0213デフォルトの名無しさん2015/09/27(日) 14:54:51.35ID:XMfaJ+0C
>エラーが発生した場合、-1 が返ります。たとえば、hWnd パラメータで無効なウィンドウハンドルを指定した場合や、lpMsg で無効なポインタを指定した場合は、エラーが発生します。拡張エラー情報を取得するには、 関数を使います。

GetMessage() の戻り値が -1 の場合はエラーなんだろ?
Windows アプリを終了するべきではなくエラー処理をするべきじゃないのか?
while を抜けるべきではない
0214デフォルトの名無しさん2015/09/27(日) 14:55:25.97ID:zkeDatYv
>>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だった時期も確かにあったんだろう
0215デフォルトの名無しさん2015/09/27(日) 14:59:07.04ID:jzpWzA1C
そもそもエラーだからメッセージループ抜けるってのが横暴だ
ちゃんとGetLastErrorさんの話を聞かないとな
0216デフォルトの名無しさん2015/09/27(日) 15:05:58.13ID:hEAZFQJb
BOOLという独自型を定義したのもMSだし
TRUEという独自マクロを定義したのもMSだから
MSはC言語の仕様とは関係なく常に
BOOLの真の値として1を使わなければならないし
(だって自分で勝手に決めたんだろ)
そうじゃなかったとしても
BOOLなのに真とも偽とも明言されてない
エラーを表現する-1を返すのは良くないね
0217デフォルトの名無しさん2015/09/27(日) 15:34:06.02ID:nsZcbsgt
>>213
>hWnd パラメータで無効なウィンドウハンドルを指定した場合や、lpMsg で無効なポインタを指定した場合は、エラーが発生します。

本人がポカしなけりゃ -1 は無視して良いな。
0218デフォルトの名無しさん2015/09/27(日) 15:35:30.62ID:LjMVY2UB
宗教戦争突入阻止!

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

BOOL なら -1 は真だよ。
0220デフォルトの名無しさん2015/09/27(日) 15:51:43.88ID:YZLivW0I
>>215
WTLだと、エラーを返したときもループ継続
0221デフォルトの名無しさん2015/09/27(日) 15:54:52.54ID:hEAZFQJb
>>219
それはC言語の仕様でしかない
MSDNにはただ単にエラーの時-1を返すとしか書いてない
ここでの-1の意味は真でも偽でもなくて、エラー

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

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

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

に訂正しておく
0222デフォルトの名無しさん2015/09/27(日) 15:57:22.56ID:jzpWzA1C
>>216
そのMSも-1はTRUEと明言しているよ
> -1(0xFFFFFFFF、つまり TRUE)が返った場合
                  ~~~~~~
>>217
「例えば」だから、エラーの原因がそれだけという保証がない
0223デフォルトの名無しさん2015/09/27(日) 17:13:27.56ID:9nB30GXC
この例では戻り値チェックしてないな。
https://msdn.microsoft.com/ja-jp/library/bb384843.aspx
0224デフォルトの名無しさん2015/09/27(日) 17:27:24.32ID:hEAZFQJb
>>222
整数の-1が真なのはC言語の仕様でしかなく
今言っているのは「意味の上で」の話だから
-1のときエラーと書いてあったのならそれ以上の意味はない

例えばメモリエラーのときに「2」を返す関数があったとして
「2」はC言語の仕様的には「2」でしかないが
意味の上ではメモリエラー
0225デフォルトの名無しさん2015/09/27(日) 17:31:35.93ID:3ktkQrgJ
>>184
久々にお茶フイタwww
0226デフォルトの名無しさん2015/09/27(日) 18:23:00.63ID:UYzM99J3
きったねーな 死ねよ
0227デフォルトの名無しさん2015/09/27(日) 18:24:33.95ID:jzpWzA1C
>>224
何言っているのか(何を言いたいのか)分からん

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

で話を戻して、

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

エラーの場合は-1を返す
MSDNで-1は「つまりはTRUE」と書いているんだから
エラーの場合も真を返すと明言しているわけだ
関数の仕様としておかしいとしても「意味の上で」なら真か偽かははっきりしているだろ
0228デフォルトの名無しさん2015/09/27(日) 18:38:33.35ID:hEAZFQJb
それはC言語の仕様としては真になるという但し書きでしかないと思うが

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

>BOOLなのに真とも偽とも分類されないような
>エラーの-1を定義して3値で返すのは良くないね
0229デフォルトの名無しさん2015/09/27(日) 19:08:43.46ID:8A5jeRhu
言い争いするところじゃないっスよー
糞仕様は糞仕様なんだから
0230デフォルトの名無しさん2015/09/27(日) 19:28:41.21ID:hEAZFQJb
>警告 GetMessage 関数は、0 以外の値、0、-1 のいずれかを返します。したがって、次のようなコードは避けてください。
>while (GetMessage(lpMsg, hWnd, 0, 0)) ...
>このようなコードを作成すると、
>GetMessage 関数が失敗して -1(0xFFFFFFFF、つまり TRUE)が返った場合、ループが持続し、
>致命的なアプリケーションエラーを発生させる可能性があります。
この警告の文における
「0xFFFFFFFF、つまり TRUE」が
・エラーだとー1が返るがC言語の仕様では-1は真になるからループの終了条件に使うと危険、と言う但し書きか、
・APIの戻り値として真の意味がある、と捉えるかは、人それぞれかもしれんが
そもそも大元の「戻り値」の説明には「真」とか「偽」とかは出てこなくて
エラーなら-1が返るとしか書いてなくて、ここに
-1(0xFFFFFFFF、つまり TRUE)という補足は書かれていないのだから、
例の補足は「警告」内のサンプルコードに対して、コードの動きの補足しているものだとわかるし
「警告」内の一文の、それも括弧の中に補足的に書いてあるだけだし
それもサンプルコードの終了条件に対する説明だし
0231デフォルトの名無しさん2015/09/27(日) 19:34:53.06ID:YZLivW0I
while(TRUE)
{
    ::MessageBox(NULL, _T("言い争いするところじゃないっスよー"),
_T("糞仕様は糞仕様なんだから"), MB_OK | MB_ICONEXCLAMATION);
}
0232デフォルトの名無しさん2015/09/27(日) 20:02:19.00ID:jzpWzA1C
戻り値の説明には、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は真として分類されている
0233デフォルトの名無しさん2015/09/27(日) 21:34:28.74ID:x2H664Vf
こう言う奴がプロジェクトにいると面倒だな
0234デフォルトの名無しさん2015/09/27(日) 21:59:38.37ID:zkeDatYv
BOOLが必ずしも(TRUE,FALSE)≡(1,0)を意味しないとしても、
文脈によって0以外の値が変動する戻り値にBOOL型を当てるのはやはりおかしい
TRUEがどんな値でもいいが常にその値でなければならない

しかしまあ何でこんなことになったんだろうねぇ
0235デフォルトの名無しさん2015/09/27(日) 22:13:58.95ID:jzpWzA1C
>TRUEがどんな値でもいいが常にその値でなければならない

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

>文脈によって0以外の値が変動する戻り値にBOOL型を当てるのはやはりおかしい
こっちは同意
0236デフォルトの名無しさん2015/09/27(日) 22:17:21.80ID:us1PQXsq
でも実装する側としては理解できるだろ?

あーBOOLにしちゃったけど他の情報も戻り値に含めたいなぁみたいなぁみたいな
0237デフォルトの名無しさん2015/09/27(日) 22:38:34.32ID:x2H664Vf
>>236
できねーよ
戻り値の型を int にするなりするだろ
0238デフォルトの名無しさん2015/09/27(日) 22:40:56.03ID:YZLivW0I
あの… BOOL は int ですけど。。。
0239デフォルトの名無しさん2015/09/27(日) 23:06:54.37ID:LjMVY2UB
だから宗教戦争すんなよ。

アッラーアクバル
0240デフォルトの名無しさん2015/09/27(日) 23:07:01.32ID:jzpWzA1C
そういう意味の指摘ではないと思うがな
0241デフォルトの名無しさん2015/09/28(月) 06:49:36.12ID:Rj5Nu0nM
>>238
こう言うアホはどうしようもないな…
なんの為に BOOL を定義してるのかすら理解してないんだろうな w
0242デフォルトの名無しさん2015/09/28(月) 07:07:15.77ID:oN5IJNc7
bool
0243デフォルトの名無しさん2015/09/28(月) 07:57:15.09ID:e7uUBDed
IntなのにBOOLなんて名前付けた奴がアホだろ。俺だったらbint にする。
0244デフォルトの名無しさん2015/09/28(月) 08:25:36.70ID:gscNduJW
俺ならiboolだな
0245デフォルトの名無しさん2015/09/28(月) 08:37:54.88ID:4BqA6VyM
もう少し後の時代のMSだったら
GetMessageEx を作って GetMessage を 非推奨に変えていただろう
0246デフォルトの名無しさん2015/09/28(月) 08:54:05.03ID:e7uUBDed
或いはboin がいいな
0247デフォルトの名無しさん2015/09/28(月) 13:18:19.09ID:YLupfTzg
>>243
理解しようともしないドアホだな
typedefすら否定してそうだわ
0248デフォルトの名無しさん2015/09/28(月) 13:34:04.05ID:JfTylyW8
糞仕様に迎合することをMS語では理解すると言います
0249デフォルトの名無しさん2015/09/28(月) 16:47:13.24ID:Io5caW0J
メッセージボックスのボタンが一個だけだとマウスポインタがボタンに移動しないんですけど、何が悪いんでしょうか?
0250デフォルトの名無しさん2015/09/28(月) 16:54:41.98ID:lTbRmqcc
普通は移動しないと思うが
0251デフォルトの名無しさん2015/09/28(月) 17:02:56.55ID:0jKDP4UE
設定でデフォルトのボタンに移動するようにしてるんだろ
0252デフォルトの名無しさん2015/09/28(月) 19:15:30.70ID:s/OnR4Ys
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.
0253デフォルトの名無しさん2015/09/28(月) 20:12:46.31ID:91/ACm3S
>>243 以降はネタだと思うが、>>248 は単に Windows を dis れるオレカッケー君かな w
0254デフォルトの名無しさん2015/09/28(月) 20:44:33.42ID:FF3rjUqv
>>248
0255デフォルトの名無しさん2015/09/29(火) 06:51:33.28ID:RQ7ZrE+f
そんなことより&shy;の用法について勉強になったわ
0256デフォルトの名無しさん2015/09/29(火) 19:30:39.39ID:714Z1PTP
typedefされているかどうか、enumされているか調べる方法はありますか?

質問意図。

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

例1のようなことを下記で定義してあるものに対して行いたい。
typedef int bool;
enum{false,true};
0257デフォルトの名無しさん2015/09/29(火) 19:35:28.79ID:TPU2zcec
WindowsAPIと何ら関係のない質問とは・・・
0258デフォルトの名無しさん2015/10/01(木) 21:44:10.72ID:yzt9uPit
includeの先をtypedefで全検索掛けてかたっぱしから#defineすればええ
簡単でしょ?
0259デフォルトの名無しさん2015/10/05(月) 09:53:29.16ID:PVqgELRl
dll内のダイアログリソースから文字列を「簡単に」抜き出せるAPIってありませんか?
SHLoadIndirectString みたいな感じで。

もしくはDLGTEMPLATEEX 構造体から簡単に(以下同文)
0260デフォルトの名無しさん2015/10/05(月) 14:06:09.49ID:Xe1CseJq
Googleの検索ボックスみたいに、
入力内容に応じて逐次、こちらが用意した候補を表示したいんだが
楽な実装方法ある?
便利さがあれと同程度であれば見た目はそっくりじゃなくてもいい。
0261デフォルトの名無しさん2015/10/05(月) 14:31:48.50ID:Xe1CseJq
エディットテキストとリストビューで実装してみるわ。
0262デフォルトの名無しさん2015/10/05(月) 15:36:54.33ID:PVqgELRl
>>259
ちくちくポインタ計算するしかないか……
0263デフォルトの名無しさん2015/10/05(月) 15:41:12.48ID:Gxee2tr0
>>262
そんな事せずにリソースファイルを新しく作りなさいよ
0264デフォルトの名無しさん2015/10/05(月) 17:07:33.06ID:PVqgELRl
いや例えばshell32.dll内のリソースとかだが
もう作ったからいい
0265デフォルトの名無しさん2015/10/05(月) 21:20:01.79ID:+kYnElcl
つ FindResource() & Load & Lock
0266デフォルトの名無しさん2015/10/06(火) 07:07:57.43ID:+MMTk5e6
構造体配列の内容の一部をリストビューに入れた状態で、リストビューのアイテム(行)と構造体配列の要素はどうやって対応させたらいいの?

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

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

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

ここで山田が選択されているときに、testの中の山田の要素に対応させたい。
リストビューの要素からアイテムを取得して自力でtestを検索しても、28歳の山田が2人いれば判別つかなくてアウト。
リストビューに見えないようにIDを仕込めれば解決するが、できないみたいだ。
0267デフォルトの名無しさん2015/10/06(火) 08:10:35.92ID:RmS10x6f
LVITEMのlParamあたりに構造体へのポインタでもしこんどけよ
0268デフォルトの名無しさん2015/10/06(火) 15:32:28.15ID:+MMTk5e6
>>267
マジでありがとう!
そういう情報が欲しかった!
その情報を元に調べたら色々出てきた!
何とかできそうだ!

https://msdn.microsoft.com/en-us/library/windows/desktop/bb774760(v=vs.85).aspx
http://www.g-ishihara.com/mfc_lc_06.htm
0269デフォルトの名無しさん2015/10/06(火) 15:50:07.83ID:uga0EVZs
ブラウザのような選択できるテキストをDirectWriteで描画するにはどうすれば良いでしょうか?
DirectWriteのサンプルだと文字を選択できないしエディットコントロールだとどこでDirectWriteを噛ませればいいか分かりません
0270デフォルトの名無しさん2015/10/06(火) 19:44:04.77ID:RIAMP3y9
>>268
reallocでハマらないようにね
0271デフォルトの名無しさん2015/10/07(水) 20:43:54.09ID:olmGB7G8
>>269
DirectWriteはDrawTextと比べて特別速いという印象はなく
ほぼ同じぐらいの速度だったように記憶しているので
普通にエディットコントロールを使えばいいと思う
どうしてもDirectWriteが使いたければWPFを使えば
勝手にDirectWriteを使ってくれるかもしれないね
ただしWPFはスレチなんでWPFを使うならスレを移動してね
0272デフォルトの名無しさん2015/10/07(水) 20:45:06.18ID:5JMb1/3S
パフォーマンス重視ならDirectTKのSpriteFont一択
0273デフォルトの名無しさん2015/10/07(水) 20:50:51.43ID:olmGB7G8
ここだけの話、Win32API最大の汚点は
ウィンドウプロシージャの引数にインスタンスポインタが無いことだよな
初心者が必ず疑問に思う点だし
必ず必要と言っていいデータなのにウィンドウ作るたびに毎回
SetWindowSubclassとかSetWindowLongPtrとか
設計ミスだよね

でも本当の汚点はLOWORD、GET_X_LPARAM、など16bit幅のアレやコレかもしれない
0274デフォルトの名無しさん2015/10/07(水) 21:02:21.93ID:gQOBln3k
WinMainの第二引数とか
0275デフォルトの名無しさん2015/10/07(水) 21:23:55.22ID:DDTC7KB4
うん十年前の設計上の問題をSetWindowSubclassの
呼び出しひとつ程度で解決できるなら別にどうでも
0276デフォルトの名無しさん2015/10/07(水) 21:35:42.36ID:6dKnmfm7
>>273
ウインドウハンドルがあるじゃん
0277デフォルトの名無しさん2015/10/07(水) 21:50:45.60ID:7k7eABWe
ここだけの話とか馬鹿じゃねーの
そんな後出しジャンケンオナニーレスなんて自分の秘密鍵付きノートにでも書いとけよ
0278デフォルトの名無しさん2015/10/07(水) 22:38:04.21ID:0FYyDCxK
しゃべり場か
0279デフォルトの名無しさん2015/10/07(水) 22:48:18.06ID:ItwNCUpp
チョベリバだろう(すでに死語の世界)
0280デフォルトの名無しさん2015/10/07(水) 23:28:39.54ID:gQOBln3k
秘密鍵って用語の使い方が変なのがいるな
0281デフォルトの名無しさん2015/10/07(水) 23:41:15.18ID:diu86Nw7
それ以前の問題のような気がするが
0282デフォルトの名無しさん2015/10/08(木) 00:54:08.31ID:08uRUrkN
返信ありがとうございます
vimのソースコードを見てみたところ文字ごとに色を変えているようでした
なので、エディットコントロールのようなものも自分で実装したいと思います
0283デフォルトの名無しさん2015/10/08(木) 13:22:45.90ID:jZEKLa+0
どこの誰かは知らんが
や め て お け
リッチエディットコントロール的なものを使えばいいんじゃないかと
0284デフォルトの名無しさん2015/10/08(木) 14:02:16.80ID:9yien46K
>>273
一体どんな馬鹿が設計したらこんなヘンテコな仕様になるんだろうと今でも思うよWin32API
0285デフォルトの名無しさん2015/10/08(木) 16:51:02.24ID:66tpBgx2
リボン (CLSID_UIRibbonFrameworkで作るやつ) で
日本語のラベルが改行されるのを抑制する方法ってわかります?
「Open」なら1行なんだけど、「開(改行)く」と縦書きみたいになっちゃう。
非アルファベットのワードブレーク処理が期待する動きではない感じ。

語末に全角スペースを追加する誤魔化しは使いたくないです。
0286デフォルトの名無しさん2015/10/08(木) 20:49:08.25ID:9MeqRRt4
>>284
Win32APIに限らず、Microsoftの提供するAPIは首を傾げるものが多いな。
本当に頭いいヤツが入社してるんだろうか・・・?
0287デフォルトの名無しさん2015/10/08(木) 20:51:55.26ID:7AIOKY49
逆に並べるのが好きな奴はいるな
VFAT、BMP、LINQ、等々
0288デフォルトの名無しさん2015/10/08(木) 21:35:51.12ID:1TGlpU6G
倒立ビットマップとかいらねーし
0289デフォルトの名無しさん2015/10/09(金) 00:36:37.21ID:hQOu+a4V
頭のいいやつが設計したからWin95で作ったアプリが未だに動くんだろ。
どっかの糞OSなんてバージョンアップのたびに動かなくなるぞ。
0290デフォルトの名無しさん2015/10/09(金) 01:02:33.88ID:m6l+7vgz
初期の設計が良かったからというよりは
その後の改築に頭を使い続けたという雰囲気だが
64bit化やDWMは頑張ったのでは
0291デフォルトの名無しさん2015/10/09(金) 11:48:17.82ID:vp8UwouF
そうだなあ
開発側もその都度API仕様が変更されると死ぬし
0292デフォルトの名無しさん2015/10/09(金) 12:41:13.75ID:yBCegUEL
CreateFileでFILE_FLAG_OVERLAPPED 指定ありで開いているファイルに対して(CloseHandleせずに)CopyFileで上書きしても問題ないでしょうか?
(システムで問題が起きた時にファイルを閉じることなく、事前に退避しておいたファイルに戻したいです。)
0293デフォルトの名無しさん2015/10/09(金) 13:15:28.85ID:mu8Iv9Yi
>>292
たぶん期待している動作にはならない
おそらくFILE_SHARE_DELETEについて調べると良いと思われる
0294デフォルトの名無しさん2015/10/09(金) 13:32:02.08ID:qYdPFK/f
なんで作業中は別ファイルでやっておいて最後に上書きしないの?
0295デフォルトの名無しさん2015/10/09(金) 13:48:37.07ID:oOXSiJnl
面倒くさいから
0296デフォルトの名無しさん2015/10/09(金) 14:01:37.94ID:SqKziDAZ
本当は、上書きも危ないので、

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

最後に、元のファイルを削除する
0297デフォルトの名無しさん2015/10/09(金) 14:22:05.37ID:qYdPFK/f
その手順だと、元のファイル名のファイルが作成途中で他から参照される
タイミングがあるからお勧めできないと思う…
0298デフォルトの名無しさん2015/10/09(金) 17:40:13.90ID:uuceUKZS
>>286
たいていの疑問はthe old new thingに書いてる
0299デフォルトの名無しさん2015/10/09(金) 18:50:43.73ID:mhM1aSp5
MCIについての質問スレが見当たらないけどここでいい?
0300片山博文MZ ◆T6xkBnTXz7B0 2015/10/09(金) 19:22:23.07ID:W40lUqcY
>>299
おk
0301デフォルトの名無しさん2015/10/09(金) 21:30:52.86ID:oggkbSfr
>>298
old newの作者がヘンテコなwin32api作った犯人なのか?
0302デフォルトの名無しさん2015/10/09(金) 22:30:53.93ID:McJpsKEc
上書きいくない
オリジナルはきちんと連番の隠し属性にして隠しとくべきですう
0303デフォルトの名無しさん2015/10/10(土) 12:01:31.39ID:wZWPBuKi
俺はNTFSの 代替ストリームに突っ込むことにしている
まずバレ無いよ
0304デフォルトの名無しさん2015/10/10(土) 12:54:07.63ID:/egW/Cb1
間違ってコピー時に消してロストですね
0305デフォルトの名無しさん2015/10/12(月) 02:12:30.20ID:Y1aqG/NX
>>286
頭いいけど、ちょっと斜め上を行ってるだけなんだよきっと
0306デフォルトの名無しさん2015/10/12(月) 10:30:51.96ID:dOqq0AtQ
Windows 8, 8.1, 10 だと Win32 には新機能は追加されてなさそう?
検索してもあんまり出てこない
Win32というよりもWindowsプログラミング自体の話題が減っている気もするけど……
0307デフォルトの名無しさん2015/10/12(月) 11:58:32.65ID:GW+oKPBf
みんなWEBプログラマー目指してるんだろうね
子供プログラミング教室とかそんなのばっかり
そしてそこから踏み出すこともない
0308デフォルトの名無しさん2015/10/12(月) 12:00:54.79ID:ntYAJ4A2
お前の領分を食われないのは好都合だろ
何をやっかんでいる
0309デフォルトの名無しさん2015/10/12(月) 13:42:42.03ID:0aVLwZvg
スマホアプリだろ。
0310デフォルトの名無しさん2015/10/12(月) 14:11:22.42ID:QD0vOYoj
というかWin8RTだした時点で.NET+HTML5ベースのOSへの移行を目論んでたんでしょ。
RTが受けなかったのでWin32世代の互換性を強化してるけど、いまだ諦めてないと思うね。
企業ユースが.NETに移行できるように、WEBサービス強化を優先的にやってるし

その時、ひょっとすると端末側のOSはLinuxということもありうるだろうし、場合によっては
OSをハードウェア化してHTML5が動作すればいい程度になってる可能性もある。
0311デフォルトの名無しさん2015/10/12(月) 14:18:15.92ID:GN4/i3DY
>>306
普通に8以降もWin32APIはどんどこ追加されてるよ
各カテゴリのWhat' Newなんちゃらとかにまとまってる時もあるけど
.NETやらWinRTやらの土台としての扱いなのかおざなりなドキュメントが多いな
0312デフォルトの名無しさん2015/10/12(月) 15:52:31.97ID:DSHcQooM
MSからしたらWin32APIを捨てるメリットがまるでないんだよね
0313デフォルトの名無しさん2015/10/12(月) 17:00:02.70ID:GAOSSbAR
画像サイズを縮小する方法、ご存じありませんか?
0314デフォルトの名無しさん2015/10/12(月) 17:01:31.57ID:nie80ABu
StretchBlt()
0315デフォルトの名無しさん2015/10/12(月) 19:38:20.65ID:zL9czuyO
自分が作成したアプリのウィンドウの上に
他のアプリが重なっているか確認したいんですけど
EnumWindowsかGetWindowで列挙したウィンドウの矩形をいちいち取得し
自ウィンドウと重なっているか判定するといった手順より
簡単な方法があったりするでしょうか?
0316デフォルトの名無しさん2015/10/13(火) 04:37:06.38ID:9NxpwIPd
一つのプログラム内でCreateWindowを使って複数のウインドウを開いているときに、
いずれかのウインドウでダイアログ(ファイルを選択するダイアログとか)を開くと、
ダイアログを開いたウインドウはダイアログが閉じられるまで前面にも来ず、ユーザーは操作もできなくなります。
しかし、ダイアログを開いたウインドウ以外のウインドウは操作できますし、クリックすればダイアログより前にも来ます。
ダイアログを開いたウインドウ同様に他のウインドウも操作を受け付けないようにしたいのですが、そういう設定はないのでしょうか。
ダイアログ表示前後に他ウインドウへの操作を無効にするコードをゴリゴリ書いてもいいのですが、何か設定ができるならそちらを使いたいです。
同じプログラム内で作られたウインドウなら何か設定がある気がします。
0317デフォルトの名無しさん2015/10/13(火) 05:00:16.14ID:IpNepCXz
コモンダイアログを開く前に、それの親となるウィンドウを CreateWindow し、
そいつの WM_CREATE タイミングでコモンダイアログを呼べば?
0318デフォルトの名無しさん2015/10/13(火) 07:26:53.27ID:WAwM6nXZ
>>315
いちいち取得し判定するしかないと思うよ。めったにない需要だし。

>>316
親ウィンドウ
├他のウィンドウ
└ダイアログ
という親子関係にすれば良いのでは?
0319デフォルトの名無しさん2015/10/13(火) 08:13:32.00ID:L59Au/Rr
かつて DOSのサブシステムだった Win3-4 が 母屋を乗っ取ったように
Win32もステラルヒが来るのだ
0320デフォルトの名無しさん2015/10/13(火) 10:17:12.50ID:qKlLexPE
DOSのサブシステムという位置づけで作られたのはdosshellだよ

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

実際、OS/2の出足の鈍さがすごかったろ
マルチタスクとプロテクトメモリは欲しかったけど
HDDをフォーマットする必要があったのが最大のネックで
0321デフォルトの名無しさん2015/10/13(火) 11:20:20.25ID:oaoMXMKz
ふむ、WindowFromPointも出てこんか
相変わらず初心者が馴れ合ってるだけの程度の低いスレだな
ざっと見渡しても質問に対してピンポイントに正解を答えてるレス無いもんな
質問の意味すら理解できん馬鹿ばっかなんだろうな
質問するだけ時間の無駄だわ
0322デフォルトの名無しさん2015/10/13(火) 11:33:32.82ID:WPI+iK8W
え、>>315を解決するために
自ウィンドウの全てのピクセルに対して、WindowFromPointを呼ぶの?
640x480のウィンドウだったとしても30万回もコールしなきゃならんわけだが
これが君の言うピンポイントの回答なの?
0323デフォルトの名無しさん2015/10/13(火) 12:08:05.88ID:HOdVfJRd
" c:\\aaaa\\bbbb \\ cc cc\\dddd "
↓
"c:\\aaaa\\bbbb\\cc cc\\dddd"

というように、階層ごとに前後の空白を削除する方法は、
Path〜関数や、それらの組み合わせなどでありませんでしょうか。
0324デフォルトの名無しさん2015/10/13(火) 12:17:02.30ID:WPI+iK8W
正規表現を使えばよいんじゃね?
0325デフォルトの名無しさん2015/10/13(火) 12:44:50.23ID:9UjSekpe
正規表現APIを教えれ
0326デフォルトの名無しさん2015/10/13(火) 14:48:20.02ID:3EVIu19y
>>321を晒しあげ

ところでListViewのワーキングエリアって使われてるのを見たことある?
0327デフォルトの名無しさん2015/10/13(火) 14:53:08.71ID:e0HEbvMz
偉そうにしといて、これは恥ずかしいw
0328デフォルトの名無しさん2015/10/13(火) 14:56:14.54ID:1nentuZe
TreeViewに表示される横スクロールバーを削除するのおしエロ下さいよ
0329デフォルトの名無しさん2015/10/13(火) 15:17:05.76ID:DtroG4QR
>>328
WS_HSCROLLスタイルを削除
0330デフォルトの名無しさん2015/10/13(火) 15:28:45.54ID:gLNTLW9u
TVS_EX_AUTOHSCROLL
0331デフォルトの名無しさん2015/10/13(火) 15:32:00.28ID:1nentuZe
どやって
0332デフォルトの名無しさん2015/10/13(火) 15:38:19.73ID:1nentuZe
GetWindowLongでGWL_STYLE取って
WS_HSCROLLとTVS_EX_AUTOHSCROLLのビット落としてSetWindowLongしてもダメでした
やり方間違ったんかな全然違ったなかな
0333デフォルトの名無しさん2015/10/13(火) 15:43:04.02ID:gLNTLW9u
::SendMessage(hWnd, TVM_SETEXTENDEDSTYLE, 0, TVS_EX_AUTOHSCROLL);
0334デフォルトの名無しさん2015/10/13(火) 16:00:20.58ID:1nentuZe
>>333
ソースありがとうございます。
しかしやはりスクロールバー消えてくれないです。

C++BuilderXE8なのですが、自動(TreeViewの幅変更)で表示ON/OFFしちゃうから
そのアレで勝手に表示されちゃうんのかなあ
0335デフォルトの名無しさん2015/10/13(火) 16:04:54.55ID:gLNTLW9u
ちなみに Vista 以降
0336デフォルトの名無しさん2015/10/13(火) 16:08:51.48ID:1nentuZe
Win7です^^
0337デフォルトの名無しさん2015/10/13(火) 16:14:31.66ID:gLNTLW9u
じゃ、単に TreeView の Windows スタイルに TVS_NOHSCROLL を追加してないだけかな
0338デフォルトの名無しさん2015/10/14(水) 05:52:00.33ID:Z0PqNaXB
>>322
いるよねー、文句言うだけで建設的な発言できない奴って
さすが初心者が簡単な質問に答えて俺スゲーするだけの程度の低いスレ民の意見だわ
君は1x1のウィンドウを想定して30万回コールすればいいやん
0339デフォルトの名無しさん2015/10/14(水) 07:48:26.80ID:HVSBvHHm
>>338
ぜひ君の「建設的な発言」を聞かせて欲しい。
まぁそれには、1x1のウィンドウに対応できない不具合があるんだろうがな。

元の質問が「重なっているか確認」でなく「自分が最前面である保証」なら
色々とやり方もあるのかもしれないが、それはまた別の話。
0340デフォルトの名無しさん2015/10/14(水) 08:19:36.28ID:UG0pkAng
ほかに方法がないのならどんな案でも建設的なんだろうけど、>>315の質問は
「全ウィンドウ列挙して矩形の重なりで判定するより簡単な方法はあるか?」だからなぁ。
0341デフォルトの名無しさん2015/10/14(水) 09:14:39.32ID:OmtAhGc1
それが充分に簡単な方法なんだが
0342デフォルトの名無しさん2015/10/14(水) 11:02:20.59ID:oRHV6ndY
まさかあれだけ恥ずかしい発言をしておいて
複数人から晒し上げにされたのに
のこのこ出てきて更に煽るとはね
0343デフォルトの名無しさん2015/10/14(水) 11:35:51.39ID:EGTHNy+H
画面キャプチャして自分のウィンドウのクライアント領域のキャプチャ画像と比べたらどうだろう
md5とかで比較でも良いし
0344デフォルトの名無しさん2015/10/14(水) 11:46:04.64ID:oRHV6ndY
md5で比較する意味は有るの?
自分のウィンドウのクライアント領域のビットマップが
常に固定ならmd5を計算しておく意味も少しは出てくるが
普通は都度都度に刻々に変化するものなのではないかね
更にmd5を算出するには全てのピクセルを読まなきゃダメなんじゃないの?
普通に単純に頭からピクセル同士を比較していくやり方なら
違っていた時点で早期打ち切りが出来るわけだが
0345デフォルトの名無しさん2015/10/14(水) 12:02:16.92ID:8Sy25YjX
自分のウィンドウのクライアント領域のビットマップが常に固定かどうかは >315 の条件に含まれていないね
0346デフォルトの名無しさん2015/10/14(水) 12:17:16.46ID:oRHV6ndY
仮に自ウィンドウが固定だったとしても、
画面キャプチャのほうは毎回md5を計算するために
嘗め回さなければならないでしょう
早期打ち切りが出来ない分、不利では?
0347デフォルトの名無しさん2015/10/14(水) 12:42:21.24ID:8Sy25YjX
ラスタ毎のmd5とかを記録しとけば打ち切りにも対応可能
0348デフォルトの名無しさん2015/10/14(水) 12:45:42.57ID:8Sy25YjX
ちなみに
「簡単な方法」の定義があいまいだけど
目的が速度が速いのを目指したいなら
手順が簡単かどうかよりも
API呼ぶ回数が少ない方が有利だと思います
0349デフォルトの名無しさん2015/10/14(水) 12:59:23.41ID:oRHV6ndY
でも、画面キャプチャのmd5を計算する箇所で
普通に自ウィンドウのクライアント画像と比較をすれば
よくね?
0350デフォルトの名無しさん2015/10/14(水) 13:11:26.25ID:8Sy25YjX
その方が速いんならそれでいいよ
だれも否定はしていないはず
0351デフォルトの名無しさん2015/10/14(水) 14:29:56.75ID:LplWxa35
知らないならレスしないで下さい。ウザいだけです。
0352デフォルトの名無しさん2015/10/14(水) 15:11:41.07ID:PR+BbI9O
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への更新が、いちど非表示に入れたのにまた出ていること。
しかもデフォルトでインストールにチェックが入っているし。
さすがにここまで来ると悪質だ。
標準がオフで目につくというだけなら、ここまでいらだちはしないのだが…。
0353デフォルトの名無しさん2015/10/14(水) 15:37:17.44ID:oRHV6ndY
MSはゲイツが居なくなってから本当に酷いな
普通の会社ならとっくに見放されてる
VWはちょっと悪戯しただけで、あのざま
環境問題なんか消費者には関係ないし
燃費が伸びるのなら寧ろ良いと考える人も要るだろう
一方でソフトウェアは互換性という資産に守られているから
全くのやりたい放題だな
北の将軍様レベルで無茶苦茶されても
過去の資産を盾にされて、逃げる事ができないね
0354デフォルトの名無しさん2015/10/14(水) 16:24:18.77ID:JRiou96q
おいおいいつからポエム披露場になったんだここは
0355デフォルトの名無しさん2015/10/14(水) 16:28:32.54ID:PR+BbI9O
チラシは日記の裏に
0356デフォルトの名無しさん2015/10/14(水) 16:42:08.70ID:OmtAhGc1
EnumWindowsに渡す関数は1発書けばそれまでだし、
RECTの当たり判定くらい汎用ライブラリ化してねーやつはモグリってだけ
0357デフォルトの名無しさん2015/10/14(水) 18:06:17.54ID:78XEzKH1
ゲーム作りたいんですけどwin32ってどうなんですか?古い?
DirectX?のほうがいい?
0358デフォルトの名無しさん2015/10/14(水) 18:14:11.00ID:HVSBvHHm
>>356
このスレ的には IntersectRect を使うべきだろう
0359デフォルトの名無しさん2015/10/14(水) 18:18:51.71ID:OmtAhGc1
まあそうだ
0360デフォルトの名無しさん2015/10/14(水) 18:21:28.05ID:j19XNlRE
>>357
OpenGL/WebGLおぬぬめ
0361デフォルトの名無しさん2015/10/14(水) 18:41:37.35ID:78XEzKH1
>>360
おぬぬめ言われてもそれ理解するのに果てしなく時間がかかりそう
0362デフォルトの名無しさん2015/10/14(水) 18:51:35.80ID:JRiou96q
あなたならどれに手を出しても変わらないよ
…これだと良い方にも悪い方にも受け取れるな
03633162015/10/14(水) 19:12:32.49ID:kP0Tau7M
>>317-318
ありがとうございます。

ちょっとよく分かりませんが、>>317氏のはその言葉通りにコード書けば期待通りの動作になるんでしょうか。
どういう原理で期待通りの動作をするのか分かりませんがやってみます。
>>318さんのはメインの親ウインドウ以外のウインドウにWS_CHILDを設定せよということでしょうか。
WS_CHILDを設定すると親ウインドウの領域からそのウインドウが出られないから外したのですが。
0364デフォルトの名無しさん2015/10/14(水) 19:16:49.44ID:oRHV6ndY
>メインの親ウインドウ以外のウインドウにWS_CHILDを設定せよということでしょうか。

違うと思います
0365デフォルトの名無しさん2015/10/15(木) 00:49:31.57ID:VpGjS7sW
>>361
win32+directx12でいいんでね?
最新だぞ最新
まあwin32部分はウィンドウ出すだけで残りのdirectxがほとんどだけどね
0366デフォルトの名無しさん2015/10/15(木) 01:06:47.38ID:whFEoHyO
お前鬼畜wwww
0367デフォルトの名無しさん2015/10/15(木) 11:03:19.33ID:bdlPZJI1
「SHA-1の廃止前倒しを」 専門家チームが提言
http://www.itmedia.co.jp/enterprise/articles/1510/09/news054.html

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

 SHA-1は以前から脆弱性が指摘され、MicrosoftやGoogleなど主要ブラウザメーカーや電子証明書の発行機関が段階的な廃止に向けたスケジュールを公表している。
0368デフォルトの名無しさん2015/10/15(木) 18:00:29.14ID:bdlPZJI1
環境汚すからな
0369デフォルトの名無しさん2015/10/16(金) 14:29:12.49ID:IIEWzpZc
SPY++であるウィンドウに来るメッセージを覗いてて
R(Return)だけが観察されるというのはどういう状況が考えられますか?
普通はSendされるメッセージです。
0370デフォルトの名無しさん2015/10/17(土) 17:36:45.64ID:HFus6TsS
>普通はSendされるメッセージです。
これは当たり前でしたね……
0371デフォルトの名無しさん2015/10/18(日) 11:00:40.65ID:vJDQVwJW
そうでもない
0372デフォルトの名無しさん2015/10/18(日) 17:30:31.18ID:hcyPsAl4
Spy++がSendされたメッセージを捉えるのはどうやってるんだろう
SendMessage系のAPIをフックしてるのかな?
それとも
SetWindowsHookExでWH_CALLWNDPROC/WH_CALLWNDPROCRETでグローバルなフックをかけてるの?

Returnだけが観察されたことと関係してるかな?
0373デフォルトの名無しさん2015/10/18(日) 17:58:11.54ID:fswpyLwB
Windows SDK の 6 あたりにソースついてなかったっけ、Spy++
0374デフォルトの名無しさん2015/10/18(日) 18:09:14.26ID:81sora9Q
DLLインジェクションかな
0375デフォルトの名無しさん2015/10/18(日) 21:32:04.08ID:P1RRHvzY
>>373
何気に有用な情報
0376デフォルトの名無しさん2015/10/18(日) 21:40:15.64ID:1MrL9p77
>>373
そーっすか?!
thx!
0377デフォルトの名無しさん2015/10/19(月) 22:57:12.18ID:cIYsWzpl
オーナードローのスプレッドシートを作っています。
セルの編集をする際、セルの位置にEditControlを作り、入力完了後に削除し
表に反映する手法をとっているのですが、この手法についてどう思いますか。

キャレットが出ていない状態(セルの選択状態)からの日本語入力の際
自分のマシンでは問題は起きないのですが、他のマシンでは予期せぬ入力が
される事があります。実装ミスだとは思うんですが、より良い設計があるのでは
と思っての質問です。
0378デフォルトの名無しさん2015/10/20(火) 10:41:35.61ID:TzbTJ/Sf
コモンコントロールのListViewとかはそういう実装だわよね
0379デフォルトの名無しさん2015/10/20(火) 13:41:26.89ID:3vGCFixJ
VS2013でビルドしたら
GetModuleFileNameがC:\aaa\bbb\ccc\..\..\..\out見たいの吐くんだが
これに*.extを追加してFindFirstFile呼ぶとエラーになる。

どうすればいいんだ
0380デフォルトの名無しさん2015/10/20(火) 13:42:54.85ID:xP4cg3Iy
\\
03813792015/10/20(火) 13:48:37.15ID:3vGCFixJ
すまんエラーはにはならなかった。
03823772015/10/20(火) 18:05:53.18ID:z+IONYCc
>>378
レスありがとうございます。
ListViewが編集可能なのを何故か忘れてましたw
ちょっとサンプルを漁ってみたところ、EditBox表示後に
入力を受け付けるのばっかりで、ちょっと残念。
Excelみたいに子ウィンドウのない状態からでも入力を
受けたかったのですが、方向性は間違ってなかったぽいので
もうちょい頑張ってみます。
0383デフォルトの名無しさん2015/10/21(水) 09:18:14.97ID:jQM6AnWx
リストビューで思い出した。

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

過去、オーナードローで実現できないか試行錯誤して断念したことがあります。
0384片山博文MZ ◆T6xkBnTXz7B0 2015/10/23(金) 18:41:00.13ID:/zhY2mEN
//フレームレートを表示
static DWORD dw0 = 0;
DWORD dw1 = GetTickCount();
printf("\r%luHz ", 1000 / (dw1 - dw0));
dw0 = dw1;
...
このコード、どう思います?
0385デフォルトの名無しさん2015/10/23(金) 18:56:09.27ID:3PXVM0Vu
0で割るかも知れないね
0386デフォルトの名無しさん2015/10/23(金) 18:56:41.12ID:ogfwTZEM
アカンと思います
0387デフォルトの名無しさん2015/10/23(金) 19:05:18.92ID:g6RvQfmz
急いで0で割れ
0388片山博文MZ ◆T6xkBnTXz7B0 2015/10/23(金) 19:25:03.75ID:/zhY2mEN
皆さん、有り難う御座います。
ゼロ除算になりそうなときは非表示にすると行けそうですね。
0389デフォルトの名無しさん2015/10/23(金) 19:26:43.65ID:h7v1F5gE
片山先生にも分からない事があるのか!
0390デフォルトの名無しさん2015/10/23(金) 20:21:07.65ID:ded5JV/s
dw1 - dw0が0になることはあるのか?
ループにsleepもなくぶんまわすとかしなけりゃ起きない
逆にそういう場合には起きる
文脈による
0391デフォルトの名無しさん2015/10/23(金) 20:29:44.41ID:E9Sd6aCq
一回目のGetTickCountがたまたま0だったら0で割る事になるし
そうじゃなくても1000Hz以上の速度で動いたら0で割る事になるね
内容にもよるけど、1000Hzぐらいは普通にありえる範囲だよねぇ
0392デフォルトの名無しさん2015/10/23(金) 21:30:58.46ID:CrI38Gq0
>>390
> ループにsleepもなくぶんまわすとかしなけりゃ起きない

49日ちょいでラップするから、その考えは浅すぎる
0393デフォルトの名無しさん2015/10/23(金) 21:37:01.60ID:ded5JV/s
>>392
49日とか関係なしに連続で同じ値が出るなんてそれこそ1000Hzないとないだろ
0394デフォルトの名無しさん2015/10/23(金) 21:40:53.46ID:ded5JV/s
うおおDWORDか
浅すぎて新島が誕生するレベルだったよ・・・
0395デフォルトの名無しさん2015/10/23(金) 21:47:41.71ID:1FmkefyV
コントやめろ
0396デフォルトの名無しさん2015/10/23(金) 21:53:44.01ID:ded5JV/s
だがちょっと待ってほしい
unsigned って1 - 2 = 0だったか?
0397デフォルトの名無しさん2015/10/23(金) 21:58:07.21ID:h7v1F5gE
>>395
初心者なんで、どの辺りが笑いどころかサッパリ分かりません
0398デフォルトの名無しさん2015/10/23(金) 22:06:11.62ID:E9Sd6aCq
なんか急にスレのレベルが急降下しているような
0399片山博文MZ ◆T6xkBnTXz7B0 2015/10/23(金) 22:14:50.12ID:/zhY2mEN
頻繁にフレームレート更新を繰り返すと、タイトルバーが
ちらつくので、1秒ごとにフレームレートの平均値を表示してくれ、
とのことです。できますか?
0400デフォルトの名無しさん2015/10/23(金) 22:32:30.30ID:E9Sd6aCq
お前本当にバカだな
一秒間の間に何回フレームが更新されたか数えて表示すればよいだけだろ
FPSの定義そのものだ
0401デフォルトの名無しさん2015/10/23(金) 22:34:47.28ID:ded5JV/s
ドヤッ

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;
}
0402デフォルトの名無しさん2015/10/23(金) 22:40:23.49ID:ded5JV/s
>if( dw0 >= 1000 ){

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

憑かれているようだ吊ってくる・・・
0404デフォルトの名無しさん2015/10/24(土) 04:06:02.84ID:7oDBCbbL
>>401-403
dw = dw1 - dw0;
だけで十分。
ラップアラウンドしても問題無い。
0405デフォルトの名無しさん2015/10/24(土) 06:14:20.31ID:1uTcqIZi
dw0が常に0なんだが意味あんのか
0406片山博文MZ ◆T6xkBnTXz7B0 2015/10/24(土) 07:46:57.94ID:E5/Z8Xm5
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;
}
0407デフォルトの名無しさん2015/10/24(土) 09:02:02.42ID:ddZkBitk
>>404
なるほど〜

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で覚えといたほうがいいな・・・
0408デフォルトの名無しさん2015/10/24(土) 17:42:31.85ID:FPe1odjO
GetTickCount では分解能がどうのこうのって問題は無いの?
だからといって timeGetTime 使っても大差無さそうだけど。
0409デフォルトの名無しさん2015/10/24(土) 17:50:12.21ID:JWOZBggM
1sを計るのに1msの分解能で不都合があると思えない
0410デフォルトの名無しさん2015/10/24(土) 17:50:36.95ID:VnqcBtM+
http://y-okamoto-psy1949.la.coocan.jp/VCpp/checktime/

>GetTickCountは分解能が悪い、QueryPerformanceCounterを使うべきである
0411デフォルトの名無しさん2015/10/24(土) 17:53:41.55ID:VnqcBtM+
今どきなら、std::chronoを使った方がクールじゃね?
0412デフォルトの名無しさん2015/10/24(土) 18:33:54.83ID:niXzNvfm
>>408-409
サンプリング定理では対象の2倍の周波数があればいいことになってるな
0413デフォルトの名無しさん2015/10/24(土) 18:46:57.38ID:E5/Z8Xm5
分解能の低いアナログ時計よりも原子時計を使いましょう
0414デフォルトの名無しさん2015/10/27(火) 21:51:46.93ID:aTkGcr+4
水素メーザーだろjk
0415デフォルトの名無しさん2015/10/27(火) 22:01:44.22ID:ksuKqf7O
腹時計で十分
0416デフォルトの名無しさん2015/10/27(火) 22:04:34.96ID:I14zLtiA
"ごくごく低確率でも問題があるかもしれない"ならばなんらか対策するべきだと思う。
そういうコードがあちこちにあると、どれか一つ考えぬけとかでバグが顕在化するから。
しかも再現率低くて問題箇所の発見が非常に困難になる場合があるし。
04173792015/10/27(火) 22:11:39.82ID:cfkfKsSk
外から例外でくくればいいな
なかでごちゃごちゃやると遅くなる
0418デフォルトの名無しさん2015/10/28(水) 13:41:57.74ID:9zUX3+we
>>379
キサマは再帰でファイル削除するときに範囲外までぶっ壊すタイプだ
0419デフォルトの名無しさん2015/10/28(水) 20:55:38.12ID:DIDF3JCG
システムディレクトリのパスを得るために、パスの格納先であるクラスメンバのTCHAR型の配列を

GetSystemDirectory(Path, MAX_PATH + 1);

この様に渡すと、アクセス違反が発生するんですが
何故アクセス違反になるのか原因がさっぱり分かりません。
C++のクラスを使ったプログラミングはこれが初めてです。
0420デフォルトの名無しさん2015/10/28(水) 21:13:30.20ID:bZn9m5X1
Path 自体はどう宣言しているの?

普通なら

TCHAR Path[MAX_PATH + 1];
…
GetSystemDirectory(Path, MAX_PATH);

じゃね?
0421デフォルトの名無しさん2015/10/28(水) 21:31:49.85ID:DIDF3JCG
>>420
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メッセージをハンドルする際に実行しています。
0422片山博文MZ ◆T6xkBnTXz7B0 2015/10/28(水) 21:39:19.05ID:5FN/U/Ps
WndProcの型が違う。
WndProcをstaticにするか、クラスの外に出せ。
0423デフォルトの名無しさん2015/10/28(水) 21:39:24.41ID:UJXuJHMq
WndProcもstaticじゃないの?
0424デフォルトの名無しさん2015/10/28(水) 21:46:47.48ID:DIDF3JCG
>>422>>423
WndProcはstaticではありません。
staticにするとメンバのアクセスに制限があるそうなのでstaticにしていませんでした。
試してみます。
0425デフォルトの名無しさん2015/10/28(水) 21:51:39.30ID:gVmYV2et
>>421
static LRESULT CALLBACK HookProc LRESULT CALLBACK HookProc
には何でstatic つけているの?
で、TCHAR Path[MAX_PATH + 1]; はにはなんでstaticないの?
0426デフォルトの名無しさん2015/10/28(水) 21:52:32.96ID:DIDF3JCG
予想通りWndProcをstaticにすると静的ではないメンバへのアクセスができませんでした。
>>422さんが仰るとおり、WndProcをクラスの外に出すしか方法がないようです。

折角クラス化してスマートに書けると思っていたのに
まどろっこしいですね・・・。
0427片山博文MZ ◆T6xkBnTXz7B0 2015/10/28(水) 21:53:01.80ID:5FN/U/Ps
WM_CREATEのときにメッセージ経由でWndProcにポインター引数を渡す方法がある。
詳しくはWM_CREATEとCreateWindowを参照。
0428片山博文MZ ◆T6xkBnTXz7B0 2015/10/28(水) 21:57:08.81ID:5FN/U/Ps
ポインター引数を関数内static変数に保存しておくか、
SetWindowLongPtrでウィンドウハンドルと関連付けするか、
自前でハンドルマップを用意するか
0429デフォルトの名無しさん2015/10/28(水) 21:57:42.68ID:gVmYV2et
>>426
そして、クラス内のTCHAR Pathにアクセスすると
0430デフォルトの名無しさん2015/10/28(水) 21:58:44.54ID:DIDF3JCG
>>425
なんかウィンドウプロシージャをクラス内に内包して使うには
staticなフック用のプロシージャ関数と実際の処理内容を書くプロシージャのふたつが必要なみたいなんです。
この場合、HookProc内でWndProcを呼ぶ形になります。

TCHAR型の配列をstaticにしていないのはWndProc内から参照できるようにするためです。
って、これはどっちでも参照できますね・・・。
普段やり慣れていないことをするとどうも頭が回らなくなってしまう。
0431デフォルトの名無しさん2015/10/28(水) 22:02:36.33ID:DIDF3JCG
メンバ変数を全部staticにしてしまうのが一番手っ取り早いかもしれない。
やってることがC言語で書いてた時と変わってない気がするけど。
0432片山博文MZ ◆T6xkBnTXz7B0 2015/10/28(水) 22:04:32.58ID:5FN/U/Ps
ウィンドウのインスタンスが複数あれば全部staticにすることはできない。
0433デフォルトの名無しさん2015/10/29(木) 05:31:45.36ID:BoW22xta
元の質問はGetSystemDirectoryだからまずそれが正しく動作することを確認
0434デフォルトの名無しさん2015/10/29(木) 09:01:57.91ID:IDJmDfji
>>430
>なんかウィンドウプロシージャをクラス内に内包して使うには
>staticなフック用のプロシージャ関数と実際の処理内容を書くプロシージャのふたつが必要なみたいなんです。

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

こういうこと?
それならWndProcにstaticは要らないよ
0435デフォルトの名無しさん2015/10/29(木) 09:21:01.44ID:ytDduPxZ
GWLP_USERDATAとかでインスタンス渡して
staticなWndProcからインスタンスごとのWndProc呼び出すためだろ
0436デフォルトの名無しさん2015/10/29(木) 12:06:45.89ID:IDJmDfji
彼のレベルでそういうことは無理だと思われ
0437デフォルトの名無しさん2015/10/29(木) 12:07:41.20ID:IDJmDfji
どうしてもって言うなら、
SetWindowSubclass
を薦めるべき
何も考えずに済むから
0438デフォルトの名無しさん2015/10/29(木) 15:43:47.89ID:NLVhxZ3A
>>433
インスタンスのメンバを渡そうとするとアクセス違反が発生するのは相変わらずです。
恐らくインスタンスのポインタが不正なアドレスを指し示しているからなのでしょうが
その原因が釈然としないんですよね。グローバル領域でインスタンスを生成しているので
どこからでもアクセス可能なはずなんですが・・・。

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

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

>>437
将来的には子ウィンドウをサブクラス化してひとつのインスタンスからすべてのウィンドウを管理するつもりです。
0439デフォルトの名無しさん2015/10/29(木) 15:53:33.92ID:RcFd5cz1
static な WndProc を用意すれば HookProc なんぞ不要だが、

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

この根拠(出典)がわからん。
0440デフォルトの名無しさん2015/10/29(木) 16:03:24.63ID:ytDduPxZ
>>438
CreateWindowExのlpParamはWM_CREATEでLPARAMとして受け取れるLPCREATESTRUCTのlpCreateParamsな
GetWindowLongPtrのGWLP_USERDATAを使いたいならWM_CREATE時に自分でSetWindowLongPtr使うなりしろ

>>439
名前がHookProcになってるだけで正体はstaticなWndProcなんだろ
0441デフォルトの名無しさん2015/10/29(木) 16:07:34.46ID:RcFd5cz1
>>440
それはわかっている。

質問者はもしかして「静的なウィンドウプロシージャと動的なウィンドウプロシージャの2つが
必要」と思っているのではないか、と思っての確認だ
0442デフォルトの名無しさん2015/10/29(木) 16:45:51.79ID:IDJmDfji
>将来的には子ウィンドウをサブクラス化してひとつのインスタンスからすべてのウィンドウを管理するつもりです。

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

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

↑こういうことがしたいの?
しかし、一つのインスタンスですべてのウィンドウを管理するってのは
ここにいる殆どの人にとっては、???だと思うし、適切な助言はもらえないかも
普通この手の話題はSetWindowSubclassが最適解なんだが・・・
0443デフォルトの名無しさん2015/10/29(木) 17:15:19.02ID:NLVhxZ3A
>>439
参照したページは下記以外にもありますが、一応の出典はこちらになります。
■■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

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

>>441
コールバック関数からはインスタンスのアドレスが取れないそうです。
ですので、staticが付いているプロシージャとstaticが付いていないプロシージャがあるわけです。
この辺の理由について私にはよく分かりません。言語的な仕様なのかWindowsの仕様なのか。
0444デフォルトの名無しさん2015/10/29(木) 17:26:21.42ID:NLVhxZ3A
>>442
ベースとなる親ウィンドウについてはサブクラス化は必要なく
ウィンドウ内に配置するフォームやボタンなどの子ウィンドウについてはサブクラス化する必要がありますね。
そうしないと1つのプロシージャの中に全部のプロシージャを書かないといけなくなりますから。
ソースコードが読みづらくなりますし、そのことがバグの温床になりえるので。

1つのインスタンスでアプリケーション内のすべての子ウィンドウを管理するのは
一般的なアプリケーションで実装している方法ではないのかな?
0445デフォルトの名無しさん2015/10/29(木) 17:26:43.70ID:IDJmDfji
もう何に困っているのかサッパリだが、流儀に従って
XP以降から登場したSetWindowSubclassつかうか
GetWindowLongでインスタンス取得してinst->WndProcしろよ

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

これは初耳だな
これで落ちてるだけじゃね?
0446デフォルトの名無しさん2015/10/29(木) 17:33:07.82ID:IDJmDfji
>>444
>1つのインスタンスでアプリケーション内のすべての子ウィンドウを管理するのは
>一般的なアプリケーションで実装している方法ではないのかな?

それなら同じクラスのボタンを複数個表示したい場合はどうするんだ?
auto *button = new button_class( parent, x, y, w, h );
とすればいくらでも生成出来たほうが良いだろう
0447デフォルトの名無しさん2015/10/29(木) 17:44:38.19ID:IDJmDfji
まぁ別に絶対一つのオーバーラップウィンドウに対して一つしかインスタンスが無いことが決まっている子ウィンドウなら
オーバーラップのウィンドウクラスで子ウィンドウのサブクラスを管理しても良いんだが
その辺は自由といっちゃ自由なんだが・・・
既存のウィンドウクラスをサブクラス化するなら結局SetWindowSubclassを使うことになるから
どうせなら親のオーバーラップウィンドウのインスタンスの紐付けにもSetWindowSubclassを使えばよいだろう
そういうのの専用のAPIなのでまず間違いが無い
0448デフォルトの名無しさん2015/10/29(木) 18:01:42.16ID:RcFd5cz1
>>440
>CreateWindowExのlpParamに渡したインスタンス自身のポインタはGetWindowLongで受けとることができます。

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


たぶん基本的なことがわかっていないので、俺のコメントはここまで。あとは他の方にまかせる。
0449デフォルトの名無しさん2015/10/29(木) 18:02:20.98ID:RcFd5cz1
すまん、>>440じゃなくて>>443
0450デフォルトの名無しさん2015/10/29(木) 19:59:21.22ID:lCX/HIGL
x64時代は GetWindowLongPtr じゃないのん

と思ったがやはり
>>448 >>436
につきるな
0451デフォルトの名無しさん2015/10/29(木) 23:14:44.05ID:NLVhxZ3A
皆さんに大変申し訳ないんですが、アクセス違反の原因が判明致しました。

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

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

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

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

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

はい、質問の件は解決しちゃったのでこの質問はこれで閉じます。
スレの流れが意味不明ですみません。みなさん、ありがとうございました。
0452デフォルトの名無しさん2015/10/30(金) 01:24:20.19ID:9r6cQokq
サブクラス化において SetWindowLong じゃなくて SetWindowSubclass が
推奨されている理由を理解してるなら好きにすればいいと思うよ。
0453デフォルトの名無しさん2015/10/30(金) 10:55:25.00ID:bGTI8z09
if(thisPtr == NULL) 文法エラー出ない
if(thisPtr = NULL) 文法エラー出ない
if(NULL == thisPtr) 文法エラー出ない
if(NULL = thisPtr) 文法エラー出る
0454デフォルトの名無しさん2015/10/30(金) 11:00:33.58ID:9r6cQokq
なるほじ
0455デフォルトの名無しさん2015/10/30(金) 12:57:44.73ID:FKezdCzi
>>453
そんな化石みたいなノウハウは忘れて、コンパイルオプションに /Wall 付けとけ
0456デフォルトの名無しさん2015/10/30(金) 13:05:37.49ID:fK4ls09n
まぁでも定数を左に書いたほうが重要な情報がエディタの左に集中して読みやすい場合も有るよね
0457デフォルトの名無しさん2015/10/30(金) 14:36:20.28ID:d4FfMDoX
少なくとも片方が定数でなければ使えないノウハウだし
「thisPtrがNULLのとき」と、thisPtrについて問いたいのを、
「NULLがthisPtrのとき」のように、NULLについて問う文面に変形したからって
はたして読みやすくなるのか、甚だ疑問だなあ
命題の逆という意味でも気持ち悪いし
0458 ◆QZaw55cn4c 2015/10/30(金) 16:02:06.42ID:ydpR+iDi
昔から話題になり賛否両論だが、即効性はあるだろう
0459デフォルトの名無しさん2015/10/30(金) 16:35:01.19ID:fK4ls09n
>「NULLがthisPtrのとき」

そういう風に読むからそう感じるだけで、詠み方は個人の自由だから本質的に関係なくね?
NULL==thisPtrなんだから、そのまま
「NULLと等しいthisPtrのとき」
って読んでも良いわけでさ
0460デフォルトの名無しさん2015/10/30(金) 16:38:25.59ID:WKDnxxt/
というか、

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

お前らのコンパイラさんは警告出してくれないの?
0461デフォルトの名無しさん2015/10/30(金) 16:46:58.80ID:d4FfMDoX
比較を=と書いてしまうどんくさ過ぎるやつは論外として...
「thisPtrがダメなら」をif(!thisPtr)と正直に書けばいいのにね
0462デフォルトの名無しさん2015/10/30(金) 16:52:12.91ID:tBRMFkFs
そもそも参照しているページからして冗長なコードを書いているのだから
質問者のレベルもわかろうというもの。

文法の話題はその辺にしておこうや。
0463デフォルトの名無しさん2015/10/30(金) 16:54:57.38ID:WKDnxxt/
「NULLだからダメという意味」がいいとしても
「ダメならNULLが入っている」というのは危険やろ
0xFFFFFFFF(-1)が入っていたらアウトやで
0464デフォルトの名無しさん2015/10/30(金) 17:03:08.13ID:WKDnxxt/
あと個人的に

if(thisPtr) は良いとしても
if(!thisPtr) は使わないようにしている
! の存在が分かりづらいから
0465デフォルトの名無しさん2015/10/30(金) 17:08:51.57ID:4lmsW84L
フォント、もしくはモニターを変えるべきじゃね?
0466デフォルトの名無しさん2015/10/30(金) 17:14:41.49ID:d4FfMDoX
>>463
ダメか否かを0と非0で示すのはB言語の時代から続いてる慣習で
そこを今さらゴネる奴ぁ破門でおk

HRESULTみたいのはともかくINVALID_HANDLE_VALUEはクソ
0467デフォルトの名無しさん2015/10/30(金) 17:58:47.68ID:EtgcZYvF
>>460
警告が出ないとは書いてないな
エラーが出ないと書いてある
良く嫁
0468デフォルトの名無しさん2015/10/30(金) 18:59:11.28ID:WKDnxxt/
>>467
ミスしてても警告出るなら気づくし直せるんじゃね?そうしたら

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

ということも無かったよな?と言っているわけではっきりそう書かないと分からないのか?
というかその点については>>455でも指摘されているんだが
お前はよく読んだ上でそういうこと言っているの?
0469デフォルトの名無しさん2015/10/30(金) 19:05:07.31ID:BpwNkir2
>>460
このスレ住人のプログラムは警告がいっぱい出すぎていやぽになるから、
出すのはエラーだけで警告は出ないようにしている奴がスレの大多数だよ

>>465
おっさん目・脳が原因だから、そんなことしても駄目なんだよ
0470デフォルトの名無しさん2015/10/30(金) 19:33:22.34ID:GDTU3KP4
警告無視したら事故るだけなんですけどね
単独事故はいくらでもしていいが他人を巻き込むなよ
0471デフォルトの名無しさん2015/10/30(金) 21:32:15.65ID:7o442mgO
そういえば最近IEウェブブラウザコンポーネントがすごく調子いい
あまりに落ちるのでchoromeにしようとしてたのに
0472デフォルトの名無しさん2015/10/30(金) 21:59:26.07ID:XZwfZSuT
1つ120円のお菓子を5個買いました。
合計いくらでしょう?

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

最近の小学校ではこうなるしな
0473デフォルトの名無しさん2015/10/30(金) 22:44:57.11ID:S9hryATs
>>472
最近じゃない、大昔からや

朝日新聞社(1972年1月26日).
“正しい 答えの式: 4 × 6 = 24−これは間違い: 6 × 4 = 24−大阪府の小学校のテスト”.
朝日新聞(朝日新聞社): p. 17
0474デフォルトの名無しさん2015/10/30(金) 22:53:29.75ID:GDTU3KP4
横井庄一が見つかった年だってのは覚えてる
0475デフォルトの名無しさん2015/10/30(金) 23:07:00.22ID:gPbmFrsE
なるほど朝日新聞から間違っていたんだな
理解した
0476デフォルトの名無しさん2015/10/30(金) 23:11:57.95ID:81BFIqC3
>>466
ちょっとずれた話だけど、慣習というなら「0がダメ」「非0がダメ」両方存在するからややこしい。
整数と真偽値の区別がなくしたことで言語仕様を小さく抑えるのに役立ったけど、今となっては
やっかいな負の遺産だな。
0477デフォルトの名無しさん2015/10/31(土) 00:27:54.26ID:VI585LHq
>>473
40年が大昔なんか!
新聞に取り上げられる話なんかw
0478デフォルトの名無しさん2015/10/31(土) 08:35:58.58ID:lwmwKgKI
>>476
言語仕様だけの話じゃなくなってるぞ
いろんなライブラリの規約で0ターミネートが広く浸透してるからな
ところで、0ターミネートを0xffffffffターミネートにしたら
やっかいな負の遺産とやらが片付くのか?
0479デフォルトの名無しさん2015/10/31(土) 09:29:08.11ID:/3zA5kgS
>>478
こんなのが両方存在するからややこしい。

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

if ( func() ) {
}

さすがにboolだったら成功をfalseとするやつはいないだろう。
0480デフォルトの名無しさん2015/10/31(土) 10:29:15.04ID:XOcT6ZqB
#ifndef NDEBUGみたいなもんか
0481デフォルトの名無しさん2015/10/31(土) 11:32:55.48ID:NotpAYNa
>>479
それはネーミングがクソ
せめて errno とか err_code とかにしてくれ
0482デフォルトの名無しさん2015/10/31(土) 12:01:05.96ID:eH4IcMDe
一方Win32APIはHRESULTを採用した
0483デフォルトの名無しさん2015/10/31(土) 12:29:13.90ID:/3zA5kgS
>>481
よくあるひとつの「慣習」だな。0以外の値がエラーだからエラーの有無を表す真偽値として扱うという。
それ自体糞だが。
0484デフォルトの名無しさん2015/10/31(土) 12:37:38.70ID:VI585LHq
真偽だけじゃエラーの種類なんやねんってなるわな
0485デフォルトの名無しさん2015/10/31(土) 12:51:33.88ID:CR8bSv/n
BOOLと型指定してるくせに戻り値が3値だったりしなければどうでもいい
つまりINVALID_HANDLE_VALUEはクソ
0486デフォルトの名無しさん2015/10/31(土) 12:57:44.74ID:tqUin/Ts
>INVALID_HANDLE_VALUE

こいつのせいで安全な終了処理がどれだけ煩雑になることか
0487デフォルトの名無しさん2015/10/31(土) 13:00:30.50ID:/3zA5kgS
>>485
「ネーミングがクソ」ってのはそっちのが的確だな。
0488デフォルトの名無しさん2015/10/31(土) 13:13:43.82ID:tqUin/Ts
>>472
まず
120 * 5 = 600
整数ないしは実数の四則演算は可換である
したがって
5 * 120 = 600

と書けば小学校でも正解にされる
0489デフォルトの名無しさん2015/10/31(土) 13:16:19.32ID:VI585LHq
>>488
掛け算の順序問題
0490デフォルトの名無しさん2015/10/31(土) 15:44:33.25ID:RIZFllKe
文脈からしたら本当の正解は
1 * 120 * 5 = 600
なんじゃないのー
最初の1を省略すんなよ
0個かもしれないだろう?
0491デフォルトの名無しさん2015/10/31(土) 15:49:06.96ID:GVk0olpQ
×1 * 120 * 5 = 600

掛けられる数は答えと同じ単位になるんでしたね?
次からは気をつけましょう
0492デフォルトの名無しさん2015/10/31(土) 15:54:53.79ID:eH4IcMDe
120(円/個)*5個=600円
5個*120(円/個)=600円
どっちも正解
0493デフォルトの名無しさん2015/10/31(土) 15:59:20.41ID:IVNTd+mA
>>490
>1つ120円のお菓子を5個買いました。
だから
120 / 1 * 5 = 600
か、もしくは5個=5セット、という意味なら単に
120 * 5 = 600
じゃね?

例えば「5つ120円のお菓子を5個買いました」だったとして
5 * 120 * 5 =
で値段を求める解釈は無理じゃね?
普通に考えて120円か600円のどっちかじゃね?
0494デフォルトの名無しさん2015/10/31(土) 16:16:44.01ID:RIZFllKe
プログラミング言語的に解釈すると
左端のオペランドの型が式の型という考え方か
0495デフォルトの名無しさん2015/10/31(土) 16:18:13.74ID:RIZFllKe
小学生からやり直したいわー
0496デフォルトの名無しさん2015/10/31(土) 17:30:40.43ID:jgYZGk3p
小学生からやり直したら童貞卒業出来ますか?
0497デフォルトの名無しさん2015/10/31(土) 18:40:14.44ID:VXrj8Wc8
>>485
> BOOLと型指定してるくせに戻り値が3値だったりしなければどうでもいい

これは同意するけど
INVALID_HANDLE_VALUE になんの関係が?
0498デフォルトの名無しさん2015/10/31(土) 19:10:00.57ID:IS0mfGaY
またGetMessageの話繰り返すのか…
0499デフォルトの名無しさん2015/10/31(土) 19:24:23.76ID:qtS/NLO9
無限ループってこわくね?
0500デフォルトの名無しさん2015/10/31(土) 19:29:57.81ID:/3zA5kgS
まぁ、結論は「BOOLやHANDLEを暗黙に真理値とみなす条件式は書くな」ってことだな。
BOOLをTRUE/FALSEと比較する式を書くなという人がいるようだが、ここは明示的に比較するのが正しい。
0501デフォルトの名無しさん2015/10/31(土) 20:31:10.80ID:IVNTd+mA
そんなこと無いよ

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

BOOL ShowWindow(

戻り値

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


↑ほら、TRUEを返すとは書いてないよ
0502デフォルトの名無しさん2015/10/31(土) 20:38:53.32ID:GVk0olpQ
TRUEマクロはBOOLに代入する時用の非FALSEのサンプルって認識だわ
0503デフォルトの名無しさん2015/10/31(土) 21:30:23.02ID:BXlIMP23
>>500
TRUEと比較するな
です
0504デフォルトの名無しさん2015/10/31(土) 23:26:01.93ID:9zRzzHDy
>>500
無効のとき0と規定されているものを真偽判定することの何が「暗黙に」なんだ?
まさかとは思うがif(some_func())よりもif(some_func() == TRUE)が正しいと言っているのか?
0505デフォルトの名無しさん2015/10/31(土) 23:40:02.48ID:aOI+99BR
BOOL XXX;
if(XXX == TRUE ) いくない
if(XXX) いいよ
if(!XXX) いいよ
0506デフォルトの名無しさん2015/10/31(土) 23:44:09.17ID:/3zA5kgS
そこは0と比較するんだよ。0,-1,その他、なら0か-1と明示的に比較する。
some_func()がBOOLのときif(some_func())とするのが糞。
BOOLだがTRUEを返すとされていないならif(some_func() == TRUE)はそもそも仕様と合致していない。
0507デフォルトの名無しさん2015/11/01(日) 00:00:44.95ID:a/KTrDXN
そんなにあいてしてほしい?
0508デフォルトの名無しさん2015/11/01(日) 00:16:05.43ID:SE20IW2P
>>506
仲間を連れてくるか、一人二役にしないと続かないぜそれ
0509デフォルトの名無しさん2015/11/01(日) 00:27:14.62ID:U4S4bby1
>>506
BOOLを-1と比較しろと?
BOOLという命名を差し置いて何がクソなんだ?
TRUEを返さない関数の戻りをTRUEと比較する話はイミフすぎ
0510デフォルトの名無しさん2015/11/01(日) 00:48:02.08ID:YfxO7Cob
結局ループか。
0511デフォルトの名無しさん2015/11/01(日) 02:37:27.29ID:Ni/K5kZr
c#が有るのにwin32使ってウインドウプログラミングする理由は何?
0512デフォルトの名無しさん2015/11/01(日) 03:22:19.74ID:l/1SHJPi
C#なんて触ったこと無いけどどうやってwindow出すん
0513デフォルトの名無しさん2015/11/01(日) 07:56:42.08ID:CjOActT4
>>511
C#はWindowsアプリケーションの雛型を強制的に使わせられるので、OS、システムに突っ込んだ自由なことはできない。
0514デフォルトの名無しさん2015/11/01(日) 08:07:26.53ID:xZNvf6uK
ドットネットは無駄なインストールや更新を強いられるのがウザい
あと起動も遅い
0515デフォルトの名無しさん2015/11/01(日) 10:35:59.99ID:iCjS0aFW
>>513
コンソールアプリとかも作れますが…
0516デフォルトの名無しさん2015/11/01(日) 11:23:37.35ID:jrBbxAac
簡単に書けるようになるなら別に自由である必要はないが
C#で別の意味で難しくなることが増える
同じ難しいならPCの仕組みに肉迫している方が勉強になる
0517デフォルトの名無しさん2015/11/01(日) 12:21:02.83ID:xuiW6lxi
>>513
C#からWin32APIを呼ぶことも出来るし、(推奨されてないが)必要に応じてポインターとかも使える。
デバイスドライバーを作るのでもなければ、自由度で困ることないんじゃないか。
リアルタイム処理をしようとするとGCが絡んできちゃうけど。
0518デフォルトの名無しさん2015/11/01(日) 14:10:14.00ID:xuiW6lxi
>>512
var form = new System.Windows.Form();
form.ShowDialog(); // モードレスなら、form.Show();
0519デフォルトの名無しさん2015/11/01(日) 14:43:19.93ID:tjf5Il2M
どうせ net native になるんだろ?
0520デフォルトの名無しさん2015/11/01(日) 17:08:02.46ID:l/1SHJPi
>>518
内部でWin32API呼ばれてたりしないん?
0521デフォルトの名無しさん2015/11/01(日) 17:37:44.50ID:8eOJvOce
>>511
おっさんはC#を覚えることが出来ないからだよ
(C++ Winの標準のMFCすらできなくて、Win32APIってのもあるだろう)
俺はいまから言語覚えてWinプログラムする奴にはC#を使えってアドバイスするよ
0522デフォルトの名無しさん2015/11/01(日) 18:00:00.72ID:tjf5Il2M
ペゾルド本も今やC#になってしまったからなぁ‥
0523デフォルトの名無しさん2015/11/01(日) 18:26:04.54ID:dVueqhOd
Visual Studio で C# のひな形を吐かせると、わけのわからないファイルがいっぱいだから
何が何やらさっぱりピーマン。:-)

なので、シンプルな ATL/WTL を使い続けてる俺はおっさん。
0524デフォルトの名無しさん2015/11/01(日) 20:38:06.85ID:iCjS0aFW
>>520
そりゃ呼ばれまくってるよ
System.Windows.FormsはWin32の高度なラッパーだよ

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

osはwin8.1です。助言いただければ幸いです
0526デフォルトの名無しさん2015/11/01(日) 21:45:10.78ID:VmCqG/zA
C#って他社も追従してるの?
0527デフォルトの名無しさん2015/11/01(日) 21:52:08.17ID:lhwvxGV2
>>525
ガジェット
0528デフォルトの名無しさん2015/11/01(日) 22:15:37.95ID:IUMffqeL
>>527
ありがとうございます!
win7はほとんど触った事がなかったので盲点でした
その方向でまた調べてみます
0529デフォルトの名無しさん2015/11/02(月) 00:56:48.05ID:B+3rH0MH
もうGUIアプリはC#でしか作らないな。
開発効率が圧倒的に違うし。
0530デフォルトの名無しさん2015/11/02(月) 01:30:43.87ID:idmQOjMo
>>524
なら>>511もwin32使ってるよな?
0531デフォルトの名無しさん2015/11/02(月) 01:48:14.22ID:SpPr0mCa
画面はwebベースで作った方が楽じゃないの
わざわざC#とかでやる意味あるかな
0532デフォルトの名無しさん2015/11/02(月) 01:59:02.76ID:YYtynqW4
>>531
c#だと好きな位置に好きな部品を置けるからいい
0533デフォルトの名無しさん2015/11/02(月) 06:59:59.05ID:6BSNMQg5
ガジェットって廃止されたよな?
0534デフォルトの名無しさん2015/11/02(月) 07:08:26.19ID:X4MwKL6E
あんなデスクトップの邪魔になるもの流行るわけないと思ってたが一瞬で消えたな
0535デフォルトの名無しさん2015/11/02(月) 09:10:22.37ID:jypI/AIk
だが横にムダに広いディスプレイは残った
縦を伸ばせ
タスクバーを横置きしてるが不自由
0536デフォルトの名無しさん2015/11/02(月) 09:31:10.98ID:Oo4chQlF
目は横についてるからな
0537デフォルトの名無しさん2015/11/02(月) 10:25:18.08ID:MWHqCb8w
タコ?
0538デフォルトの名無しさん2015/11/02(月) 10:38:08.45ID:u1Xcwdjg
キーボードが縦に90度回転するノートがあれば良いんだよな
0539デフォルトの名無しさん2015/11/02(月) 21:36:03.71ID:X4MwKL6E
今だにA4を一画面に表示できないなんて
0540片山博文MZ ◆T6xkBnTXz7B0 2015/11/02(月) 21:41:39.70ID:N6XDKRqL
>>539
A4表示専用用のディスプレイか、需要あんのか
0541デフォルトの名無しさん2015/11/02(月) 23:09:49.75ID:YJ91Wm1P
ディスプレイ縦にして表示を90度回転させればいいだけだろ
マルチディスプレイの1つをそうやってる奴はいるよ
0542デフォルトの名無しさん2015/11/03(火) 14:04:14.68ID:C0Kah9v/
>A4を一画面

それこそDPI次第だろうに
0543デフォルトの名無しさん2015/11/03(火) 16:09:42.06ID:p2mb8RLL
https://www.youtube.com/watch?v=m1RJASQT5i8

これがいい
0544デフォルトの名無しさん2015/11/03(火) 19:09:00.75ID:IYCkVucX
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
0545デフォルトの名無しさん2015/11/05(木) 13:37:18.60ID:k1mCzttB
無駄に長いURL貼ってあると
個人情報が含まれてる気がしてくる
0546デフォルトの名無しさん2015/11/05(木) 22:38:09.49ID:8vWqbQMQ
たまにアドレスよく見ると自分のID入ってたりするよな。
だからゴチャゴチャしたの消して、
そのURLで同じもの表示されるならそっち貼るように気をつけてるな。
0547デフォルトの名無しさん2015/11/05(木) 22:53:38.21ID:q6SXWkeZ
いかにも暗号な部分は本当やだね
0548デフォルトの名無しさん2015/11/06(金) 17:06:20.32ID:iMrwfLZD
確かアマゾンとかのURL貼ると検索ワードわかるんじゃなかったっけ
0549デフォルトの名無しさん2015/11/06(金) 21:10:06.89ID:rwaJO4C4
ドロップダウンリストを持つウィンドウを作ったのですが、
これを実行してドロップダウンリストをクリックすると、
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;}
0550デフォルトの名無しさん2015/11/07(土) 01:47:54.37ID:57BfyfLk
90, 24をそれぞれデカくしてやればいいんじゃね
0551片山博文MZ ◆T6xkBnTXz7B0 2015/11/07(土) 05:43:01.33ID:b7KKpBJq
>>549
DefWindowProcWじゃなくてちゃんとウィンドウプロシージャを指定しないとダメ。
0552デフォルトの名無しさん2015/11/07(土) 08:59:28.58ID:RwXev/UR
俺もコンボボックスの縦のサイズを増やすに一票
0553デフォルトの名無しさん2015/11/07(土) 12:45:52.16ID:Lam93S6q
コンボボックスの謎
0554デフォルトの名無しさん2015/11/07(土) 15:04:10.72ID:RwXev/UR
俺も昔コンボボックスの縦サイズではまった事あるんだわ
本当に謎仕様
0555デフォルトの名無しさん2015/11/07(土) 21:34:04.52ID:AjJRvCBZ
ドロップダウンした時の縦サイズ
0556デフォルトの名無しさん2015/11/07(土) 23:19:12.39ID:bQCknPED
>>553
懐かしくてフイタw
0557デフォルトの名無しさん2015/11/08(日) 02:04:59.85ID:w5WQ9GZh
タイトルは謎だし、中身はクソゲーだったな。
0558デフォルトの名無しさん2015/11/10(火) 18:45:13.27ID:co6NjOXk
VS2013を使っています

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

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

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

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

という風に怒られ、ソースコードに赤の波線がついて鬱陶しいです
エラー一覧にも同様の文章が列挙され、これも鬱陶しいです
どうやったら黙らせる事が出来ますでしょうか
0559デフォルトの名無しさん2015/11/10(火) 20:06:38.54ID:ll/jQOrE
pragma waning
0560デフォルトの名無しさん2015/11/10(火) 23:09:15.72ID:elivAdat
>>558
確かに、アドレス演算子のオペランドが
左辺値でも関数指定子でもないね
純右辺値だぞこれ
&1つってんのと同じ

警告が聞きたくなければ吊るしか・・・
0561uy ◆Qawu9.2l1E 2015/11/11(水) 06:03:51.37ID:uYSp+fPE
VSみたいな劣等IDEモドキ使ってる奴がいることに驚く

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


A : 誰も使ってないから
0562デフォルトの名無しさん2015/11/11(水) 06:56:06.60ID:86F6q36J
文句言ってる割にはwin32apiスレにいるっていう
0563デフォルトの名無しさん2015/11/11(水) 08:32:07.52ID:rzj2E3oc
char *fuga = &"hoge"[2];

こんなのも同じ警告出る?
0564デフォルトの名無しさん2015/11/11(水) 12:07:01.93ID:WDtG518P
>>560
それがコンパイラの警告は出ないんですよ
VSは大昔からこの書き方に対応していて
DirectXなんかでは良くfunc( &D3DXVECTOR3( x, y, z ) );
とか便利なんでよく使っていました
コンパイラは警告も出さないしコンパイルも通るし
動作も期待通りなのに
インテリセンスだけが文句言ってくるんです
コンパイラとインテリセンスで動作がチグハグなんです
0565デフォルトの名無しさん2015/11/11(水) 12:48:49.97ID:yiYjUqQw
>>564
バグじゃね?
2010 の頃にも class enum でインテリセンスとコンパイラがちぐはぐだったし
0566デフォルトの名無しさん2015/11/11(水) 13:56:12.23ID:WDtG518P
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の細部は複雑すぎてよく分りませんわ
0567デフォルトの名無しさん2015/11/11(水) 16:57:49.05ID:1hY3wyl+
テキスト編集を遅延させずにインクルードを再帰的に追いかけて静的演算と条件コンパイルかまして実コンパイラと寸分違わずかつリアルタイムにシンタクスハイライトするくらい常識だろー
0568デフォルトの名無しさん2015/11/11(水) 19:38:27.44ID:YDOXgbvn
もちろん
0569デフォルトの名無しさん2015/11/14(土) 12:05:04.37ID:kYx4kaK6
今日おぼえた英語
short flush
long flush
bottom spray
0570デフォルトの名無しさん2015/11/15(日) 16:50:10.08ID:PpDrlMq1
winsockについてなんですが、
sendを1回コールして送られたパケットは、
recvを1回コールして全て受け取れることは保証されてるんでしょうか?

例えば、sendは1回で送ったけど、recvは2回かけて受け取るケースがあったりするんでしょうか?
0571デフォルトの名無しさん2015/11/15(日) 17:09:21.28ID:PV6fOtMt
>sendを1回コールして送られたパケットは、
>recvを1回コールして全て受け取れることは保証されてるんでしょうか?

いいえ

>例えば、sendは1回で送ったけど、recvは2回かけて受け取るケースがあったりするんでしょうか?

はい
0572デフォルトの名無しさん2015/11/15(日) 18:43:50.08ID:Vi+EqW0v
データグラムなら保証されてる
ストリームは保証されてない
05735712015/11/15(日) 19:24:09.72ID:PpDrlMq1
>>571
ありがとうございます。
分かりました。

>>572
失礼しました。
TCP/IP通信が前提です。
UDPの場合はパケットが届かずに捨てられる可能性を考慮しないといけませんよね。
0574デフォルトの名無しさん2015/11/15(日) 23:26:37.86ID:bwAQtTVZ
デバイスコンテキストのハンドルHDCが
有効であるかどうかテストする関数または方法を教えてください
宜しくお願いします
0575デフォルトの名無しさん2015/11/15(日) 23:31:55.73ID:DVr3HCs9
CreateDC()の戻り値は失敗するとNULL
0576デフォルトの名無しさん2015/11/15(日) 23:44:58.72ID:SwaoEtt5
適当にCreateCompatibleDCでも呼んでみて
失敗したら無効なハンドルなんじゃね?
しらんが
0577デフォルトの名無しさん2015/11/15(日) 23:48:38.46ID:bwAQtTVZ
>>575
質問の仕方が悪かったです、すみません

過去に取得したHDCが、現在でも有効というか利用可能であるかどうかを確認する関数はありませんか?

例えばHWNDの場合だとIsWindow関数を使うことで有効であるかどうかを見極めることができます
それと同じようなものが無いかという質問です
宜しくお願いします
0578デフォルトの名無しさん2015/11/15(日) 23:49:21.25ID:bwAQtTVZ
>>576
有難う御座います
もう少しスマートな方法でお願いします
0579デフォルトの名無しさん2015/11/16(月) 00:39:27.67ID:QnJE0SEP
そ、そう?
じゃぁGetNearestColorはどう?
コスト低そうだよ
0580デフォルトの名無しさん2015/11/16(月) 00:47:49.59ID:QnJE0SEP
と思ったけど、ディスプレイが32bitモードだと
HDCに関係なく引数そのまま返す可能性も有るな
まーでもGet系のAPIはほかにも沢山有るから
好きなの使えば?HDCが無効なら失敗しそうな奴
0581デフォルトの名無しさん2015/11/16(月) 00:49:37.84ID:QnJE0SEP
さらに思ったんだけど、HDCが既に無効かどうか調べたいって事は
その後何かに使うつもりなんだろうから
実際に何かしようとして失敗したら無効だったってことでよいんじゃね?
0582デフォルトの名無しさん2015/11/16(月) 04:57:13.17ID:hnRSxFKX
それでは >>578 的にはスマートじゃないんでしょう
好きにしろと突き放すのが吉かと
0583デフォルトの名無しさん2015/11/16(月) 05:07:17.50ID:WTn2umFu
>>582
結局、こういう人が出てくるんですよね
まあWindowsプログラミングに則してるかどうかを理解できないことに起因する発言だと思いますけど
そういうこと言うなら
WindowFromDC単独、または、WindowFromDCからのIsWindowで判断しろ位の回答出してから言ったらどうですか?

ID:QnJE0SEPの提案は、彼にしてはよく考えてくれたと思ってるし感謝もしてますよ
0584デフォルトの名無しさん2015/11/16(月) 06:25:34.35ID:xp46TE2K
mallocで確保したポインタが有効であるか確認する関数または方法を教えてください
宜しくお願いします
0585片山博文MZ ◆T6xkBnTXz7B0 2015/11/16(月) 06:54:01.40ID:FxCdLFu/
GetDeviceCaps
0586デフォルトの名無しさん2015/11/16(月) 09:54:33.55ID:HIZPDz5u
使って落ちたらそれは悪いポインタだ
0587デフォルトの名無しさん2015/11/16(月) 10:03:19.32ID:6H4dK92G
>>584
使ってみればいいんじゃないか?
0588デフォルトの名無しさん2015/11/16(月) 10:31:47.38ID:QnJE0SEP
>>583
それお前、後付じゃねーか
WindowsFromDCはメモリDCでは失敗するんだぞ
調べたい対象のDCは必ずウィンドウのDCってのは、俺は知らなかった情報だぞ
0589デフォルトの名無しさん2015/11/16(月) 13:39:16.61ID:SczSLJRd
GetObjectTypeでいいでしょ
0590デフォルトの名無しさん2015/11/16(月) 18:24:25.92ID:l2x/CNAR
にゃんぱすー
0591デフォルトの名無しさん2015/11/16(月) 20:06:37.73ID:sBUCKle7
>>589
これだ
0592デフォルトの名無しさん2015/11/16(月) 21:06:03.20ID:nSSKBNI/
>>584
mallocのラッパーを作っとく
全てをmymalloc経由で呼び出してテストで問題がなかったら
#defeine mymalloc mallocする
おれはやらないけどね
0593デフォルトの名無しさん2015/11/16(月) 21:30:12.35ID:QnJE0SEP
>>592
適当にアクセスしてみて例外が出たら捕まえれば?
例外はC++のじゃなくてMS独自の構文の方な
でも例外でなくても他に再利用されている状態かもしれないから
結局安全性は確保できないと思うがやってみれば、知らんが
0594デフォルトの名無しさん2015/11/16(月) 21:30:47.06ID:QnJE0SEP
アンカ間違えたわ
0595デフォルトの名無しさん2015/11/16(月) 21:32:11.63ID:c+JfJrRB
HDCやmallocで確保したポインタの有効性が当てにならないって…
そもそものプログラムの組み方がマズいんでないかい?
0596デフォルトの名無しさん2015/11/16(月) 22:40:09.48ID:KqlZhPmb
>>573
ttp://www1.axfc.net/uploader/so/2729229.zip
0597デフォルトの名無しさん2015/11/16(月) 22:50:08.47ID:KqlZhPmb
*printfの戻り値が有効であるか確認する関数または方法を教えてください
0598デフォルトの名無しさん2015/11/16(月) 23:08:54.03ID:fdnGG03D
>>595
自分の書いたプログラムが有効であるか確認する関数または方法を教えてください
宜しくお願いします


って感じか
0599デフォルトの名無しさん2015/11/16(月) 23:36:03.19ID:rgt/lt++
自分の脳をマイクロ診断する方法かw
DC X'83
0600デフォルトの名無しさん2015/11/18(水) 11:10:46.15ID:Amh1/iYO
ジバニャンウィルス
http://www.sankei.com/west/news/151117/wst1511170067-n1.html
0601デフォルトの名無しさん2015/11/20(金) 17:05:25.15ID:pS4guF6V
シングルスレッドビルドとマルチスレッドビルドで速度が3倍ぐらい違うんだけど、こういうものなんですか?
0602デフォルトの名無しさん2015/11/20(金) 21:28:57.87ID:ph+B6Bvv
赤く塗って角を付けよう
0603デフォルトの名無しさん2015/11/20(金) 21:30:30.96ID:mWax20BT
異常加速効果調べてみろ
0604デフォルトの名無しさん2015/11/20(金) 21:49:23.14ID:97LExnIK
>>601
マルチスレッドコンパイルの速さ、尋常じゃないよねw
タスクマネージャ見たら、全コア100%で貼りついてるw
これまで見た中で、最もCPUの能力を引き出しきったプログラムだよ、VC++2015はw
0605デフォルトの名無しさん2015/11/20(金) 22:02:52.88ID:pS4guF6V
>>604
いや、シングルスレッドのほうが速いんです…

LHa for UNIXのデコーダーをWin32向けに書き換えてビルドしたやつなんですが
グローバル変数だらけでそれに頻繁にアクセスする構造になってるのでそれが影響しているような気もするんですがね
0606デフォルトの名無しさん2015/11/20(金) 23:01:27.23ID:97LExnIK
>>605
えぇ!?びっくりぽんや・・・
原理的には、ソースファイルをオブジェクトファイルにコンパイルする作業は
翻訳単位(.cpp)で独立している=並列化できるはずだし、
遅くなるようなことがあるとは考えにくいなぁ。
0607デフォルトの名無しさん2015/11/20(金) 23:03:28.43ID:tEYsBkPr
ヒント:切り替わる手間
0608デフォルトの名無しさん2015/11/20(金) 23:14:24.26ID:5Nrp/FGL
HDD遅いと同時にアクセスしたときシークで時間取られるよな
0609デフォルトの名無しさん2015/11/20(金) 23:20:04.30ID:pS4guF6V
マルチスレッドビルドのほうが速ければ何の問題も無かったんですが、
シングルスレッドアプリケーションなんてとてもじゃないけど使い物にならないですから

デコーダーだけシングルスレッドビルドのDllにしてスレッドから呼び出せば速度も速いままいい感じにはなるんですが
このやりかたは推奨されないみたいですし
どちらにしろスレッドセーフではないので同時にデコーダーを呼び出すことは事は無いのですが、それでもやっぱり問題あるのかな
この辺が何ともわからない…
0610デフォルトの名無しさん2015/11/20(金) 23:20:34.29ID:97LExnIK
>>607
スレッド切り替えのオーバーヘッド?
Microsoftが、それが露呈するような間抜けな組み方をするとは思え・・・  いや、あるかw

>>608
あー、I/Oがボトルネックになるとキツいね。
んでも、その場合でも最悪時間はシングルスレッドと同じくらいになりそうなものだけどね。
0611デフォルトの名無しさん2015/11/20(金) 23:29:58.12ID:lixacdxh
並列ビルドの話なのか、/MTコンパイルの話なのか
0612デフォルトの名無しさん2015/11/20(金) 23:33:27.15ID:pS4guF6V
>>611
/MTの方です…
0613デフォルトの名無しさん2015/11/20(金) 23:33:56.29ID:5Nrp/FGL
>>601 >>604 の流れでコンパイル速度の話と思ってたけど違ったのか
> シングルスレッドビルドとマルチスレッドビルド
これはマルチスレッド対応のライブラリのことだったんだな。
マルチスレッド対応するということは同じメモリ領域等に同時にアクセスしない仕組みが
増えてるから、その分遅くなる。
> グローバル変数だらけでそれに頻繁にアクセスする構造
最適化しにくくなるし書き込みは排他処理になるので遅くなる
0614デフォルトの名無しさん2015/11/20(金) 23:39:04.30ID:97LExnIK
あー、並列コンパイルの話ちゃうんかw
失礼したw

>>613
たしかにそれはあるだろうけど、それでも3倍の差になるだろうか?
スレッド生成や終了のオーバーヘッドでもないとそこまでの差にはならないんじゃないかなぁ?
もっとデカいペナルティってある?
0615デフォルトの名無しさん2015/11/20(金) 23:52:14.27ID:t7TDAkzV
処理じゃなくてプロセス生成から終了までの時間測ってるんじゃ?
0616デフォルトの名無しさん2015/11/20(金) 23:58:00.82ID:5Nrp/FGL
httpサーバか何かでマルチスレッドとイベントドリブンで負荷が大きい時に
なんたらかんたらとかあったな
0617デフォルトの名無しさん2015/11/20(金) 23:58:27.12ID:pS4guF6V
>>613
そのような気がしてたのですが
全てローカル変数にすれば少しはましになるのかな…

>>615
具体的には、300MBほどのlh7圧縮ファイルの展開速度で、/MLでは6秒ぐらい、/MTだと16秒ぐらいですね
かなりの差が出ます
0618デフォルトの名無しさん2015/11/21(土) 05:24:33.16ID:TBiDBsF1
/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.
0619デフォルトの名無しさん2015/11/21(土) 05:36:41.11ID:TBiDBsF1
ちなみに
/MP (Build with Multiple Processes)
なので、マルチスレッドでなくてマルチプロセスな。
コンパイルをマルチプロセスで高速化するのはMITのpmakeが最初で、pmakrのオプション-jはいろんなmakeに取り入れられてる。
googleによると1970年代から存在する。
0620デフォルトの名無しさん2015/11/21(土) 08:40:08.83ID:H2tpzR2c
>>618
参考になります
どうやらCのシングルスレッドライブラリが使われることでパフォーマンスが悪くなるようですね
確かにそれらのC関数が至る所で頻繁に呼び出されています;

これならいくらでも回避方法がありそうです
原因がわかって助かりました ノシ
06215492015/11/21(土) 10:10:41.74ID:JyKECnY5
>>549 ですが、
リスト部分は正しく表示されるようになりましたが、
リストボックスを含め、マウスからの操作を受け付けない状態になってしまいます。
どうしたら正しく動作するようにできるのでしょうか?
0622デフォルトの名無しさん2015/11/21(土) 13:58:19.88ID:EEYvP2Nj
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なんてありませんがな。
0623デフォルトの名無しさん2015/11/21(土) 14:25:17.12ID:6HcvIKiz
はあ?
https://msdn.microsoft.com/ja-jp/library/bb385193.aspx
0624デフォルトの名無しさん2015/11/21(土) 14:32:51.56ID:+qmJr5EI
>>620
コード見ないと確実なことは言えないけど、排他の多いコードはシングルスレッドの方が速いよ
マルチスレッドで速くなるのは、スレッド生成や排他コストに比べて、並列に処理する区間が多い場合のみね(当たり前だけど)
0625デフォルトの名無しさん2015/11/21(土) 14:38:23.97ID:JXjswKeV
ままだ並列make、並列build、並列compileの話を続けている奴がいるのか…
0626デフォルトの名無しさん2015/11/21(土) 15:04:49.37ID:H2tpzR2c
>>624
https://msdn.microsoft.com/ja-jp/library/ms235505%28v=vs.90%29.aspx

この辺ですね、シングルスレッドライブラリはマルチスレッドライブラリより速いようですが
/MTでビルドすると頻繁にロックが発生してとても遅くなるようです

あえてロックを外してスレッドセーフでない事を理解して扱うことでマルチスレッドライブラリの関数よりさらに高いパフォーマンスを得ることができるという事のようですね
0627デフォルトの名無しさん2015/11/21(土) 15:14:51.80ID:sbaJbg4X
>>625
「一歩引いた冷静な視点で状況を俯瞰する俺」気取りの割には、
自分のレスの推敲すらできない精神状態なんですね。
ご立派です。
0628デフォルトの名無しさん2015/11/21(土) 15:27:03.86ID:779MWCli
>>627
論点ずらしブーメラン乙
そもそも驚きの表現として「ななんだって」とかあるだろ
0629デフォルトの名無しさん2015/11/21(土) 16:29:02.36ID:JXjswKeV
>>627
どこが間違っているの?
0630デフォルトの名無しさん2015/11/21(土) 17:32:41.77ID:TBiDBsF1
>>622
| 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
0631デフォルトの名無しさん2015/11/21(土) 20:11:08.78ID:lo2qe4EW
>>630
VC++ 1.52 持ってて仮想環境ではあるが動かせるよ w
0632デフォルトの名無しさん2015/11/21(土) 21:53:43.77ID:rACYfPqD
マルチスレッドプログラムを/MTしないでビルドすると、
プログラムはどんな動作になるんだ? ちゃんとマルチスレッドしてくれるのか
0633デフォルトの名無しさん2015/11/21(土) 22:00:37.16ID:o0TZz0/L
ランタイムライブラリの関数がスレッドセーフじゃなくなるだけだよ
だからnewなんかするときも自分で排他処理しなければならなくなるよ
もちろんその他の関数呼び出すときも自前で排他処理が必要だよ
面倒だね
0634デフォルトの名無しさん2015/11/21(土) 22:01:21.59ID:574qcmik
よいだろう思い切り釣られてしんぜよう

ビルドをマルチスレッドでするのとビルドしたプログラムがマルチスレッドで動くのは違うぞ
0635デフォルトの名無しさん2015/11/21(土) 22:02:29.34ID:lYZv+i2L
釣られてるのかマジボケなのか分からないレスはよせよ
0636デフォルトの名無しさん2015/11/21(土) 22:04:41.16ID:o0TZz0/L
釣られているつもりが釣っていたってのは
いつもと逆のパターンで斬新だわ
0637デフォルトの名無しさん2015/11/21(土) 22:10:03.68ID:rACYfPqD
>>633
シングルスレでマルチスレランタイム使うと遅くなるからなのかな
Cはスピードが大事だからな
STLもシングルスレ用、マルチ用ってあるのかな
0638デフォルトの名無しさん2015/11/21(土) 22:31:22.02ID:TBiDBsF1
>>634
ビルドはマルチスレッドじゃなくてマルチプロセスだと言ってるだろうが。馬鹿者。
0639デフォルトの名無しさん2015/11/21(土) 22:43:21.52ID:lYZv+i2L
怖いお兄さんはマジボケと判断したのか
0640デフォルトの名無しさん2015/11/22(日) 14:57:54.38ID:d6PbDxmS
>>588
じゃ、知った上で何かまともな回答を書いてみろよ
結局、知っていても知らなくても、まともな回答ないんだろ?
言い訳見苦しいわ
0641デフォルトの名無しさん2015/11/22(日) 15:01:12.80ID:d6PbDxmS
>>589
これだね、一番いい
0642デフォルトの名無しさん2015/11/22(日) 15:08:13.14ID:d6PbDxmS
>>595
>そもそものプログラムの組み方がマズいんでないかい?

他プロセスが作成したウィンドウのHDCを操作してる場合ってのがあるし
とりあえずHDCに関しては、そうでもない
0643デフォルトの名無しさん2015/11/22(日) 15:37:24.13ID:vggKhYqJ
終わった話をいつまでも

いちいちDCが有効かどうか判断しなくても
対象のDCに対して一番最後に呼び出したAPIが成功していたら
それ以前のAPIも成功しているだろうし、それで十分だろ
0644デフォルトの名無しさん2015/11/22(日) 15:49:02.18ID:rXOpUu6m
>>639
merci beaucoup
0645デフォルトの名無しさん2015/11/22(日) 17:32:36.93ID:NW0PnoYA
win32を勉強するにはどの本を読めばいいんですか
0646デフォルトの名無しさん2015/11/22(日) 17:39:08.81ID:msJD2Q/g
>>645
msdn

いまは本などない。
0647デフォルトの名無しさん2015/11/22(日) 17:57:37.70ID:WMp4alla
使い方なら目的とする言語の関連本だろうし
win32の中身ならヘルプとかmsdnじゃね?
0648デフォルトの名無しさん2015/11/22(日) 18:07:03.05ID:j30Wwuuw
実行した時に全てのcpuが100%の使用率になるプログラムがマルチスレッドプログラムだろ。
0649デフォルトの名無しさん2015/11/22(日) 18:10:41.71ID:YBzI3bTB
スレッド数が2でコア数が4ならその条件満たさないっすね
ボケはもう少し面白い奴を頼む
0650デフォルトの名無しさん2015/11/22(日) 18:34:26.14ID:1TN3WChP
>>645
http://www.amazon.co.jp/product-reviews/4797347597/ref=cm_cr_dp_see_all_btm?ie=UTF8&;showViewpoints=1&sortBy=bySubmissionDateDescending
0651デフォルトの名無しさん2015/11/22(日) 18:48:44.74ID:NW0PnoYA
>>650
面白そうなので買いました
>>646
MSDNをまだまともに読めるレベルじゃないので本がいいんですよ
最近ようやく読めるようになってきたけど、ある程度知識のまとまりと目的意識がほしいので
0652デフォルトの名無しさん2015/11/22(日) 21:11:50.80ID:Zdp83ecD
>>630
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)
0653デフォルトの名無しさん2015/11/22(日) 21:36:55.00ID:Zdp83ecD
>>631
Windows 3.1・・・
0654デフォルトの名無しさん2015/11/22(日) 22:20:38.47ID:PowSWGiN
>>645
猫でもわかるゲームプログラミング 第2版、2009

グラフィックス描画からアニメーション、
マルチスレッドまで、C言語でWin32APIを用いて、
ゲームプログラミングに必要な基本テクを解説

各サンプルプログラムにリファインを加えるなどした第2版
0655デフォルトの名無しさん2015/11/22(日) 22:22:12.31ID:rVLRuBGq
Advanced Windowsってもう読む価値ないの?
0656デフォルトの名無しさん2015/11/23(月) 00:26:49.20ID:1m62BNI1
猫は古すぎねーか
0657デフォルトの名無しさん2015/11/23(月) 01:37:06.45ID:KbsdUeA8
どういう物を作りたいかによるんじゃ?
> ・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
ってあるけどAPIフックすらググればできるし
0658デフォルトの名無しさん2015/11/23(月) 10:20:21.95ID:LhpXJjp9
>>656
Win32APエ も古すぎーるからちょうどいい
0659デフォルトの名無しさん2015/11/23(月) 10:27:35.49ID:Pq9DNQfd
ペゾルト本はちょっと違うか?
0660デフォルトの名無しさん2015/11/23(月) 13:49:18.46ID:JWzW06M6
今はC#だよ<ペゾルド
0661デフォルトの名無しさん2015/11/23(月) 14:05:35.98ID:qqa6ydJw
>>657
オンラインでなんでもググれる時代だから本より便利なんだよな
0662デフォルトの名無しさん2015/11/23(月) 14:26:22.15ID:+Ddm9172
コピペできるしね
0663デフォルトの名無しさん2015/11/23(月) 14:44:00.43ID:5yZmzCJ8
記述間違いとか誤字脱字や新情報について
オンラインの方が改訂も早ければ有利なんだけどね
0664デフォルトの名無しさん2015/11/23(月) 16:57:02.17ID:PZ2Lz8BK
それを期待するなら英語版では
0665デフォルトの名無しさん2015/11/23(月) 22:09:47.41ID:tQcIQ+xW
>>660
いまペゾルドはC#なのか
WinでプログラムするならC#だよってことか
0666デフォルトの名無しさん2015/11/23(月) 22:18:21.01ID:lEPcq6Ag
それどころかストアアプリの本になってるよ。
MSの意向だろうけど、WinForm〜WPF世代がすっ飛ばされたのは痛い。
0667デフォルトの名無しさん2015/11/24(火) 09:52:12.84ID:Ujv1VvaP
猫でも系は網羅性が低いのと無駄に筆者が読書に理解を強要させる書き方してるのでイライラしますよ
まぁ分かりやすいけど
0668デフォルトの名無しさん2015/11/24(火) 10:02:31.82ID:nrP7706V
教えてもらう立場なのに「理解を強要させる」と怒るのか…
0669デフォルトの名無しさん2015/11/24(火) 12:24:13.31ID:/bCK1VnE
>>668
667じゃないけど、言葉遊びでしかないしょーもないレスすんなよ
お前みたいな奴が身の回りにいたらうぜえな〜完全に時間の無駄
正味の話って概念をいい加減覚えろ
0670デフォルトの名無しさん2015/11/24(火) 12:51:56.91ID:aCNlMk5p
正味の話とか言うなら、>>667の「理解を強要させる書き方」はどうなん?
>>668は言葉遊びじゃない、態度の問題を提起してるだけじゃないか。
0671デフォルトの名無しさん2015/11/24(火) 12:56:47.01ID:R6RYUl/w
面倒くさい奴らだな
お前はプログラミングすんの止めろ
0672デフォルトの名無しさん2015/11/24(火) 13:13:04.35ID:cksHvZaS
猫のエサを食ってマズいと腹を立ててる阿呆がいると聞いて
0673デフォルトの名無しさん2015/11/24(火) 20:06:15.03ID:Xp7UCn3h
Win32 API入門
http://wisdom.s akura.ne.jp/system/winapi/

ここを一通り読んだら、後は検索で補ってくだけでいける。
0674デフォルトの名無しさん2015/11/24(火) 20:50:22.41ID:ml2gyU90
>>671
あーだこーだの奴はプログラミングには向いていないから
誰かの作ったプログラムを使うだけの方が良いよね。
でも、それに対しても気に入らん、で、あーだこーだ文句言うんだろうが
0675デフォルトの名無しさん2015/11/24(火) 20:52:54.72ID:7QWzGJiI
書き殴る奴は向いてる向いていない以前に有害なんで書かないで欲しい
0676デフォルトの名無しさん2015/11/24(火) 21:12:36.36ID:rGZu8hHb
お前を殴るのはokだよな?
0677デフォルトの名無しさん2015/11/24(火) 21:17:37.84ID:j8x8w3e7
まず脳みそへのプログラミングが必要
0678デフォルトの名無しさん2015/11/25(水) 00:18:18.81ID:Vd1+RMMI
猫の餌をナメちゃいけません
金缶とかチャオほたてなど飼い主がうらやむわけで
0679デフォルトの名無しさん2015/11/25(水) 01:33:16.23ID:l9uWvmmW
>>673
イコール >>650
0680デフォルトの名無しさん2015/11/25(水) 07:15:51.46ID:zr1GKtWh
>>667
>網羅性が低い
何十ものすべての項目を、
一覧表にして載せている著者がいるけど、
何が重要なのかわからない

やたらと勉強時間がかかる割に、効果が低い。
そういう情報はインターネットで十分

50項目50時間かかって、70点しか取れない。
それより、10項目10時間で、60点取れた方がよい

著者がどの項目を選んで、説明したのかが重要。
そこがプロたるゆえんで、読者がお金を払う価値がある

TACなどの専門学校では、必ず言われる。
最も少ない情報で、短時間の勉強で、60点ギリギリで合格
0681デフォルトの名無しさん2015/11/25(水) 07:17:15.19ID:rJmLSs5J
ことばあそびってなんですの
0682デフォルトの名無しさん2015/11/25(水) 10:17:46.18ID:5wB+dJF6
煙に巻く手法の一つ
0683デフォルトの名無しさん2015/11/25(水) 10:38:32.86ID:v92ZxAJW
わかりましたね?
もうわかりましたよね?

理解するのは読書なんだからこういう書き方は極力控えるべき
0684デフォルトの名無しさん2015/11/25(水) 11:09:39.93ID:5wB+dJF6
君は存在を控えて
0685デフォルトの名無しさん2015/11/25(水) 11:18:56.05ID:reKtKMrl
(´・ω・`).;:…(´・ω...:.;::..(´・;::: .:.;: サラサラ..
0686デフォルトの名無しさん2015/11/25(水) 19:23:04.55ID:Ya2W2nCX
>>682
煙に巻いてるのはどっち?
言葉あそびしたと言われている方?言っている方?
0687デフォルトの名無しさん2015/11/25(水) 19:31:29.10ID:Sra0FKsR
あなだのことです
0688デフォルトの名無しさん2015/11/25(水) 21:57:18.87ID:VTzlMLYq
画面だけ見て仕事してると心に余裕がなくなるかね
0689デフォルトの名無しさん2015/11/25(水) 23:15:16.00ID:G/n44URv
マって低脳・基地外で他の仕事に就けない奴らが就く底辺職業だからな
そんな奴らが集う板・スレはこれが普通
0690デフォルトの名無しさん2015/11/26(木) 00:01:46.98ID:wLo/SUaP
よくご存知だ(児玉清)
0691デフォルトの名無しさん2015/11/26(木) 17:01:22.34ID:yeqvnwwH
WScript.Shell の CLSID をレジストリで検索すると
72C24DD5-D70A-438B-8A42-98424B88AFB8
F935DC22-1CF0-11D0-ADB9-00C04FD58A0B
の二つ見つかるのですが
どっちが本物ですか?
両方本物なら何がどう違うんですか?
0692デフォルトの名無しさん2015/11/26(木) 17:02:55.99ID:yeqvnwwH
WScript.Shell の CLSID をレジストリで検索すると
72C24DD5-D70A-438B-8A42-98424B88AFB8
F935DC22-1CF0-11D0-ADB9-00C04FD58A0B
の二つ見つかるのですが
どっちが本物ですか?
両方本物なら何がどう違うんですか?
0693デフォルトの名無しさん2015/11/26(木) 18:40:52.40ID:uhVdTG0g
スレチっぽいけど
たぶん異なるCLSIDで登録してたオブジェクトを統合したとかの結果じゃねーの?
互換性的な話で
0694デフォルトの名無しさん2015/11/28(土) 22:36:17.56ID:Fi4wDTmy
質問します
WS_POPUPで作ったふちなしウィンドウの親ウィンドウをSetParent()で変更しました
すると、まるでスタイルをWS_CHILDに変更したかのような挙動になります
具体的には親ウィンドウを動かすと一緒に動きますし、描画もクリップします
SetParentで親ウィンドウを設定すると自動でWS_CHILDが設定されるのかと思い
SetWindowLongでWS_POPUPを設定しなおしてもうまくいきません
どうすればよいでしょうか
0695デフォルトの名無しさん2015/11/29(日) 02:28:30.33ID:xCgxYFc2
オーナーウィンドウと親ウィンドウは違うから
変更したいのは前者だろ?
0696デフォルトの名無しさん2015/11/29(日) 05:59:54.18ID:Wjtvnm/I
>うまくいきません
>どうすればよいでしょうか
どうしたいのか
書け
0697デフォルトの名無しさん2015/11/29(日) 06:13:22.46ID:fTNkyNl8
つ プラ窓より投擲
0698デフォルトの名無しさん2015/11/29(日) 11:23:43.23ID:U49gaUJj
SetParentしたらあかん
06996942015/11/29(日) 12:46:39.72ID:c+9MHjtm
>どうしたいのか書け

ふしなしのWS_POPUPを使って、いわゆるツールウィンドウを作りました
ツールウィンドウなので親ウィンドウより手前に表示される必要があり
ツールウィンドウのCreateWindowで親ウィンドウを設定して作成しました
この時点では期待通りの動作をします

しかし、後からツールウィンドウの親ウィンドウを変更する必要が出てきました
そこでSetParentでツールウィンドウの親を変更すると
WS_POPUPの所謂オーバーラップ的な独立したウィンドウではなくなり
WS_CHILD風の、親ウィンドウのクライアント内だけで表示されるウィンドウになります

WS_POPUPスタイルのオーバーラップ的な動作を維持したまま
親ウィンドウを変更するにはどうしたらよいでしょうか
0700デフォルトの名無しさん2015/11/29(日) 14:12:41.71ID:Cm5aRK3U
>しかし、後からツールウィンドウの親ウィンドウを変更する必要が出てきました
このあたりの設計を見直す
0701デフォルトの名無しさん2015/11/29(日) 14:34:03.32ID:c+9MHjtm
今のところ、以下の方法で対処していますが・・・

・あらかじめツールウィンドウに配置したいものを一つのWS_CHILDなウインドウ内に収めておく
・それをWS_POPUPなウィンドウに納める
・親を変更する場合は新たにWS_POPUPなウィンドウを作って中身を移し変える

一応動いてはいるんですが、あまりスマートとは言えませんね
0702デフォルトの名無しさん2015/11/29(日) 17:59:59.36ID:k+2nqD55
>>699
だから、親ウインドウじゃなくてオーナーウインドウだろ?
勘違いしてると思うから、そこを調べろ
0703デフォルトの名無しさん2015/11/29(日) 18:31:28.56ID:eJ1soHzz
おまえが勘違いしてると思う。
0704デフォルトの名無しさん2015/11/29(日) 19:13:06.03ID:xFlU/aUF
>>701
面倒ならその方法でいいんじゃない?
ツールウィンドウの親はデスクトップなので、SetParentするとそのウィンドウの子になる(デスクトップの子ではなくなる)ので
699の動作は正しい。
やりたいことはオーナーウィンドウを変更することだろうけど、そのような方法はないのでそのようなAPIもない。
まっとうな方法でやるのであれば、ダミーのウィンドウを作ってそれをオーナーウィンドウにしてツールウィンドウを作る。
0705デフォルトの名無しさん2015/11/29(日) 20:55:51.31ID:Wjtvnm/I
大抵のことは非表示ウィンドウ経由でなんとかなると思う
オーナーウィンドウ関連で困った記憶は無いから
0706デフォルトの名無しさん2015/11/29(日) 21:03:09.00ID:c+9MHjtm
皆さんの意見をまとめると
WS_CHILDでないとき、CreateWindowの引数で渡す親ウィンドウのパラメータは
親ウィンドウではなくオーナーウィンドウとして扱われる
(たしかにCreateWindowのMSDNに親ウィンドウまたはオーナーウィンドウって書いてありましたわ)
そして後からオーナーウィンドウを変更するAPIは用意されていない
ってことですね
失礼しました
0707デフォルトの名無しさん2015/11/30(月) 22:15:26.81ID:xNC+/SUX
manifest
0708デフォルトの名無しさん2015/12/05(土) 00:24:02.73ID:eGerJrSR
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を強制終了すると回復します デバッグでもリリースでも固まります
おまかん、ですか?
0709デフォルトの名無しさん2015/12/05(土) 00:30:56.85ID:eGerJrSR
OSはWin7のSP1でIMEは標準のMicrosoftIMEです
0710デフォルトの名無しさん2015/12/05(土) 00:33:16.52ID:oCbOGloR
>>708
正しいウィンドウプロシージャーを正しく指定しろ
0711デフォルトの名無しさん2015/12/05(土) 00:37:52.97ID:eGerJrSR
エディットボックスが載っているメインウィンドウのウインドウプロシージャが
DefWindowProcなのは再現する最小のコードにしたからです

問題になった実際のプログラムではメインウィンドウもエディットボックスも
SetWindowSubclassでサブクラス化しています
しかし同じように固まります
0712デフォルトの名無しさん2015/12/05(土) 00:40:21.12ID:oCbOGloR
>>711
メインウィンドウはサブクラス化する必要はない。
0713デフォルトの名無しさん2015/12/05(土) 00:43:51.66ID:eGerJrSR
メインウィンドウをSetWindowSubclassでサブクラス化したのは
ウインドウプロシージャにインスタンスポインタを渡すためです
他の方法もありますが、SetWindowSubclassが一番シンプルだと思うので
しかし、質問内容とまったく関係のないことです
0714デフォルトの名無しさん2015/12/05(土) 00:47:20.07ID:oCbOGloR
>>713
メッセージの流れがループしてないか?
一つ古いプロシージャーはどうしてる?
0715デフォルトの名無しさん2015/12/05(土) 00:50:54.89ID:eGerJrSR
DefSubclassProcを呼んでいます
しかし、関係ありません
なぜなら、私の環境では>>708のコードでフリーズするからです
ちなみにフリーズするのはVisualStudio上で実行したときだけです
普通にエクスプローラからプログラムを起動すれば日本語入力をしてもフリーズしません
VSのデバッガとIME周りで何か問題が起こっているみたいです
私のおまかんかとおもい書き込みました
0716デフォルトの名無しさん2015/12/05(土) 00:55:02.57ID:oCbOGloR
2015のバグだろうな。バグレポート頼む。
0717デフォルトの名無しさん2015/12/05(土) 00:59:11.55ID:eGerJrSR
とりあえずいつの間にか11月30日に
VS2015 Update1 というのが出ていたみたいなので
アップデートしてみます
ちなみにVS2013では上記のフリーズ現象は発生しませんでした
私のOS自体アップデートにアップデートを重ねたつぎはぎ状態なので
おまかんの可能性が高いですが
0718デフォルトの名無しさん2015/12/05(土) 01:18:58.12ID:99U7SxwK
IME変えるとどうなる?
0719デフォルトの名無しさん2015/12/05(土) 01:52:34.90ID:eGerJrSR
IMEはMicrosoftIMEしか入れてないんですよね
これ以上カオスな環境になるのはいやなので、あまりインストールしたくないんですが
お勧めのIMEあります?GoogleIMEは開発終了したとか聞いたんですが
0720デフォルトの名無しさん2015/12/05(土) 10:12:01.01ID:VYsm12i0
>>715-716
bookliveがうんこなプロテクションコード仕込んでた時も似たような現象起きてたな
可能な限りシンプルな仮想実行環境作って試してみなよ
0721デフォルトの名無しさん2015/12/05(土) 10:24:16.91ID:Rw/ONJyS
>>719
自由にできるなら、いろいろ試せばいいじゃないか?
0722デフォルトの名無しさん2015/12/05(土) 11:44:36.25ID:pK0sc289
>バグの混入しようのないシンプルなコード

そうでもないですね
0723デフォルトの名無しさん2015/12/05(土) 15:07:59.42ID:Pkwdo9n8
久しぶりに覗いてみたら、相変わらず馬鹿ばっかりだな
このスレで質問にまともに答えてるの見たこと無いわw

>>722
つまらん揚げ足取らなくていいんじゃない?
そうでもないってんなら、どこに混入する可能性があるのか具体的に言ってみろよ
言えない? あ、そうw わかってたw

>>708
こんなとこで質問しても、まともに解決できるスキル持ったやつなんて居ないって
見当違いの回答するか、センスの悪い解決策示してドヤ顔するか
どーでもいいところに着目して話しをぐちゃぐちゃにする奴ばっかなんだからw
スレにざっと目を通せばわかるだろw
0724デフォルトの名無しさん2015/12/05(土) 15:23:12.76ID:ckYMWiJu
>どーでもいいところに着目して話しをぐちゃぐちゃにする奴

確かにこれが一番多い
0725デフォルトの名無しさん2015/12/05(土) 15:23:30.20ID:CbmC10/1
ところで、結局お前も馬鹿じゃんかって言われそうなんで言うのをはばかるんだが
CreateWindowするとき、子ウィンドウのIDをNULLではなく
任意の数値を明確に指定したらどうなるのかは興味あるけどな

まあ、IME変えてみたら?みたいな馬鹿の提案よりはマシだろw
0726デフォルトの名無しさん2015/12/05(土) 15:30:43.14ID:ckYMWiJu
GetMessageの戻り値チェックもいい加減ぽい
0727デフォルトの名無しさん2015/12/05(土) 15:45:37.31ID:kb12RFmq
>>726
ほんまやなw
MSDNに書かれている警告と同じ問題が発生するコードになってるな
この問題如何にかかわらず避けるべきコードだな
0728デフォルトの名無しさん2015/12/05(土) 15:49:13.98ID:ckYMWiJu
そもそもMSDNにGetMessageの戻り値がBOOLって書いてあるのが一番の問題
0729デフォルトの名無しさん2015/12/05(土) 15:51:40.28ID:eGerJrSR
いやまー
問題が発生する最小限のコードにしただけだから
2chは行数制限あるでしょ
0730デフォルトの名無しさん2015/12/05(土) 15:53:27.88ID:uW+W8BUz
しかしWin32アプリのスケルトンで
while (GetMessage(&msg, NULL, 0, 0))
を堂々と使用してるというMSの矛盾
0731デフォルトの名無しさん2015/12/05(土) 15:57:52.29ID:ckYMWiJu
>>725
子ウィンドウのIDがNULLだとGetMessageの戻り値が-1になるのかもなー
0732デフォルトの名無しさん2015/12/05(土) 15:57:52.45ID:J/Ic1PvJ
>>729
いや、別にいいんだよ
だけど、もしあなたが質問者ならその言い草はおかしいよね
だって、>>726は、それが問題かもしれないよね?って話しをしてるわけだからw

あなたが質問者なら、懸念を払拭するコードで試してみたけど
そこの部分は問題じゃなかったって言うのが筋じゃないの?w
0733デフォルトの名無しさん2015/12/05(土) 15:58:59.28ID:J/Ic1PvJ
>>731
だけど、単独では固まることなく普通に動作するってことなんで
ちょっと、よくわからんよね
0734デフォルトの名無しさん2015/12/05(土) 16:00:39.72ID:gzrRtkEa
hWnd パラメータで無効なウィンドウハンドルを指定した場合や、
lpMsg で無効なポインタを指定した場合は、エラーが発生します

だから
0735デフォルトの名無しさん2015/12/05(土) 16:18:05.48ID:eGerJrSR
完全に自分の環境のVS2015のデバッガとIMEで何か問題が起こっている臭いです
VS2013ではデバッガ上で実行しても問題ないですし、問題になるのはVS2015だけみたいです
エクスプローラからデバッガ無しで実行しても問題ないです
普通プログラムにミスが有っても、プログラムがクラッシュするのは当たり前としても
VSを巻き添えにしてフリーズするのは何か変なわけです
ついでにエクスプローラも固まりますし、タスクマネージャもクリックできなくなり
VSを強制終了するしか復帰の方法がなくなります
通常の状況ではないです

潜在的にデバッガに不具合があって、同じことで困っている人が居ないかとおもい書き込みました
しかし、私だけみたいなので、完全に おまかん です
これ以上、私のおまかん、について話し合ってもスレの無駄なので、やめましょう
0736デフォルトの名無しさん2015/12/05(土) 16:18:07.73ID:q1rcdCIy
スレ民:>>708のGetMessageのとこヤバくね?
質問者:いやまー、問題が発生する最小限のコードにしただけだから
スレ民:念のため修正して先に進めよ
質問者:しかし、関係ありません。なぜなら、私の環境では>>708のコードでフリーズするからです
スレ民:(白目)
0737デフォルトの名無しさん2015/12/05(土) 16:20:06.00ID:q1rcdCIy
>VSを巻き添えにしてフリーズするのは何か変なわけです

その経験が無いってことは、初心者だってことを意味するので
もう少し頭をやわらかくした方がいいよ
0738デフォルトの名無しさん2015/12/05(土) 16:30:31.36ID:ckYMWiJu
>普通プログラムにミスが有っても、プログラムがクラッシュするのは当たり前としても
>VSを巻き添えにしてフリーズするのは何か変なわけです

昔ネットワークドライブ上にプロジェクト作っててそうなったことはある
0739デフォルトの名無しさん2015/12/05(土) 16:39:03.00ID:uFLCx2kQ
マルチスレッドノデッドロックナンカデモ
PCキョウセイサイキドウトカフツウニアルカラナ
ソノテイドデツウジョウノジョウキョウジャナイデスッテイイキルノハ
アタマガヨワインダロウナッテオモワレルダケ
0740デフォルトの名無しさん2015/12/05(土) 16:44:43.34ID:HGRqjVZT
嫌みなら半角と全角を交互に使って書くとより良いぜ
0741デフォルトの名無しさん2015/12/05(土) 16:46:13.61ID:oc+U1/Vu
嘘でも「お騒がせしました」とか、「有難う御座いました」などの社交辞令を言わずに
「スレの無駄なので、やめましょう」と捨て台詞吐いてどっか行ったマナーの悪さに草不可避www
マルチポストする奴が嫌われる理由ってこういうことだったんだなっていう見本www
0742デフォルトの名無しさん2015/12/05(土) 16:47:56.69ID:zuUud8BL
呪文に見える
0743デフォルトの名無しさん2015/12/05(土) 16:49:21.41ID:zuUud8BL
あ、そうだ。VS2015でクラッシュというのは、実行時だけ?デバッグ時は?
0744デフォルトの名無しさん2015/12/05(土) 16:49:58.74ID:ifqUzVNW
エコエコアザラク
0745デフォルトの名無しさん2015/12/05(土) 17:03:59.94ID:pK0sc289
シコシコピュッピュッ
0746デフォルトの名無しさん2015/12/05(土) 17:09:41.94ID:NlJfEAqa
DDK使っている時なんかOS毎お亡くなりに
たまに、最新ソースも巻き添えとか
0747デフォルトの名無しさん2015/12/05(土) 17:29:46.75ID:ckYMWiJu
DiskDestroyKiller
0748デフォルトの名無しさん2015/12/05(土) 17:33:12.23ID:M4JOBDA+
下手なウィルスより極悪やなw
0749デフォルトの名無しさん2015/12/05(土) 18:07:17.82ID:6eYmgp/j
>>735
Windows95時代を思い出すような現象だなぁw
0750デフォルトの名無しさん2015/12/05(土) 19:33:31.50ID:HGRqjVZT
アンインストールするとディスクごと消し去るヤンデレみたいなエロゲ
0751デフォルトの名無しさん2015/12/05(土) 20:03:24.98ID:ySecgDBd
うpでーとしたらCドライブルート以下消し去ったオンゲもあったよね
0752デフォルトの名無しさん2015/12/05(土) 20:05:20.94ID:eGerJrSR
>>743
「デバッグ時」が何を指しているのかわかりませんが
VS2015のデバッガ上で実行した上で、プログラムのエディトに日本語入力をしようとするとVSがフリーズします
エクスプローラから普通に実行すれば普通に動きます
「デバッグ時」がステップ実行という意味でしたら
VSでステップ実行しながらプログラムに日本語入力をするのは困難なので試せません
フリーズするタイミングは、変換窓が出た直後です
何度やっても100%フリーズします

>>749
昔のVSはマルチスレッドプログラムをブレークポイントでとめると良く固まってました
あんな感じです
しかも日本語入力をするだけで100%フリーズするので、だましだましに使うことも出来ません

とりあえずVS2015を最新版にしてみます
0753デフォルトの名無しさん2015/12/05(土) 20:06:49.59ID:ySecgDBd
スレの無駄なので、やめましょうって言って
舌の根も乾かない内に再降臨フイタw
0754デフォルトの名無しさん2015/12/05(土) 20:28:35.36ID:wt9GdtlO
>>752
デバッガの仕組み理解してる?
ブレークポイントにしろステップ実行にしろ本来実行するべき命令をソフトウェア割り込みで乗っ取って別の処理走らせてるんだぞ
OSのカーネルレベルでデバッガ(VSのIDEだったか?)と何かが競合すればフリーズもするだろ
昔DRM絡みで何かのシステムファイルが問題起こしてただろ
0755デフォルトの名無しさん2015/12/05(土) 20:36:35.47ID:37l+kYy9
>>754
同じマシン上でVS2013なら起こらないって言ってるから
質問者の環境+VS2015固有の問題なんだろう
本人もそう思ってるみたいだし

もっと優しく言ってあげなきゃ
また、「スレの無駄なので、やめましょう」ってすねちゃうぞw
0756デフォルトの名無しさん2015/12/05(土) 20:43:55.87ID:b6zXTnH8
おまかんってどういう意味だろ?
検索してもわからんかったわ
0757デフォルトの名無しさん2015/12/05(土) 20:45:33.64ID:zW/Ol4xt
つ PyDbg
0758デフォルトの名無しさん2015/12/05(土) 21:48:12.44ID:wharPYQR
>>756
どこで検索したんだよ…
Google で おまかん って入れたら おま環 意味 って表示されるんだが
0759デフォルトの名無しさん2015/12/05(土) 22:26:09.42ID:ls1Kp+wn
INT命令に書き換えてブレークポイント作るのは本当は気持ち悪いよな
EIPが特定の値になるのをトラップするマイクロ診断的なものでないと
0760デフォルトの名無しさん2015/12/05(土) 22:30:21.01ID:3cIIMMg0
>>758
さあ? どこで検索したんやろ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;
}
0761デフォルトの名無しさん2015/12/05(土) 22:49:16.19ID:9yCwvOA5
変なことしてた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;
}
0762デフォルトの名無しさん2015/12/06(日) 03:33:10.31ID:RpqIStl8
どうせdllでデッドロップしてるとかだったんだろ
0763デフォルトの名無しさん2015/12/06(日) 03:34:15.74ID:1bjsyoJR
VS2015でデバッグするだけのPCスペックが無いだけなんじゃね
IME起動時点で物理メモリいっぱいになっちゃうとか
0764デフォルトの名無しさん2015/12/06(日) 06:34:10.49ID:1f6kb9ui
VMで走らせててもホストごとフリーズするから困ることがたまによくある
0765デフォルトの名無しさん2015/12/06(日) 08:32:26.41ID:kqzpr8OR
>>764
物理メモリが足りないだけじゃないですか?

>>763
ですから、完全に自分の環境のVS2015のデバッガとIMEで何か問題が起こっている臭いと
前スレで申し上げたのが目に入らないのでしょうか?

私は、このスレ民が誰も持ってないVS2015を購入する財力があるんですよ?
物理メモリなんていつでも大人買いしてます
そのことを公表してしまうと、そんなに財力があるくせに、なぜ検証用のセカンドマシンを持ってないの?
という疑問を持たれるかと思いますが、その点について話し合ってもスレの無駄使いなので、やめましょう

また、この時代、IME起動した程度で物理メモリが足りなくなるなんてことありえません
アイデアを出して頂くのは歓迎ですが、幼稚すぎて話しになりません

>>762
当たり前じゃないですか

IME変換窓を表示する → 親であるエディットにメッセージをSendしようとする → エディットにコントロールIDが無いので
メインウィンドウであると勘違いしてトップレベルウィンドウのHWNDを取得し結果としてメインウィンドウ宛てに送る →
誤配で郵便局員と揉める → その間Sendしたメッセージが返ってこないのでIMEが固まる →
IMEを利用している全てのプログラムが固まる

ですよね? そんな当たり前のことも分からないのですか?

>>761
再三に渡り申し上げていますように、私のコードにはバグが入り込む余地など皆無ですから
勝手に修正するのはお止め下さい
コードに変更が加えられてバグが直っても何の意味もありません

しかしながら、これ以上の議論はスレの無駄使いなので、もうやめましょう
0766デフォルトの名無しさん2015/12/06(日) 08:58:43.45ID:PCxLF6KN
>>756
おまえのおかんがでべそ
の略
0767デフォルトの名無しさん2015/12/06(日) 09:02:27.54ID:wDKmKefW
>>766
おまえかんぺき
0768デフォルトの名無しさん2015/12/06(日) 13:48:49.22ID:o47VB080
>>752
> >>743
> 「デバッグ時」が何を指しているのかわかりませんが
> VS2015のデバッガ上で実行した上で、プログラムのエディトに日本語入力をしようとするとVSがフリーズします
> エクスプローラから普通に実行すれば普通に動きます
> 「デバッグ時」がステップ実行という意味でしたら
> VSでステップ実行しながらプログラムに日本語入力をするのは困難なので試せません
> フリーズするタイミングは、変換窓が出た直後です
> 何度やっても100%フリーズします

ステップ実行なりブレークポイントを置くなり何でもいいけど、財力あるなら
マルチモニタでも複数台PCでリモートデバッグでも何でもして問題箇所を絞ってよ。

財力あるけど能(脳)力はありません?
0769デフォルトの名無しさん2015/12/06(日) 14:24:04.68ID:OHUYOsyJ
たしかにエラーも出ないログも吐かない冷凍マグロだとやりにくいな
0770デフォルトの名無しさん2015/12/06(日) 16:51:18.20ID:kqzpr8OR
>>768
まともな解決策の一つも示すことのできなかったスレ民に
私の能力云々について、とやかく言われる筋合いはありません

ただ、能力があるかないかということであれば、私の提示したサンプルコードが
バグの入り込む隙のまったくない洗練されたものであることから、その能力を疑う余地は無いでしょう
その点はあなたと対極にあると言って過言でないと思います

端的に言って頭が良い上に金も持ってるということを知られてしまうと
あなたのように嫉妬に駆られて噛み付いてくる輩が沸くのが分かっていたので
財力のことを公表することは差し控えさせて頂いておりました

>>769
いえいえ、その程度のことは私にとっては何の障害にもなりません
実際、スレ民の力を借りるまでも無く、即座に問題を解決できたことがその証拠です

また自慢と受け取られると心苦しいのですが一言付け加えさせて頂きますと
私のレベルに到達すればプレイクポイントはアセンブリレベルで設定しますので
どこで何が起こってるのかなど一目瞭然なのであります
今回は、あなたたち無能なスレ民が無い知恵を絞り右往左往してる滑稽な姿を見て楽しんでいただけです

しかしながら、これ以上の議論はスレの無駄使いなので、もうやめましょう
0771デフォルトの名無しさん2015/12/06(日) 17:25:27.91ID:fphXThfE
>>770
みんな適当にレスしてるのにそれに対して真面目に長文で返すあなたは相当暇なんですね
0772デフォルトの名無しさん2015/12/06(日) 17:38:35.94ID:kqzpr8OR
>>771
>みんな適当にレスしてる
実生活においても何をしても中途半端な人たちですから
本気出しても中身が伴わずに適当にレスしてるように見えますよ

>相当暇なんですね
態々そんなことを言うために書き込みしたんですか?
どちらが暇なんでしょうね
ただの負け惜しみじゃないですか
0773デフォルトの名無しさん2015/12/06(日) 17:47:37.42ID:fphXThfE
>>772
あれ?もう解決したんじゃないの?
0774デフォルトの名無しさん2015/12/06(日) 18:21:39.03ID:al/vyHCs
解決したんなら、問題を起こしてたモジュールと発生条件教えてよ。
くれくれ君じゃないなら。
0775デフォルトの名無しさん2015/12/06(日) 18:23:36.29ID:Z7509Thm
>>735
>普通プログラムにミスが有っても、プログラムがクラッシュするのは当たり前としても
>VSを巻き添えにしてフリーズするのは何か変なわけです
そうでもない
バグがあっても強引に通っていたコードがデバッガのコードが割り込むことで動かなくなる事は普通にある

>>762
バックドロップの仲間か?

>>765
>再三に渡り申し上げていますように、私のコードにはバグが入り込む余地など皆無ですから
>勝手に修正するのはお止め下さい
>コードに変更が加えられてバグが直っても何の意味もありません
「バグが入り込む余地など皆無」というのが間違いだとは思わないのか?
修正されたコードならデバッグ実行してもフリーズしないなら
修正された部分(の前のコード)がおかしいってことでしょ
0776デフォルトの名無しさん2015/12/06(日) 18:57:11.42ID:F0HE3LOZ
>>775
> バグがあっても強引に通っていたコードがデバッガのコードが割り込むことで動かなくなる事は普通にある

それとVS巻き込んでフリーズするのは全然違うと思うが
0777デフォルトの名無しさん2015/12/06(日) 19:54:33.33ID:XJADMoL5
Windows10でHookの使用が変わった?
別スレッドの子ウインドウのメッセージはHookに来るのか
それともライブラリの仕様が変わったのか
0778デフォルトの名無しさん2015/12/06(日) 20:50:17.67ID:o47VB080
>>770
いや、俺前から真面目にレスしてるよ。
財力あるってアピールしてるんなら、財力使って解決する努力しろよ
って最後の行で皮肉書いてるだけだけど?

何にもやる気なく、あなたのソースが完璧と主張するだけならしかたないね。
ここで書くよりMSに言うべきでしょ?
言えないの?
なんで言えないの?
0779デフォルトの名無しさん2015/12/06(日) 21:22:57.43ID:NAZd77H+
ID:eGerJrSRですが
VS2015をアップデートしてもフリーズは直りませんでした
しかしIMEをgoogle日本語入力にしたところ、フリーズしなくなりました
私の環境のMS-IMEとVS2015のデバッガの間でなにか不都合が起こっていたようです
お騒がせしました

ちなみに ID:kqzpr8OR は別人ですので気を悪くしないでください

ソースコードを貼り付けた意味ですが
他の人の環境でも同じことが発生するか同一コードで確かめて欲しかっただけでした
最初からおまかん、なのかどうかが知りたかっただけでした
その辺の認識の違いで食い違いが発生したみたいです
始めからそのように述べておけば良かったと反省しています
0780デフォルトの名無しさん2015/12/06(日) 22:02:20.58ID:MC+a0W15
MSIMEは何かと不具合の噂多いからなー
0781デフォルトの名無しさん2015/12/06(日) 23:40:56.47ID:CmQ2QDBG
ほんとスレの無駄だったね
0782デフォルトの名無しさん2015/12/07(月) 03:45:47.41ID:8iat4Fp6
【 オンライン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
0783デフォルトの名無しさん2015/12/07(月) 07:57:18.98ID:WaL6xLeX
ガチンコ・ジャッジって何?
高度情報サイト調べたら書いてあるの?
0784デフォルトの名無しさん2015/12/07(月) 08:42:00.94ID:rUHyUO/0
それから、誤解の無いように一言付け加えさせて頂きますと
「同一コードで同じ現象が発生するのか確かめて欲しかっただけ」という発言の真意は
あなたたち低脳スレ民に解決策を求めても、解決することなんて100%無いだろうから無駄という意味です

そのあたりは、普通に社会生活を営んでいれば推し量れそうなものですが
解決策になってない提案を自信満々で書き込んでくる愚か者の多さに唖然としました
図らずもここのスレ民が、プログラミング能力以前に、人間としての能力の低さが
浮き彫りになる形となり、関わりを持たないことが最善であると認識することができました

あと、横レス恐縮ですが、>>778さんはスレ民の方ですよね?
何故、安価が>>770なんでしょうか?
真面目にレスしてないって主張してるのは>>771さんで、
真面目にレスしてる(けど能力が低いから適当に見える)って言ってるのが>>770,>>772さんですよね?
知能指数が低すぎて話しの流れが読めないのか、あるいはそもそも言葉を理解する能力が無いのか
または、真性の馬鹿で安価すらまともに打てないのか
何れにしても、またここにスレ民が馬鹿という根拠が記されたことにより
逆説的に私の言い分が100%正しい事が証明されたわけです
0785デフォルトの名無しさん2015/12/07(月) 09:03:43.48ID:3PFXwSng
論点からずれた事だらだら並べてそんなに暇なんか?
0786デフォルトの名無しさん2015/12/07(月) 09:04:19.05ID:0+/WYlAQ
>>784
それが質問者の態度かよ!
そう思ってるならなんで質問するの?馬鹿なの?
0787デフォルトの名無しさん2015/12/07(月) 09:16:32.61ID:sbn50vDX
>>784
いやいや、あんたも大概低脳だろ
MS-IMEとVS2015のデバッガの間で何か不具合が起こってることなんて
VS2013で問題ないってことからして最初から明白なのに
VS2015をアプデしてGoogleIMEをインストールして、それで初めてその結論に達するとか
低脳丸出しじゃん

ご主人様が低脳で、使われてるVS2015が真価発揮できなくて可哀相だわ
0788デフォルトの名無しさん2015/12/07(月) 09:24:18.11ID:2WXCWQW+
つか、その結論に至るのに何日掛かってるんだよって話しだよなw
0789デフォルトの名無しさん2015/12/07(月) 10:26:18.94ID:n4BtPw1p
>>784はいつもの煽るしか脳のないお子様の騙りだろ

偽質問者のプロフ
VS2015を購入できる財力がある、でもPCは1台しか持ってない
アセンブリレベルでブレークポイントが設定できる高度な技術力、でもたどり着いた解決方法はVSとIMEの入れ替え
0790デフォルトの名無しさん2015/12/07(月) 10:31:39.04ID:tO/J50M7
確かに原因の特定すらできてないよな
興味ないからどうでもいいけど
0791デフォルトの名無しさん2015/12/07(月) 10:50:33.78ID:GwFr+5pM
「おま勘」連呼して「いや、おまかんじゃないよ」って言ってもらえるのチラ見してるのがキモかった
0792デフォルトの名無しさん2015/12/07(月) 11:05:16.82ID:V+HVpMUU
人間性についての言及があるけど他の技術系のスレに比べて意識高い人少ないのは事実だよな
0793デフォルトの名無しさん2015/12/07(月) 11:19:34.93ID:V+HVpMUU
あ、意識他界の人は大勢居るけどね
0794デフォルトの名無しさん2015/12/07(月) 12:27:54.19ID:6rSJBSiX
ID:eGerJrSRですが、
ID:rUHyUO/0 は私ではないので気を悪くしないでください
アラシです
反応しないでください
0795デフォルトの名無しさん2015/12/07(月) 12:29:33.19ID:0b9CinAj
と、いいながらマッチポンプで荒らすという…
0796デフォルトの名無しさん2015/12/07(月) 12:38:36.81ID:erlzR1YA
>>794
「ID:eGerJrSRですが」くらいは俺でも言えるのでアッピールする方が怪しい
そんなにアッピールしたきゃ名前欄に「fusianasan」って書け
できないのなら黙ってろ
0797デフォルトの名無しさん2015/12/07(月) 13:00:11.78ID:PFJ6xruc
てか、いい加減スルーしようよ…
0798デフォルトの名無しさん2015/12/07(月) 13:01:09.37ID:HgOqd3RD
誰が誰かなんて正直どーでもいい
少なくともID:eGerJrSRが
自分のやってることや考えに間違いは絶対にないと思い込んでる勘違い野郎だってことと
スレで暴れて他人に迷惑をかけても何とも思ってない痛々しい馬鹿だってことわはっきりしてる
0799デフォルトの名無しさん2015/12/07(月) 13:34:02.13ID:KuRdWB2c
俺が村田だ
まで読んだ
0800デフォルトの名無しさん2015/12/07(月) 23:20:25.64ID:4dGrKabk
>>708 が非常識なのは当然として、
まったくピント外れの書き込みで何の役にも立ってないのに偉そうにしてる奴らもどうかと思う
0801デフォルトの名無しさん2015/12/07(月) 23:26:56.96ID:4dGrKabk
>>708
問題とは関係ないけど、
mainの最後、return 0L; なのは何か意味があるの?
0802デフォルトの名無しさん2015/12/08(火) 00:31:00.02ID:zsH7v/oq
>>801
どういうこと?
「L」の意味合いについての質問か?
0803デフォルトの名無しさん2015/12/08(火) 01:10:17.18ID:smcxnEg4
>>801
>>708様のバグのないコードだぞ?
0804デフォルトの名無しさん2015/12/08(火) 01:18:39.29ID:BN6+7Zbb
その後も自力で何とか試行錯誤を繰り返しておりましたがフリーズ問題は解決に至っておりません
このまま無かったことにするのはスレを見てる方に対して失礼だと思いましたので
引き続き、皆様のお知恵を拝借してフリーズを解決できるコードを募りたいと思います
宜しくお願いします

#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;
}
0805デフォルトの名無しさん2015/12/08(火) 02:58:19.81ID:2roaNsUx
コードの問題ではなくて環境の問題
仮想でもなんでもいいからクリーンなOS環境を確保する方が先決
その上で再現したらもう一度書き込みしなさい
0806デフォルトの名無しさん2015/12/08(火) 09:54:47.36ID:A7OO03sB
低脳呼ばわりしたり、宜しくって言ってみたり
どうなってんだよ
0807デフォルトの名無しさん2015/12/08(火) 10:37:48.74ID:vWX5dYCl
>>804
最小コードよりも、動くコード書くのが先じゃないの?
ビジュアルスタジオのWIN32プロジェクトで自動生成されるテンプレを元に下記の文を追加してみたらどうだい?
HWND hEditor; // エディタ
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message){
case WM_CREATE: hEditor = CreateWindow(L
0808デフォルトの名無しさん2015/12/08(火) 10:40:19.16ID:vWX5dYCl
書き込みミスった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;}
0809デフォルトの名無しさん2015/12/08(火) 11:44:51.55ID:rtJmb9vL
EditBoxコントロールのCreateWindow関数の一部にミスがあるみたいだけど修正すれば問題ないことは確認した
動作環境 : Windows10Pro(build10586.17), Microsoft IME
ビルド環境 : VisualStudioEnt2015Update1(Ver14.0.24720.00)
0810デフォルトの名無しさん2015/12/08(火) 12:37:52.55ID:zjJIjn6V
>>806
別人がなりすましで書き込んでいるだけだからね
IMEをグーグル日本語入力に変えてフリーズしなくなったから
本人的にはもう解決している話
0811デフォルトの名無しさん2015/12/08(火) 12:47:54.43ID:WQt5IVqj
>>806
構ってちゃんでしょ
スルーしようよ
0812デフォルトの名無しさん2015/12/08(火) 17:36:04.71ID:eJubGLpd
>>802
そう
戻り値がintなのになんでわざわざLを付けたのかってこと
0813デフォルトの名無しさん2015/12/08(火) 17:37:05.84ID:eJubGLpd
>>804では消えてるからただのミスかな
0814デフォルトの名無しさん2015/12/08(火) 19:57:13.33ID:9OJSSokt
誘導されてきました。
------------
開発環境 XP SP3 VC++2008EE
Win32 コンソール アプリケーション
MFC=標準Windowsライブラリを使用
ATL=使用しない
文字セット=マルチバイト

実行環境 Windows NT系OS

この環境で以下のような改造したファイルオープンダイアログを
実装しようと思ってるのですが、
http://i.imgur.com/lgk1ApU.jpg

どのようにしたらいいのでしょうか?
検索してもうまく探せませんでした。
0815デフォルトの名無しさん2015/12/08(火) 20:05:24.43ID:V92FzyIA
>>814
lpfnHookで探してみて
0816デフォルトの名無しさん2015/12/08(火) 20:47:49.78ID:9OJSSokt
>>815
ありがとうございます
0817デフォルトの名無しさん2015/12/08(火) 20:56:35.07ID:pU1qoPPC
>>814
あとテンプレートもだな
0818デフォルトの名無しさん2015/12/09(水) 16:00:41.28ID:Z+x1QnkM
>>812
意味については分からん
本人が独自に決めたコーディング規約だろうくらいに思っておけばいいんじゃないの
0819デフォルトの名無しさん2015/12/10(木) 16:40:50.35ID:xYVEMhSB
Windows板の10スレで、沢山の人がIME固まると言ってるやつの再現コードなのかな

この症状は10586から出始めたから、10240で出ないなら10586そのものか、10586付属IMEの問題だったりして

財力あるなら、MSの有償テクニカルサポートに問い合わせれば真面目に対応してもらえると思う
バグならカネはかからないはず
0820デフォルトの名無しさん2015/12/11(金) 21:01:12.91ID:7hEsJRkD
どんなコーディング規約だよwww
0821デフォルトの名無しさん2015/12/12(土) 10:28:00.67ID:npRd3MLZ
おおかた 3.1/16bit -> Win32に移行したばかりの化石層から発掘されたコードのコピペだろ
0822デフォルトの名無しさん2015/12/12(土) 11:20:47.34ID:MmL5lxhk
文字列リテラルの前部には"L"を
整数リテラルの後部には"L"を付ければおkって
意味も分からずに覚えたからでしょ
0823デフォルトの名無しさん2015/12/13(日) 04:54:19.11ID:GpCTMsCJ
文字列に"L"付けるとどうなるの?
0824デフォルトの名無しさん2015/12/13(日) 07:31:56.73ID:eaDqvpLQ
ワイド文字しらんの?
std::locale::global( "japanese" ); // ユーザ変換によりstd::locale( "japanese" ,locale::category cat=LC_ALL )が渡される
std::wstring str( L"こんにちは" );
0825デフォルトの名無しさん2015/12/13(日) 12:59:24.78ID:wmJ8ONej
Windows XP登場あたりから特別な理由が無い限りUnicodeでプログラム組むことが推奨されてきたのに
この時代にL(_T)知らん奴が居ることに驚いた
0826デフォルトの名無しさん2015/12/13(日) 13:11:12.55ID:2pFFNjWZ
この時代にLつけないとワイド文字認識しないことに驚いた
0827デフォルトの名無しさん2015/12/13(日) 13:26:16.21ID:wmJ8ONej
>>826
既存コードとの互換性を考えたら”L無し=ワイド文字”ってのはやばいでしょ
プロジェクトのプロパティやpragmaディレクティブで、Lついてない文字列を
一括でワイド文字と認識させるようにするって案ならあってもいいかなって思う
0828デフォルトの名無しさん2015/12/13(日) 14:55:28.61ID:S5USnmm8
winでしかC言語触ったことがないピーヒョロな頭なんで考えが及ばなくても仕方ないじゃん。
やばいとか知らねー。
0829デフォルトの名無しさん2015/12/13(日) 21:27:00.40ID:ScgB15D7
LなしはUTF8にしてくれた方が
0830デフォルトの名無しさん2015/12/13(日) 21:38:50.72ID:2pFFNjWZ
コマンドプロンプトがマルチバイトでないとちゃんと表示できない
からGUIと組み合わせる場合にめんどくさいんだよな
あと古い上に代わりがないタイプのAPIがchar*しか対応なかったり
0831名無しさん@そうだ選挙に行こう2015/12/14(月) 12:11:01.23ID:hRRo1CCV
そうそう、includeもマルチバイトなんだよな
0832名無しさん@そうだ選挙に行こう2015/12/14(月) 14:23:41.55ID:baKxaSGv
>>822-825
wchar(UTF-16) と char(UTF-8) をどっちも
wchar(UTF-8) と char(UTF-8) だと思ってる人が結構いる
0833名無しさん@そうだ選挙に行こう2015/12/14(月) 14:56:24.64ID:K7v/F4Aj
>>832
いねーよそんな奴w
0834名無しさん@そうだ選挙に行こう2015/12/14(月) 15:29:30.45ID:hRRo1CCV
>>832
まー確かに0x00ffまではUTF-8といえないことも・・・、いやいや、いねーわそんな奴w
0835名無しさん@そうだ選挙に行こう2015/12/14(月) 15:38:58.09ID:DSJzQQ/E
>>832
wcharのwは何のwなんだよw
0836名無しさん@そうだ選挙に行こう2015/12/14(月) 16:37:25.30ID:hRRo1CCV
>>835
「なんだよw」のwは何のwなんだよw
0837名無しさん@そうだ選挙に行こう2015/12/14(月) 18:00:55.66ID:Ag+6b4jq
>>836
「なんだよw」のwは何のwなんだよw
0838名無しさん@そうだ選挙に行こう2015/12/14(月) 18:11:14.75ID:reTGASBb
ユニコードなのに色んなコードがあるのがなんとも
0839名無しさん@そうだ選挙に行こう2015/12/14(月) 18:29:10.36ID:W0/Eg9YL
文字集合は一つ
符号化方式は一つじゃないから
0840デフォルトの名無しさん2015/12/14(月) 20:57:07.79ID:mQKSdQ1D
charw
0841デフォルトの名無しさん2015/12/15(火) 07:39:41.73ID:9P3I1wS2
>>836
昔ネトゲでは半角しか入力できませんでした・・・
て続けたらいいのかw
0842デフォルトの名無しさん2015/12/15(火) 09:40:51.53ID:GmzcEDm2
ωchar_t *ω = NULLPO;
0843デフォルトの名無しさん2015/12/15(火) 21:36:27.75ID:PseeQbpS
半角カタカナとはなんだったのか
0844デフォルトの名無しさん2015/12/15(火) 22:44:46.92ID:o5vxE/KH
char(笑)
0845デフォルトの名無しさん2015/12/16(水) 04:38:00.32ID:JxdBAlmf
>>842-843
ガッ

旧サロゲートだなー
0846デフォルトの名無しさん2015/12/16(水) 14:14:35.28ID:EEnl9+ch
>>838
ほんこれ
16bit(65,536通り)じゃ、世界中の文字を表現するのに最初から足りないんだよな
日本の絵文字も一億個くらい入れたいから
LCHAR=32bit char を作って、文字コード統一してくれ
0847デフォルトの名無しさん2015/12/16(水) 21:34:08.98ID:YGwjiYwh
もうぜんぶ64ビットでいいよ・・・
0848デフォルトの名無しさん2015/12/17(木) 00:48:21.74ID:Vfp48Rrj
UTF32でいいじゃん
0849デフォルトの名無しさん2015/12/17(木) 12:09:01.46ID:Szn4FINI
始皇帝に頼めばやってくれそう
0850デフォルトの名無しさん2015/12/17(木) 19:15:30.59ID:Szn4FINI
鯖落ちてたぬ
0851デフォルトの名無しさん2015/12/17(木) 20:00:08.82ID:MUNBX9mT
>>846
世界中の文字を入れる必要なんかない
ある程度メジャーな言語が表現できれば十分
0852デフォルトの名無しさん2015/12/17(木) 21:33:30.91ID:o7OE0QW2
>>851
君みたいな奴がウニコードの仕様を決めたんだろうな
0853デフォルトの名無しさん2015/12/17(木) 22:37:13.62ID:O/TlL5Ei
世界中のあらゆる文字を表現するなんて大それた目標はTRONコードみたいな
拡張可能な可変長コードでやってりゃよかったんだよ。
今のゴミ溜めみたいになったUnicodeみてると、オリジナルのUnicodeは妥協も多いが
そのぶん現実的、実用的だったと思うわ。
0854デフォルトの名無しさん2015/12/18(金) 23:29:03.09ID:Pd1EZ5ai
プログラマはMacを使ってるってマジ?
http://hayabusa3.2ch.net/test/read.cgi/news/1450395043/
0855デフォルトの名無しさん2015/12/19(土) 06:36:23.57ID:JTS0FgkK
雰囲気プログラマな
0856デフォルトの名無しさん2015/12/19(土) 13:09:27.46ID:EW8XrhCB
画面上の座標を指定して、そこにある文字を取得するAPIがあったとおもったんですが、なんて関数だったかわかる方教えてください。
0857デフォルトの名無しさん2015/12/19(土) 13:13:29.63ID:omg72g7V
そんなのが存在してるとして、どういう仕組で動くんだろう
0858デフォルトの名無しさん2015/12/19(土) 13:29:57.81ID:2CKHjxE+
>>856
文字を画像で取得するならCOPYRECT
0859デフォルトの名無しさん2015/12/19(土) 13:39:36.64ID:nLbzSKo0
>>857
fontの画像と比較するとか?
0860デフォルトの名無しさん2015/12/19(土) 15:20:19.93ID:cnr2UN2D
OCRがやってることなんだから対して驚くことなかろう
0861デフォルトの名無しさん2015/12/19(土) 15:22:50.20ID:iG82T79N
captcha解くために別のURLで人間に回答させてDB化するソフトがあったな
0862デフォルトの名無しさん2015/12/19(土) 17:07:21.92ID:JTS0FgkK
>>857
テキストVRAMを読むんですよ。
0863デフォルトの名無しさん2015/12/19(土) 23:02:33.63ID:NrSgV7LX
指定した位置の文字を読み取るWin32API
https://msdn.microsoft.com/ja-jp/library/cc429673.aspx
https://msdn.microsoft.com/ja-jp/library/cc429664.aspx
0864デフォルトの名無しさん2015/12/19(土) 23:06:47.65ID:nLbzSKo0
>>863
どう言う原理か30文字で要約してくれ
0865デフォルトの名無しさん2015/12/19(土) 23:48:08.03ID:NHtd1Eg1
コンソールだったら文字ベースで情報保持してるんだから、訳ないでしょ。
0866デフォルトの名無しさん2015/12/19(土) 23:52:15.16ID:nLbzSKo0
>>865
文字数オーバー
答えになっていない
20点
やり直し
0867デフォルトの名無しさん2015/12/20(日) 02:06:05.56ID:56xMgfm6
バカが偉そうなのは何で?
0868デフォルトの名無しさん2015/12/20(日) 07:18:46.95ID:37nsyMmy
>>864
MSがそのように作ったからだよ。ばか。
0869デフォルトの名無しさん2015/12/20(日) 07:46:34.97ID:uuZPbj7S
>>867
馬鹿はエラが張ってるだろ
0870デフォルトの名無しさん2015/12/20(日) 11:00:10.04ID:8RLYRFXT
consoleならallocconsoleで自前でバッファ用意出来るから
画面の位置のを読むのは時間の無駄
0871デフォルトの名無しさん2015/12/20(日) 12:27:47.08ID:zAzsvh37
引数の座標データがPOINTS構造体ではなくてCOORD構造体な件について。
0872デフォルトの名無しさん2015/12/20(日) 13:48:28.72ID:8RLYRFXT
coord: 座標
何が問題?
0873デフォルトの名無しさん2015/12/20(日) 15:46:54.52ID:hmqFHT/t
POINTSと複数形になってるところがポイントじゃね
ということでCOORD構造体の配列じゃなくてふざけんなってことかね。
0874片山博文MZ ◆T6xkBnTXz7B0 2015/12/20(日) 15:50:10.13ID:DvVXmBam
そのSはSHORTのSだろ
0875デフォルトの名無しさん2015/12/20(日) 16:18:02.21ID:8RLYRFXT
最小化が(-32768,-32768)かなんかだったけど
32768以上のサイズのウィンドウだったら隠しきれないな
0876デフォルトの名無しさん2015/12/20(日) 17:11:38.42ID:KkGGgVF0
>>875
世界のどこかで試したことのある愛すべきバカはいないのだろうか?
0877デフォルトの名無しさん2015/12/20(日) 17:30:51.78ID:MKBZtdD0
POINTSはスクリーン座標(マウスで取得するクライアント領域の座標)、CHOORDはコンソールスクリーンバッファの座標だろ
ピクセル単位とコンソール文字単位じゃまるで意味が違う
0878デフォルトの名無しさん2015/12/20(日) 17:33:13.91ID:MKBZtdD0
訂正:COORD
0879デフォルトの名無しさん2015/12/21(月) 22:35:49.69ID:FHH9nXMk
うちの環境でさえ 7680x1600 だから、
これの4倍くらいなら、そんな凄いバカでなくてもやらかすだろ
0880デフォルトの名無しさん2015/12/22(火) 10:14:24.66ID:rqbDbnyc
ウィンドウアプリでも_cprintfを使いたいのですが代替APIはありますか?
0881片山博文MZ ◆T6xkBnTXz7B0 2015/12/22(火) 10:38:01.21ID:Ho+K44el
>>880
SetTextColor
TextOut
DrawText
DrawTextEx
0882デフォルトの名無しさん2015/12/22(火) 13:03:35.05ID:rqbDbnyc
>>881
対応できました。ありがとうございます。
0883デフォルトの名無しさん2015/12/22(火) 20:30:17.58ID:0q8I2qvC
ncurses
0884デフォルトの名無しさん2015/12/22(火) 23:54:02.55ID:cFhaBXKc
>>879
そんなアホみたいにデカイ液晶有るのか?
何に使っている?
0885デフォルトの名無しさん2015/12/23(水) 00:13:35.04ID:IHjjwtj5
何枚か並べているんだろう
0886デフォルトの名無しさん2015/12/23(水) 02:57:17.09ID:/wOBmLFi
>>884
何も知らないゴミは書き込むなよ。
幅1920pxのディスプレイでクアッドディスプレイやれば7680になるだろうが。
グラボ2枚刺にディスプレイ4枚程度なら今時どんな貧乏人でもできる。
お前みたいに知識もなく調べもせずに書き込んでスレを消費するゴミクズは目障りなんだよ。
知識もない調べない知恵送れのゴミクズがまともな人間の会話に混ざろうとするな、身の程を知れ。
アホはお前だろ。と言いたいところだがお前はアホ未満のゴミだから言えないな。
出ていけ。
0887デフォルトの名無しさん2015/12/23(水) 03:38:24.63ID:h+VA4S6f
無知なのにおかしなこと書き込む奴も大概だが環境の自慢厨はもっと目障りなんだよ
自慢したいのなら知識だけにしとけ
0888デフォルトの名無しさん2015/12/23(水) 06:12:37.31ID:Bay2doKJ
>>886
なぜそんなにイライラしているのですか?
君みたいな童貞は余裕が無いのは分かりますが…
0889デフォルトの名無しさん2015/12/23(水) 08:50:14.87ID:2F8TsTF+
実際に第三象限に描かれた最小化ウィンドウが
第一象限に現れてくることってあるの?
どんなでかいディスプレイ用意しても無駄じゃね?
0890デフォルトの名無しさん2015/12/23(水) 14:02:06.27ID:v0nEZQ5O
>>886
煽っているところ申し訳ないんだが
「1920pxディスプレイを4枚並べて」という場合、32768を超えるためには18枚必要なんだが
2560pxディスプレイでも13枚必要
シャープあたりが1600万円の7,680×4,320pxディスプレイを出すらしいがそれでも5枚必要だ

>>879は「うちの環境の4倍」と言っている
仮にすでに何枚か並べているとして全部で12枚とか16枚以上のディスプレイを使うというのは「普通にやらかす」ことなのだろうか
値段的なことはおいておいても1枚から追加して4枚というのはありえることと思うが
4枚の人が16枚にするというのは「凄いバカ」ではないだろうか
そういう点から>>884は物理的に7,680×4,320pxディスプレイと解釈したんだと思う

ちなみにアスキーさんの記事
http://weekly.ascii.jp/elem/000/000/285/285487/

>>889
ディスプレイの配置によるんじゃないだろうか
プライマリディスプレイが基準になるはずでセカンダリ以降をプライマリの左に配置するとマイナス座標になる
プライマリが下で上にセカンダリを配置するとこれももマイナス座標になる
0891デフォルトの名無しさん2015/12/24(木) 02:23:52.41ID:h3JTIwaN
>環境の自慢厨
どこの誤爆か知らんが
環境の自慢厨とやらがいるスレでやれ発達障害
0892デフォルトの名無しさん2015/12/24(木) 03:31:04.38ID:5C+hR802
>>886のことを言ってるんだろ
0893デフォルトの名無しさん2015/12/24(木) 03:51:07.60ID:cfkhT3OL
わざわざID変わった後に亀レスしてくるところを見ると
>>879>>886>>891
は同一人物か?
0894デフォルトの名無しさん2015/12/24(木) 05:47:25.79ID:h3JTIwaN
反論できなくなると自演認定する奴いるよな
追い詰められると関係ない話をこじつけて保身しようとするのは発達障害の典型
0895デフォルトの名無しさん2015/12/24(木) 06:28:11.13ID:jvPsYvZG
自演否定でも自演擁護でも構わんがいちいちスレを荒らすな
自己主張したいなら余所でやれ
0896デフォルトの名無しさん2015/12/24(木) 11:10:35.00ID:h3JTIwaN
>>895=鏡に向かって喋ってる内容をわざわざ書き込む発達障害
0897デフォルトの名無しさん2015/12/24(木) 11:44:25.08ID:+OAEjoT0
>>893
>は同一人物か?
そうだろう。かつ童貞で頭も悪い。
0898デフォルトの名無しさん2015/12/24(木) 17:31:01.76ID:MjLZfEC/
>>896
お前が話ずらしてんじゃねーかw
0899デフォルトの名無しさん2015/12/24(木) 17:39:29.34ID:dt2VllYo
ここで髪の話はよせ
0900デフォルトの名無しさん2015/12/24(木) 18:14:59.25ID:4YM2CMve
900
0901デフォルトの名無しさん2015/12/24(木) 20:03:32.93ID:edQDesEY
お前らメリクリ!
0902デフォルトの名無しさん2015/12/24(木) 20:38:50.32ID:mFTVVltg
このディスプレイ横に並べたらいけそう

https://www.youtube.com/watch?v=m1RJASQT5i8
0903デフォルトの名無しさん2015/12/24(木) 21:23:19.78ID:DECH3WsR
Win32はLPARAMに符号ありのxとyを詰め込んでいるから
-32768〜32767までしか座標を扱えないんだよな
0904デフォルトの名無しさん2015/12/25(金) 12:25:35.03ID:ISLz7uba
関連動画にやたらボウリングが出てくるのはおま環?
0905デフォルトの名無しさん2015/12/25(金) 15:54:07.14ID:jK/x+z8S
905
0906デフォルトの名無しさん2015/12/25(金) 18:28:59.25ID:AIOAKki4
ぷ。
0907デフォルトの名無しさん2015/12/26(土) 14:09:13.88ID:E3MIEZFa
質問します
実行するのに長い時間のかかる関数があります
呼び出すと処理が終わるまで帰ってこず、途中で中断するような仕組みも用意されていません
この関数はソースがない外部のものなので修正はできません
この関数を呼び出すと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
一応ここに答えのようなものが載っているのですが
0908デフォルトの名無しさん2015/12/26(土) 14:17:19.97ID:E3MIEZFa
どちらにせよ、
http://www.codeproject.com/Articles/71529/Exception-Injection-Throwing-an-Exception-in-Other
に書いてある方法でワーカースレッドに外から無理やり例外を発生させたとしても
今対象の長い時間のかかる関数の中がどうなっているかわかからないので難しいと思いました

長い時間のかかる関数が、C++の例外機構を使ってRAIIでクリティカルセクションを管理していれば
無理やり例外を発生させることでLeaveさせることが出来るかもしれませんが
そうじゃなかった場合、Leaveせずに関数を抜けることになります
もちろんメモリリークもしますでしょう

別プロセスで実行するしか他にやりようがないように思えてきましたが
何か良い案はありますでしょうか
0909デフォルトの名無しさん2015/12/26(土) 14:21:43.20ID:E3MIEZFa
>C++の例外機構を使ってRAIIで

この日本語はちょっとおかしいですね

例外機構を使うか、もしくはRAIIで

に訂正しておきます
0910デフォルトの名無しさん2015/12/26(土) 14:29:31.38ID:E3MIEZFa
世の中には処理に時間のかかる関数がゴマンとあると思います
それらが外部のライブラリで修正不可能な事も一般的なことだと思います
加えて、長く時間のかかる処理は、ユーザーは何時でもキャンセルできるのも普通なことと思います

皆さん一体どうしているんですか?

実はキャンセルしているように見えて、キャンセルしておらず、最後まで走っており
キャンセルした場合は、結果データを捨てているだけ、とかですか?
0911デフォルトの名無しさん2015/12/26(土) 14:35:54.26ID:PvF8tuZ2
DOSコマンドで中断しようとして^C押したら
延々と時間が経った後に
結果を表示せず「中断しました(キリっ)」
って出て
どうせ最後まで実行するなら結果表示しろってむかついたのは良い思い出
0912デフォルトの名無しさん2015/12/26(土) 14:40:32.69ID:MqeDNb2X
クリティカルセクションにEnterしてるのはどっちのコードなんだよ。
自分のコードからEnterしてるんじゃねぇの?そんだったら、
TerminateThreadを呼び出すとともに、クリティカルセクションLeaveすれば
いいだけじゃねぇのか??
まぁ、クリティカルセクションは特定のスレッドにアタッチされると思ったから、カウント1の
バイナリセマフォ使えばいいんじゃねぇのかな。
使って。
0913デフォルトの名無しさん2015/12/26(土) 14:45:55.06ID:Sgv0r5+y
プロセスをキルすればいいだろ。
簡単なことさ
0914デフォルトの名無しさん2015/12/26(土) 14:49:45.60ID:MqeDNb2X
つか、まぁ、厳密にはTerminateThreadでキルするタイミングとスレッドが普通に
スレッドが終了するタイミングが重なったりするから、もっと制御必要か。
0915デフォルトの名無しさん2015/12/26(土) 15:07:23.22ID:Igcba1qr
>>908
> 別プロセスで実行するしか他にやりようがないように思えてきましたが
これだね。長い処理ならプロセス生成のペナルティなんてゴミでしょ。
0916デフォルトの名無しさん2015/12/26(土) 15:52:38.79ID:MqeDNb2X
つか、間違えた。TerminateThreadの説明みると、TerminateThreadの前ではバイナリセマフォとか
関係なくなすすべなしだわ。ごめん。別プロセスがいいね。
0917デフォルトの名無しさん2015/12/26(土) 17:22:27.23ID:E3MIEZFa
>>912
どっちと言われても両方だと思います

自分のプログラム側も自分を守るためにクリティカルセクションは使っていますが
こっちは自分のコードなので好きにできるので
>>908の方法でメインスレッドからワーカースレッドに無理やり例外を発生させる方法でも
なんとかなるので構わないんですけども

呼びだされ側の、時間のかかる関数側も、そっちはそっちで自分を守るために
クリティカルセクションなどを使っている可能性がありまして
ソースコードがないので実際にどういう実装になっているかは定かではないのですが・・・
勝手に想定外の例外を発生させて関数を巻き戻して上手く開放処理が走る
保証はないといった感じです
もし関数側が例外機構もRAIIも使わずにCスタイルでEnter/Leaveしていたら
>>908の方法で無理やり外から例外を発生させても意味無いですから

別プロセスで走らすしかなさそうですね
0918デフォルトの名無しさん2015/12/26(土) 23:51:05.38ID:7vqLpcYG
>>917
馬鹿には無理
身の程を知れ

ここはお前みたいな奴がヴァカアピールするスレではない
0919デフォルトの名無しさん2015/12/27(日) 03:07:52.61ID:vtL+jd1t
ブーメラン
0920デフォルトの名無しさん2015/12/27(日) 03:21:59.70ID:uDQp4eWs
ソースないならアセンブリ見て解析しろよ
0921デフォルトの名無しさん2015/12/27(日) 05:06:34.16ID:n35dT9A9
アセンブリ?
アセンブルのはソースだべ?
0922デフォルトの名無しさん2015/12/27(日) 09:46:06.79ID:W/VOfYcN
あせんぶろーぜ
0923デフォルトの名無しさん2015/12/27(日) 14:33:06.55ID:Acfv8QHx
WM_MOUSEWHEELのLPARAMに入ってるマウス座標って、クライアント座標じゃなくてスクリーン座標なんだね
下らんことで詰んでもうた
0924デフォルトの名無しさん2015/12/27(日) 14:40:36.28ID:IeXywcCL
>>923
ScreenToClient()で変換すりゃ良いんじゃない?
0925デフォルトの名無しさん2015/12/27(日) 14:51:26.69ID:Acfv8QHx
>>924
それでやります。あざます
0926デフォルトの名無しさん2015/12/27(日) 18:05:29.28ID:zGVY6mFV
よくハマるところだよね。
0927デフォルトの名無しさん2015/12/27(日) 23:11:12.75ID:wEcqjPTL
MSDNに書いてる事をドヤ顔で・・・
0928デフォルトの名無しさん2015/12/28(月) 12:22:33.02ID:Y4DeX8w+
クライアントの左上が (0, 0) じゃなくて
タイトルバーとかウィンドウ枠の分ずれてるのはなんでなん?
0929デフォルトの名無しさん2015/12/28(月) 12:56:04.56ID:dgI6+oKo
>>927
> MSDNに書いてる事をドヤ顔で・・・
語れなくて悔しいのはわかった
0930デフォルトの名無しさん2015/12/28(月) 12:59:54.19ID:b3qQlUF/
>>928
クライアントじゃないから
0931デフォルトの名無しさん2015/12/28(月) 16:20:50.20ID:i875NmCw
じゃー
ツールバーとかステータスバーの分はズレなかったように思うけど
メニューバーとスクロールバーだけ特別扱いなのは何で?
あとから拡張したからってのは分かってることだけどまるで一貫性がないよね

メニューバーもただのWS_CHILDだった方が後々都合が良かったのにね
0932デフォルトの名無しさん2015/12/28(月) 16:45:13.81ID:EuCUuVkC
タイトルバーとかはNC(非クライアント)領域って呼ばれててる。
WM_PAINTに対してWM_NCPAINTって。
まぁ、ただの呼び名の問題だからな。そんなこだわっても。
0933デフォルトの名無しさん2015/12/28(月) 18:19:55.77ID:Y4DeX8w+
左右の幅を縮めるとメニューバーが二段になって
クライアント領域が全部ずれたりするよね
0934デフォルトの名無しさん2015/12/28(月) 18:39:36.94ID:By8jd1bH
それはない。
0935デフォルトの名無しさん2015/12/29(火) 00:36:46.96ID:NmwzIy5H
>>929
自己紹介はしなくていい
0936デフォルトの名無しさん2015/12/29(火) 00:50:08.25ID:ngajy4jA
>>935
単発w
0937デフォルトの名無しさん2015/12/29(火) 01:08:23.57ID:NmwzIy5H
>>936
ID変わるタイミング知らんのかw
0938デフォルトの名無しさん2015/12/29(火) 06:43:26.45ID:x2QuPiOh
わざわざそのタイミング狙ってまでレスすることかよ w
ってことだろ
0939デフォルトの名無しさん2015/12/29(火) 11:39:54.40ID:6CCbAlEQ
くやしかったの?ごめんねw
0940デフォルトの名無しさん2015/12/29(火) 18:26:58.60ID:a9NNa9Ep
30分も経ってるのに、タイミングとか言われてもなあ
0941デフォルトの名無しさん2015/12/30(水) 00:32:40.72ID:6CJqV1bM
>>938
30分しか経ってないのに「単発w」とか単発って言いたいだけだろw
0942デフォルトの名無しさん2015/12/30(水) 01:41:46.09ID:eZTJN+3O
キッズ多いのなぁ
0943デフォルトの名無しさん2015/12/30(水) 02:11:12.54ID:Ov2mfylL
最近このスレには頭悪いのが多いな
0944デフォルトの名無しさん2015/12/30(水) 02:22:22.51ID:tlmx9qoR
分からないなら黙っててください。
ウザイだけです。
時代とどっちがいい?
0945デフォルトの名無しさん2015/12/30(水) 07:54:15.63ID:IhDAQ//h
>>943
ID導入されてからだよ。
まともな回答も全く返ってこなくなった。
恐らくまともな回答者と悪質な荒らし両方が消えて、
そのどちらでもない中途半端な層だけが残ったんだろう。
少なくとも問題を解決するために質問する場所ではなくなった。
回答の質と回答がくるまでにかかる時間を考えるとここは効率悪すぎる。
そして効率の悪すぎる選択肢を選ぶプログラマに成長はない。
0946デフォルトの名無しさん2015/12/30(水) 08:31:48.19ID:ceGJ3m+f
3行以上書くのは文章構成力のない痰カスと相場が決まっておる
0947デフォルトの名無しさん2015/12/30(水) 09:21:12.55ID:WpIjR9s5
>>831←中途半端な層
>>947も中途半端な層
0948デフォルトの名無しさん2015/12/30(水) 09:23:21.08ID:WpIjR9s5
安価間違えるのも中途半端な層
>>946への誤安価
0949デフォルトの名無しさん2015/12/30(水) 09:39:25.78ID:Jq3rckJ5
無様すぎ
0950デフォルトの名無しさん2015/12/30(水) 10:08:42.12ID:z3VqKnG6
>>947
なにこの年末カミングアウト
0951デフォルトの名無しさん2015/12/30(水) 11:16:54.04ID:DYiybrjz
>>1-1000
中途半端な層
0952デフォルトの名無しさん2015/12/30(水) 12:58:58.92ID:t7rYBktz
>>1-1000
中途半端な唇
0953デフォルトの名無しさん2015/12/30(水) 13:45:28.41ID:uafjeGLa
底辺同士仲良くやれ
0954デフォルトの名無しさん2015/12/30(水) 13:47:12.22ID:Q+ZAoAOe
>>953
「一歩引いた目線で事態を俯瞰できる冷静な俺」を演出しようとする中途半端な層
0955デフォルトの名無しさん2015/12/30(水) 13:52:42.30ID:1eDT/VUE
うぜえ
止めねえと殺すぞ
0956デフォルトの名無しさん2015/12/30(水) 14:20:38.06ID:/HMKIoW3
>>954
厨二臭い層
0957デフォルトの名無しさん2015/12/30(水) 22:14:25.35ID:z3VqKnG6
通報しました
0958デフォルトの名無しさん2015/12/31(木) 10:28:39.23ID:KKAqg1l1
>回答の質と回答がくるまでにかかる時間を考えるとここは効率悪すぎる。

2ちゃんはとっくにオワコン
0959デフォルトの名無しさん2015/12/31(木) 17:08:02.56ID:0eyIQ7zd
>>955=ロクに回答もできないくせに威勢だけは一人前の中途半端な層
0960デフォルトの名無しさん2015/12/31(木) 17:17:59.10ID:gJy9w4AY
>>943
ID導入の前は荒しの巣窟と化していた
ID導入で落ち着いたやり取りが続くようになった
>>945 はたぶん昔の荒し野郎
0961デフォルトの名無しさん2015/12/31(木) 17:56:06.76ID:2PlDRXcT
>>561
紅白見る→録画したガキ使見る→お前らのレポ見る→寝る
0962デフォルトの名無しさん2015/12/31(木) 18:50:58.09ID:0eyIQ7zd
落ち着いてやり取りはできるようになったけど、
情報価値のない雑談レベルのやり取りばっか

そして何よりいきなりレッテル貼ってる辺り
>>960がID出る前に荒らし回ってた奴だろうな
前に荒らしてた奴もいきなりレッテル貼ったり罵倒したりするパターンだったしな

自演で荒らす→ID導入→回答者流出により情報価値がなくなる、という完璧なコンボを決めた>>960
0963デフォルトの名無しさん2015/12/31(木) 20:10:34.60ID:NXxyivrJ
>>962
> そして何よりいきなりレッテル貼ってる辺り

なにこのでかいブーメラン w
0964デフォルトの名無しさん2015/12/31(木) 21:50:22.63ID:nJLqX/zt
一度リセットした方がいいなこのスレ
0965デフォルトの名無しさん2015/12/31(木) 22:12:55.21ID:F75alAnQ
CopyRectと構造体代入の相違について100字以内で説明せよ
0966デフォルトの名無しさん2015/12/31(木) 22:21:11.76ID:KP9fkYAQ
CopyRectと構造体代入には100字以内ぐらいの相違があるのである。
0967デフォルトの名無しさん2016/01/01(金) 00:51:59.47ID:Robe7ssm
>>965
ウザい。
ここは出題スレじゃないがそれも分からないほど知能が低いのか?
消えろゴミクズ。
0968デフォルトの名無しさん2016/01/01(金) 02:07:38.70ID:Y4ZB9vSq
お前らあけおめ
0969デフォルトの名無しさん2016/01/02(土) 15:04:41.20ID:dDeNCcj5
めりくり
0970デフォルトの名無しさん2016/01/02(土) 18:12:53.46ID:wHwB68HU
むりくり
0971デフォルトの名無しさん2016/01/02(土) 23:23:35.90ID:EH4JctI/
スカートめくり
0972デフォルトの名無しさん2016/01/03(日) 00:02:41.64ID:qiKwbZ3e
初めて通信ポート(COM?)が接続された状態では
送受信タイムアウトは無しですかい?
0973デフォルトの名無しさん2016/01/03(日) 07:45:08.78ID:WvZ6ZWof
タイムアウトに頼ってる時点で
アウト
0974デフォルトの名無しさん2016/01/03(日) 14:32:54.55ID:wr72odRt
タイム(アウトに頼ってる時点で)アウト
0975デフォルトの名無しさん2016/01/03(日) 17:49:43.90ID:7mAtatH9
(このスレで質問してる時点で)アウト
0976デフォルトの名無しさん2016/01/03(日) 20:05:36.34ID:buM4hFpe
ここは半年くらい前から偏差値20くらいのレベルになっているな。
0977デフォルトの名無しさん2016/01/03(日) 20:18:59.08ID:dC+f8AkW
1年前は偏差値22くらいはあったよな
0978デフォルトの名無しさん2016/01/03(日) 22:59:52.74ID:cm6nEbxV
偏差値20もあったの?
0979デフォルトの名無しさん2016/01/03(日) 23:17:05.65ID:qiKwbZ3e
接続直後にGetCommTimeoutsしたらいいじゃん
0980デフォルトの名無しさん2016/01/03(日) 23:17:58.29ID:qiKwbZ3e
という結論になりますた
0981デフォルトの名無しさん2016/01/04(月) 04:46:02.89ID:xj/2f+ZR
あけおめ
0982デフォルトの名無しさん2016/01/04(月) 11:01:30.01ID:AAcHANMO
ことよろ
0983デフォルトの名無しさん2016/01/04(月) 19:00:39.97ID:uh/Y4MEw
>>972
N81X
0984デフォルトの名無しさん2016/01/05(火) 07:23:36.17ID:4YKOrwwk
vc2010でドラゴンクエストXのキーボード入力をフックするプログラムを作っているのですが、
実際、キーボードをフックするまでは出来たのですが、実際にドラクエXを実行しても
キーボードが入力されたことになりません。原因は何が考えられますでしょうか
キーボードのフックはメモ帳などに実際に出てきているので問題ないです
0985デフォルトの名無しさん2016/01/05(火) 08:19:19.23ID:7Q2tXWc2
>>984
ドラクエXのプロテクトどんなのか知らんけど
・管理者として起動
・起動のタイミング
いろいろ試した?
0986デフォルトの名無しさん2016/01/05(火) 08:34:02.91ID:QQENqvYE
>>985
家に帰ってから試してみます。
0987デフォルトの名無しさん2016/01/05(火) 13:45:12.72ID:lhyUPbMU
あと、ゲームの場合はDirectXから入力とってたりするとやり方によってはうまくいかない
0988デフォルトの名無しさん2016/01/05(火) 15:50:55.71ID:Woj1scU2
クラック系は板違いじゃ
0989デフォルトの名無しさん2016/01/05(火) 17:02:32.92ID:B9TyBRm4
DirectInput使ってるだろうから、WinAPIでやりくりしても無駄のような
0990デフォルトの名無しさん2016/01/05(火) 17:21:41.22ID:QQENqvYE
こういう関数作ってますが、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));
}
}
0991デフォルトの名無しさん2016/01/05(火) 18:57:40.55ID:MmiOC2W0
あけうめ
0992デフォルトの名無しさん2016/01/05(火) 19:04:03.54ID:IesHwkgH
次

Win32API質問箱 Build122
http://peace.2ch.net/test/read.cgi/tech/1451988219/
0993デフォルトの名無しさん2016/01/05(火) 20:03:03.22ID:ZQLyvfM1
DirectInputとか
0994デフォルトの名無しさん2016/01/05(火) 20:44:31.27ID:3P8foX3g
>>992
おつ
0995デフォルトの名無しさん2016/01/05(火) 21:04:10.66ID:nA3aY+gr
>>984
ドライバ作れ

>>989
自動芋・・・
0996デフォルトの名無しさん2016/01/05(火) 21:09:36.93ID:4YKOrwwk
DirectInputのフックってどうやるんですか?
0997デフォルトの名無しさん2016/01/05(火) 21:11:11.35ID:4YKOrwwk
というか矢印キーとか入るキーは入るんですが、入るキーと入らないキーの違いがわからない
0998片山博文MZ ◆T6xkBnTXz7B0 2016/01/05(火) 21:15:48.75ID:bG6ahL5d
キーボードフィルタドライバを作ればフックできる。DDKのインストール必須。
0999デフォルトの名無しさん2016/01/05(火) 21:19:40.79ID:4YKOrwwk
次スレでもよろしく
1000デフォルトの名無しさん2016/01/05(火) 21:29:52.48ID:IesHwkgH
1000
http://i.imgur.com/BpoUAOA.jpg
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
10021002Over 1000Thread
2ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
http://premium.2ch.net/
http://pink-chan-store.myshopify.com/
レス数が1000を超えています。これ以上書き込みはできません。