■ このスレッドは過去ログ倉庫に格納されています
Win32API質問箱 Build121
- 1 :デフォルトの名無しさん:2015/08/04(火) 22:34:50.61 ID:tKzV+rUu.net
- Win32APIについての質問はこちらへどうぞ。
■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。
英語版( http://msdn.microsoft.com/en-us/library/ )の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
■過去スレ
Win32API質問箱 Build120
http://peace.2ch.net/test/read.cgi/tech/1428570962/
- 2 :デフォルトの名無しさん:2015/08/05(水) 14:10:04.50 ID:OyFAH2W/.net
- OSのっていうか、コントロールパネルの地域で選択されている国(場所)又は言語を取得するAPI教えてくださ
- 3 :デフォルトの名無しさん:2015/08/05(水) 14:26:46.22 ID:e4gAPQI9.net
- GetUserDefaultLCID とかじゃね?
- 4 :デフォルトの名無しさん:2015/08/05(水) 14:28:06.28 ID:e4gAPQI9.net
- 言語はGetUserDefaultUILanguage
地域と言語は別だよね
- 5 :デフォルトの名無しさん:2015/08/05(水) 15:37:41.50 ID:MnmW9vnG.net
- ノ ゚.ノヽ , /} ...
,,イ`" 、-' `;_' ' ..::::::::::::::...
,-、 _.._ ( (,(~ヽ'~ ..:::::::::::::::::::::::
)'~ レー' 〉 ヽ i`'} .:::::::::::::::::::::::
~つ '-ー、 i | i' ...:::::::::::::::::::::::
/ < / 。/ ! ......::::::::::::::::::::::::: これは>>1乙じゃなくて
/ ~^´ /},-'' ,●::::::::::::::::::::::::::::::::::::
i、 ,i' _,,...,-‐-、/ i :::::::: .:::::::::::::
..ゝ <,,-==、 ,,-,/ .::::::::::: 放射能がうんたら
) {~''~>`v-''`ー゙`'~ ..::::::::: ........::.
{ レ_ノ ..::::::::. ......:::::::::
ノ '' ..::::::: ...::.:...:::::::::
.::::::::: ...:......:::::::::::: .
.:::::::::::. ..... .. ..:::::::::::::::::::::::: :::.
::::::::::::::::.::::::....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.. :: ::..
.:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::: ::.
::::::::::::::::: :::::::::::::::::::::::::::::: :::::
.:: ::. :::
- 6 :デフォルトの名無しさん:2015/08/06(木) 15:23:29.70 ID:c3bf75DV.net
- windows7なんですかテストモードONにしてもデジタル署名を要求されます
テストモードは未署名のドライバでも動かせるのではないのですか
未署名ドライバを署名無しのまま動作させるAPIを教えろください
- 7 :デフォルトの名無しさん:2015/08/06(木) 16:54:34.81 ID:/1pEP5C4.net
- お断りします
- 8 :片山博文MZ ◆T6xkBnTXz7B0 :2015/08/06(木) 17:21:33.98 ID:4xD13DN7.net
- >>7
よいではないか
- 9 :デフォルトの名無しさん:2015/08/06(木) 19:14:01.34 ID:79+p9Mbt.net
- WM_SIZING message
https://msdn.microsoft.com/ja-jp/library/windows/desktop/ms632647(v=vs.85).aspx
このメッセージを受け取れば、lParamで変更しようとしているウィンドウサイズを取得できますが、
そのウィンドウサイズでのクライアントサイズを取得したい場合、
GetClientRectは使えず(ウィンドウサイズ変更はまだ完了していないため、現在のクライアント領域が返ってくる)、
現状はGetSystemMetricsでクライアント領域周りの枠などのサイズを取得して
変更しようとしているウィンドウサイズから引いて算出しています。
しかし、この方法だと、ウィンドウスタイルを変えたときに、併せて変更せねばならず、
保守性の点では好ましくありません。
ウィンドウスタイルごとに条件分岐すれば対応できるものの、あまり美しくありません。
これら以外の方法で、スマートに変更しようとしているウィンドウサイズにおけるクライアント領域を
取得する方法があればご教示ください。
よろしくお願いします。
- 10 :デフォルトの名無しさん:2015/08/06(木) 19:23:52.88 ID:YtIxgi9m.net
- 1.GetWindowRectとGetClientRectを呼んで、差分を計算する
2.AdjustWindowRectを呼んで、差分を計算する
そんで、WM_SIZINGのlParamから逆算するとかどうでしょうか
でも、スクロールバーがある場合は面倒なことになりそう
- 11 :デフォルトの名無しさん:2015/08/06(木) 19:30:52.64 ID:oUBwSLmn.net
- 単にWM_SIZEを使えばいいのでは
確かWindows98あたりでサイズ変更中に描画を更新するオプションができて
WM_SIZINGのように使えるようになった
- 12 :デフォルトの名無しさん:2015/08/06(木) 21:35:17.53 ID:SdwUOFG4.net
- WM_NCCALCSIZE送ったら計算してくれなかったっけ
- 13 :片山博文MZ ◆T6xkBnTXz7B0 :2015/08/07(金) 15:57:03.53 ID:UeH7dSGn.net
- MAKEROP4(SRCCOPY,0xED0000)
↑何だこれ?
- 14 :デフォルトの名無しさん:2015/08/07(金) 18:20:35.84 ID:5Zt0WqrR.net
- ググレカス
- 15 :9:2015/08/07(金) 23:44:31.50 ID:AvOHJMxe.net
- >>10
その方法でいけました!
これでウィンドウスタイルに依存せずにWM_SIZINGでクライアント領域を取得できるようになりました。
ありがとうございました!
>>11
やりたいことはクライアント領域のアスペクト比を固定する処理で、
最初はWM_SIZEでやってたんですが、
何だかぎこちない動きになってしまったので、調べていたらWM_SIZINGの存在を知り、
そちらでやると滑らかな動きになったのでWM_SIZINGで何とかしたいと思った次第です。
>>12
ご助言ありがとうございます。
今回は>>10さんの方法で対処できましたが、
教えていただいたWM_NCCALCSIZEを使う方法についても調べてみます。
- 16 :デフォルトの名無しさん:2015/08/09(日) 21:51:12.54 ID:nWjgkEEO.net
- i7 2600Kみたいな4コア8スレッドのCPUで、プロセスのアフィニティを変更する時
8ビットをそれぞれ1論理コアに対応させて使う論理コアを指定しますが、
その時に1と2が1つの物理コアに対応してるのでしょうか?
それとも1と5が1つの物理コアに対応してるのでしょうか?
- 17 :デフォルトの名無しさん:2015/08/09(日) 22:50:57.54 ID:nd2w8Mp+.net
- どれが物理コアかなんて区別はないよ
ゲームで物理4コアのi5が好まれる理由もそれ
- 18 :デフォルトの名無しさん:2015/08/09(日) 23:49:21.06 ID:nWjgkEEO.net
- >>17
ちょっと回答の意味がわからないです
どのビットがどの物理コアに割り当てられるかは変動的で決まってない、ということですか?
i7のスレッド2倍化は1つの物理コアの余ってる時間に割り込ませるものなので、
確実に1つの物理コアを空けたいんです。なので同じ2つの論理コアを不使用にさせるにしても、
8ビットあるうち例えば1|2を休ませるか、1|16を休ませるかの、どっちかが1つの物理コアを確実に休ませる指定になると思うんです
(ビット1と2がセットで1物理コア、またはビット1と5がセットで1物理コアとなっているかのどっちかだと想像してます)
その割り当てが知りたいんです
熱対策や故障コアのために1つの物理コアを確実に開けたいんだと読み替えてもらっても結構です
- 19 :デフォルトの名無しさん:2015/08/10(月) 00:56:39.57 ID:sjbJ+sY3.net
- >>18
(俺は>>17氏ではないが)
https://msdn.microsoft.com/ja-jp/library/windows/desktop/ms686223
のコメントには、以下の3通りの主張がされている(ように思われる)
1. >>16の後者だ(…と言う前提で書いてあるMSの記事がある)
2. いや全く当てにしてはならない
3. BIOSで事実上>>16の前者に設定されてる
ひとまずご自身で内容を吟味されたし。
- 20 :デフォルトの名無しさん:2015/08/10(月) 01:25:26.47 ID:Yz/DBb/r.net
- もう10年以上前の話ですが Prestonia XEON プロセッサを2個搭載できるマザボで Hyper-Threading
を ON にしたときどの仮想プロセッサがどの物理プロセッサに対応付けられているのか気になって調べた
ところ 1, 3 が一つの物理プロセッサ、2, 4 がもう一つの物理プロセッサに対応してました。
比較的重いプログラムを2つ走らせ、タスクマネージャでアフィニティーマスクの設定を変えながら
ファンコントローラーの温度計測値で物理プロセッサの温度を読み判断しました。
ただ、こういうのは >>19 の 2 のように、はっきり決められた事ではないんじゃないかなと思ってます。
- 21 :デフォルトの名無しさん:2015/08/10(月) 05:14:15.39 ID:joKVIITR.net
- APIのスレで聞くことじゃないな
- 22 :デフォルトの名無しさん:2015/08/10(月) 12:40:35.44 ID:a4ap/1LI.net
- >>21
APEだから仕方ない
- 23 :デフォルトの名無しさん:2015/08/10(月) 15:31:07.76 ID:Vh7AZwN0.net
- 自プロセスを呼び出した親プロセスEXEのフルパスを取得したいのですが、
親プロセスは自プロセスを呼び出したら即終了してしまいます。
なので、Process32First()などで情報を取得しようにもその時には列挙されません。
別の監視プロセスを用意するなりの対処法はあるでしょうが、自プロセス
だけで親プロセスを知る方法はありませんか?
- 24 :デフォルトの名無しさん:2015/08/10(月) 15:55:46.59 ID:5q1c3acf.net
- 自プロセスを呼び出す際に親プロセス(?) のフルパスを渡せばいい
- 25 :デフォルトの名無しさん:2015/08/10(月) 16:36:29.46 ID:Vh7AZwN0.net
- どうもすみません。
前提条件として、親プロセスの修正は不可能です。
- 26 :デフォルトの名無しさん:2015/08/10(月) 16:52:54.44 ID:HDdiOC7r.net
- 親プロセスを実行しているのはだれ?
- 27 :デフォルトの名無しさん:2015/08/10(月) 16:55:45.28 ID:5q1c3acf.net
- 修正不可能な親プロセスは赤の他人
親プロセスの定義は?
- 28 :デフォルトの名無しさん:2015/08/10(月) 20:07:24.73 ID:8ijckzev.net
- スレチは氏ね
- 29 :デフォルトの名無しさん:2015/08/10(月) 21:36:23.15 ID:65tjAOy9.net
- 親プロセス名を渡さないときは強制終了すればいい
- 30 :デフォルトの名無しさん:2015/08/10(月) 21:39:02.42 ID:/eMcOwxL.net
- 馬鹿なことやってないでまともな設計しろよ
質問箱と尻拭い相談所はちげーぞ
てめえのケツはてめえで拭け
- 31 :デフォルトの名無しさん:2015/08/10(月) 21:49:23.32 ID:k4VnlTc/.net
- ケツ…!!
( ゚д゚ ) ガタッ
.r ヾ
__l_l / ̄ ̄ ̄/_
\/ /
- 32 :デフォルトの名無しさん:2015/08/10(月) 21:57:46.69 ID:joKVIITR.net
- 親のインスタンスが二つ以上いることは考えにくいから
ウィンドウクラスで検索すれば特定できるかも知れない
- 33 :デフォルトの名無しさん:2015/08/10(月) 22:35:38.71 ID:Vh7AZwN0.net
- 不正コピーされたインストーラーでインストールされた場合、インストール直後に
インストーラーから起動されたプロセスからインストーラーを特定したかったんです。
フルスキャンする訳にも行かないし。
Process32First()とか使ってフルパスを得るところまで作って、インストーラーが
終了していることに気付いた次第で代替案を探していました。
ここまで詳しい経緯は長すぎ産業でOKと思ったので省略してました。
無理そうですね。
どうもありがとうございました。
- 34 :デフォルトの名無しさん:2015/08/10(月) 23:24:56.99 ID:oSHGrBYa.net
- 初歩的な質問なのですが、教えてください
Windows VISTA環境で
「PEP K32GetProcessMemoryInfo が
DLL KERNEL32.dll から見つかりませんでした」と表示されました
いろいろ調べた結果、WIN7以降とは異なり
VISTAのkernel32.dll内部には、K32GetProcessMemoryInfoは存在せず
その代わり、旧来のpsapi.dll内部に、GetProcessMemoryInfoがあると分かりました
そこでpsapi.dllで代用するため、以下の式を追加したいのですが、その先が分かりません
#ifndef PSAPI_VERSION
#define PSAPI_VERSION 1
#pragma comment (lib, “PSAPI.Lib”)
#else
#pragma message (“defined PSAPI_VERSION *************”)
#endif
以上の式をexeファイルに追加するにはどうすればいいのでしょうか
単純にバイナリエディタで開いただけでは無意味な英数字が並んでいるだけでした
よろしくお願いします
- 35 :デフォルトの名無しさん:2015/08/10(月) 23:34:24.57 ID:5q1c3acf.net
- 自分のプログラムならソースに追加すればいいだろ
他人のプログラムなら改竄するな
- 36 :デフォルトの名無しさん:2015/08/10(月) 23:44:38.23 ID:AMzePwd7.net
- 不正である事を確認しようとするより正規である事を確認するほうが楽
- 37 :デフォルトの名無しさん:2015/08/10(月) 23:52:40.03 ID:4jBvfEp+.net
- スレチの説教好きだねぇ
- 38 :デフォルトの名無しさん:2015/08/11(火) 07:35:15.78 ID:LfA/skDI.net
- >>33
APIフックは?
- 39 :デフォルトの名無しさん:2015/08/11(火) 09:56:56.39 ID:sbfi/bwK.net
- 常駐して監視するのでもなければ、
親プロセスが死んでいる前提なら無理。親プロセスIDしか情報が無い上にそのIDすら親の死亡時に付け替えられる。
- 40 :デフォルトの名無しさん:2015/08/11(火) 14:59:02.28 ID:dsDvvWMK.net
- よく使うアプリの一覧とかあるじゃん。
実行アプリの履歴がレジストリかどこかに残ってないの?
- 41 :デフォルトの名無しさん:2015/08/11(火) 15:36:53.18 ID:HguuZcyi.net
- そういえば一時期、Office2013にも似たようなカーネルエラーが頻発してたけど
あれも理論上は回避可能ということか
解決策としては
@exeにpsapi.dllのAPIを使用するよう指定ソースを組みこむ
AVISTA用の拡張カーネルを作成して、kernel32.dllにK32GetProcessMemoryInfoを追加する
いつかXPやVISTAにも某黒翼猫氏のような救世主が現れて、拡張カーネルが用意されるのかしら
- 42 :デフォルトの名無しさん:2015/08/12(水) 23:53:20.47 ID:G8qcToBK.net
- どっかでフックしてIAT書き換るかDLL挿げ替えかな
- 43 :デフォルトの名無しさん:2015/08/14(金) 07:54:19.40 ID:vjnCwLdg.net
- >>33
ただでさえインストーラは環境依存のクレーム地獄になりがちなのに
おかしなことをするんじゃない
>>34
きさまぷろぐらまじゃないな
帰れ
>>41
>救世主が現れて、拡張カーネルが用意されるのかしら
Windows Update サーバーを乗っ取ることが前提かな
よし全機撃墜
- 44 :デフォルトの名無しさん:2015/08/14(金) 11:01:39.44 ID:IL9iPg3p.net
- アホはお帰りください
- 45 :デフォルトの名無しさん:2015/08/14(金) 11:03:06.69 ID:2p3m0KlY.net
- みんな帰ろう
- 46 :デフォルトの名無しさん:2015/08/14(金) 11:27:26.86 ID:WAFSmjQt.net
- そして誰もいなくなった
- 47 :デフォルトの名無しさん:2015/08/14(金) 13:17:55.88 ID:Q/AtP1Be.net
- 7 x 7 = 49
- 48 :片山博文MZ ◆T6xkBnTXz7B0 :2015/08/14(金) 21:49:09.41 ID:qMkXaiUF.net
- IATを書き換えて実行ファイルを再構築できるようなハッカーはここには居ない
- 49 :デフォルトの名無しさん:2015/08/14(金) 22:14:26.57 ID:2p3m0KlY.net
- それが存在しないのは、それが必要ないからであることが多い
- 50 :デフォルトの名無しさん:2015/08/14(金) 22:31:22.18 ID:WAFSmjQt.net
- お金は必要だけど、オレの財布にはあまり存在しないという例がもある
- 51 :デフォルトの名無しさん:2015/08/14(金) 22:35:47.25 ID:qMkXaiUF.net
- >がも
はい、減点。
- 52 :デフォルトの名無しさん:2015/08/14(金) 23:04:18.82 ID:2p3m0KlY.net
- なんでID晒して名前隠してんの?
はい、減点。つーか0点。
- 53 :デフォルトの名無しさん:2015/08/15(土) 02:12:39.84 ID:Krwjugvl.net
- まあ大概のことは「片山さんだから仕方ない」で済ませられる程度だろ
- 54 :デフォルトの名無しさん:2015/08/15(土) 04:44:29.63 ID:Yk3bSSFS.net
- >片山博文MZ ◆T6xkBnTXz7B0
はい、減点。
- 55 :デフォルトの名無しさん:2015/08/15(土) 07:15:55.06 ID:7sJYyU2X.net
- >>48
APIフックする過程でIAT云々はさわるだろうけど
実行ファイルを再構築なんてできたらSAOの世界じゃね
- 56 :デフォルトの名無しさん:2015/08/15(土) 08:04:09.11 ID:lGrRobx2.net
- 岩手朝日テレビがどうしたって?
- 57 :デフォルトの名無しさん:2015/08/15(土) 08:25:24.67 ID:SxlpnIr4.net
- メモリ上の再構築は共有セクションの扱い以外は別に難しくはない。改変チェックが入っている場合は潰す必要があるが。
- 58 :片山博文MZ ◆T6xkBnTXz7B0 :2015/08/18(火) 00:37:16.25 ID:7ZRpZn5E.net
- >>57
その辺を詳しくブログに書いて下さい、お願いします。
- 59 :デフォルトの名無しさん:2015/08/18(火) 19:00:36.45 ID:eHhh5Jxo.net
- >>56
MIT
.
- 60 :デフォルトの名無しさん:2015/08/18(火) 21:51:06.26 ID:LehTl7m4.net
- 一つIMEで質問がありますが、ここで良いですか?
SetInputScope()でIME設定をして、IME問い合わせGetInputScope()?があってもいいと思いますが
Win8では見当たりません、
TF_GetInputScope()があったのですが使えるのか使えないのか…。
どなたか知っている方ヒントだけでも教えて下さい!
- 61 :デフォルトの名無しさん:2015/08/21(金) 10:27:50.79 ID:v385Kh+A.net
- inet_ntoa ってchara*返すけどWCHAR*返すのおしえてよ
- 62 :デフォルトの名無しさん:2015/08/21(金) 10:45:39.38 ID:c/THd06T.net
- InetNtop
- 63 :デフォルトの名無しさん:2015/08/21(金) 17:48:25.85 ID:NHu7az4C.net
- VC++でWin32APIを使いゲームを制作しようと思っています。
http://zahyou.6.ql.bz/cgame/
↑のサイトを参考に簡単なゲームをつくってみたのですが
効果音を鳴らすとそれまで流れていたBGMが少し止まってしまいます。
BGMと効果音を止まることなく流すにはどうすればいいでしょうか?
使用している関数はmciSendCommandです
- 64 :デフォルトの名無しさん:2015/08/21(金) 18:03:56.39 ID:106+9rwN.net
- MCI だと止まる
- 65 :デフォルトの名無しさん:2015/08/21(金) 18:11:32.53 ID:c/THd06T.net
- >>63
同期・非同期
- 66 :デフォルトの名無しさん:2015/08/21(金) 18:12:03.16 ID:106+9rwN.net
- waveoutを使うといいです
- 67 :デフォルトの名無しさん:2015/08/21(金) 18:12:28.78 ID:106+9rwN.net
- あとダブルバッファリンもした方がさらに良くなります
- 68 :デフォルトの名無しさん:2015/08/21(金) 21:00:41.93 ID:Tu1fJmAa.net
- 優しいなお前ら
- 69 :デフォルトの名無しさん:2015/08/21(金) 21:04:35.93 ID:x7vlwrmr.net
- 子供は1回1錠な
- 70 :デフォルトの名無しさん:2015/08/21(金) 21:15:40.67 ID:AXgC1r2C.net
- 痛風の発作が出ているときにバッファリンを飲むと悪化します
- 71 :デフォルトの名無しさん:2015/08/22(土) 03:43:30.96 ID:R1h6gxCt.net
- バファリンは、胃にやさしくない成分と、頭痛に効かない成分とで出来ています。
- 72 :デフォルトの名無しさん:2015/08/22(土) 08:20:07.85 ID:cPJQ97tL.net
- おい子供にバファリン使うな
小児用バファリン使え
- 73 :デフォルトの名無しさん:2015/08/22(土) 09:44:24.66 ID:OcPmzwVT.net
- え、ワーファリン?
- 74 :デフォルトの名無しさん:2015/08/22(土) 10:06:15.94 ID:fLuaARar.net
- >>66
効果音をwaveoutやmidioutにしたところBGMに支障なく流すことができました。
本当にありがとうございます。
- 75 :デフォルトの名無しさん:2015/08/27(木) 12:14:42.27 ID:RnCy/tzb.net
- C#でアプリを作ってはいるんですがwindowsAPIを使ったことがほとんどありません
windowsAPIを覚えたいんですが、どういうアプリを作りながら覚えたらいいでしょうか?
- 76 :デフォルトの名無しさん:2015/08/27(木) 12:21:31.54 ID:Eaj+az2t.net
- Hello Windows
- 77 :デフォルトの名無しさん:2015/08/27(木) 13:10:33.61 ID:0465F1pc.net
- C#だけで閉じこもってるなら必要ないだろ
使うならCくらいは読めて書けるようにならないと
- 78 :デフォルトの名無しさん:2015/08/27(木) 13:35:56.67 ID:RnCy/tzb.net
- >>77
Cの読み書きはある程度はできます
windowsAPIを使えるようになるまですごい時間がかかりそうで・・・
何か作りながら覚えたいんですがむずかしいでしょうか?
- 79 :デフォルトの名無しさん:2015/08/27(木) 13:43:02.13 ID:Eaj+az2t.net
- 作りながらじゃなきゃ覚えられない。まずはこれ。
https://msdn.microsoft.com/ja-jp/library/windows/desktop/ff381409(v=vs.85).aspx
- 80 :デフォルトの名無しさん:2015/08/27(木) 13:43:17.06 ID:K9LHu2e1.net
- >>78
自分が過去につくったC#アプリをWinAPIだけで再現してみたら?
- 81 :デフォルトの名無しさん:2015/08/27(木) 19:00:26.66 ID:tpdP6kqy.net
- SetLayeredWindowAttributes みたいな感じで透過じゃなくフォーム全体を暗くしたりするAPIあったら教えて下さいね
- 82 :片山博文MZ ◆T6xkBnTXz7B0 :2015/08/27(木) 19:08:34.43 ID:oqQcnINP.net
- >>81
p%透過にしてウィンドウの下に黒い別のウィンドウを重ねる。
- 83 :デフォルトの名無しさん:2015/08/29(土) 01:24:22.96 ID:rZ+W6Zab.net
- >>78
作りながら覚えるなら簡単なアプリを作ればいいじゃん
ありきたりだけど例を挙げれば
・キッチンタイマー
・アラーム時計
・カレンダー
・電卓
・画像ビューア
・テキストエディタ
・音楽プレイヤー
上記の中で自分が作れそうな簡単そうなものを選んで作ればいい
最低限の機能を備えたものが出来たらリファクタリングやバージョンアップするといい
- 84 :デフォルトの名無しさん:2015/09/06(日) 17:45:58.22 ID:cLh5ZyHa.net
- 中途半端なAPIプログラマなので、C#の生産性に勝てない。
鍛えればなんとかなるのかな?
- 85 :デフォルトの名無しさん:2015/09/06(日) 17:50:23.11 ID:3Oih9VSM.net
- C#キモい。
WinAPI一筋だ。
- 86 :デフォルトの名無しさん:2015/09/06(日) 18:20:23.46 ID:vWlWpWil.net
- レイヤーが違う
C#だってWinAPI使えるで
- 87 :デフォルトの名無しさん:2015/09/06(日) 21:35:38.22 ID:ANWjJC8V.net
- C++で、画面や文字列を簡単に扱えれば…
メッセージループとか、未だにわからないです。
洋書でもいいので、おすすめ書籍ないですか?
- 88 :デフォルトの名無しさん:2015/09/06(日) 21:45:59.52 ID:GpoQks5m.net
- MFCとかWTL使っとけば
おすすめ書籍なら理解できるとか言われて本当かよ〜?って思うぜ
メッセージループすら理解できてない時点で
- 89 :デフォルトの名無しさん:2015/09/06(日) 23:34:08.57 ID:zJiA8SF0.net
- メッセージポンプかい?
GUIアプリは、イベントドリブン(駆動)だから、
何かのイベントが起こるのを待つ、受け身の作り
イベントキューがあって、
そこにマウス操作やキーボードのイベントが投入されると、
そのキューから順番に、
イベントが取り出されて、処理される
自分で処理を書きたい、イベントの処理だけをOverrideする。
例えば、OnMouseClick()など。
Overrideしないイベントは、OSの既定の処理がされる
ただし、画面更新のイベントは、優先度が低いため、
一番最後に処理される
60フレームなら1秒間に60回、
30フレームなら1秒間に30回、画面が描かれる
- 90 :デフォルトの名無しさん:2015/09/07(月) 09:55:01.12 ID:ArTvcv08.net
- ダイアログ/フォーム アプリケーションなら
ウインドウに直にデータを突っ込んで設計のことをあまり考えなくて済むよ
ぐふふ
- 91 :デフォルトの名無しさん:2015/09/07(月) 17:17:44.71 ID:ifJ6MFQh.net
- ダイアログアプリケーションなら、なんとか・・
「ぐふふ」が気になる
- 92 :デフォルトの名無しさん:2015/09/07(月) 19:20:08.77 ID:kLL2g65z.net
- 目的:
ダイアログ上に、"決定"ボタン、エディットコントロールを配置しています。
エディットコントロールで"Enter"キーを入力された場合に、
"決定"ボタンを押されたことにしたい。
やってみてダメだったこと:
ダイアログのウインドウプロシージャに
WM_KEYDOWN
を追加しVK_ENTERを処理するコードを書いた。
↓
どうやらダイアログのウインドウプロシージャにはWM_KEYDOWN自体がこない模様。
というところで困っています。
質問1
どのようにすれば目的の内容を実現できますか?
質問2
MFCのSubclassDlgItemの変わりになるようなものはありますか?
- 93 :デフォルトの名無しさん:2015/09/07(月) 19:30:42.31 ID:8kmrGT2g.net
- >>92
IsDialogMessage
- 94 : ◆QZaw55cn4c :2015/09/07(月) 19:42:51.28 ID:w2psTc+y.net
- >>92
それはエディットコントロールのウィンドウプロシージャで捕まえるもの
MFC は知らんが
GetWindowLong(hwndEdit, GWL_WNDPROC);
SetWindowLong(hwndEdit, GWL_WNDPROC, (LONG)callbackFunction);
でどうとでもなる,2〜3年に一回質問される FAQ だね
- 95 :デフォルトの名無しさん:2015/09/07(月) 19:43:17.81 ID:yWiuJpNl.net
- >>92
回答2
CWnd::SubclassDlgItem() のソースを参照すると、GetDlgItem(), SetWindowLongPtr() 等を
使って関数に仕上げているだけなコトがわかる。
- 96 :デフォルトの名無しさん:2015/09/07(月) 20:02:17.05 ID:8kmrGT2g.net
- >>92
それと>>93の場合決定ボタンをBS_DEFPUSHBUTTONにしてBN_CLICKEDを処理ね
- 97 :デフォルトの名無しさん:2015/09/07(月) 20:56:39.35 ID:kLL2g65z.net
- >>93-96
すいません。
回答にたどり着けなくてコード貼りました。
見よう見まねでやっているので色々問題あるかもしれません。
http://codepad.org/QAk329mZ
上記コードのWinProc、DlgProcともWM_KEYDOWNがこない状況です。
どんな感じに直せばいいでしょう?
- 98 :デフォルトの名無しさん:2015/09/07(月) 21:23:33.51 ID:8kmrGT2g.net
- >>97
モーダルダイアログ、モードレスダイアログで調べて
- 99 :デフォルトの名無しさん:2015/09/07(月) 21:36:48.33 ID:P3iiIg+v.net
- アニメーションカーソルについて質問です。
アニメーションカーソルを自分でHDCに描画したい場合どうすればいいですか?
作ってみたんですが、アニメーションカーソルの総数がうまく取得できないのとカーソルの登録を選べません。
アニメーションカーソルのフォーマットは拡張?された48x48っぽいものです。
島風 マウスカーソル 通常.aniは、ニコニコのリンクにあった素材です。
HICON hIcon;SHFILEINFO sfi;IImageList *pImageList;
BOOL MyInit(){hIcon = 0;
if (!SHGetFileInfo(L"島風 マウスカーソル 通常.ani", 0, &sfi, sizeof(sfi), SHGFI_SYSICONINDEX)) return false;
if (SHGetImageList(SHIL_EXTRALARGE, IID_IImageList, (void**)&pImageList) != S_OK) return false;
if (pImageList->GetIcon(sfi.iIcon, ILD_TRANSPARENT, &hIcon) != S_OK) {hIcon = 0;return false;}
pImageList->Release();return TRUE;}
void MyFree(){if (hIcon) DestroyIcon(hIcon);}
void myDraw(HDC hdc,int number){DrawIconEx(hdc, 0, 0, hIcon, 0, 0, number, NULL, DI_NORMAL);}
よろしくお願いします。
- 100 :デフォルトの名無しさん:2015/09/07(月) 21:48:51.98 ID:yWiuJpNl.net
- >>97
わからないから添削しろ、では芸がない。
そもそも、
>エディットコントロールで"Enter"キーを入力された場合に、
>"決定"ボタンを押されたことにしたい。
は、Windowsプログラムとして正しいのか考えてみよう。
ex) 漢字変換中に誤って2度 Enter キーを押したら誤動作する とかね。
- 101 :デフォルトの名無しさん:2015/09/07(月) 21:57:06.07 ID:yWiuJpNl.net
- >>97
書き忘れた。
if (!hPreInst) { if (!RegisterClass(&iWCls)) return FALSE; }
みたいなコトは今はやらない。Win16 プログラムでないかぎり、hPreInst は常に NULL。
- 102 :92:2015/09/07(月) 22:04:52.49 ID:kLL2g65z.net
- >>94
すいません。↑これでいけました。
http://codepad.org/GK39S71J
↑最初WM_KEYDOWNの中でVK_RETURNを処理して確認していたのですが、
EDITTEXTではEnterKeyが効かないみたいで、
"上手くいかない"と判断してました。
VK_RETURNが効かない件は別問題なので、これから調査します。
とりあえず >>92 の質問は解決しました。どうもありがとう。
- 103 :99:2015/09/07(月) 22:58:10.86 ID:P3iiIg+v.net
- 日本語が変だったので訂正です。
やりたいこと。
・アニメーションカーソルの総数を取得したい。
・アニメーションカーソルの画像をhDCにイメージ番号を指定して描画したい。
先ほど記述したソースだと、イメージ番号0番のみが表示されるだけみたいです。
素材の場所は ttp://www1.axfc.net/u/3454899 DLパス⇒かんこれ
です。
ご教授お願いします。
- 104 :92:2015/09/07(月) 23:33:31.78 ID:kLL2g65z.net
- 度々すいません。
>>102 のVK_RETURNが効かない件解決したので一応下記のソース報告します。
http://codepad.org/eniL7aC6
EDITTEXTのスタイルにES_MULTILINEを追加すればいいみたいです。
また >>92 の質問2ですが、意図としては上記のEditProc見たいな事をやりたかったので、
これも解決しました。
>>98
今回はモーダルの予定ですので必要ないですが、
今後のために調べときます。
>>100
> Windowsプログラムとして正しいのか
については少し考えて見ます。
- 105 :片山博文MZ ◆T6xkBnTXz7B0 :2015/09/07(月) 23:42:58.94 ID:wiJUwYLf.net
- >>103
外部ライブラリ使う、RIFF形式ファイルとして解析する、以外に簡単な方法は無かったはず
- 106 :片山博文MZ ◆T6xkBnTXz7B0 :2015/09/07(月) 23:50:26.92 ID:wiJUwYLf.net
- アイコンの抽出はExtractIcon,ExtractIconEx,IExtractIconと
いろいろサポートしてるのにアニメカーソル抽出のサポートは貧弱
- 107 :デフォルトの名無しさん:2015/09/08(火) 02:00:50.39 ID:WpGjOpsu.net
- >>92
>エディットコントロールで、"Enter"キーを入力された場合に、
>"決定"ボタンを押されたことにしたい
この仕様自体が、おかしいような気がする
筋論で言うと、
1. エディットコントロールで、キーイベントを取る
2. エディットコントロールから、
その親であるダイアログにアクセスする
3. ダイアログから、その子である決定ボタンに、
ボタンを押すイベントを投入する
4. 決定ボタンで、既定のボタンが押されたイベントを処理する
親 ダイアログ
子 エディットコントロール
子 決定ボタン
こういう階層では、子1から子2へは(兄弟間では)、
直接アクセスできないので、
子1 → 親 → 子2 という経路でアクセスする
- 108 :デフォルトの名無しさん:2015/09/08(火) 02:12:44.72 ID:WpGjOpsu.net
- >>99
SHGetImageList で、連続するアニメの、
複数のイメージが取得できているの?
取得できないのなら、プロジェクトのアセットのパスに、
正しく取得できるように置く
また画像は、正しいファイル名の連番とするなど、
正しい形式で並べる
(もし連番としている場合の話です。
漏れはどういう形式か、よく知らないけど)
- 109 :99:2015/09/08(火) 08:39:26.20 ID:M6zfIWdf.net
- >>106,108
アニメーションカーソルは複雑なんですね。
SHGetImageListそのものが使うの初めてだったのでよくわかってないです。
情報集めて、アニメーションカーソルの制御どうするか考えます。
外部ライブラリーとかで、組み込みフリー的な便利なものあればいいですが。。
あとは、MSDNあたり調べてみるかなぁ。。
- 110 :デフォルトの名無しさん:2015/09/08(火) 08:50:14.73 ID:uJSOxUGR.net
- 最初にMSDNあたれよバカ
- 111 :デフォルトの名無しさん:2015/09/08(火) 09:17:02.10 ID:S6LsUKWF.net
- >>104
そんな事しなくても
16行目 PUSHBUTTON → DEFPUSHBUTTON にするだけで
エンター押した時にWM_COMMAND IDC_SET BN_CLICKEDが発生するから
EditProcもGet/SetWindowLongも不要
- 112 :デフォルトの名無しさん:2015/09/09(水) 11:52:53.38 ID:zLKTZ6N+.net
- >>99
そもそも最終的に何がしたいの?
描画しただけで終わりじゃないんじゃないの?
条件後出しして嫌がられるパターンにみえる
- 113 :デフォルトの名無しさん:2015/09/09(水) 14:46:05.94 ID:UbDBGCr0.net
- win32の色んな意味で時代遅れな関数群を使うのが億劫になって来た。
- 114 :デフォルトの名無しさん:2015/09/09(水) 16:44:51.77 ID:61epwTm+.net
- クラス化しないで直呼び?
- 115 :デフォルトの名無しさん:2015/09/09(水) 18:10:55.30 ID:tEPd2G1m.net
- "ゴミ箱にいれないで完全に削除する"の意味でNukeという用語を使っているMSを告訴しよう
9条マンセー
- 116 :デフォルトの名無しさん:2015/09/10(木) 10:35:49.99 ID:pvKn3bkq.net
- アプリケーションキューに入っているメッセージが消えるタイミングは普通に考えてプロシージャの処理が完了した後ですよね?
誰か確実に知りませんか
- 117 :デフォルトの名無しさん:2015/09/10(木) 10:40:17.77 ID:DGBnp3I7.net
- WM_PAINTを除いて GetMessage() が削除するんじゃなかったっけ。
- 118 :デフォルトの名無しさん:2015/09/10(木) 11:19:27.31 ID:pvKn3bkq.net
- >>117
調べたらそうっぽいですね
っていうか普通に考えたらそうですよね
ありがとうございまいた
- 119 :デフォルトの名無しさん:2015/09/10(木) 23:43:53.85 ID:Lt3YsJ/Z.net
- WM_PAINT?
BeginPaintを呼ばないとループするって話?
- 120 :デフォルトの名無しさん:2015/09/10(木) 23:53:28.53 ID:DGBnp3I7.net
- WM_PAINTは GetMessage() を実行した時点では削除されず
ウィンドウプロシージャでの処理が終了した時点で消える という話
- 121 :デフォルトの名無しさん:2015/09/11(金) 10:56:33.16 ID:IOXejlDX.net
- SetThreadAffinityMaskやSetThreadIdealProcessorを使用して
CPUコアの割り振りを明示的にしないとマルチコアに最適化されたアプリケーションとは言えない?
- 122 :デフォルトの名無しさん:2015/09/11(金) 11:17:24.29 ID:GHVwR1ig.net
- >>121
そんなのやらなくてもosが勝手にやってくれるだろ
- 123 :デフォルトの名無しさん:2015/09/11(金) 13:09:56.43 ID:WE/d+c/8.net
- 物理的にマウスボタンが押されている状態で、
SendInput等のAPIによってマウスのボタンを上げられた状態であることを判定する方法ってありますか?
- 124 :デフォルトの名無しさん:2015/09/11(金) 13:29:49.05 ID:dcIIi90q.net
- どういう場面で必要になるのかな?
「マウスボタンは物理的に押されている」
↓
「SendInput等によってマウスのボタンが離されているよう偽装している」
↓
「このたわけモノが! 実際には押されているだろ!?」←これを判定する方法でしょ?
- 125 :デフォルトの名無しさん:2015/09/11(金) 13:37:43.79 ID:WE/d+c/8.net
- 状況としてはですね、
自作アプリにマウス右ボタンを使った機能があるんですが
外部のマウスジェスチャー系の常駐アプリが右クリックを戻しているようなんです
GetKeyState/GetAsyncKeyState などでVK_RBUTTONの状態が取れません。
- 126 :デフォルトの名無しさん:2015/09/12(土) 00:01:38.57 ID:t9wfuOfk.net
- そういうのは競合状態といってな
どっちかを無効にするもんだよ
無理になんとかしようとしても時間の無駄
- 127 :デフォルトの名無しさん:2015/09/12(土) 08:59:57.32 ID:lTmP7o65.net
- ボクの知らない常駐アプリを同時に使わないでくださーい
ってのは割りと当たり前のこと
だけど初心者にはその主張は通用しないので
自アプリの起動時に常駐アプリの有無をチェックして警告を出すのがスマート
- 128 :デフォルトの名無しさん:2015/09/12(土) 09:15:16.54 ID:bK+LJe1a.net
- >>125
右クリックのマウスジェスチャーにマウスを右クリックする機能を割り当てて解決
- 129 :デフォルトの名無しさん:2015/09/12(土) 09:26:53.57 ID:OKvTRLUv.net
- >>122
そうなんかありがとう
- 130 :sage:2015/09/17(木) 15:36:32.51 ID:rzmccn0E.net
- Win32APIを使ってテキストファイルから1文字だけ取り出そうとしているのですが、できません。
アドバイスもらえないでしょうか?
以下ソースコードです。
=====ここから=====
int _tmain()
{
HANDLE hFile = NULL;
TCHAR *strFileName = 0;
TCHAR buff = 0;
DWORD byte_read = 0;
_tsetlocale(LC_ALL, TEXT("ja"));
// 読み込むファイルのフルパス。
strFileName = TEXT("D:/visualStudio/test/test3.txt");
- 131 :sage:2015/09/17(木) 15:37:04.86 ID:rzmccn0E.net
- // 読み込むファイルのファイルハンドル。
hFile = CreateFile(
strFileName, GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL
);
// ファイルハンドルのエラー処理。
if (hFile == INVALID_HANDLE_VALUE || hFile == NULL) {
_tprintf(TEXT("hFile error.\n"));
_gettchar();
return 0;
}
// ファイルから1文字読み込む。
ReadFile(hFile, &buff, (DWORD)sizeof(TCHAR), &byte_read, NULL);
// 読み込んだ1文字を表示。
_tprintf(TEXT("%c\n"), &buff);
CloseHandle(hFile);
_gettchar();
return 0;
}
=====ここまで=====
- 132 :デフォルトの名無しさん:2015/09/17(木) 15:49:41.02 ID:U6MHK03R.net
- ×_tprintf(TEXT("%c\n"), &buff);
○_tprintf(TEXT("%c\n"), buff);
- 133 :デフォルトの名無しさん:2015/09/17(木) 15:53:01.19 ID:b2VOzBjq.net
- test3.txtの文字コードも見てみてね
- 134 :デフォルトの名無しさん:2015/09/17(木) 15:53:11.74 ID:9BEBkVT9.net
- ファイル自体読み込めてないんだろう
- 135 :130:2015/09/17(木) 16:06:25.74 ID:rzmccn0E.net
- レスありがとうございます。
>>132
>>133
&buff→buffに変更してもコマンドプロンプトには?しか表示されないままです。
test3.txtはサクラエディタを使って、Unicode、改行文字コードCRLFで保存しています。
test3.txtの内容は1行目にabcという文字列があります。
>>134
temp = ReadFile(hFile, &buff, (DWORD)sizeof(TCHAR), &byte_read, NULL);
// 読み込みのエラー処理。
if (temp == 0) {
_tprintf(TEXT("ReadFile error.\n"));
_gettchar();
return 0;
}
としてみましたが、特にエラーは出てないようです。
なぜできないのか、心当たりが無くなってしまって途方に暮れています。
ちなみに1文字ではなく、文字列全体を取得することならできました。
- 136 :デフォルトの名無しさん:2015/09/17(木) 16:15:22.60 ID:Nh2CPZLE.net
- BOMのせいに決まってんじゃん
- 137 :130:2015/09/17(木) 16:26:57.31 ID:rzmccn0E.net
- >>136
ありがとうございます!
試してきます!
- 138 :デフォルトの名無しさん:2015/09/17(木) 16:50:41.97 ID:b2VOzBjq.net
- >>137
まず%cじゃなく%02Xで値見てみる
- 139 :130:2015/09/17(木) 17:23:07.39 ID:rzmccn0E.net
- >>138
つかめてきました!
ありがとうございます!
結局引っかかっていたのはUnicodeのBOMが大きな要因でした。
助かりましたorz
- 140 :デフォルトの名無しさん:2015/09/18(金) 20:40:35.95 ID:BAj7A7iY.net
- VC++2012でプログラミングをしています
win32APIでmidの音声を流そうと思い、
↓のサイトを見つけました。
http://eternalwindows.jp/winmm/midi/midi10.html
コンパイルしたところ何も起きませんでした。
調べたところ84行目の
midiOutOpen関数を使ったところで戻り値(mr)の値がMMSYSERR_ERRORになっていたためだと思われます。
どうすればうまく再生できますか?
- 141 :デフォルトの名無しさん:2015/09/18(金) 20:51:59.51 ID:5egfmsiH.net
- >>140
https://msdn.microsoft.com/ja-jp/library/windows/desktop/dd798476(v=vs.85).aspx
MIDIERR_NODEVICE
MMSYSERR_ALLOCATED
MMSYSERR_BADDEVICEID
MMSYSERR_INVALPARAM
MMSYSERR_NOMEM
のどれでもないの?
- 142 :デフォルトの名無しさん:2015/09/18(金) 21:55:21.54 ID:BAj7A7iY.net
- >>141
調べてみたら不明なエラーと書かれていました
- 143 :デフォルトの名無しさん:2015/09/18(金) 21:57:15.78 ID:5egfmsiH.net
- >>142
どこで調べるとそのMMSYSERR_ERRORのことが書かれているの?
あと MMSYSERR_ERROR であることはどうしてわかったの?
- 144 :デフォルトの名無しさん:2015/09/18(金) 22:03:48.69 ID:wagSxeCs.net
- 実際の値は何?
- 145 :デフォルトの名無しさん:2015/09/18(金) 22:05:51.25 ID:wagSxeCs.net
- >>140
これか
VC++2012でプログラミングをしています win32APIでmidの音声を流そうと思い、 ↓...
tukareteruhitoさん
ttp://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14150460584
- 146 :デフォルトの名無しさん:2015/09/18(金) 22:17:00.89 ID:44vNChaT.net
- つ を tu と表記されると、どうしても ちゅ と読んでしまう。。。
- 147 :デフォルトの名無しさん:2015/09/18(金) 22:25:24.12 ID:BAj7A7iY.net
- >>143
以前たまたまコンパイラでMIDIERR_NODEVICE を右クリックして宣言へ移動をクリックしたところ
MMSystem.hにいろいろ載ってました
#define MMSYSERR_ERROR (MMSYSERR_BASE + 1) /* unspecified error */
>>144
1です
- 148 :デフォルトの名無しさん:2015/09/18(金) 23:21:06.71 ID:BAj7A7iY.net
- >>140
書き足すのを忘れていました。
win7のパソコンではうまくいったのですが、win10の方のパソコンだとうまくいきません。
midiを鳴らすのにはソフトを入れたり、設定を変えないといけないのですか?
- 149 :デフォルトの名無しさん:2015/09/19(土) 00:44:50.98 ID:njZddJ5V.net
- Win7,10は異なるシステムだよ
アプリ・デバドラ・ハードウェアなどが、
簡単に動くと思ったの?
- 150 :デフォルトの名無しさん:2015/09/19(土) 02:51:01.30 ID:oxCTiUGx.net
- ドヤッ
が足りないぞ。
しかし的外れ。
- 151 :デフォルトの名無しさん:2015/09/19(土) 06:11:59.58 ID:z4P1u9xK.net
- >>148
MSDN(>>141のリンク先)の一番下のコミュニティーの追加の所にも、
Windows10のmidiOutOpenは明らかに壊れてて常に1(MMSYSERR_ERROR)を返すって書かれてるな。
Windows10の不具合じゃないの。
- 152 :デフォルトの名無しさん:2015/09/19(土) 06:33:58.45 ID:rDYKlt+c.net
- ありがとうございました
- 153 :デフォルトの名無しさん:2015/09/19(土) 07:10:53.65 ID:UO4hLF9u.net
- MMSYSERR_ERROR1つでえらい突っ込まれようだな。
APIがそれのドキュメントに載ってない汎用的なエラーを返すなんてそんなに珍しいことでもないだろうに。
- 154 :デフォルトの名無しさん:2015/09/19(土) 14:23:45.31 ID:qGt1VSMn.net
- ダイアログにある拡張コンボボックスの右側のボタンがちぎれて
一部表示されない。どうすればいい?
- 155 :デフォルトの名無しさん:2015/09/19(土) 15:41:27.60 ID:qGt1VSMn.net
- 事故解決。WS_BORDERが余分でした
- 156 :デフォルトの名無しさん:2015/09/24(木) 07:26:25.75 ID:1vbsv5/O.net
- 音と映像のコントロールソフト作ろうと思ってるんだけど、
WTL覚えた方が便利ですかね
- 157 :デフォルトの名無しさん:2015/09/24(木) 20:42:58.82 ID:wqNNiZah.net
- 有料の時点で萎える
- 158 :デフォルトの名無しさん:2015/09/24(木) 21:43:34.07 ID:KIOkH3Y/.net
- >>156
C++を使えるなら便利
- 159 :デフォルトの名無しさん:2015/09/25(金) 02:29:42.77 ID:d9V+/CgL.net
- >>158
マジですか覚えてみるよ
>>157
空ウインドウ作るまでは無料でできたけど
お金かかるの?
- 160 :デフォルトの名無しさん:2015/09/25(金) 07:48:00.36 ID:femLeyq9.net
- >>159
WTLはExpressには入ってない。
でも、調べてみたら後から追加して使うことができるみたいだね。
>>159は有料版のVS?
- 161 :デフォルトの名無しさん:2015/09/25(金) 08:47:49.18 ID:d9V+/CgL.net
- >>160
無料のVS2013 Communityですん
WinDDK追加して使ってる
- 162 :デフォルトの名無しさん:2015/09/25(金) 09:02:33.39 ID:ISU02i/F.net
- Communityなら最初からATL入ってるから小細工要らんぞ?
おかげでWin32ゴリゴリ書きたい人には勧めやすくなった
NuGetにも登録されてるけど1年以上前の安定版だから2015のAppWizとかには対応してない
(レポジトリのは一応2015対応用の修正はされている)
- 163 :デフォルトの名無しさん:2015/09/25(金) 13:02:22.26 ID:x3Qy+zME.net
- PIXELFORMATDESCRIPTOR structureの質問なのですが,
32ビット色深度で,32ビットz深度(24 + 8ステンシル)の書き方は
これであっているんでしょうか?あるいはこれも等価でしょうか?
というのも,初心者講座みたいなサイトだと,コメントの->後の数値に
設定されているものが多いんです.
0だと自動判定なのかなとか思ったんですが,MSDNでは0設定で自動的に
判定してくれるとは書いてないので・・・.
あとcolor shiftの説明も文献が全然見当たらないので,
憶測でbit位置のことかと思って,24, 16, 8, 0(ARGB)で設定しました.
表記がRGBAなのにARGBと並べたのは,「8, 16, 8, 8, 8, 0, 0, 0」と
設定している記事があったからです.
32の方は多いというわけはないのですが,そう書いてあるサイトがあるので不安になりました.
MSDN見る限りは24, 8の方が正しそうだなという感想です.
PIXELFORMATDESCRIPTOR pfd =
{
24, // color bitplane depth
8, 16, // red -> 0, 0
8, 8, // green -> 0, 0
8, 0, // blue -> 0, 0
8, 24, // alpha -> 0, 0
24, // z buf depth.24bit.24bit + 8bit stencil. -> 32
8, // stencil buf.
};
- 164 :160:2015/09/25(金) 19:29:22.01 ID:femLeyq9.net
- >>161
ああ、Communityがあったな。
失礼した。
- 165 :デフォルトの名無しさん:2015/09/26(土) 21:57:31.31 ID:wwGWY9bl.net
- 俺、家でも会社のプロ使っているからCommunityさっぱり何だけど
ATL使ってWinプログラムってCommunityにはMFCは入ってないってこと?
- 166 :デフォルトの名無しさん:2015/09/26(土) 22:09:02.67 ID:vzGjXFWa.net
- 入ってるよ
インストール時に選択しないと入らないけど
- 167 :デフォルトの名無しさん:2015/09/26(土) 22:09:29.60 ID:7ELa66Bu.net
- >>165
(少なくとも2015は)ATLとMFCの両方無料で入れられる
- 168 :デフォルトの名無しさん:2015/09/26(土) 22:10:27.46 ID:Wtpb5D+v.net
- いやMFCもついてる。もう、使う気にならんけど。
- 169 :デフォルトの名無しさん:2015/09/26(土) 22:13:52.09 ID:Tp58P9Fq.net
- Express版と違ってCommunity版はATLもMFCもリソースエディタも入ってるよ
宗教上の理由とかでMFCというフレームワークを使わずに
ATLベースの軽量コンポーネントを好むのが一定数居るというだけだ
- 170 :デフォルトの名無しさん:2015/09/26(土) 22:21:24.87 ID:0JcUeR/y.net
- 宗教上の理由www
- 171 :デフォルトの名無しさん:2015/09/26(土) 22:31:39.68 ID:6OIyVqiT.net
- 宗教は精神衛生において大事だぞ
- 172 :デフォルトの名無しさん:2015/09/26(土) 23:30:37.68 ID:rvfN9kdt.net
- そして繰り返される宗教戦争
- 173 :デフォルトの名無しさん:2015/09/26(土) 23:43:11.75 ID:f4irwjf7.net
- 神は戦争を肯定しない
ゆえに戦争を肯定するものは神ではない
- 174 :デフォルトの名無しさん:2015/09/26(土) 23:52:17.43 ID:0JcUeR/y.net
- マイクロソフト社内でも、//の後にスペースを挟むかどうかで戦争が起こるそうだしねw
- 175 :デフォルトの名無しさん:2015/09/27(日) 03:01:58.92 ID:uC+Ymhd4.net
- システムハンガリアンみたいな猿主張が通ったりもするね
- 176 :デフォルトの名無しさん:2015/09/27(日) 11:50:51.32 ID:tDcA70Zp.net
- そりゃマルチスレッドもない20年以上前だぞ
- 177 :デフォルトの名無しさん:2015/09/27(日) 12:25:11.27 ID:wOuxiHo1.net
- このプログラムを×ボタンで終了させるとタスクマネージャのプロセスに残るんですけど、
そういうモンなんですかね。
exit(0)で終わらせるとちゃんと消えるんだけど・・・
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp) {
switch (msg){
case WM_DESTROY:
if (handle) usb_delete();
PostQuitMessage(0);
return 0;
case WM_LBUTTONUP:
MessageBox(hwnd, TEXT("終了"), TEXT("終了"), MB_ICONINFORMATION);
exit(0);
return 0;
case WM_COMMAND:
(省略)
case WM_TIMER:
(省略)
}
return DefWindowProc(hwnd, msg, wp, lp);
}
- 178 :デフォルトの名無しさん:2015/09/27(日) 12:26:58.10 ID:3ktkQrgJ.net
- >>177
WM_CLOSEでDestroyWindowするのがお作法だけど、それだとどう?
use_delete()もWM_CLOSEですべきだと思う。
- 179 :デフォルトの名無しさん:2015/09/27(日) 12:35:34.20 ID:puEp1GjQ.net
- >>178
usb usb
- 180 :デフォルトの名無しさん:2015/09/27(日) 12:36:34.18 ID:wOuxiHo1.net
- >>178
こう変えてみたんですが残りますねぇ・・・
謎すぐる
case WM_CLOSE:
if (handle) usb_delete();
DestroyWindow(hwnd);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
- 181 :デフォルトの名無しさん:2015/09/27(日) 12:43:37.60 ID:puEp1GjQ.net
- >>180
uns_deleteに関連するのをコメントアウトしたらどうなる?
- 182 :デフォルトの名無しさん:2015/09/27(日) 12:44:40.77 ID:Oa1I2Bnn.net
- GetMessageループはどう書いてんの
- 183 :デフォルトの名無しさん:2015/09/27(日) 12:46:18.05 ID:wOuxiHo1.net
- >>181
//if (handle) usb_delete();
にしたけど変わらないですねぇ・・・
中身もこんな感じなので影響はないはず・・
int usb_delete(){
if (!handle) return 2; //接続されてない
if (CloseHandle(handle)) return 1; //切断成功
else return 0; //切断失敗
}
- 184 :デフォルトの名無しさん:2015/09/27(日) 12:48:34.90 ID:wOuxiHo1.net
- >>182
こんな具合の入門サイトコピペです
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,PSTR lpCmdLine, int nCmdShow) {
HWND hwnd;
MSG msg;
WNDCLASS winc;
(省略)
while (TRUE) {
GetMessage(&msg, NULL, 0, 0);
DispatchMessage(&msg);
}
return 0;
}
- 185 :デフォルトの名無しさん:2015/09/27(日) 12:49:24.83 ID:puEp1GjQ.net
- >>183
ブレイクポイントでどこで止まってるか見てみて
- 186 :デフォルトの名無しさん:2015/09/27(日) 12:49:59.95 ID:puEp1GjQ.net
- >>184
おい・・・おい・・・
- 187 :デフォルトの名無しさん:2015/09/27(日) 12:50:42.48 ID:Oa1I2Bnn.net
- クソワロタ
その入門サイトは処刑で
- 188 :デフォルトの名無しさん:2015/09/27(日) 12:53:13.08 ID:wOuxiHo1.net
- >>185-186
あああああああああこいつかwwwwwwwwww → while (TRUE) {
マジでごめんなさい吊ってくる
- 189 :デフォルトの名無しさん:2015/09/27(日) 13:28:48.04 ID:d0o/2Ok+.net
- Wisdomかよ。
http://wisdom.桜.ne.jp/system/winapi/win32/win10.html
(↑NGワードのためsakuraを桜に置き換え)
一応注意書きはしてるがこんなコード公開しちゃダメだろ。
- 190 :デフォルトの名無しさん:2015/09/27(日) 13:32:38.26 ID:zkeDatYv.net
- >>188
アーヒャヒャヒャヒャヒャヒャヒャヒャヒャヒャヒャヒャヽ(゚∀゚)ノ
酷いトラップスレにひっかったもんだな
悪意のある入門サイトに注意w
- 191 :デフォルトの名無しさん:2015/09/27(日) 13:46:14.96 ID:Oa1I2Bnn.net
- コピペするとバックドアが仕込まれるサンプルコードとか
探せばありそうだ
- 192 :デフォルトの名無しさん:2015/09/27(日) 13:53:33.43 ID:puEp1GjQ.net
- >>189
それかw
そういう所はサブタイトルの内容以外は手抜きだしな
- 193 :デフォルトの名無しさん:2015/09/27(日) 13:54:15.71 ID:XMfaJ+0C.net
- どうみても注意書きを読まない方が悪い
http://wisdom.sak ura.ne.jp/system/winapi/win32/win10.html
- 194 :デフォルトの名無しさん:2015/09/27(日) 13:55:33.30 ID:Oa1I2Bnn.net
- >>189
よく見るとwin11.html以降のGetMessageループも
戻り値の-1を無視したコードで正しくない
糞翻訳でおなじみの日本語MSDNにすら避けろと書いてあるぞ
https://msdn.microsoft.com/ja-jp/library/cc364699.aspx
- 195 :デフォルトの名無しさん:2015/09/27(日) 13:59:21.19 ID:puEp1GjQ.net
- >>193
正しいアプリケーションの終了
ttp://wisdom.s akura.ne.jp/system/winapi/win32/win11.html
どこがだよっていう
- 196 :デフォルトの名無しさん:2015/09/27(日) 14:04:05.46 ID:XMfaJ+0C.net
- >PostQuitMessage() 関数で WM_QUIT をメッセージキューにポストし
>GetMessage() 関数がそれを受け取り、戻り値に 0 を返します
>こうして、メッセージループを抜けてアプリケーションは終了します
なるほど
- 197 :デフォルトの名無しさん:2015/09/27(日) 14:11:19.80 ID:YZLivW0I.net
- >while (GetMessage(&msg , NULL , 0 , 0)) DispatchMessage(&msg);
これもまずいな。GetMessage() が -1 を返す場面を想定してない
- 198 :デフォルトの名無しさん:2015/09/27(日) 14:17:29.27 ID:sYzB7PIZ.net
- >>197
公式に避けろと書いてあるな
戻り値
WM_QUIT 以外のメッセージを取得した場合、0 以外の値が返ります。
WM_QUIT メッセージを取得した場合、0 が返ります。
エラーが発生した場合、-1 が返ります。たとえば、hWnd パラメータで無効なウィンドウハンドルを指定した場合や、lpMsg で無効なポインタを指定した場合は、エラーが発生します。拡張エラー情報を取得するには、 関数を使います。
警告 GetMessage 関数は、0 以外の値、0、-1 のいずれかを返します。したがって、次のようなコードは避けてください。
while (GetMessage(lpMsg, hWnd, 0, 0)) ...
このようなコードを作成すると、GetMessage 関数が失敗して -1(0xFFFFFFFF、つまり TRUE)が返った場合、ループが持続し、致命的なアプリケーションエラーを発生させる可能性があります。
- 199 :デフォルトの名無しさん:2015/09/27(日) 14:19:43.14 ID:Oa1I2Bnn.net
- 18年くらい前のMSDN Libraryには書いてなかったかも
確かね
- 200 :デフォルトの名無しさん:2015/09/27(日) 14:26:15.80 ID:YZLivW0I.net
- >>199
すまん、>>194でもう指摘してたのね。読んでなかった。orz
- 201 :デフォルトの名無しさん:2015/09/27(日) 14:31:10.49 ID:9nB30GXC.net
- BOOLでそんな値をわたさんで欲しいわ。
- 202 :デフォルトの名無しさん:2015/09/27(日) 14:32:06.11 ID:hEAZFQJb.net
- GetMessageの戻り値の型はBOOLなのに
>0 以外の値、0、-1 のいずれかを返します。
これは酷い
- 203 :デフォルトの名無しさん:2015/09/27(日) 14:34:59.89 ID:YZLivW0I.net
- ・・・そこツッコむと宗教戦争始まるから ^^;
「BOOLは0か1だろ」
「いや、BOOLは0か0以外だ」
「-1は0以外だから正しい」
「じゃ、-1は真かよ」
「そもそもBOOLは…」
いつも平行線
- 204 :デフォルトの名無しさん:2015/09/27(日) 14:36:46.98 ID:zkeDatYv.net
- >>202
これは酷い
- 205 :デフォルトの名無しさん:2015/09/27(日) 14:37:43.17 ID:us1PQXsq.net
- Win32にはよくあること
- 206 :デフォルトの名無しさん:2015/09/27(日) 14:41:31.38 ID:NRLqsz4V.net
- win32api は boolean のない C 前提なんだろう?
そもそも int GetMessage() が正しいのにだれが返り値 BOOL といっているんだ?
- 207 :デフォルトの名無しさん:2015/09/27(日) 14:41:59.45 ID:jzpWzA1C.net
- この話題も定期的に出るなwww
- 208 :デフォルトの名無しさん:2015/09/27(日) 14:44:03.48 ID:sYzB7PIZ.net
- だってtypedef int BOOLだしな
- 209 :デフォルトの名無しさん:2015/09/27(日) 14:44:06.88 ID:Oa1I2Bnn.net
- BOOLなのになんで2値論理じゃねーんだよタワケ
が適当
- 210 :デフォルトの名無しさん:2015/09/27(日) 14:51:26.57 ID:8A5jeRhu.net
- -1から漂う後から付け足した感が非常にポイント高い
- 211 :デフォルトの名無しさん:2015/09/27(日) 14:51:42.01 ID:ENvts9qq.net
- ほかにおすすめの入門サイトある?
- 212 :デフォルトの名無しさん:2015/09/27(日) 14:53:24.53 ID:ENvts9qq.net
- 知っていたら、教えてください。
- 213 :デフォルトの名無しさん:2015/09/27(日) 14:54:51.35 ID:XMfaJ+0C.net
- >エラーが発生した場合、-1 が返ります。たとえば、hWnd パラメータで無効なウィンドウハンドルを指定した場合や、lpMsg で無効なポインタを指定した場合は、エラーが発生します。拡張エラー情報を取得するには、 関数を使います。
GetMessage() の戻り値が -1 の場合はエラーなんだろ?
Windows アプリを終了するべきではなくエラー処理をするべきじゃないのか?
while を抜けるべきではない
- 214 :デフォルトの名無しさん:2015/09/27(日) 14:55:25.97 ID:zkeDatYv.net
- >>206
msdnさん自身が
ttps://msdn.microsoft.com/ja-jp/library/cc364699.aspx
ちなみに↓では
ttps://msdn.microsoft.com/ja-jp/library/ms644936.aspx
Minimum supported client Windows 2000 Professional [desktop apps only]
となっているのでintだった時期も確かにあったんだろう
- 215 :デフォルトの名無しさん:2015/09/27(日) 14:59:07.04 ID:jzpWzA1C.net
- そもそもエラーだからメッセージループ抜けるってのが横暴だ
ちゃんとGetLastErrorさんの話を聞かないとな
- 216 :デフォルトの名無しさん:2015/09/27(日) 15:05:58.13 ID:hEAZFQJb.net
- BOOLという独自型を定義したのもMSだし
TRUEという独自マクロを定義したのもMSだから
MSはC言語の仕様とは関係なく常に
BOOLの真の値として1を使わなければならないし
(だって自分で勝手に決めたんだろ)
そうじゃなかったとしても
BOOLなのに真とも偽とも明言されてない
エラーを表現する-1を返すのは良くないね
- 217 :デフォルトの名無しさん:2015/09/27(日) 15:34:06.02 ID:nsZcbsgt.net
- >>213
>hWnd パラメータで無効なウィンドウハンドルを指定した場合や、lpMsg で無効なポインタを指定した場合は、エラーが発生します。
本人がポカしなけりゃ -1 は無視して良いな。
- 218 :デフォルトの名無しさん:2015/09/27(日) 15:35:30.62 ID:LjMVY2UB.net
- 宗教戦争突入阻止!
アッラーアクバル!
- 219 :デフォルトの名無しさん:2015/09/27(日) 15:40:00.11 ID:nsZcbsgt.net
- >BOOLなのに真とも偽とも明言されてない
>エラーを表現する-1を返すのは良くないね
BOOL なら -1 は真だよ。
- 220 :デフォルトの名無しさん:2015/09/27(日) 15:51:43.88 ID:YZLivW0I.net
- >>215
WTLだと、エラーを返したときもループ継続
- 221 :デフォルトの名無しさん:2015/09/27(日) 15:54:52.54 ID:hEAZFQJb.net
- >>219
それはC言語の仕様でしかない
MSDNにはただ単にエラーの時-1を返すとしか書いてない
ここでの-1の意味は真でも偽でもなくて、エラー
>BOOLなのに真とも偽とも明言されてない
>エラーを表現する-1を返すのは良くないね
しかしこの文章は誤解を生じるな
BOOLなのに真とも偽とも分類されないような
エラーの-1を定義して3値で返すのは良くないね
に訂正しておく
- 222 :デフォルトの名無しさん:2015/09/27(日) 15:57:22.56 ID:jzpWzA1C.net
- >>216
そのMSも-1はTRUEと明言しているよ
> -1(0xFFFFFFFF、つまり TRUE)が返った場合
~~~~~~
>>217
「例えば」だから、エラーの原因がそれだけという保証がない
- 223 :デフォルトの名無しさん:2015/09/27(日) 17:13:27.56 ID:9nB30GXC.net
- この例では戻り値チェックしてないな。
https://msdn.microsoft.com/ja-jp/library/bb384843.aspx
- 224 :デフォルトの名無しさん:2015/09/27(日) 17:27:24.32 ID:hEAZFQJb.net
- >>222
整数の-1が真なのはC言語の仕様でしかなく
今言っているのは「意味の上で」の話だから
-1のときエラーと書いてあったのならそれ以上の意味はない
例えばメモリエラーのときに「2」を返す関数があったとして
「2」はC言語の仕様的には「2」でしかないが
意味の上ではメモリエラー
- 225 :デフォルトの名無しさん:2015/09/27(日) 17:31:35.93 ID:3ktkQrgJ.net
- >>184
久々にお茶フイタwww
- 226 :デフォルトの名無しさん:2015/09/27(日) 18:23:00.63 ID:UYzM99J3.net
- きったねーな 死ねよ
- 227 :デフォルトの名無しさん:2015/09/27(日) 18:24:33.95 ID:jzpWzA1C.net
- >>224
何言っているのか(何を言いたいのか)分からん
>MSDNにはただ単にエラーの時-1を返すとしか書いてない
C言語の仕様という意味であっても、 -1 がTRUEであると書いている(MSが認めている)
で話を戻して、
>BOOLなのに真とも偽とも明言されてない
エラーの場合は-1を返す
MSDNで-1は「つまりはTRUE」と書いているんだから
エラーの場合も真を返すと明言しているわけだ
関数の仕様としておかしいとしても「意味の上で」なら真か偽かははっきりしているだろ
- 228 :デフォルトの名無しさん:2015/09/27(日) 18:38:33.35 ID:hEAZFQJb.net
- それはC言語の仕様としては真になるという但し書きでしかないと思うが
それに俺は言い直している
>BOOLなのに真とも偽とも分類されないような
>エラーの-1を定義して3値で返すのは良くないね
- 229 :デフォルトの名無しさん:2015/09/27(日) 19:08:43.46 ID:8A5jeRhu.net
- 言い争いするところじゃないっスよー
糞仕様は糞仕様なんだから
- 230 :デフォルトの名無しさん:2015/09/27(日) 19:28:41.21 ID:hEAZFQJb.net
- >警告 GetMessage 関数は、0 以外の値、0、-1 のいずれかを返します。したがって、次のようなコードは避けてください。
>while (GetMessage(lpMsg, hWnd, 0, 0)) ...
>このようなコードを作成すると、
>GetMessage 関数が失敗して -1(0xFFFFFFFF、つまり TRUE)が返った場合、ループが持続し、
>致命的なアプリケーションエラーを発生させる可能性があります。
この警告の文における
「0xFFFFFFFF、つまり TRUE」が
・エラーだとー1が返るがC言語の仕様では-1は真になるからループの終了条件に使うと危険、と言う但し書きか、
・APIの戻り値として真の意味がある、と捉えるかは、人それぞれかもしれんが
そもそも大元の「戻り値」の説明には「真」とか「偽」とかは出てこなくて
エラーなら-1が返るとしか書いてなくて、ここに
-1(0xFFFFFFFF、つまり TRUE)という補足は書かれていないのだから、
例の補足は「警告」内のサンプルコードに対して、コードの動きの補足しているものだとわかるし
「警告」内の一文の、それも括弧の中に補足的に書いてあるだけだし
それもサンプルコードの終了条件に対する説明だし
- 231 :デフォルトの名無しさん:2015/09/27(日) 19:34:53.06 ID:YZLivW0I.net
- while(TRUE)
{
::MessageBox(NULL, _T("言い争いするところじゃないっスよー"),
_T("糞仕様は糞仕様なんだから"), MB_OK | MB_ICONEXCLAMATION);
}
- 232 :デフォルトの名無しさん:2015/09/27(日) 20:02:19.00 ID:jzpWzA1C.net
- 戻り値の説明には、WM_QUIT 以外のメッセージなら0 以外の値、WM_QUIT なら 0 、エラーなら-1が返ると書いてある
MSがTRUEを1と定義しているかどうかに関係なく、式評価で0以外なら真、0なら偽と分かっているんだから
WM_QUIT 以外のメッセージ、もしくはエラーなら「真」で、WM_QUIT なら「偽」ってだけだろ
そもそも戻り値がBOOLと書かれているが、TRUEとして定義した1ではなく 「0 以外の値」 と言っている時点で
MSの定義したTRUE 1 ってのがただの便宜上のものだと分かると思うが
つまり関数としての戻り値は「WM_QUIT以外の『真』」か「WM_QUITの『偽』」の2値
あとは「WM_QUIT以外の『真』」にエラーも含ませるのはどうよって話ではあるが、
そもそも関数の戻り値からしてそれは成功失敗を表現しているわけではないのだから
エラーの-1は真として分類されている
- 233 :デフォルトの名無しさん:2015/09/27(日) 21:34:28.74 ID:x2H664Vf.net
- こう言う奴がプロジェクトにいると面倒だな
- 234 :デフォルトの名無しさん:2015/09/27(日) 21:59:38.37 ID:zkeDatYv.net
- BOOLが必ずしも(TRUE,FALSE)≡(1,0)を意味しないとしても、
文脈によって0以外の値が変動する戻り値にBOOL型を当てるのはやはりおかしい
TRUEがどんな値でもいいが常にその値でなければならない
しかしまあ何でこんなことになったんだろうねぇ
- 235 :デフォルトの名無しさん:2015/09/27(日) 22:13:58.95 ID:jzpWzA1C.net
- >TRUEがどんな値でもいいが常にその値でなければならない
その思考の結果が if(func()==TRUE) ... みたいなものじゃね?
>文脈によって0以外の値が変動する戻り値にBOOL型を当てるのはやはりおかしい
こっちは同意
- 236 :デフォルトの名無しさん:2015/09/27(日) 22:17:21.80 ID:us1PQXsq.net
- でも実装する側としては理解できるだろ?
あーBOOLにしちゃったけど他の情報も戻り値に含めたいなぁみたいなぁみたいな
- 237 :デフォルトの名無しさん:2015/09/27(日) 22:38:34.32 ID:x2H664Vf.net
- >>236
できねーよ
戻り値の型を int にするなりするだろ
- 238 :デフォルトの名無しさん:2015/09/27(日) 22:40:56.03 ID:YZLivW0I.net
- あの… BOOL は int ですけど。。。
- 239 :デフォルトの名無しさん:2015/09/27(日) 23:06:54.37 ID:LjMVY2UB.net
- だから宗教戦争すんなよ。
アッラーアクバル
- 240 :デフォルトの名無しさん:2015/09/27(日) 23:07:01.32 ID:jzpWzA1C.net
- そういう意味の指摘ではないと思うがな
- 241 :デフォルトの名無しさん:2015/09/28(月) 06:49:36.12 ID:Rj5Nu0nM.net
- >>238
こう言うアホはどうしようもないな…
なんの為に BOOL を定義してるのかすら理解してないんだろうな w
- 242 :デフォルトの名無しさん:2015/09/28(月) 07:07:15.77 ID:oN5IJNc7.net
- bool
- 243 :デフォルトの名無しさん:2015/09/28(月) 07:57:15.09 ID:e7uUBDed.net
- IntなのにBOOLなんて名前付けた奴がアホだろ。俺だったらbint にする。
- 244 :デフォルトの名無しさん:2015/09/28(月) 08:25:36.70 ID:gscNduJW.net
- 俺ならiboolだな
- 245 :デフォルトの名無しさん:2015/09/28(月) 08:37:54.88 ID:4BqA6VyM.net
- もう少し後の時代のMSだったら
GetMessageEx を作って GetMessage を 非推奨に変えていただろう
- 246 :デフォルトの名無しさん:2015/09/28(月) 08:54:05.03 ID:e7uUBDed.net
- 或いはboin がいいな
- 247 :デフォルトの名無しさん:2015/09/28(月) 13:18:19.09 ID:YLupfTzg.net
- >>243
理解しようともしないドアホだな
typedefすら否定してそうだわ
- 248 :デフォルトの名無しさん:2015/09/28(月) 13:34:04.05 ID:JfTylyW8.net
- 糞仕様に迎合することをMS語では理解すると言います
- 249 :デフォルトの名無しさん:2015/09/28(月) 16:47:13.24 ID:Io5caW0J.net
- メッセージボックスのボタンが一個だけだとマウスポインタがボタンに移動しないんですけど、何が悪いんでしょうか?
- 250 :デフォルトの名無しさん:2015/09/28(月) 16:54:41.98 ID:lTbRmqcc.net
- 普通は移動しないと思うが
- 251 :デフォルトの名無しさん:2015/09/28(月) 17:02:56.55 ID:0jKDP4UE.net
- 設定でデフォルトのボタンに移動するようにしてるんだろ
- 252 :デフォルトの名無しさん:2015/09/28(月) 19:15:30.70 ID:s/OnR4Ys.net
- http://blogs.msdn.com/b/oldnewthing/archive/2013/03/22/10404367.aspx
But don't worry, the standard message pump is safe. If your parameters are exactly
•a valid pointer to a valid MSG structure,
•a null window handle,
•no starting message range filter,
•no ending message range filter,
then Get­Message will not fail with -1.
- 253 :デフォルトの名無しさん:2015/09/28(月) 20:12:46.31 ID:91/ACm3S.net
- >>243 以降はネタだと思うが、>>248 は単に Windows を dis れるオレカッケー君かな w
- 254 :デフォルトの名無しさん:2015/09/28(月) 20:44:33.42 ID:FF3rjUqv.net
- >>248
- 255 :デフォルトの名無しさん:2015/09/29(火) 06:51:33.28 ID:RQ7ZrE+f.net
- そんなことより­の用法について勉強になったわ
- 256 :デフォルトの名無しさん:2015/09/29(火) 19:30:39.39 ID:714Z1PTP.net
- typedefされているかどうか、enumされているか調べる方法はありますか?
質問意図。
例1)
#ifndef bool
#define bool int
#define true (1)
#define false (0)
#endif
例1のようなことを下記で定義してあるものに対して行いたい。
typedef int bool;
enum{false,true};
- 257 :デフォルトの名無しさん:2015/09/29(火) 19:35:28.79 ID:TPU2zcec.net
- WindowsAPIと何ら関係のない質問とは・・・
- 258 :デフォルトの名無しさん:2015/10/01(木) 21:44:10.72 ID:yzt9uPit.net
- includeの先をtypedefで全検索掛けてかたっぱしから#defineすればええ
簡単でしょ?
- 259 :デフォルトの名無しさん:2015/10/05(月) 09:53:29.16 ID:PVqgELRl.net
- dll内のダイアログリソースから文字列を「簡単に」抜き出せるAPIってありませんか?
SHLoadIndirectString みたいな感じで。
もしくはDLGTEMPLATEEX 構造体から簡単に(以下同文)
- 260 :デフォルトの名無しさん:2015/10/05(月) 14:06:09.49 ID:Xe1CseJq.net
- Googleの検索ボックスみたいに、
入力内容に応じて逐次、こちらが用意した候補を表示したいんだが
楽な実装方法ある?
便利さがあれと同程度であれば見た目はそっくりじゃなくてもいい。
- 261 :デフォルトの名無しさん:2015/10/05(月) 14:31:48.50 ID:Xe1CseJq.net
- エディットテキストとリストビューで実装してみるわ。
- 262 :デフォルトの名無しさん:2015/10/05(月) 15:36:54.33 ID:PVqgELRl.net
- >>259
ちくちくポインタ計算するしかないか……
- 263 :デフォルトの名無しさん:2015/10/05(月) 15:41:12.48 ID:Gxee2tr0.net
- >>262
そんな事せずにリソースファイルを新しく作りなさいよ
- 264 :デフォルトの名無しさん:2015/10/05(月) 17:07:33.06 ID:PVqgELRl.net
- いや例えばshell32.dll内のリソースとかだが
もう作ったからいい
- 265 :デフォルトの名無しさん:2015/10/05(月) 21:20:01.79 ID:+kYnElcl.net
- つ FindResource() & Load & Lock
- 266 :デフォルトの名無しさん:2015/10/06(火) 07:07:57.43 ID:+MMTk5e6.net
- 構造体配列の内容の一部をリストビューに入れた状態で、リストビューのアイテム(行)と構造体配列の要素はどうやって対応させたらいいの?
例)
struct TEST{
int ID;//ユニーク
char name[16];
int age;
}test[64];
この中で、リストビューにはnameとageだけを表示したい。
名前 | 年齢
――――――――
山田 | 28
田中 | 25
ここで山田が選択されているときに、testの中の山田の要素に対応させたい。
リストビューの要素からアイテムを取得して自力でtestを検索しても、28歳の山田が2人いれば判別つかなくてアウト。
リストビューに見えないようにIDを仕込めれば解決するが、できないみたいだ。
- 267 :デフォルトの名無しさん:2015/10/06(火) 08:10:35.92 ID:RmS10x6f.net
- LVITEMのlParamあたりに構造体へのポインタでもしこんどけよ
- 268 :デフォルトの名無しさん:2015/10/06(火) 15:32:28.15 ID:+MMTk5e6.net
- >>267
マジでありがとう!
そういう情報が欲しかった!
その情報を元に調べたら色々出てきた!
何とかできそうだ!
https://msdn.microsoft.com/en-us/library/windows/desktop/bb774760(v=vs.85).aspx
http://www.g-ishihara.com/mfc_lc_06.htm
- 269 :デフォルトの名無しさん:2015/10/06(火) 15:50:07.83 ID:uga0EVZs.net
- ブラウザのような選択できるテキストをDirectWriteで描画するにはどうすれば良いでしょうか?
DirectWriteのサンプルだと文字を選択できないしエディットコントロールだとどこでDirectWriteを噛ませればいいか分かりません
- 270 :デフォルトの名無しさん:2015/10/06(火) 19:44:04.77 ID:RIAMP3y9.net
- >>268
reallocでハマらないようにね
- 271 :デフォルトの名無しさん:2015/10/07(水) 20:43:54.09 ID:olmGB7G8.net
- >>269
DirectWriteはDrawTextと比べて特別速いという印象はなく
ほぼ同じぐらいの速度だったように記憶しているので
普通にエディットコントロールを使えばいいと思う
どうしてもDirectWriteが使いたければWPFを使えば
勝手にDirectWriteを使ってくれるかもしれないね
ただしWPFはスレチなんでWPFを使うならスレを移動してね
- 272 :デフォルトの名無しさん:2015/10/07(水) 20:45:06.18 ID:5JMb1/3S.net
- パフォーマンス重視ならDirectTKのSpriteFont一択
- 273 :デフォルトの名無しさん:2015/10/07(水) 20:50:51.43 ID:olmGB7G8.net
- ここだけの話、Win32API最大の汚点は
ウィンドウプロシージャの引数にインスタンスポインタが無いことだよな
初心者が必ず疑問に思う点だし
必ず必要と言っていいデータなのにウィンドウ作るたびに毎回
SetWindowSubclassとかSetWindowLongPtrとか
設計ミスだよね
でも本当の汚点はLOWORD、GET_X_LPARAM、など16bit幅のアレやコレかもしれない
- 274 :デフォルトの名無しさん:2015/10/07(水) 21:02:21.93 ID:gQOBln3k.net
- WinMainの第二引数とか
- 275 :デフォルトの名無しさん:2015/10/07(水) 21:23:55.22 ID:DDTC7KB4.net
- うん十年前の設計上の問題をSetWindowSubclassの
呼び出しひとつ程度で解決できるなら別にどうでも
- 276 :デフォルトの名無しさん:2015/10/07(水) 21:35:42.36 ID:6dKnmfm7.net
- >>273
ウインドウハンドルがあるじゃん
- 277 :デフォルトの名無しさん:2015/10/07(水) 21:50:45.60 ID:7k7eABWe.net
- ここだけの話とか馬鹿じゃねーの
そんな後出しジャンケンオナニーレスなんて自分の秘密鍵付きノートにでも書いとけよ
- 278 :デフォルトの名無しさん:2015/10/07(水) 22:38:04.21 ID:0FYyDCxK.net
- しゃべり場か
- 279 :デフォルトの名無しさん:2015/10/07(水) 22:48:18.06 ID:ItwNCUpp.net
- チョベリバだろう(すでに死語の世界)
- 280 :デフォルトの名無しさん:2015/10/07(水) 23:28:39.54 ID:gQOBln3k.net
- 秘密鍵って用語の使い方が変なのがいるな
- 281 :デフォルトの名無しさん:2015/10/07(水) 23:41:15.18 ID:diu86Nw7.net
- それ以前の問題のような気がするが
- 282 :デフォルトの名無しさん:2015/10/08(木) 00:54:08.31 ID:08uRUrkN.net
- 返信ありがとうございます
vimのソースコードを見てみたところ文字ごとに色を変えているようでした
なので、エディットコントロールのようなものも自分で実装したいと思います
- 283 :デフォルトの名無しさん:2015/10/08(木) 13:22:45.90 ID:jZEKLa+0.net
- どこの誰かは知らんが
や め て お け
リッチエディットコントロール的なものを使えばいいんじゃないかと
- 284 :デフォルトの名無しさん:2015/10/08(木) 14:02:16.80 ID:9yien46K.net
- >>273
一体どんな馬鹿が設計したらこんなヘンテコな仕様になるんだろうと今でも思うよWin32API
- 285 :デフォルトの名無しさん:2015/10/08(木) 14:24:20.32 ID:/fJJ0sXBD
- >>284
C++がまだ黎明期だったから仕方ない。
言語のクラスやインスタンスの機能の代わりに
WNDCLASSのcbClsExtraやcbWndExtraを使う設計なら、理解できなくはない。
だが、SetWindowsHookExにユーザーデータが渡せない設計は許してないぞ。
- 286 :デフォルトの名無しさん:2015/10/08(木) 15:15:26.59 ID:/fJJ0sXBD
- リボン (CLSID_UIRibbonFrameworkで作るやつ) で
日本語のラベルが改行されるのを抑制する方法ってわかります?
「Open」なら1行なんだけど、「開(改行)く」と縦書きみたいになっちゃう。
非アルファベットのワードブレーク処理が期待する動きではない感じ。
語末に全角スペースを追加する誤魔化しは使いたくないです。
- 287 :デフォルトの名無しさん:2015/10/08(木) 16:51:02.24 ID:66tpBgx2.net
- リボン (CLSID_UIRibbonFrameworkで作るやつ) で
日本語のラベルが改行されるのを抑制する方法ってわかります?
「Open」なら1行なんだけど、「開(改行)く」と縦書きみたいになっちゃう。
非アルファベットのワードブレーク処理が期待する動きではない感じ。
語末に全角スペースを追加する誤魔化しは使いたくないです。
- 288 :デフォルトの名無しさん:2015/10/08(木) 20:49:08.25 ID:9MeqRRt4.net
- >>284
Win32APIに限らず、Microsoftの提供するAPIは首を傾げるものが多いな。
本当に頭いいヤツが入社してるんだろうか・・・?
- 289 :デフォルトの名無しさん:2015/10/08(木) 20:51:55.26 ID:7AIOKY49.net
- 逆に並べるのが好きな奴はいるな
VFAT、BMP、LINQ、等々
- 290 :デフォルトの名無しさん:2015/10/08(木) 21:35:51.12 ID:1TGlpU6G.net
- 倒立ビットマップとかいらねーし
- 291 :デフォルトの名無しさん:2015/10/09(金) 00:36:37.21 ID:hQOu+a4V.net
- 頭のいいやつが設計したからWin95で作ったアプリが未だに動くんだろ。
どっかの糞OSなんてバージョンアップのたびに動かなくなるぞ。
- 292 :デフォルトの名無しさん:2015/10/09(金) 01:02:33.88 ID:m6l+7vgz.net
- 初期の設計が良かったからというよりは
その後の改築に頭を使い続けたという雰囲気だが
64bit化やDWMは頑張ったのでは
- 293 :デフォルトの名無しさん:2015/10/09(金) 11:48:17.82 ID:vp8UwouF.net
- そうだなあ
開発側もその都度API仕様が変更されると死ぬし
- 294 :デフォルトの名無しさん:2015/10/09(金) 12:41:13.75 ID:yBCegUEL.net
- CreateFileでFILE_FLAG_OVERLAPPED 指定ありで開いているファイルに対して(CloseHandleせずに)CopyFileで上書きしても問題ないでしょうか?
(システムで問題が起きた時にファイルを閉じることなく、事前に退避しておいたファイルに戻したいです。)
- 295 :デフォルトの名無しさん:2015/10/09(金) 13:15:28.85 ID:mu8Iv9Yi.net
- >>294
たぶん期待している動作にはならない
おそらくFILE_SHARE_DELETEについて調べると良いと思われる
- 296 :デフォルトの名無しさん:2015/10/09(金) 13:32:02.08 ID:qYdPFK/f.net
- なんで作業中は別ファイルでやっておいて最後に上書きしないの?
- 297 :デフォルトの名無しさん:2015/10/09(金) 13:48:37.07 ID:oOXSiJnl.net
- 面倒くさいから
- 298 :デフォルトの名無しさん:2015/10/09(金) 14:01:37.94 ID:SqKziDAZ.net
- 本当は、上書きも危ないので、
最初に、元のファイルを、renameする。
次に、新しいファイルを、元のファイル名で作成する
最後に、元のファイルを削除する
- 299 :デフォルトの名無しさん:2015/10/09(金) 14:22:05.37 ID:qYdPFK/f.net
- その手順だと、元のファイル名のファイルが作成途中で他から参照される
タイミングがあるからお勧めできないと思う…
- 300 :デフォルトの名無しさん:2015/10/09(金) 17:40:13.90 ID:uuceUKZS.net
- >>288
たいていの疑問はthe old new thingに書いてる
- 301 :デフォルトの名無しさん:2015/10/09(金) 18:50:43.73 ID:mhM1aSp5.net
- MCIについての質問スレが見当たらないけどここでいい?
- 302 :片山博文MZ ◆T6xkBnTXz7B0 :2015/10/09(金) 19:22:23.07 ID:W40lUqcY.net
- >>301
おk
- 303 :デフォルトの名無しさん:2015/10/09(金) 21:30:52.86 ID:oggkbSfr.net
- >>300
old newの作者がヘンテコなwin32api作った犯人なのか?
- 304 :デフォルトの名無しさん:2015/10/09(金) 22:30:53.93 ID:McJpsKEc.net
- 上書きいくない
オリジナルはきちんと連番の隠し属性にして隠しとくべきですう
- 305 :デフォルトの名無しさん:2015/10/10(土) 12:01:31.39 ID:wZWPBuKi.net
- 俺はNTFSの 代替ストリームに突っ込むことにしている
まずバレ無いよ
- 306 :デフォルトの名無しさん:2015/10/10(土) 12:54:07.63 ID:/egW/Cb1.net
- 間違ってコピー時に消してロストですね
- 307 :デフォルトの名無しさん:2015/10/12(月) 02:12:30.20 ID:Y1aqG/NX.net
- >>288
頭いいけど、ちょっと斜め上を行ってるだけなんだよきっと
- 308 :デフォルトの名無しさん:2015/10/12(月) 10:30:51.96 ID:dOqq0AtQ.net
- Windows 8, 8.1, 10 だと Win32 には新機能は追加されてなさそう?
検索してもあんまり出てこない
Win32というよりもWindowsプログラミング自体の話題が減っている気もするけど……
- 309 :デフォルトの名無しさん:2015/10/12(月) 11:58:32.65 ID:GW+oKPBf.net
- みんなWEBプログラマー目指してるんだろうね
子供プログラミング教室とかそんなのばっかり
そしてそこから踏み出すこともない
- 310 :デフォルトの名無しさん:2015/10/12(月) 12:00:54.79 ID:ntYAJ4A2.net
- お前の領分を食われないのは好都合だろ
何をやっかんでいる
- 311 :デフォルトの名無しさん:2015/10/12(月) 13:42:42.03 ID:0aVLwZvg.net
- スマホアプリだろ。
- 312 :デフォルトの名無しさん:2015/10/12(月) 14:11:22.42 ID:QD0vOYoj.net
- というかWin8RTだした時点で.NET+HTML5ベースのOSへの移行を目論んでたんでしょ。
RTが受けなかったのでWin32世代の互換性を強化してるけど、いまだ諦めてないと思うね。
企業ユースが.NETに移行できるように、WEBサービス強化を優先的にやってるし
その時、ひょっとすると端末側のOSはLinuxということもありうるだろうし、場合によっては
OSをハードウェア化してHTML5が動作すればいい程度になってる可能性もある。
- 313 :デフォルトの名無しさん:2015/10/12(月) 14:18:15.92 ID:GN4/i3DY.net
- >>308
普通に8以降もWin32APIはどんどこ追加されてるよ
各カテゴリのWhat' Newなんちゃらとかにまとまってる時もあるけど
.NETやらWinRTやらの土台としての扱いなのかおざなりなドキュメントが多いな
- 314 :デフォルトの名無しさん:2015/10/12(月) 15:52:31.97 ID:DSHcQooM.net
- MSからしたらWin32APIを捨てるメリットがまるでないんだよね
- 315 :デフォルトの名無しさん:2015/10/12(月) 17:00:02.70 ID:GAOSSbAR.net
- 画像サイズを縮小する方法、ご存じありませんか?
- 316 :デフォルトの名無しさん:2015/10/12(月) 17:01:31.57 ID:nie80ABu.net
- StretchBlt()
- 317 :デフォルトの名無しさん:2015/10/12(月) 19:38:20.65 ID:zL9czuyO.net
- 自分が作成したアプリのウィンドウの上に
他のアプリが重なっているか確認したいんですけど
EnumWindowsかGetWindowで列挙したウィンドウの矩形をいちいち取得し
自ウィンドウと重なっているか判定するといった手順より
簡単な方法があったりするでしょうか?
- 318 :デフォルトの名無しさん:2015/10/13(火) 04:37:06.38 ID:9NxpwIPd.net
- 一つのプログラム内でCreateWindowを使って複数のウインドウを開いているときに、
いずれかのウインドウでダイアログ(ファイルを選択するダイアログとか)を開くと、
ダイアログを開いたウインドウはダイアログが閉じられるまで前面にも来ず、ユーザーは操作もできなくなります。
しかし、ダイアログを開いたウインドウ以外のウインドウは操作できますし、クリックすればダイアログより前にも来ます。
ダイアログを開いたウインドウ同様に他のウインドウも操作を受け付けないようにしたいのですが、そういう設定はないのでしょうか。
ダイアログ表示前後に他ウインドウへの操作を無効にするコードをゴリゴリ書いてもいいのですが、何か設定ができるならそちらを使いたいです。
同じプログラム内で作られたウインドウなら何か設定がある気がします。
- 319 :デフォルトの名無しさん:2015/10/13(火) 05:00:16.14 ID:IpNepCXz.net
- コモンダイアログを開く前に、それの親となるウィンドウを CreateWindow し、
そいつの WM_CREATE タイミングでコモンダイアログを呼べば?
- 320 :デフォルトの名無しさん:2015/10/13(火) 07:26:53.27 ID:WAwM6nXZ.net
- >>317
いちいち取得し判定するしかないと思うよ。めったにない需要だし。
>>318
親ウィンドウ
├他のウィンドウ
└ダイアログ
という親子関係にすれば良いのでは?
- 321 :デフォルトの名無しさん:2015/10/13(火) 08:13:32.00 ID:L59Au/Rr.net
- かつて DOSのサブシステムだった Win3-4 が 母屋を乗っ取ったように
Win32もステラルヒが来るのだ
- 322 :デフォルトの名無しさん:2015/10/13(火) 10:17:12.50 ID:qKlLexPE.net
- DOSのサブシステムという位置づけで作られたのはdosshellだよ
WindowsはいきなりNTなんか作ってもユーザーが付いてこないから、
DOSユーザーにとって取っつきやすくexeにしたってだけ
実際、OS/2の出足の鈍さがすごかったろ
マルチタスクとプロテクトメモリは欲しかったけど
HDDをフォーマットする必要があったのが最大のネックで
- 323 :デフォルトの名無しさん:2015/10/13(火) 11:20:20.25 ID:oaoMXMKz.net
- ふむ、WindowFromPointも出てこんか
相変わらず初心者が馴れ合ってるだけの程度の低いスレだな
ざっと見渡しても質問に対してピンポイントに正解を答えてるレス無いもんな
質問の意味すら理解できん馬鹿ばっかなんだろうな
質問するだけ時間の無駄だわ
- 324 :デフォルトの名無しさん:2015/10/13(火) 11:33:32.82 ID:WPI+iK8W.net
- え、>>317を解決するために
自ウィンドウの全てのピクセルに対して、WindowFromPointを呼ぶの?
640x480のウィンドウだったとしても30万回もコールしなきゃならんわけだが
これが君の言うピンポイントの回答なの?
- 325 :デフォルトの名無しさん:2015/10/13(火) 12:08:05.88 ID:HOdVfJRd.net
- " c:\\aaaa\\bbbb \\ cc cc\\dddd "
↓
"c:\\aaaa\\bbbb\\cc cc\\dddd"
というように、階層ごとに前後の空白を削除する方法は、
Path〜関数や、それらの組み合わせなどでありませんでしょうか。
- 326 :デフォルトの名無しさん:2015/10/13(火) 12:17:02.30 ID:WPI+iK8W.net
- 正規表現を使えばよいんじゃね?
- 327 :デフォルトの名無しさん:2015/10/13(火) 12:44:50.23 ID:9UjSekpe.net
- 正規表現APIを教えれ
- 328 :デフォルトの名無しさん:2015/10/13(火) 14:48:20.02 ID:3EVIu19y.net
- >>323を晒しあげ
ところでListViewのワーキングエリアって使われてるのを見たことある?
- 329 :デフォルトの名無しさん:2015/10/13(火) 14:53:08.71 ID:e0HEbvMz.net
- 偉そうにしといて、これは恥ずかしいw
- 330 :デフォルトの名無しさん:2015/10/13(火) 14:56:14.54 ID:1nentuZe.net
- TreeViewに表示される横スクロールバーを削除するのおしエロ下さいよ
- 331 :デフォルトの名無しさん:2015/10/13(火) 15:17:05.76 ID:DtroG4QR.net
- >>330
WS_HSCROLLスタイルを削除
- 332 :デフォルトの名無しさん:2015/10/13(火) 15:28:45.54 ID:gLNTLW9u.net
- TVS_EX_AUTOHSCROLL
- 333 :デフォルトの名無しさん:2015/10/13(火) 15:32:00.28 ID:1nentuZe.net
- どやって
- 334 :デフォルトの名無しさん:2015/10/13(火) 15:38:19.73 ID:1nentuZe.net
- GetWindowLongでGWL_STYLE取って
WS_HSCROLLとTVS_EX_AUTOHSCROLLのビット落としてSetWindowLongしてもダメでした
やり方間違ったんかな全然違ったなかな
- 335 :デフォルトの名無しさん:2015/10/13(火) 15:43:04.02 ID:gLNTLW9u.net
- ::SendMessage(hWnd, TVM_SETEXTENDEDSTYLE, 0, TVS_EX_AUTOHSCROLL);
- 336 :デフォルトの名無しさん:2015/10/13(火) 16:00:20.58 ID:1nentuZe.net
- >>335
ソースありがとうございます。
しかしやはりスクロールバー消えてくれないです。
C++BuilderXE8なのですが、自動(TreeViewの幅変更)で表示ON/OFFしちゃうから
そのアレで勝手に表示されちゃうんのかなあ
- 337 :デフォルトの名無しさん:2015/10/13(火) 16:04:54.55 ID:gLNTLW9u.net
- ちなみに Vista 以降
- 338 :デフォルトの名無しさん:2015/10/13(火) 16:08:51.48 ID:1nentuZe.net
- Win7です^^
- 339 :デフォルトの名無しさん:2015/10/13(火) 16:14:31.66 ID:gLNTLW9u.net
- じゃ、単に TreeView の Windows スタイルに TVS_NOHSCROLL を追加してないだけかな
- 340 :デフォルトの名無しさん:2015/10/14(水) 05:52:00.33 ID:Z0PqNaXB.net
- >>324
いるよねー、文句言うだけで建設的な発言できない奴って
さすが初心者が簡単な質問に答えて俺スゲーするだけの程度の低いスレ民の意見だわ
君は1x1のウィンドウを想定して30万回コールすればいいやん
- 341 :デフォルトの名無しさん:2015/10/14(水) 07:48:26.80 ID:HVSBvHHm.net
- >>340
ぜひ君の「建設的な発言」を聞かせて欲しい。
まぁそれには、1x1のウィンドウに対応できない不具合があるんだろうがな。
元の質問が「重なっているか確認」でなく「自分が最前面である保証」なら
色々とやり方もあるのかもしれないが、それはまた別の話。
- 342 :デフォルトの名無しさん:2015/10/14(水) 08:19:36.28 ID:UG0pkAng.net
- ほかに方法がないのならどんな案でも建設的なんだろうけど、>>317の質問は
「全ウィンドウ列挙して矩形の重なりで判定するより簡単な方法はあるか?」だからなぁ。
- 343 :デフォルトの名無しさん:2015/10/14(水) 09:14:39.32 ID:OmtAhGc1.net
- それが充分に簡単な方法なんだが
- 344 :デフォルトの名無しさん:2015/10/14(水) 11:02:20.59 ID:oRHV6ndY.net
- まさかあれだけ恥ずかしい発言をしておいて
複数人から晒し上げにされたのに
のこのこ出てきて更に煽るとはね
- 345 :デフォルトの名無しさん:2015/10/14(水) 11:35:51.39 ID:EGTHNy+H.net
- 画面キャプチャして自分のウィンドウのクライアント領域のキャプチャ画像と比べたらどうだろう
md5とかで比較でも良いし
- 346 :デフォルトの名無しさん:2015/10/14(水) 11:46:04.64 ID:oRHV6ndY.net
- md5で比較する意味は有るの?
自分のウィンドウのクライアント領域のビットマップが
常に固定ならmd5を計算しておく意味も少しは出てくるが
普通は都度都度に刻々に変化するものなのではないかね
更にmd5を算出するには全てのピクセルを読まなきゃダメなんじゃないの?
普通に単純に頭からピクセル同士を比較していくやり方なら
違っていた時点で早期打ち切りが出来るわけだが
- 347 :デフォルトの名無しさん:2015/10/14(水) 12:02:16.92 ID:8Sy25YjX.net
- 自分のウィンドウのクライアント領域のビットマップが常に固定かどうかは >317 の条件に含まれていないね
- 348 :デフォルトの名無しさん:2015/10/14(水) 12:17:16.46 ID:oRHV6ndY.net
- 仮に自ウィンドウが固定だったとしても、
画面キャプチャのほうは毎回md5を計算するために
嘗め回さなければならないでしょう
早期打ち切りが出来ない分、不利では?
- 349 :デフォルトの名無しさん:2015/10/14(水) 12:42:21.24 ID:8Sy25YjX.net
- ラスタ毎のmd5とかを記録しとけば打ち切りにも対応可能
- 350 :デフォルトの名無しさん:2015/10/14(水) 12:45:42.57 ID:8Sy25YjX.net
- ちなみに
「簡単な方法」の定義があいまいだけど
目的が速度が速いのを目指したいなら
手順が簡単かどうかよりも
API呼ぶ回数が少ない方が有利だと思います
- 351 :デフォルトの名無しさん:2015/10/14(水) 12:59:23.41 ID:oRHV6ndY.net
- でも、画面キャプチャのmd5を計算する箇所で
普通に自ウィンドウのクライアント画像と比較をすれば
よくね?
- 352 :デフォルトの名無しさん:2015/10/14(水) 13:11:26.25 ID:8Sy25YjX.net
- その方が速いんならそれでいいよ
だれも否定はしていないはず
- 353 :デフォルトの名無しさん:2015/10/14(水) 14:29:56.75 ID:LplWxa35.net
- 知らないならレスしないで下さい。ウザいだけです。
- 354 :デフォルトの名無しさん:2015/10/14(水) 15:11:41.07 ID:PR+BbI9O.net
- 123 名無し~3.EXE sage 2015/10/13(火) 20:33:32.95 w37h7XvB
オプションの更新にWin10へのアップグレードに、レ点がデフォではいってるから
意図しないのにWin10にアップグレードしちゃった人いるんじゃないの
悪質だよなあ
124 名無し~3.EXE 2015/10/14(水) 02:05:05.54 G959FkfV
KB-3035583をアンインストールしたのに、
GWXConfigManager.exeが動いているのをなんとかしたい。
あと、それ以上に面倒なのが、
WindowsUpdateでの10への更新が、いちど非表示に入れたのにまた出ていること。
しかもデフォルトでインストールにチェックが入っているし。
さすがにここまで来ると悪質だ。
標準がオフで目につくというだけなら、ここまでいらだちはしないのだが…。
- 355 :デフォルトの名無しさん:2015/10/14(水) 15:37:17.44 ID:oRHV6ndY.net
- MSはゲイツが居なくなってから本当に酷いな
普通の会社ならとっくに見放されてる
VWはちょっと悪戯しただけで、あのざま
環境問題なんか消費者には関係ないし
燃費が伸びるのなら寧ろ良いと考える人も要るだろう
一方でソフトウェアは互換性という資産に守られているから
全くのやりたい放題だな
北の将軍様レベルで無茶苦茶されても
過去の資産を盾にされて、逃げる事ができないね
- 356 :デフォルトの名無しさん:2015/10/14(水) 16:24:18.77 ID:JRiou96q.net
- おいおいいつからポエム披露場になったんだここは
- 357 :デフォルトの名無しさん:2015/10/14(水) 16:28:32.54 ID:PR+BbI9O.net
- チラシは日記の裏に
- 358 :デフォルトの名無しさん:2015/10/14(水) 16:42:08.70 ID:OmtAhGc1.net
- EnumWindowsに渡す関数は1発書けばそれまでだし、
RECTの当たり判定くらい汎用ライブラリ化してねーやつはモグリってだけ
- 359 :デフォルトの名無しさん:2015/10/14(水) 18:06:17.54 ID:78XEzKH1.net
- ゲーム作りたいんですけどwin32ってどうなんですか?古い?
DirectX?のほうがいい?
- 360 :デフォルトの名無しさん:2015/10/14(水) 18:14:11.00 ID:HVSBvHHm.net
- >>358
このスレ的には IntersectRect を使うべきだろう
- 361 :デフォルトの名無しさん:2015/10/14(水) 18:18:51.71 ID:OmtAhGc1.net
- まあそうだ
- 362 :デフォルトの名無しさん:2015/10/14(水) 18:21:28.05 ID:j19XNlRE.net
- >>359
OpenGL/WebGLおぬぬめ
- 363 :デフォルトの名無しさん:2015/10/14(水) 18:41:37.35 ID:78XEzKH1.net
- >>362
おぬぬめ言われてもそれ理解するのに果てしなく時間がかかりそう
- 364 :デフォルトの名無しさん:2015/10/14(水) 18:51:35.80 ID:JRiou96q.net
- あなたならどれに手を出しても変わらないよ
…これだと良い方にも悪い方にも受け取れるな
- 365 :316:2015/10/14(水) 19:12:32.49 ID:kP0Tau7M.net
- >>319-320
ありがとうございます。
ちょっとよく分かりませんが、>>319氏のはその言葉通りにコード書けば期待通りの動作になるんでしょうか。
どういう原理で期待通りの動作をするのか分かりませんがやってみます。
>>320さんのはメインの親ウインドウ以外のウインドウにWS_CHILDを設定せよということでしょうか。
WS_CHILDを設定すると親ウインドウの領域からそのウインドウが出られないから外したのですが。
- 366 :デフォルトの名無しさん:2015/10/14(水) 19:16:49.44 ID:oRHV6ndY.net
- >メインの親ウインドウ以外のウインドウにWS_CHILDを設定せよということでしょうか。
違うと思います
- 367 :デフォルトの名無しさん:2015/10/15(木) 00:49:31.57 ID:VpGjS7sW.net
- >>363
win32+directx12でいいんでね?
最新だぞ最新
まあwin32部分はウィンドウ出すだけで残りのdirectxがほとんどだけどね
- 368 :デフォルトの名無しさん:2015/10/15(木) 01:06:47.38 ID:whFEoHyO.net
- お前鬼畜wwww
- 369 :デフォルトの名無しさん:2015/10/15(木) 11:03:19.33 ID:bdlPZJI1.net
- 「SHA-1の廃止前倒しを」 専門家チームが提言
http://www.itmedia.co.jp/enterprise/articles/1510/09/news054.html
Webサイトでの認証やデジタル署名に使われるハッシュ関数の「SHA-1」について、暗号解読の国際専門家チームが10月8日、廃止の時期を現在のスケジュールよりも前倒しする必要があると勧告した。
SHA-1がこれまで考えられていたよりも大幅に安いコストで破れることが分かり、犯罪集団に悪用される危険が迫ったと指摘している。
SHA-1は以前から脆弱性が指摘され、MicrosoftやGoogleなど主要ブラウザメーカーや電子証明書の発行機関が段階的な廃止に向けたスケジュールを公表している。
- 370 :デフォルトの名無しさん:2015/10/15(木) 18:00:29.14 ID:bdlPZJI1.net
- 環境汚すからな
- 371 :デフォルトの名無しさん:2015/10/16(金) 14:29:12.49 ID:IIEWzpZc.net
- SPY++であるウィンドウに来るメッセージを覗いてて
R(Return)だけが観察されるというのはどういう状況が考えられますか?
普通はSendされるメッセージです。
- 372 :デフォルトの名無しさん:2015/10/17(土) 17:36:45.64 ID:HFus6TsS.net
- >普通はSendされるメッセージです。
これは当たり前でしたね……
- 373 :デフォルトの名無しさん:2015/10/18(日) 11:00:40.65 ID:vJDQVwJW.net
- そうでもない
- 374 :デフォルトの名無しさん:2015/10/18(日) 17:30:31.18 ID:hcyPsAl4.net
- Spy++がSendされたメッセージを捉えるのはどうやってるんだろう
SendMessage系のAPIをフックしてるのかな?
それとも
SetWindowsHookExでWH_CALLWNDPROC/WH_CALLWNDPROCRETでグローバルなフックをかけてるの?
Returnだけが観察されたことと関係してるかな?
- 375 :デフォルトの名無しさん:2015/10/18(日) 17:58:11.54 ID:fswpyLwB.net
- Windows SDK の 6 あたりにソースついてなかったっけ、Spy++
- 376 :デフォルトの名無しさん:2015/10/18(日) 18:09:14.26 ID:81sora9Q.net
- DLLインジェクションかな
- 377 :デフォルトの名無しさん:2015/10/18(日) 21:32:04.08 ID:P1RRHvzY.net
- >>375
何気に有用な情報
- 378 :デフォルトの名無しさん:2015/10/18(日) 21:40:15.64 ID:1MrL9p77.net
- >>375
そーっすか?!
thx!
- 379 :デフォルトの名無しさん:2015/10/19(月) 22:57:12.18 ID:cIYsWzpl.net
- オーナードローのスプレッドシートを作っています。
セルの編集をする際、セルの位置にEditControlを作り、入力完了後に削除し
表に反映する手法をとっているのですが、この手法についてどう思いますか。
キャレットが出ていない状態(セルの選択状態)からの日本語入力の際
自分のマシンでは問題は起きないのですが、他のマシンでは予期せぬ入力が
される事があります。実装ミスだとは思うんですが、より良い設計があるのでは
と思っての質問です。
- 380 :デフォルトの名無しさん:2015/10/20(火) 10:41:35.61 ID:TzbTJ/Sf.net
- コモンコントロールのListViewとかはそういう実装だわよね
- 381 :デフォルトの名無しさん:2015/10/20(火) 13:41:26.89 ID:3vGCFixJ.net
- VS2013でビルドしたら
GetModuleFileNameがC:\aaa\bbb\ccc\..\..\..\out見たいの吐くんだが
これに*.extを追加してFindFirstFile呼ぶとエラーになる。
どうすればいいんだ
- 382 :デフォルトの名無しさん:2015/10/20(火) 13:42:54.85 ID:xP4cg3Iy.net
- \\
- 383 :379:2015/10/20(火) 13:48:37.15 ID:3vGCFixJ.net
- すまんエラーはにはならなかった。
- 384 :377:2015/10/20(火) 18:05:53.18 ID:z+IONYCc.net
- >>380
レスありがとうございます。
ListViewが編集可能なのを何故か忘れてましたw
ちょっとサンプルを漁ってみたところ、EditBox表示後に
入力を受け付けるのばっかりで、ちょっと残念。
Excelみたいに子ウィンドウのない状態からでも入力を
受けたかったのですが、方向性は間違ってなかったぽいので
もうちょい頑張ってみます。
- 385 :デフォルトの名無しさん:2015/10/21(水) 09:18:14.97 ID:jQM6AnWx.net
- リストビューで思い出した。
リストビューで列が多くあり表に収まりきらない場合は横スクロールとなりますが、
最左端の列のみ常時表示しつつ、2列目以降のみ横スクロールさせたい場合、
左端用のリストビューと横スクロールできるリストビューの2つを並べるしかないですよね?
過去、オーナードローで実現できないか試行錯誤して断念したことがあります。
- 386 :片山博文MZ ◆T6xkBnTXz7B0 :2015/10/23(金) 18:41:00.13 ID:/zhY2mEN.net
- //フレームレートを表示
static DWORD dw0 = 0;
DWORD dw1 = GetTickCount();
printf("\r%luHz ", 1000 / (dw1 - dw0));
dw0 = dw1;
...
このコード、どう思います?
- 387 :デフォルトの名無しさん:2015/10/23(金) 18:56:09.27 ID:3PXVM0Vu.net
- 0で割るかも知れないね
- 388 :デフォルトの名無しさん:2015/10/23(金) 18:56:41.12 ID:ogfwTZEM.net
- アカンと思います
- 389 :デフォルトの名無しさん:2015/10/23(金) 19:05:18.92 ID:g6RvQfmz.net
- 急いで0で割れ
- 390 :片山博文MZ ◆T6xkBnTXz7B0 :2015/10/23(金) 19:25:03.75 ID:/zhY2mEN.net
- 皆さん、有り難う御座います。
ゼロ除算になりそうなときは非表示にすると行けそうですね。
- 391 :デフォルトの名無しさん:2015/10/23(金) 19:26:43.65 ID:h7v1F5gE.net
- 片山先生にも分からない事があるのか!
- 392 :デフォルトの名無しさん:2015/10/23(金) 20:21:07.65 ID:ded5JV/s.net
- dw1 - dw0が0になることはあるのか?
ループにsleepもなくぶんまわすとかしなけりゃ起きない
逆にそういう場合には起きる
文脈による
- 393 :デフォルトの名無しさん:2015/10/23(金) 20:29:44.41 ID:E9Sd6aCq.net
- 一回目のGetTickCountがたまたま0だったら0で割る事になるし
そうじゃなくても1000Hz以上の速度で動いたら0で割る事になるね
内容にもよるけど、1000Hzぐらいは普通にありえる範囲だよねぇ
- 394 :デフォルトの名無しさん:2015/10/23(金) 21:30:58.46 ID:CrI38Gq0.net
- >>392
> ループにsleepもなくぶんまわすとかしなけりゃ起きない
49日ちょいでラップするから、その考えは浅すぎる
- 395 :デフォルトの名無しさん:2015/10/23(金) 21:37:01.60 ID:ded5JV/s.net
- >>394
49日とか関係なしに連続で同じ値が出るなんてそれこそ1000Hzないとないだろ
- 396 :デフォルトの名無しさん:2015/10/23(金) 21:40:53.46 ID:ded5JV/s.net
- うおおDWORDか
浅すぎて新島が誕生するレベルだったよ・・・
- 397 :デフォルトの名無しさん:2015/10/23(金) 21:47:41.71 ID:1FmkefyV.net
- コントやめろ
- 398 :デフォルトの名無しさん:2015/10/23(金) 21:53:44.01 ID:ded5JV/s.net
- だがちょっと待ってほしい
unsigned って1 - 2 = 0だったか?
- 399 :デフォルトの名無しさん:2015/10/23(金) 21:58:07.21 ID:h7v1F5gE.net
- >>397
初心者なんで、どの辺りが笑いどころかサッパリ分かりません
- 400 :デフォルトの名無しさん:2015/10/23(金) 22:06:11.62 ID:E9Sd6aCq.net
- なんか急にスレのレベルが急降下しているような
- 401 :片山博文MZ ◆T6xkBnTXz7B0 :2015/10/23(金) 22:14:50.12 ID:/zhY2mEN.net
- 頻繁にフレームレート更新を繰り返すと、タイトルバーが
ちらつくので、1秒ごとにフレームレートの平均値を表示してくれ、
とのことです。できますか?
- 402 :デフォルトの名無しさん:2015/10/23(金) 22:32:30.30 ID:E9Sd6aCq.net
- お前本当にバカだな
一秒間の間に何回フレームが更新されたか数えて表示すればよいだけだろ
FPSの定義そのものだ
- 403 :デフォルトの名無しさん:2015/10/23(金) 22:34:47.28 ID:ded5JV/s.net
- ドヤッ
static DWORD dw0 = 0;
DWORD dw;
DWORD dw1 = GetTickCount();
static int n = 0;
if( dw0 > dw1 ){
dw = ( 0xFFFFFFFF - dw1 ) + dw0;
}else{
dw = dw1 - dw0;
}
n++;
if( dw0 >= 1000 ){
printf("\r%luHz ", n);
n = 0;
dw0 = 0;
}
- 404 :デフォルトの名無しさん:2015/10/23(金) 22:40:23.49 ID:ded5JV/s.net
- >if( dw0 >= 1000 ){
if( dw >= 1000 ){
orz
}
- 405 :デフォルトの名無しさん:2015/10/23(金) 22:50:29.05 ID:ded5JV/s.net
- >dw = ( 0xFFFFFFFF - dw1 ) + dw0;
dw = ( 0xFFFFFFFF - dw0 ) + dw1;
>printf("\r%luHz ", n);
printf("\r%dHz ", n);
orz = 3;
憑かれているようだ吊ってくる・・・
- 406 :デフォルトの名無しさん:2015/10/24(土) 04:06:02.84 ID:7oDBCbbL.net
- >>403-405
dw = dw1 - dw0;
だけで十分。
ラップアラウンドしても問題無い。
- 407 :デフォルトの名無しさん:2015/10/24(土) 06:14:20.31 ID:1uTcqIZi.net
- dw0が常に0なんだが意味あんのか
- 408 :片山博文MZ ◆T6xkBnTXz7B0 :2015/10/24(土) 07:46:57.94 ID:E5/Z8Xm5.net
- CHAR title[64];
static DWORD count = 0;
static DWORD dw0 = 0;
DWORD dw1 = GetTickCount();
LONG span = dw1 - dw0;
if (span >= 1000) {
DWORD fps = count * 1000 / span;
DWORD dotzero = count * 10000 / span % 10;
wsprintfA(title, "%u.%u fps.", fps, dotzero);
SetWindowTitleA(hwnd, title);
dw0 = GetTickCount();
} else {
++count;
}
- 409 :デフォルトの名無しさん:2015/10/24(土) 09:02:02.42 ID:ddZkBitk.net
- >>406
なるほど〜
dw = ( 0xFFFFFFFF - dw0 ) + dw1;※
= 0xFFFFFFFF + dw1 - dw0;
= ( dw1 - dw0 ) + 0xFFFFFFFF;
1 + 0xFFFFFFFF = 0;
( dw1 - dw0 ) + 0xFFFFFFFF = ( dw1 - dw0 ) - 1;
dw = dw1 - dw0 - 1;???
※orz≡3;
dw = ( ( 0xFFFFFFFF - dw0 ) + dw1 ) + 1;
0xFFFFFFFF->0x100000000にしたいがはいんねーし・・・
結局dw = dw1 - dw0で覚えといたほうがいいな・・・
- 410 :デフォルトの名無しさん:2015/10/24(土) 17:42:31.85 ID:FPe1odjO.net
- GetTickCount では分解能がどうのこうのって問題は無いの?
だからといって timeGetTime 使っても大差無さそうだけど。
- 411 :デフォルトの名無しさん:2015/10/24(土) 17:50:12.21 ID:JWOZBggM.net
- 1sを計るのに1msの分解能で不都合があると思えない
- 412 :デフォルトの名無しさん:2015/10/24(土) 17:50:36.95 ID:VnqcBtM+.net
- http://y-okamoto-psy1949.la.coocan.jp/VCpp/checktime/
>GetTickCountは分解能が悪い、QueryPerformanceCounterを使うべきである
- 413 :デフォルトの名無しさん:2015/10/24(土) 17:53:41.55 ID:VnqcBtM+.net
- 今どきなら、std::chronoを使った方がクールじゃね?
- 414 :デフォルトの名無しさん:2015/10/24(土) 18:33:54.83 ID:niXzNvfm.net
- >>410-411
サンプリング定理では対象の2倍の周波数があればいいことになってるな
- 415 :デフォルトの名無しさん:2015/10/24(土) 18:46:57.38 ID:E5/Z8Xm5.net
- 分解能の低いアナログ時計よりも原子時計を使いましょう
- 416 :デフォルトの名無しさん:2015/10/27(火) 21:51:46.93 ID:aTkGcr+4.net
- 水素メーザーだろjk
- 417 :デフォルトの名無しさん:2015/10/27(火) 22:01:44.22 ID:ksuKqf7O.net
- 腹時計で十分
- 418 :デフォルトの名無しさん:2015/10/27(火) 22:04:34.96 ID:I14zLtiA.net
- "ごくごく低確率でも問題があるかもしれない"ならばなんらか対策するべきだと思う。
そういうコードがあちこちにあると、どれか一つ考えぬけとかでバグが顕在化するから。
しかも再現率低くて問題箇所の発見が非常に困難になる場合があるし。
- 419 :379:2015/10/27(火) 22:11:39.82 ID:cfkfKsSk.net
- 外から例外でくくればいいな
なかでごちゃごちゃやると遅くなる
- 420 :デフォルトの名無しさん:2015/10/28(水) 13:41:57.74 ID:9zUX3+we.net
- >>381
キサマは再帰でファイル削除するときに範囲外までぶっ壊すタイプだ
- 421 :デフォルトの名無しさん:2015/10/28(水) 20:55:38.12 ID:DIDF3JCG.net
- システムディレクトリのパスを得るために、パスの格納先であるクラスメンバのTCHAR型の配列を
GetSystemDirectory(Path, MAX_PATH + 1);
この様に渡すと、アクセス違反が発生するんですが
何故アクセス違反になるのか原因がさっぱり分かりません。
C++のクラスを使ったプログラミングはこれが初めてです。
- 422 :デフォルトの名無しさん:2015/10/28(水) 21:13:30.20 ID:bZn9m5X1.net
- Path 自体はどう宣言しているの?
普通なら
TCHAR Path[MAX_PATH + 1];
…
GetSystemDirectory(Path, MAX_PATH);
じゃね?
- 423 :デフォルトの名無しさん:2015/10/28(水) 21:31:49.85 ID:DIDF3JCG.net
- >>422
TCHAR Path[MAX_PATH + 1];
こんな感じで宣言してあります。
その方法でやってみてもアクセス違反になりますね。
MSDNによるとGetSystemDirectoryの第2引数はMAX_PATH以上の値を指定しろとのことです。
通常の関数プログラミングではこんな問題に直面したことはないのですが。
ちなみにクラスのインスタンスはグローバルな領域に確保しています。
クラスの宣言はこんな感じです。実際のものと異なっていますが、質問の件のために割愛。
class AppBase
{
TCHAR Path[MAX_PATH + 1];
static LRESULT CALLBACK HookProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp);
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp);
};
プロシージャのクラス化を施しています。
GetSystemDirectoryはWndProc内のWM_CREATEメッセージをハンドルする際に実行しています。
- 424 :片山博文MZ ◆T6xkBnTXz7B0 :2015/10/28(水) 21:39:19.05 ID:5FN/U/Ps.net
- WndProcの型が違う。
WndProcをstaticにするか、クラスの外に出せ。
- 425 :デフォルトの名無しさん:2015/10/28(水) 21:39:24.41 ID:UJXuJHMq.net
- WndProcもstaticじゃないの?
- 426 :デフォルトの名無しさん:2015/10/28(水) 21:46:47.48 ID:DIDF3JCG.net
- >>424>>425
WndProcはstaticではありません。
staticにするとメンバのアクセスに制限があるそうなのでstaticにしていませんでした。
試してみます。
- 427 :デフォルトの名無しさん:2015/10/28(水) 21:51:39.30 ID:gVmYV2et.net
- >>423
static LRESULT CALLBACK HookProc LRESULT CALLBACK HookProc
には何でstatic つけているの?
で、TCHAR Path[MAX_PATH + 1]; はにはなんでstaticないの?
- 428 :デフォルトの名無しさん:2015/10/28(水) 21:52:32.96 ID:DIDF3JCG.net
- 予想通りWndProcをstaticにすると静的ではないメンバへのアクセスができませんでした。
>>424さんが仰るとおり、WndProcをクラスの外に出すしか方法がないようです。
折角クラス化してスマートに書けると思っていたのに
まどろっこしいですね・・・。
- 429 :片山博文MZ ◆T6xkBnTXz7B0 :2015/10/28(水) 21:53:01.80 ID:5FN/U/Ps.net
- WM_CREATEのときにメッセージ経由でWndProcにポインター引数を渡す方法がある。
詳しくはWM_CREATEとCreateWindowを参照。
- 430 :片山博文MZ ◆T6xkBnTXz7B0 :2015/10/28(水) 21:57:08.81 ID:5FN/U/Ps.net
- ポインター引数を関数内static変数に保存しておくか、
SetWindowLongPtrでウィンドウハンドルと関連付けするか、
自前でハンドルマップを用意するか
- 431 :デフォルトの名無しさん:2015/10/28(水) 21:57:42.68 ID:gVmYV2et.net
- >>428
そして、クラス内のTCHAR Pathにアクセスすると
- 432 :デフォルトの名無しさん:2015/10/28(水) 21:58:44.54 ID:DIDF3JCG.net
- >>427
なんかウィンドウプロシージャをクラス内に内包して使うには
staticなフック用のプロシージャ関数と実際の処理内容を書くプロシージャのふたつが必要なみたいなんです。
この場合、HookProc内でWndProcを呼ぶ形になります。
TCHAR型の配列をstaticにしていないのはWndProc内から参照できるようにするためです。
って、これはどっちでも参照できますね・・・。
普段やり慣れていないことをするとどうも頭が回らなくなってしまう。
- 433 :デフォルトの名無しさん:2015/10/28(水) 22:02:36.33 ID:DIDF3JCG.net
- メンバ変数を全部staticにしてしまうのが一番手っ取り早いかもしれない。
やってることがC言語で書いてた時と変わってない気がするけど。
- 434 :片山博文MZ ◆T6xkBnTXz7B0 :2015/10/28(水) 22:04:32.58 ID:5FN/U/Ps.net
- ウィンドウのインスタンスが複数あれば全部staticにすることはできない。
- 435 :デフォルトの名無しさん:2015/10/29(木) 05:31:45.36 ID:BoW22xta.net
- 元の質問はGetSystemDirectoryだからまずそれが正しく動作することを確認
- 436 :デフォルトの名無しさん:2015/10/29(木) 09:01:57.91 ID:IDJmDfji.net
- >>432
>なんかウィンドウプロシージャをクラス内に内包して使うには
>staticなフック用のプロシージャ関数と実際の処理内容を書くプロシージャのふたつが必要なみたいなんです。
LRESULT CALLBACK HookProc( HWND hWnd, UINT msg, WPARAM wp, LPARAM lp )
{
return Window.WndProc( hWnd, msg, wp, lp );
}
こういうこと?
それならWndProcにstaticは要らないよ
- 437 :デフォルトの名無しさん:2015/10/29(木) 09:21:01.44 ID:ytDduPxZ.net
- GWLP_USERDATAとかでインスタンス渡して
staticなWndProcからインスタンスごとのWndProc呼び出すためだろ
- 438 :デフォルトの名無しさん:2015/10/29(木) 12:06:45.89 ID:IDJmDfji.net
- 彼のレベルでそういうことは無理だと思われ
- 439 :デフォルトの名無しさん:2015/10/29(木) 12:07:41.20 ID:IDJmDfji.net
- どうしてもって言うなら、
SetWindowSubclass
を薦めるべき
何も考えずに済むから
- 440 :デフォルトの名無しさん:2015/10/29(木) 15:43:47.89 ID:NLVhxZ3A.net
- >>435
インスタンスのメンバを渡そうとするとアクセス違反が発生するのは相変わらずです。
恐らくインスタンスのポインタが不正なアドレスを指し示しているからなのでしょうが
その原因が釈然としないんですよね。グローバル領域でインスタンスを生成しているので
どこからでもアクセス可能なはずなんですが・・・。
>>436
staticなのはHookProcのみでWndProcはstaticを付けていません。
>>437
WNDCLASSEXのlpfnWndProcにHookProcを指定し
CreateWindowExのlpParamにインスタンス自身のポインタを渡してから
コールバックでHookProcが呼び出された時にGetWindowLongでLPARAMに格納されている
インスタンス自身のポインタを受け取り、それからWndProcを呼び出しています。
>>439
将来的には子ウィンドウをサブクラス化してひとつのインスタンスからすべてのウィンドウを管理するつもりです。
- 441 :デフォルトの名無しさん:2015/10/29(木) 15:53:33.92 ID:RcFd5cz1.net
- static な WndProc を用意すれば HookProc なんぞ不要だが、
>なんかウィンドウプロシージャをクラス内に内包して使うには
>staticなフック用のプロシージャ関数と実際の処理内容を書くプロシージャのふたつが必要なみたいなんです。
この根拠(出典)がわからん。
- 442 :デフォルトの名無しさん:2015/10/29(木) 16:03:24.63 ID:ytDduPxZ.net
- >>440
CreateWindowExのlpParamはWM_CREATEでLPARAMとして受け取れるLPCREATESTRUCTのlpCreateParamsな
GetWindowLongPtrのGWLP_USERDATAを使いたいならWM_CREATE時に自分でSetWindowLongPtr使うなりしろ
>>441
名前がHookProcになってるだけで正体はstaticなWndProcなんだろ
- 443 :デフォルトの名無しさん:2015/10/29(木) 16:07:34.46 ID:RcFd5cz1.net
- >>442
それはわかっている。
質問者はもしかして「静的なウィンドウプロシージャと動的なウィンドウプロシージャの2つが
必要」と思っているのではないか、と思っての確認だ
- 444 :デフォルトの名無しさん:2015/10/29(木) 16:45:51.79 ID:IDJmDfji.net
- >将来的には子ウィンドウをサブクラス化してひとつのインスタンスからすべてのウィンドウを管理するつもりです。
これの意味が良く分らないけど、一つのインスタンスですべてのウィンドウを管理したいんなら
>>436にも書いたけど、
LRESULT CALLBACK HookProc( HWND hWnd, UINT msg, WPARAM wp, LPARAM lp )
{
return Global_Window_Manager.WndProc( hWnd, msg, wp, lp );
}
↑こういうことがしたいの?
しかし、一つのインスタンスですべてのウィンドウを管理するってのは
ここにいる殆どの人にとっては、???だと思うし、適切な助言はもらえないかも
普通この手の話題はSetWindowSubclassが最適解なんだが・・・
- 445 :デフォルトの名無しさん:2015/10/29(木) 17:15:19.02 ID:NLVhxZ3A.net
- >>441
参照したページは下記以外にもありますが、一応の出典はこちらになります。
■■Programmer's Studio■■
http://members3.jcom.home.ne.jp/progstudio/win_tips1.html
■■Programmer's Studio■■
http://members3.jcom.home.ne.jp/progstudio/win_tips2.html
>>442
はい。CreateWindowExのlpParamに渡したインスタンス自身のポインタはGetWindowLongで受けとることができます。
勿論、lp->lpCreateParamsからも受け取ることができます。
>>443
コールバック関数からはインスタンスのアドレスが取れないそうです。
ですので、staticが付いているプロシージャとstaticが付いていないプロシージャがあるわけです。
この辺の理由について私にはよく分かりません。言語的な仕様なのかWindowsの仕様なのか。
- 446 :デフォルトの名無しさん:2015/10/29(木) 17:26:21.42 ID:NLVhxZ3A.net
- >>444
ベースとなる親ウィンドウについてはサブクラス化は必要なく
ウィンドウ内に配置するフォームやボタンなどの子ウィンドウについてはサブクラス化する必要がありますね。
そうしないと1つのプロシージャの中に全部のプロシージャを書かないといけなくなりますから。
ソースコードが読みづらくなりますし、そのことがバグの温床になりえるので。
1つのインスタンスでアプリケーション内のすべての子ウィンドウを管理するのは
一般的なアプリケーションで実装している方法ではないのかな?
- 447 :デフォルトの名無しさん:2015/10/29(木) 17:26:43.70 ID:IDJmDfji.net
- もう何に困っているのかサッパリだが、流儀に従って
XP以降から登場したSetWindowSubclassつかうか
GetWindowLongでインスタンス取得してinst->WndProcしろよ
>CreateWindowExのlpParamに渡したインスタンス自身のポインタはGetWindowLongで受けとることができます。
これは初耳だな
これで落ちてるだけじゃね?
- 448 :デフォルトの名無しさん:2015/10/29(木) 17:33:07.82 ID:IDJmDfji.net
- >>446
>1つのインスタンスでアプリケーション内のすべての子ウィンドウを管理するのは
>一般的なアプリケーションで実装している方法ではないのかな?
それなら同じクラスのボタンを複数個表示したい場合はどうするんだ?
auto *button = new button_class( parent, x, y, w, h );
とすればいくらでも生成出来たほうが良いだろう
- 449 :デフォルトの名無しさん:2015/10/29(木) 17:44:38.19 ID:IDJmDfji.net
- まぁ別に絶対一つのオーバーラップウィンドウに対して一つしかインスタンスが無いことが決まっている子ウィンドウなら
オーバーラップのウィンドウクラスで子ウィンドウのサブクラスを管理しても良いんだが
その辺は自由といっちゃ自由なんだが・・・
既存のウィンドウクラスをサブクラス化するなら結局SetWindowSubclassを使うことになるから
どうせなら親のオーバーラップウィンドウのインスタンスの紐付けにもSetWindowSubclassを使えばよいだろう
そういうのの専用のAPIなのでまず間違いが無い
- 450 :デフォルトの名無しさん:2015/10/29(木) 18:01:42.16 ID:RcFd5cz1.net
- >>442
>CreateWindowExのlpParamに渡したインスタンス自身のポインタはGetWindowLongで受けとることができます。
これは君の誤解。WM_CREATE時にSetWindowLong()してるから受け取れるんだよ。参照しているページの
コードを正しく読みとかなきゃ。
たぶん基本的なことがわかっていないので、俺のコメントはここまで。あとは他の方にまかせる。
- 451 :デフォルトの名無しさん:2015/10/29(木) 18:02:20.98 ID:RcFd5cz1.net
- すまん、>>442じゃなくて>>445
- 452 :デフォルトの名無しさん:2015/10/29(木) 19:59:21.22 ID:lCX/HIGL.net
- x64時代は GetWindowLongPtr じゃないのん
と思ったがやはり
>>450 >>438
につきるな
- 453 :デフォルトの名無しさん:2015/10/29(木) 23:14:44.05 ID:NLVhxZ3A.net
- 皆さんに大変申し訳ないんですが、アクセス違反の原因が判明致しました。
>>445の参照先のCBaseWnd::CallProc内の
//_thisポインタが取得できなかった場合...
if( ! thisPtr )
この部分に該当する私が作成しているソースコードがif(thisPtr = NULL)になっていたのが原因でした。
本来ならif(thisPtr == NULL)ですね。
以前ポインタを使ったプログラムでif(!〜)で書くとうまく動かないケースがあったので
if(〜 == NULL)と書こうとしたところを打ち間違えていただけでした。大変失礼しました。
なんでデバッガの自動変数のthisポインタがいつも0(NULL)なんだろうと不思議に思っていたら・・・ですね。
質問の件のアクセス違反の問題は自己解決しました。
>>447>>450
ううう、SetWindowLongをコメントアウトしたらウィンドウを閉じてもIDEがデバッグ中のままですね。
それじゃあ、CreateWindowExのlpParamにセットしたthisポインタは一体なんなんだろう・・・。
2回同じthisポインタをセットしてることになりませんか?
>>448
それはですね、ベースのインスタンス内のコンテナに入れようかと思っています。
その場合もプロシージャが二段構成になるのでしょうか、面倒ですね。
こんなことしなくちゃいけないならプロシージャは普通の関数にした方がいいかもしれないですね。
>>449>>452
SetWindowSubclassは使ったことはあります。同じことがSetWindowLongでもできますけど。
GetWindowLongPtrは32bitと64bit両方対応できる書き方のようですね。
はい、質問の件は解決しちゃったのでこの質問はこれで閉じます。
スレの流れが意味不明ですみません。みなさん、ありがとうございました。
- 454 :デフォルトの名無しさん:2015/10/30(金) 01:24:20.19 ID:9r6cQokq.net
- サブクラス化において SetWindowLong じゃなくて SetWindowSubclass が
推奨されている理由を理解してるなら好きにすればいいと思うよ。
- 455 :デフォルトの名無しさん:2015/10/30(金) 10:55:25.00 ID:bGTI8z09.net
- if(thisPtr == NULL) 文法エラー出ない
if(thisPtr = NULL) 文法エラー出ない
if(NULL == thisPtr) 文法エラー出ない
if(NULL = thisPtr) 文法エラー出る
- 456 :デフォルトの名無しさん:2015/10/30(金) 11:00:33.58 ID:9r6cQokq.net
- なるほじ
- 457 :デフォルトの名無しさん:2015/10/30(金) 12:57:44.73 ID:FKezdCzi.net
- >>455
そんな化石みたいなノウハウは忘れて、コンパイルオプションに /Wall 付けとけ
- 458 :デフォルトの名無しさん:2015/10/30(金) 13:05:37.49 ID:fK4ls09n.net
- まぁでも定数を左に書いたほうが重要な情報がエディタの左に集中して読みやすい場合も有るよね
- 459 :デフォルトの名無しさん:2015/10/30(金) 14:36:20.28 ID:d4FfMDoX.net
- 少なくとも片方が定数でなければ使えないノウハウだし
「thisPtrがNULLのとき」と、thisPtrについて問いたいのを、
「NULLがthisPtrのとき」のように、NULLについて問う文面に変形したからって
はたして読みやすくなるのか、甚だ疑問だなあ
命題の逆という意味でも気持ち悪いし
- 460 : ◆QZaw55cn4c :2015/10/30(金) 16:02:06.42 ID:ydpR+iDi.net
- 昔から話題になり賛否両論だが、即効性はあるだろう
- 461 :デフォルトの名無しさん:2015/10/30(金) 16:35:01.19 ID:fK4ls09n.net
- >「NULLがthisPtrのとき」
そういう風に読むからそう感じるだけで、詠み方は個人の自由だから本質的に関係なくね?
NULL==thisPtrなんだから、そのまま
「NULLと等しいthisPtrのとき」
って読んでも良いわけでさ
- 462 :デフォルトの名無しさん:2015/10/30(金) 16:38:25.59 ID:WKDnxxt/.net
- というか、
> if(thisPtr = NULL) 文法エラー出ない
お前らのコンパイラさんは警告出してくれないの?
- 463 :デフォルトの名無しさん:2015/10/30(金) 16:46:58.80 ID:d4FfMDoX.net
- 比較を=と書いてしまうどんくさ過ぎるやつは論外として...
「thisPtrがダメなら」をif(!thisPtr)と正直に書けばいいのにね
- 464 :デフォルトの名無しさん:2015/10/30(金) 16:52:12.91 ID:tBRMFkFs.net
- そもそも参照しているページからして冗長なコードを書いているのだから
質問者のレベルもわかろうというもの。
文法の話題はその辺にしておこうや。
- 465 :デフォルトの名無しさん:2015/10/30(金) 16:54:57.38 ID:WKDnxxt/.net
- 「NULLだからダメという意味」がいいとしても
「ダメならNULLが入っている」というのは危険やろ
0xFFFFFFFF(-1)が入っていたらアウトやで
- 466 :デフォルトの名無しさん:2015/10/30(金) 17:03:08.13 ID:WKDnxxt/.net
- あと個人的に
if(thisPtr) は良いとしても
if(!thisPtr) は使わないようにしている
! の存在が分かりづらいから
- 467 :デフォルトの名無しさん:2015/10/30(金) 17:08:51.57 ID:4lmsW84L.net
- フォント、もしくはモニターを変えるべきじゃね?
- 468 :デフォルトの名無しさん:2015/10/30(金) 17:14:41.49 ID:d4FfMDoX.net
- >>465
ダメか否かを0と非0で示すのはB言語の時代から続いてる慣習で
そこを今さらゴネる奴ぁ破門でおk
HRESULTみたいのはともかくINVALID_HANDLE_VALUEはクソ
- 469 :デフォルトの名無しさん:2015/10/30(金) 17:58:47.68 ID:EtgcZYvF.net
- >>462
警告が出ないとは書いてないな
エラーが出ないと書いてある
良く嫁
- 470 :デフォルトの名無しさん:2015/10/30(金) 18:59:11.28 ID:WKDnxxt/.net
- >>469
ミスしてても警告出るなら気づくし直せるんじゃね?そうしたら
>この部分に該当する私が作成しているソースコードがif(thisPtr = NULL)になっていたのが原因でした。
ということも無かったよな?と言っているわけではっきりそう書かないと分からないのか?
というかその点については>>457でも指摘されているんだが
お前はよく読んだ上でそういうこと言っているの?
- 471 :デフォルトの名無しさん:2015/10/30(金) 19:05:07.31 ID:BpwNkir2.net
- >>462
このスレ住人のプログラムは警告がいっぱい出すぎていやぽになるから、
出すのはエラーだけで警告は出ないようにしている奴がスレの大多数だよ
>>467
おっさん目・脳が原因だから、そんなことしても駄目なんだよ
- 472 :デフォルトの名無しさん:2015/10/30(金) 19:33:22.34 ID:GDTU3KP4.net
- 警告無視したら事故るだけなんですけどね
単独事故はいくらでもしていいが他人を巻き込むなよ
- 473 :デフォルトの名無しさん:2015/10/30(金) 21:32:15.65 ID:7o442mgO.net
- そういえば最近IEウェブブラウザコンポーネントがすごく調子いい
あまりに落ちるのでchoromeにしようとしてたのに
- 474 :デフォルトの名無しさん:2015/10/30(金) 21:59:26.07 ID:XZwfZSuT.net
- 1つ120円のお菓子を5個買いました。
合計いくらでしょう?
○ 120 * 5 = 600
× 5 * 120 = 600
最近の小学校ではこうなるしな
- 475 :デフォルトの名無しさん:2015/10/30(金) 22:44:57.11 ID:S9hryATs.net
- >>474
最近じゃない、大昔からや
朝日新聞社(1972年1月26日).
“正しい 答えの式: 4 × 6 = 24−これは間違い: 6 × 4 = 24−大阪府の小学校のテスト”.
朝日新聞(朝日新聞社): p. 17
- 476 :デフォルトの名無しさん:2015/10/30(金) 22:53:29.75 ID:GDTU3KP4.net
- 横井庄一が見つかった年だってのは覚えてる
- 477 :デフォルトの名無しさん:2015/10/30(金) 23:07:00.22 ID:gPbmFrsE.net
- なるほど朝日新聞から間違っていたんだな
理解した
- 478 :デフォルトの名無しさん:2015/10/30(金) 23:11:57.95 ID:81BFIqC3.net
- >>468
ちょっとずれた話だけど、慣習というなら「0がダメ」「非0がダメ」両方存在するからややこしい。
整数と真偽値の区別がなくしたことで言語仕様を小さく抑えるのに役立ったけど、今となっては
やっかいな負の遺産だな。
- 479 :デフォルトの名無しさん:2015/10/31(土) 00:27:54.26 ID:VI585LHq.net
- >>475
40年が大昔なんか!
新聞に取り上げられる話なんかw
- 480 :デフォルトの名無しさん:2015/10/31(土) 08:35:58.58 ID:lwmwKgKI.net
- >>478
言語仕様だけの話じゃなくなってるぞ
いろんなライブラリの規約で0ターミネートが広く浸透してるからな
ところで、0ターミネートを0xffffffffターミネートにしたら
やっかいな負の遺産とやらが片付くのか?
- 481 :デフォルトの名無しさん:2015/10/31(土) 09:29:08.11 ID:/3zA5kgS.net
- >>480
こんなのが両方存在するからややこしい。
int err = func();
if ( ! err ) {
}
if ( func() ) {
}
さすがにboolだったら成功をfalseとするやつはいないだろう。
- 482 :デフォルトの名無しさん:2015/10/31(土) 10:29:15.04 ID:XOcT6ZqB.net
- #ifndef NDEBUGみたいなもんか
- 483 :デフォルトの名無しさん:2015/10/31(土) 11:32:55.48 ID:NotpAYNa.net
- >>481
それはネーミングがクソ
せめて errno とか err_code とかにしてくれ
- 484 :デフォルトの名無しさん:2015/10/31(土) 12:01:05.96 ID:eH4IcMDe.net
- 一方Win32APIはHRESULTを採用した
- 485 :デフォルトの名無しさん:2015/10/31(土) 12:29:13.90 ID:/3zA5kgS.net
- >>483
よくあるひとつの「慣習」だな。0以外の値がエラーだからエラーの有無を表す真偽値として扱うという。
それ自体糞だが。
- 486 :デフォルトの名無しさん:2015/10/31(土) 12:37:38.70 ID:VI585LHq.net
- 真偽だけじゃエラーの種類なんやねんってなるわな
- 487 :デフォルトの名無しさん:2015/10/31(土) 12:51:33.88 ID:CR8bSv/n.net
- BOOLと型指定してるくせに戻り値が3値だったりしなければどうでもいい
つまりINVALID_HANDLE_VALUEはクソ
- 488 :デフォルトの名無しさん:2015/10/31(土) 12:57:44.74 ID:tqUin/Ts.net
- >INVALID_HANDLE_VALUE
こいつのせいで安全な終了処理がどれだけ煩雑になることか
- 489 :デフォルトの名無しさん:2015/10/31(土) 13:00:30.50 ID:/3zA5kgS.net
- >>487
「ネーミングがクソ」ってのはそっちのが的確だな。
- 490 :デフォルトの名無しさん:2015/10/31(土) 13:13:43.82 ID:tqUin/Ts.net
- >>474
まず
120 * 5 = 600
整数ないしは実数の四則演算は可換である
したがって
5 * 120 = 600
と書けば小学校でも正解にされる
- 491 :デフォルトの名無しさん:2015/10/31(土) 13:16:19.32 ID:VI585LHq.net
- >>490
掛け算の順序問題
- 492 :デフォルトの名無しさん:2015/10/31(土) 15:44:33.25 ID:RIZFllKe.net
- 文脈からしたら本当の正解は
1 * 120 * 5 = 600
なんじゃないのー
最初の1を省略すんなよ
0個かもしれないだろう?
- 493 :デフォルトの名無しさん:2015/10/31(土) 15:49:06.96 ID:GVk0olpQ.net
- ×1 * 120 * 5 = 600
掛けられる数は答えと同じ単位になるんでしたね?
次からは気をつけましょう
- 494 :デフォルトの名無しさん:2015/10/31(土) 15:54:53.79 ID:eH4IcMDe.net
- 120(円/個)*5個=600円
5個*120(円/個)=600円
どっちも正解
- 495 :デフォルトの名無しさん:2015/10/31(土) 15:59:20.41 ID:IVNTd+mA.net
- >>492
>1つ120円のお菓子を5個買いました。
だから
120 / 1 * 5 = 600
か、もしくは5個=5セット、という意味なら単に
120 * 5 = 600
じゃね?
例えば「5つ120円のお菓子を5個買いました」だったとして
5 * 120 * 5 =
で値段を求める解釈は無理じゃね?
普通に考えて120円か600円のどっちかじゃね?
- 496 :デフォルトの名無しさん:2015/10/31(土) 16:16:44.01 ID:RIZFllKe.net
- プログラミング言語的に解釈すると
左端のオペランドの型が式の型という考え方か
- 497 :デフォルトの名無しさん:2015/10/31(土) 16:18:13.74 ID:RIZFllKe.net
- 小学生からやり直したいわー
- 498 :デフォルトの名無しさん:2015/10/31(土) 17:30:40.43 ID:jgYZGk3p.net
- 小学生からやり直したら童貞卒業出来ますか?
- 499 :デフォルトの名無しさん:2015/10/31(土) 18:40:14.44 ID:VXrj8Wc8.net
- >>487
> BOOLと型指定してるくせに戻り値が3値だったりしなければどうでもいい
これは同意するけど
INVALID_HANDLE_VALUE になんの関係が?
- 500 :デフォルトの名無しさん:2015/10/31(土) 19:10:00.57 ID:IS0mfGaY.net
- またGetMessageの話繰り返すのか…
- 501 :デフォルトの名無しさん:2015/10/31(土) 19:24:23.76 ID:qtS/NLO9.net
- 無限ループってこわくね?
- 502 :デフォルトの名無しさん:2015/10/31(土) 19:29:57.81 ID:/3zA5kgS.net
- まぁ、結論は「BOOLやHANDLEを暗黙に真理値とみなす条件式は書くな」ってことだな。
BOOLをTRUE/FALSEと比較する式を書くなという人がいるようだが、ここは明示的に比較するのが正しい。
- 503 :デフォルトの名無しさん:2015/10/31(土) 20:31:10.80 ID:IVNTd+mA.net
- そんなこと無いよ
https://msdn.microsoft.com/ja-jp/library/cc411211.aspx
BOOL ShowWindow(
戻り値
ウィンドウが以前から表示されていた場合は、0 以外の値が返ります。
↑ほら、TRUEを返すとは書いてないよ
- 504 :デフォルトの名無しさん:2015/10/31(土) 20:38:53.32 ID:GVk0olpQ.net
- TRUEマクロはBOOLに代入する時用の非FALSEのサンプルって認識だわ
- 505 :デフォルトの名無しさん:2015/10/31(土) 21:30:23.02 ID:BXlIMP23.net
- >>502
TRUEと比較するな
です
- 506 :デフォルトの名無しさん:2015/10/31(土) 23:26:01.93 ID:9zRzzHDy.net
- >>502
無効のとき0と規定されているものを真偽判定することの何が「暗黙に」なんだ?
まさかとは思うがif(some_func())よりもif(some_func() == TRUE)が正しいと言っているのか?
- 507 :デフォルトの名無しさん:2015/10/31(土) 23:40:02.48 ID:aOI+99BR.net
- BOOL XXX;
if(XXX == TRUE ) いくない
if(XXX) いいよ
if(!XXX) いいよ
- 508 :デフォルトの名無しさん:2015/10/31(土) 23:44:09.17 ID:/3zA5kgS.net
- そこは0と比較するんだよ。0,-1,その他、なら0か-1と明示的に比較する。
some_func()がBOOLのときif(some_func())とするのが糞。
BOOLだがTRUEを返すとされていないならif(some_func() == TRUE)はそもそも仕様と合致していない。
- 509 :デフォルトの名無しさん:2015/11/01(日) 00:00:44.95 ID:a/KTrDXN.net
- そんなにあいてしてほしい?
- 510 :デフォルトの名無しさん:2015/11/01(日) 00:16:05.43 ID:SE20IW2P.net
- >>508
仲間を連れてくるか、一人二役にしないと続かないぜそれ
- 511 :デフォルトの名無しさん:2015/11/01(日) 00:27:14.62 ID:U4S4bby1.net
- >>508
BOOLを-1と比較しろと?
BOOLという命名を差し置いて何がクソなんだ?
TRUEを返さない関数の戻りをTRUEと比較する話はイミフすぎ
- 512 :デフォルトの名無しさん:2015/11/01(日) 00:48:02.08 ID:YfxO7Cob.net
- 結局ループか。
- 513 :デフォルトの名無しさん:2015/11/01(日) 02:37:27.29 ID:Ni/K5kZr.net
- c#が有るのにwin32使ってウインドウプログラミングする理由は何?
- 514 :デフォルトの名無しさん:2015/11/01(日) 03:22:19.74 ID:l/1SHJPi.net
- C#なんて触ったこと無いけどどうやってwindow出すん
- 515 :デフォルトの名無しさん:2015/11/01(日) 07:56:42.08 ID:CjOActT4.net
- >>513
C#はWindowsアプリケーションの雛型を強制的に使わせられるので、OS、システムに突っ込んだ自由なことはできない。
- 516 :デフォルトの名無しさん:2015/11/01(日) 08:07:26.53 ID:xZNvf6uK.net
- ドットネットは無駄なインストールや更新を強いられるのがウザい
あと起動も遅い
- 517 :デフォルトの名無しさん:2015/11/01(日) 10:35:59.99 ID:iCjS0aFW.net
- >>515
コンソールアプリとかも作れますが…
- 518 :デフォルトの名無しさん:2015/11/01(日) 11:23:37.35 ID:jrBbxAac.net
- 簡単に書けるようになるなら別に自由である必要はないが
C#で別の意味で難しくなることが増える
同じ難しいならPCの仕組みに肉迫している方が勉強になる
- 519 :デフォルトの名無しさん:2015/11/01(日) 12:21:02.83 ID:xuiW6lxi.net
- >>515
C#からWin32APIを呼ぶことも出来るし、(推奨されてないが)必要に応じてポインターとかも使える。
デバイスドライバーを作るのでもなければ、自由度で困ることないんじゃないか。
リアルタイム処理をしようとするとGCが絡んできちゃうけど。
- 520 :デフォルトの名無しさん:2015/11/01(日) 14:10:14.00 ID:xuiW6lxi.net
- >>514
var form = new System.Windows.Form();
form.ShowDialog(); // モードレスなら、form.Show();
- 521 :デフォルトの名無しさん:2015/11/01(日) 14:43:19.93 ID:tjf5Il2M.net
- どうせ net native になるんだろ?
- 522 :デフォルトの名無しさん:2015/11/01(日) 17:08:02.46 ID:l/1SHJPi.net
- >>520
内部でWin32API呼ばれてたりしないん?
- 523 :デフォルトの名無しさん:2015/11/01(日) 17:37:44.50 ID:8eOJvOce.net
- >>513
おっさんはC#を覚えることが出来ないからだよ
(C++ Winの標準のMFCすらできなくて、Win32APIってのもあるだろう)
俺はいまから言語覚えてWinプログラムする奴にはC#を使えってアドバイスするよ
- 524 :デフォルトの名無しさん:2015/11/01(日) 18:00:00.72 ID:tjf5Il2M.net
- ペゾルド本も今やC#になってしまったからなぁ‥
- 525 :デフォルトの名無しさん:2015/11/01(日) 18:26:04.54 ID:dVueqhOd.net
- Visual Studio で C# のひな形を吐かせると、わけのわからないファイルがいっぱいだから
何が何やらさっぱりピーマン。:-)
なので、シンプルな ATL/WTL を使い続けてる俺はおっさん。
- 526 :デフォルトの名無しさん:2015/11/01(日) 20:38:06.85 ID:iCjS0aFW.net
- >>522
そりゃ呼ばれまくってるよ
System.Windows.FormsはWin32の高度なラッパーだよ
つかなんで今の時代でそんな疑問が湧くのかが疑問だよ
- 527 :デフォルトの名無しさん:2015/11/01(日) 21:42:12.60 ID:9iW+1wjJ.net
- デスクトップの背景に貼りつくアプリを作成しようとしてるのですがデスクトップアイコンと壁紙の間にウィンドウを置くのは可能でしょうか?
自作アプリのハンドルをとってWorkerWやSHELL_DefViewの子にして順序を入れ替えてみたりしたのですがうまくいきません。
winapiは今回初めて触ったレベルなのでウィンドウの仕組みをちゃんと理解できてないのですが構造的に無理なのでしょうか
osはwin8.1です。助言いただければ幸いです
- 528 :デフォルトの名無しさん:2015/11/01(日) 21:45:10.78 ID:VmCqG/zA.net
- C#って他社も追従してるの?
- 529 :デフォルトの名無しさん:2015/11/01(日) 21:52:08.17 ID:lhwvxGV2.net
- >>527
ガジェット
- 530 :デフォルトの名無しさん:2015/11/01(日) 22:15:37.95 ID:IUMffqeL.net
- >>529
ありがとうございます!
win7はほとんど触った事がなかったので盲点でした
その方向でまた調べてみます
- 531 :デフォルトの名無しさん:2015/11/02(月) 00:56:48.05 ID:B+3rH0MH.net
- もうGUIアプリはC#でしか作らないな。
開発効率が圧倒的に違うし。
- 532 :デフォルトの名無しさん:2015/11/02(月) 01:30:43.87 ID:idmQOjMo.net
- >>526
なら>>513もwin32使ってるよな?
- 533 :デフォルトの名無しさん:2015/11/02(月) 01:48:14.22 ID:SpPr0mCa.net
- 画面はwebベースで作った方が楽じゃないの
わざわざC#とかでやる意味あるかな
- 534 :デフォルトの名無しさん:2015/11/02(月) 01:59:02.76 ID:YYtynqW4.net
- >>533
c#だと好きな位置に好きな部品を置けるからいい
- 535 :デフォルトの名無しさん:2015/11/02(月) 02:16:51.34 ID:L8jwvCBDo
- >>532
それは揚げ足取り。間接的に使ってはいるけど、
Formsでラップされてるから、直接Win32APIを意識する必要は無い。
- 536 :デフォルトの名無しさん:2015/11/02(月) 06:59:59.05 ID:6BSNMQg5.net
- ガジェットって廃止されたよな?
- 537 :デフォルトの名無しさん:2015/11/02(月) 07:08:26.19 ID:X4MwKL6E.net
- あんなデスクトップの邪魔になるもの流行るわけないと思ってたが一瞬で消えたな
- 538 :デフォルトの名無しさん:2015/11/02(月) 09:10:22.37 ID:jypI/AIk.net
- だが横にムダに広いディスプレイは残った
縦を伸ばせ
タスクバーを横置きしてるが不自由
- 539 :デフォルトの名無しさん:2015/11/02(月) 09:31:10.98 ID:Oo4chQlF.net
- 目は横についてるからな
- 540 :デフォルトの名無しさん:2015/11/02(月) 10:25:18.08 ID:MWHqCb8w.net
- タコ?
- 541 :デフォルトの名無しさん:2015/11/02(月) 10:38:08.45 ID:u1Xcwdjg.net
- キーボードが縦に90度回転するノートがあれば良いんだよな
- 542 :デフォルトの名無しさん:2015/11/02(月) 21:36:03.71 ID:X4MwKL6E.net
- 今だにA4を一画面に表示できないなんて
- 543 :片山博文MZ ◆T6xkBnTXz7B0 :2015/11/02(月) 21:41:39.70 ID:N6XDKRqL.net
- >>542
A4表示専用用のディスプレイか、需要あんのか
- 544 :デフォルトの名無しさん:2015/11/02(月) 23:09:49.75 ID:YJ91Wm1P.net
- ディスプレイ縦にして表示を90度回転させればいいだけだろ
マルチディスプレイの1つをそうやってる奴はいるよ
- 545 :デフォルトの名無しさん:2015/11/03(火) 14:04:14.68 ID:C0Kah9v/.net
- >A4を一画面
それこそDPI次第だろうに
- 546 :デフォルトの名無しさん:2015/11/03(火) 16:09:42.06 ID:p2mb8RLL.net
- https://www.youtube.com/watch?v=m1RJASQT5i8
これがいい
- 547 :デフォルトの名無しさん:2015/11/03(火) 19:09:00.75 ID:IYCkVucX.net
- https://www.google.co.jp/search?q=pc-100&biw=762&bih=438&tbm=isch&tbo=u&source=univ&sa=X&sqi=2&ved=0CCkQsARqFQoTCI2nl4OB9MgCFSYipgodfOoJdA#imgrc=1tC29M6lbDrDuM%3A
- 548 :デフォルトの名無しさん:2015/11/05(木) 13:37:18.60 ID:k1mCzttB.net
- 無駄に長いURL貼ってあると
個人情報が含まれてる気がしてくる
- 549 :デフォルトの名無しさん:2015/11/05(木) 22:38:09.49 ID:8vWqbQMQ.net
- たまにアドレスよく見ると自分のID入ってたりするよな。
だからゴチャゴチャしたの消して、
そのURLで同じもの表示されるならそっち貼るように気をつけてるな。
- 550 :デフォルトの名無しさん:2015/11/05(木) 22:53:38.21 ID:q6SXWkeZ.net
- いかにも暗号な部分は本当やだね
- 551 :デフォルトの名無しさん:2015/11/06(金) 17:06:20.32 ID:iMrwfLZD.net
- 確かアマゾンとかのURL貼ると検索ワードわかるんじゃなかったっけ
- 552 :デフォルトの名無しさん:2015/11/06(金) 21:10:06.89 ID:rwaJO4C4.net
- ドロップダウンリストを持つウィンドウを作ったのですが、
これを実行してドロップダウンリストをクリックすると、
http://wktk.vip2ch.com/vipper0097.png のようになってしまい、
他のコントロールをクリックしても反応しなくなってしまいます。
どうしたら正しく動作するようにできるのでしょうか?
int CALLBACK wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow){
WNDCLASSEXW mainWindow = { sizeof(WNDCLASSEXW) , CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW ,
DefWindowProcW, 0 , 0 , hInstance , LoadIconW(hInstance, IDI_APPLICATION) , LoadCursorW(hInstance, IDC_ARROW) ,
(HBRUSH)(COLOR_WINDOW + 1) , NULL , L"mainWindow" , NULL };
ATOM mainWindowClass = RegisterClassExW(&mainWindow);
HWND hMainWindow = CreateWindowExW(WS_EX_OVERLAPPEDWINDOW, (LPCWSTR)mainWindowClass, L"Window",
WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);
ShowWindow(hMainWindow, nCmdShow);
/*中略*/
HWND hCombobox3 = CreateWindowExW(0, L"COMBOBOX", L"Combo Box", WS_CHILD | WS_VISIBLE | CBS_DROPDOWNLIST, 96 * 1, 30 * 5, 90, 24, hMainWindow, NULL, hInstance, NULL);
SendMessageW(hCombobox3, CB_ADDSTRING, 0, (LPARAM)L"(None)");
SendMessageW(hCombobox3, CB_ADDSTRING, 0, (LPARAM)L"text");
SendMessageW(hCombobox3, CB_ADDSTRING, 0, (LPARAM)L"Combo Box");
SendMessageW(hCombobox3, CB_ADDSTRING, 0, (LPARAM)L"Add String");
SendMessageW(hCombobox3, CB_SETCURSEL, 0, 0);
/*中略*/
MSG msg;
BOOL bRet;
while ((bRet = GetMessageW(&msg, hMainWindow, 0, 0)) != 0){
if (bRet == -1) break;
else{
TranslateMessage(&msg);
DispatchMessageW(&msg);
}
}
return msg.wParam;}
- 553 :デフォルトの名無しさん:2015/11/07(土) 01:47:54.37 ID:57BfyfLk.net
- 90, 24をそれぞれデカくしてやればいいんじゃね
- 554 :片山博文MZ ◆T6xkBnTXz7B0 :2015/11/07(土) 05:43:01.33 ID:b7KKpBJq.net
- >>552
DefWindowProcWじゃなくてちゃんとウィンドウプロシージャを指定しないとダメ。
- 555 :デフォルトの名無しさん:2015/11/07(土) 08:59:28.58 ID:RwXev/UR.net
- 俺もコンボボックスの縦のサイズを増やすに一票
- 556 :デフォルトの名無しさん:2015/11/07(土) 12:45:52.16 ID:Lam93S6q.net
- コンボボックスの謎
- 557 :デフォルトの名無しさん:2015/11/07(土) 15:04:10.72 ID:RwXev/UR.net
- 俺も昔コンボボックスの縦サイズではまった事あるんだわ
本当に謎仕様
- 558 :デフォルトの名無しさん:2015/11/07(土) 21:34:04.52 ID:AjJRvCBZ.net
- ドロップダウンした時の縦サイズ
- 559 :デフォルトの名無しさん:2015/11/07(土) 23:19:12.39 ID:bQCknPED.net
- >>556
懐かしくてフイタw
- 560 :デフォルトの名無しさん:2015/11/08(日) 02:04:59.85 ID:w5WQ9GZh.net
- タイトルは謎だし、中身はクソゲーだったな。
- 561 :デフォルトの名無しさん:2015/11/10(火) 18:45:13.27 ID:co6NjOXk.net
- VS2013を使っています
RECTのポインタの引数をとるAPIなどに
func( &RECT{ 0, 0, w, h } )
のようにして引数を与えるとコンパイルは通るしwarningも出ないのに
インテリセンスに
>IntelliSense: 式は左辺値または関数指定子である必要があります
という風に怒られ、ソースコードに赤の波線がついて鬱陶しいです
エラー一覧にも同様の文章が列挙され、これも鬱陶しいです
どうやったら黙らせる事が出来ますでしょうか
- 562 :デフォルトの名無しさん:2015/11/10(火) 20:06:38.54 ID:ll/jQOrE.net
- pragma waning
- 563 :デフォルトの名無しさん:2015/11/10(火) 23:09:15.72 ID:elivAdat.net
- >>561
確かに、アドレス演算子のオペランドが
左辺値でも関数指定子でもないね
純右辺値だぞこれ
&1つってんのと同じ
警告が聞きたくなければ吊るしか・・・
- 564 :uy ◆Qawu9.2l1E :2015/11/11(水) 06:03:51.37 ID:uYSp+fPE.net
- VSみたいな劣等IDEモドキ使ってる奴がいることに驚く
何故そんな初歩的なバグが放置されてるか?
A : 誰も使ってないから
- 565 :デフォルトの名無しさん:2015/11/11(水) 06:56:06.60 ID:86F6q36J.net
- 文句言ってる割にはwin32apiスレにいるっていう
- 566 :デフォルトの名無しさん:2015/11/11(水) 08:32:07.52 ID:rzj2E3oc.net
- char *fuga = &"hoge"[2];
こんなのも同じ警告出る?
- 567 :デフォルトの名無しさん:2015/11/11(水) 12:07:01.93 ID:WDtG518P.net
- >>563
それがコンパイラの警告は出ないんですよ
VSは大昔からこの書き方に対応していて
DirectXなんかでは良くfunc( &D3DXVECTOR3( x, y, z ) );
とか便利なんでよく使っていました
コンパイラは警告も出さないしコンパイルも通るし
動作も期待通りなのに
インテリセンスだけが文句言ってくるんです
コンパイラとインテリセンスで動作がチグハグなんです
- 568 :デフォルトの名無しさん:2015/11/11(水) 12:48:49.97 ID:yiYjUqQw.net
- >>567
バグじゃね?
2010 の頃にも class enum でインテリセンスとコンパイラがちぐはぐだったし
- 569 :デフォルトの名無しさん:2015/11/11(水) 13:56:12.23 ID:WDtG518P.net
- struct test1{ int x; }; //コンストラクタ無し
struct test2{ int x; test2(){} }; //コンストラクタ有り
void func( test1 *t ){}
void func( test2 *t ){}
func( &test1{} ); //インテリセンスが警告
func( &test2{} ); //OK
func( &test1() ); //デフォルトのコンストラクタを呼び出すスタイルならOK
色々試してみたんだけど、コンストラクタが有る構造体ならインテリセンスの警告は出ません
コンストラクタがない構造体の場合のみインテリセンスが文句を言ってきます
しかし、コンストラクタが無い構造体でも、&test1()という風に
デフォルトのコンストラクタを呼び出すスタイルだとインテリセンスのエラーは消えます
(しかし、コンストラクタの無い構造体を初期化リストで初期化した物のポインタをAPIに渡したい
というのが元々の悩みだったので、デフォルトのコンストラクタでは役にただず、意味がありません)
いずれの場合でも、コンパイラは警告もエラーも出さず、コンパイルは通ります
C++0xの細部は複雑すぎてよく分りませんわ
- 570 :デフォルトの名無しさん:2015/11/11(水) 16:57:49.05 ID:1hY3wyl+.net
- テキスト編集を遅延させずにインクルードを再帰的に追いかけて静的演算と条件コンパイルかまして実コンパイラと寸分違わずかつリアルタイムにシンタクスハイライトするくらい常識だろー
- 571 :デフォルトの名無しさん:2015/11/11(水) 19:38:27.44 ID:YDOXgbvn.net
- もちろん
- 572 :デフォルトの名無しさん:2015/11/14(土) 12:05:04.37 ID:kYx4kaK6.net
- 今日おぼえた英語
short flush
long flush
bottom spray
- 573 :デフォルトの名無しさん:2015/11/15(日) 16:50:10.08 ID:PpDrlMq1.net
- winsockについてなんですが、
sendを1回コールして送られたパケットは、
recvを1回コールして全て受け取れることは保証されてるんでしょうか?
例えば、sendは1回で送ったけど、recvは2回かけて受け取るケースがあったりするんでしょうか?
- 574 :デフォルトの名無しさん:2015/11/15(日) 17:09:21.28 ID:PV6fOtMt.net
- >sendを1回コールして送られたパケットは、
>recvを1回コールして全て受け取れることは保証されてるんでしょうか?
いいえ
>例えば、sendは1回で送ったけど、recvは2回かけて受け取るケースがあったりするんでしょうか?
はい
- 575 :デフォルトの名無しさん:2015/11/15(日) 18:43:50.08 ID:Vi+EqW0v.net
- データグラムなら保証されてる
ストリームは保証されてない
- 576 :571:2015/11/15(日) 19:24:09.72 ID:PpDrlMq1.net
- >>574
ありがとうございます。
分かりました。
>>575
失礼しました。
TCP/IP通信が前提です。
UDPの場合はパケットが届かずに捨てられる可能性を考慮しないといけませんよね。
- 577 :デフォルトの名無しさん:2015/11/15(日) 23:26:37.86 ID:bwAQtTVZ.net
- デバイスコンテキストのハンドルHDCが
有効であるかどうかテストする関数または方法を教えてください
宜しくお願いします
- 578 :デフォルトの名無しさん:2015/11/15(日) 23:31:55.73 ID:DVr3HCs9.net
- CreateDC()の戻り値は失敗するとNULL
- 579 :デフォルトの名無しさん:2015/11/15(日) 23:44:58.72 ID:SwaoEtt5.net
- 適当にCreateCompatibleDCでも呼んでみて
失敗したら無効なハンドルなんじゃね?
しらんが
- 580 :デフォルトの名無しさん:2015/11/15(日) 23:48:38.46 ID:bwAQtTVZ.net
- >>578
質問の仕方が悪かったです、すみません
過去に取得したHDCが、現在でも有効というか利用可能であるかどうかを確認する関数はありませんか?
例えばHWNDの場合だとIsWindow関数を使うことで有効であるかどうかを見極めることができます
それと同じようなものが無いかという質問です
宜しくお願いします
- 581 :デフォルトの名無しさん:2015/11/15(日) 23:49:21.25 ID:bwAQtTVZ.net
- >>579
有難う御座います
もう少しスマートな方法でお願いします
- 582 :デフォルトの名無しさん:2015/11/16(月) 00:39:27.67 ID:QnJE0SEP.net
- そ、そう?
じゃぁGetNearestColorはどう?
コスト低そうだよ
- 583 :デフォルトの名無しさん:2015/11/16(月) 00:47:49.59 ID:QnJE0SEP.net
- と思ったけど、ディスプレイが32bitモードだと
HDCに関係なく引数そのまま返す可能性も有るな
まーでもGet系のAPIはほかにも沢山有るから
好きなの使えば?HDCが無効なら失敗しそうな奴
- 584 :デフォルトの名無しさん:2015/11/16(月) 00:49:37.84 ID:QnJE0SEP.net
- さらに思ったんだけど、HDCが既に無効かどうか調べたいって事は
その後何かに使うつもりなんだろうから
実際に何かしようとして失敗したら無効だったってことでよいんじゃね?
- 585 :デフォルトの名無しさん:2015/11/16(月) 04:57:13.17 ID:hnRSxFKX.net
- それでは >>581 的にはスマートじゃないんでしょう
好きにしろと突き放すのが吉かと
- 586 :デフォルトの名無しさん:2015/11/16(月) 05:07:17.50 ID:WTn2umFu.net
- >>585
結局、こういう人が出てくるんですよね
まあWindowsプログラミングに則してるかどうかを理解できないことに起因する発言だと思いますけど
そういうこと言うなら
WindowFromDC単独、または、WindowFromDCからのIsWindowで判断しろ位の回答出してから言ったらどうですか?
ID:QnJE0SEPの提案は、彼にしてはよく考えてくれたと思ってるし感謝もしてますよ
- 587 :デフォルトの名無しさん:2015/11/16(月) 06:25:34.35 ID:xp46TE2K.net
- mallocで確保したポインタが有効であるか確認する関数または方法を教えてください
宜しくお願いします
- 588 :片山博文MZ ◆T6xkBnTXz7B0 :2015/11/16(月) 06:54:01.40 ID:FxCdLFu/.net
- GetDeviceCaps
- 589 :デフォルトの名無しさん:2015/11/16(月) 09:54:33.55 ID:HIZPDz5u.net
- 使って落ちたらそれは悪いポインタだ
- 590 :デフォルトの名無しさん:2015/11/16(月) 10:03:19.32 ID:6H4dK92G.net
- >>587
使ってみればいいんじゃないか?
- 591 :デフォルトの名無しさん:2015/11/16(月) 10:31:47.38 ID:QnJE0SEP.net
- >>586
それお前、後付じゃねーか
WindowsFromDCはメモリDCでは失敗するんだぞ
調べたい対象のDCは必ずウィンドウのDCってのは、俺は知らなかった情報だぞ
- 592 :デフォルトの名無しさん:2015/11/16(月) 13:39:16.61 ID:SczSLJRd.net
- GetObjectTypeでいいでしょ
- 593 :デフォルトの名無しさん:2015/11/16(月) 18:24:25.92 ID:l2x/CNAR.net
- にゃんぱすー
- 594 :デフォルトの名無しさん:2015/11/16(月) 20:06:37.73 ID:sBUCKle7.net
- >>592
これだ
- 595 :デフォルトの名無しさん:2015/11/16(月) 21:06:03.20 ID:nSSKBNI/.net
- >>587
mallocのラッパーを作っとく
全てをmymalloc経由で呼び出してテストで問題がなかったら
#defeine mymalloc mallocする
おれはやらないけどね
- 596 :デフォルトの名無しさん:2015/11/16(月) 21:30:12.35 ID:QnJE0SEP.net
- >>595
適当にアクセスしてみて例外が出たら捕まえれば?
例外はC++のじゃなくてMS独自の構文の方な
でも例外でなくても他に再利用されている状態かもしれないから
結局安全性は確保できないと思うがやってみれば、知らんが
- 597 :デフォルトの名無しさん:2015/11/16(月) 21:30:47.06 ID:QnJE0SEP.net
- アンカ間違えたわ
- 598 :デフォルトの名無しさん:2015/11/16(月) 21:32:11.63 ID:c+JfJrRB.net
- HDCやmallocで確保したポインタの有効性が当てにならないって…
そもそものプログラムの組み方がマズいんでないかい?
- 599 :デフォルトの名無しさん:2015/11/16(月) 22:40:09.48 ID:KqlZhPmb.net
- >>576
ttp://www1.axfc.net/uploader/so/2729229.zip
- 600 :デフォルトの名無しさん:2015/11/16(月) 22:50:08.47 ID:KqlZhPmb.net
- *printfの戻り値が有効であるか確認する関数または方法を教えてください
- 601 :デフォルトの名無しさん:2015/11/16(月) 23:08:54.03 ID:fdnGG03D.net
- >>598
自分の書いたプログラムが有効であるか確認する関数または方法を教えてください
宜しくお願いします
って感じか
- 602 :デフォルトの名無しさん:2015/11/16(月) 23:36:03.19 ID:rgt/lt++.net
- 自分の脳をマイクロ診断する方法かw
DC X'83
- 603 :デフォルトの名無しさん:2015/11/18(水) 11:10:46.15 ID:Amh1/iYO.net
- ジバニャンウィルス
http://www.sankei.com/west/news/151117/wst1511170067-n1.html
- 604 :デフォルトの名無しさん:2015/11/20(金) 17:05:25.15 ID:pS4guF6V.net
- シングルスレッドビルドとマルチスレッドビルドで速度が3倍ぐらい違うんだけど、こういうものなんですか?
- 605 :デフォルトの名無しさん:2015/11/20(金) 21:28:57.87 ID:ph+B6Bvv.net
- 赤く塗って角を付けよう
- 606 :デフォルトの名無しさん:2015/11/20(金) 21:30:30.96 ID:mWax20BT.net
- 異常加速効果調べてみろ
- 607 :デフォルトの名無しさん:2015/11/20(金) 21:49:23.14 ID:97LExnIK.net
- >>604
マルチスレッドコンパイルの速さ、尋常じゃないよねw
タスクマネージャ見たら、全コア100%で貼りついてるw
これまで見た中で、最もCPUの能力を引き出しきったプログラムだよ、VC++2015はw
- 608 :デフォルトの名無しさん:2015/11/20(金) 22:02:52.88 ID:pS4guF6V.net
- >>607
いや、シングルスレッドのほうが速いんです…
LHa for UNIXのデコーダーをWin32向けに書き換えてビルドしたやつなんですが
グローバル変数だらけでそれに頻繁にアクセスする構造になってるのでそれが影響しているような気もするんですがね
- 609 :デフォルトの名無しさん:2015/11/20(金) 23:01:27.23 ID:97LExnIK.net
- >>608
えぇ!?びっくりぽんや・・・
原理的には、ソースファイルをオブジェクトファイルにコンパイルする作業は
翻訳単位(.cpp)で独立している=並列化できるはずだし、
遅くなるようなことがあるとは考えにくいなぁ。
- 610 :デフォルトの名無しさん:2015/11/20(金) 23:03:28.43 ID:tEYsBkPr.net
- ヒント:切り替わる手間
- 611 :デフォルトの名無しさん:2015/11/20(金) 23:14:24.26 ID:5Nrp/FGL.net
- HDD遅いと同時にアクセスしたときシークで時間取られるよな
- 612 :デフォルトの名無しさん:2015/11/20(金) 23:20:04.30 ID:pS4guF6V.net
- マルチスレッドビルドのほうが速ければ何の問題も無かったんですが、
シングルスレッドアプリケーションなんてとてもじゃないけど使い物にならないですから
デコーダーだけシングルスレッドビルドのDllにしてスレッドから呼び出せば速度も速いままいい感じにはなるんですが
このやりかたは推奨されないみたいですし
どちらにしろスレッドセーフではないので同時にデコーダーを呼び出すことは事は無いのですが、それでもやっぱり問題あるのかな
この辺が何ともわからない…
- 613 :デフォルトの名無しさん:2015/11/20(金) 23:20:34.29 ID:97LExnIK.net
- >>610
スレッド切り替えのオーバーヘッド?
Microsoftが、それが露呈するような間抜けな組み方をするとは思え・・・ いや、あるかw
>>611
あー、I/Oがボトルネックになるとキツいね。
んでも、その場合でも最悪時間はシングルスレッドと同じくらいになりそうなものだけどね。
- 614 :デフォルトの名無しさん:2015/11/20(金) 23:29:58.12 ID:lixacdxh.net
- 並列ビルドの話なのか、/MTコンパイルの話なのか
- 615 :デフォルトの名無しさん:2015/11/20(金) 23:33:27.15 ID:pS4guF6V.net
- >>614
/MTの方です…
- 616 :デフォルトの名無しさん:2015/11/20(金) 23:33:56.29 ID:5Nrp/FGL.net
- >>604 >>607 の流れでコンパイル速度の話と思ってたけど違ったのか
> シングルスレッドビルドとマルチスレッドビルド
これはマルチスレッド対応のライブラリのことだったんだな。
マルチスレッド対応するということは同じメモリ領域等に同時にアクセスしない仕組みが
増えてるから、その分遅くなる。
> グローバル変数だらけでそれに頻繁にアクセスする構造
最適化しにくくなるし書き込みは排他処理になるので遅くなる
- 617 :デフォルトの名無しさん:2015/11/20(金) 23:39:04.30 ID:97LExnIK.net
- あー、並列コンパイルの話ちゃうんかw
失礼したw
>>616
たしかにそれはあるだろうけど、それでも3倍の差になるだろうか?
スレッド生成や終了のオーバーヘッドでもないとそこまでの差にはならないんじゃないかなぁ?
もっとデカいペナルティってある?
- 618 :デフォルトの名無しさん:2015/11/20(金) 23:52:14.27 ID:t7TDAkzV.net
- 処理じゃなくてプロセス生成から終了までの時間測ってるんじゃ?
- 619 :デフォルトの名無しさん:2015/11/20(金) 23:58:00.82 ID:5Nrp/FGL.net
- httpサーバか何かでマルチスレッドとイベントドリブンで負荷が大きい時に
なんたらかんたらとかあったな
- 620 :デフォルトの名無しさん:2015/11/20(金) 23:58:27.12 ID:pS4guF6V.net
- >>616
そのような気がしてたのですが
全てローカル変数にすれば少しはましになるのかな…
>>618
具体的には、300MBほどのlh7圧縮ファイルの展開速度で、/MLでは6秒ぐらい、/MTだと16秒ぐらいですね
かなりの差が出ます
- 621 :デフォルトの名無しさん:2015/11/21(土) 05:24:33.16 ID:TBiDBsF1.net
- /MLなんてかなり昔に廃止されてないか?
MSDNに残ってる最古の2005でさえ、
The single-threaded CRT is no longer available.
と、書かれてたので使おうとすら思わなかったわ。
その記事の中に↓とも書かれている。今回のケースでは有効そうだが。
Defining _CRT_DISABLE_PERFCRIT_LOCKS forces all I/O operations to assume a single-threaded I/O model and use the _nolock forms of the functions.This allows highly I/O-based single-threaded applications to get better performance.
Exposure of the CRT heap handle allows you to enable the Windows Low Fragmentation Heap (LFH) for the CRT heap, which can substantially improve performance in highly scaled scenarios.
- 622 :デフォルトの名無しさん:2015/11/21(土) 05:36:41.11 ID:TBiDBsF1.net
- ちなみに
/MP (Build with Multiple Processes)
なので、マルチスレッドでなくてマルチプロセスな。
コンパイルをマルチプロセスで高速化するのはMITのpmakeが最初で、pmakrのオプション-jはいろんなmakeに取り入れられてる。
googleによると1970年代から存在する。
- 623 :デフォルトの名無しさん:2015/11/21(土) 08:40:08.83 ID:H2tpzR2c.net
- >>621
参考になります
どうやらCのシングルスレッドライブラリが使われることでパフォーマンスが悪くなるようですね
確かにそれらのC関数が至る所で頻繁に呼び出されています;
これならいくらでも回避方法がありそうです
原因がわかって助かりました ノシ
- 624 :549:2015/11/21(土) 10:10:41.74 ID:JyKECnY5.net
- >>552 ですが、
リスト部分は正しく表示されるようになりましたが、
リストボックスを含め、マウスからの操作を受け付けない状態になってしまいます。
どうしたら正しく動作するようにできるのでしょうか?
- 625 :デフォルトの名無しさん:2015/11/21(土) 13:58:19.88 ID:EEYvP2Nj.net
- Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
/MD link with MSVCRT.LIB
/ML link with LIBC.LIB
/MT link with LIBCMT.LIB
/MPなんてありませんがな。
- 626 :デフォルトの名無しさん:2015/11/21(土) 14:25:17.12 ID:6HcvIKiz.net
- はあ?
https://msdn.microsoft.com/ja-jp/library/bb385193.aspx
- 627 :デフォルトの名無しさん:2015/11/21(土) 14:32:51.56 ID:+qmJr5EI.net
- >>623
コード見ないと確実なことは言えないけど、排他の多いコードはシングルスレッドの方が速いよ
マルチスレッドで速くなるのは、スレッド生成や排他コストに比べて、並列に処理する区間が多い場合のみね(当たり前だけど)
- 628 :デフォルトの名無しさん:2015/11/21(土) 14:38:23.97 ID:JXjswKeV.net
- ままだ並列make、並列build、並列compileの話を続けている奴がいるのか…
- 629 :デフォルトの名無しさん:2015/11/21(土) 15:04:49.37 ID:H2tpzR2c.net
- >>627
https://msdn.microsoft.com/ja-jp/library/ms235505%28v=vs.90%29.aspx
この辺ですね、シングルスレッドライブラリはマルチスレッドライブラリより速いようですが
/MTでビルドすると頻繁にロックが発生してとても遅くなるようです
あえてロックを外してスレッドセーフでない事を理解して扱うことでマルチスレッドライブラリの関数よりさらに高いパフォーマンスを得ることができるという事のようですね
- 630 :デフォルトの名無しさん:2015/11/21(土) 15:14:51.80 ID:sbaJbg4X.net
- >>628
「一歩引いた冷静な視点で状況を俯瞰する俺」気取りの割には、
自分のレスの推敲すらできない精神状態なんですね。
ご立派です。
- 631 :デフォルトの名無しさん:2015/11/21(土) 15:27:03.86 ID:779MWCli.net
- >>630
論点ずらしブーメラン乙
そもそも驚きの表現として「ななんだって」とかあるだろ
- 632 :デフォルトの名無しさん:2015/11/21(土) 16:29:02.36 ID:JXjswKeV.net
- >>630
どこが間違っているの?
- 633 :デフォルトの名無しさん:2015/11/21(土) 17:32:41.77 ID:TBiDBsF1.net
- >>625
| Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
って、VisualStudioのバージョンは幾つだよ? VS6位? 動体保存されてるとはビックリだよ。
VS2013は
C:\>cl -? |findstr /C:/M
Microsoft (R) C/C++ Optimizing Compiler Version 18.00.31101 for x86
Copyright (C) Microsoft Corporation. All rights reserved.
/MP[n] use up to 'n' processes for compilation
/link [linker options and libraries] /MD link with MSVCRT.LIB
/MT link with LIBCMT.LIB /MDd link with MSVCRTD.LIB debug lib
/MTd link with LIBCMTD.LIB debug lib
- 634 :デフォルトの名無しさん:2015/11/21(土) 20:11:08.78 ID:lo2qe4EW.net
- >>633
VC++ 1.52 持ってて仮想環境ではあるが動かせるよ w
- 635 :デフォルトの名無しさん:2015/11/21(土) 21:53:43.77 ID:rACYfPqD.net
- マルチスレッドプログラムを/MTしないでビルドすると、
プログラムはどんな動作になるんだ? ちゃんとマルチスレッドしてくれるのか
- 636 :デフォルトの名無しさん:2015/11/21(土) 22:00:37.16 ID:o0TZz0/L.net
- ランタイムライブラリの関数がスレッドセーフじゃなくなるだけだよ
だからnewなんかするときも自分で排他処理しなければならなくなるよ
もちろんその他の関数呼び出すときも自前で排他処理が必要だよ
面倒だね
- 637 :デフォルトの名無しさん:2015/11/21(土) 22:01:21.59 ID:574qcmik.net
- よいだろう思い切り釣られてしんぜよう
ビルドをマルチスレッドでするのとビルドしたプログラムがマルチスレッドで動くのは違うぞ
- 638 :デフォルトの名無しさん:2015/11/21(土) 22:02:29.34 ID:lYZv+i2L.net
- 釣られてるのかマジボケなのか分からないレスはよせよ
- 639 :デフォルトの名無しさん:2015/11/21(土) 22:04:41.16 ID:o0TZz0/L.net
- 釣られているつもりが釣っていたってのは
いつもと逆のパターンで斬新だわ
- 640 :デフォルトの名無しさん:2015/11/21(土) 22:10:03.68 ID:rACYfPqD.net
- >>636
シングルスレでマルチスレランタイム使うと遅くなるからなのかな
Cはスピードが大事だからな
STLもシングルスレ用、マルチ用ってあるのかな
- 641 :デフォルトの名無しさん:2015/11/21(土) 22:31:22.02 ID:TBiDBsF1.net
- >>637
ビルドはマルチスレッドじゃなくてマルチプロセスだと言ってるだろうが。馬鹿者。
- 642 :デフォルトの名無しさん:2015/11/21(土) 22:43:21.52 ID:lYZv+i2L.net
- 怖いお兄さんはマジボケと判断したのか
- 643 :デフォルトの名無しさん:2015/11/22(日) 14:57:54.38 ID:d6PbDxmS.net
- >>591
じゃ、知った上で何かまともな回答を書いてみろよ
結局、知っていても知らなくても、まともな回答ないんだろ?
言い訳見苦しいわ
- 644 :デフォルトの名無しさん:2015/11/22(日) 15:01:12.80 ID:d6PbDxmS.net
- >>592
これだね、一番いい
- 645 :デフォルトの名無しさん:2015/11/22(日) 15:08:13.14 ID:d6PbDxmS.net
- >>598
>そもそものプログラムの組み方がマズいんでないかい?
他プロセスが作成したウィンドウのHDCを操作してる場合ってのがあるし
とりあえずHDCに関しては、そうでもない
- 646 :デフォルトの名無しさん:2015/11/22(日) 15:37:24.13 ID:vggKhYqJ.net
- 終わった話をいつまでも
いちいちDCが有効かどうか判断しなくても
対象のDCに対して一番最後に呼び出したAPIが成功していたら
それ以前のAPIも成功しているだろうし、それで十分だろ
- 647 :デフォルトの名無しさん:2015/11/22(日) 15:49:02.18 ID:rXOpUu6m.net
- >>642
merci beaucoup
- 648 :デフォルトの名無しさん:2015/11/22(日) 17:32:36.93 ID:NW0PnoYA.net
- win32を勉強するにはどの本を読めばいいんですか
- 649 :デフォルトの名無しさん:2015/11/22(日) 17:39:08.81 ID:msJD2Q/g.net
- >>648
msdn
いまは本などない。
- 650 :デフォルトの名無しさん:2015/11/22(日) 17:57:37.70 ID:WMp4alla.net
- 使い方なら目的とする言語の関連本だろうし
win32の中身ならヘルプとかmsdnじゃね?
- 651 :デフォルトの名無しさん:2015/11/22(日) 18:07:03.05 ID:j30Wwuuw.net
- 実行した時に全てのcpuが100%の使用率になるプログラムがマルチスレッドプログラムだろ。
- 652 :デフォルトの名無しさん:2015/11/22(日) 18:10:41.71 ID:YBzI3bTB.net
- スレッド数が2でコア数が4ならその条件満たさないっすね
ボケはもう少し面白い奴を頼む
- 653 :デフォルトの名無しさん:2015/11/22(日) 18:34:26.14 ID:1TN3WChP.net
- >>648
http://www.amazon.co.jp/product-reviews/4797347597/ref=cm_cr_dp_see_all_btm?ie=UTF8&showViewpoints=1&sortBy=bySubmissionDateDescending
- 654 :デフォルトの名無しさん:2015/11/22(日) 18:48:44.74 ID:NW0PnoYA.net
- >>653
面白そうなので買いました
>>649
MSDNをまだまともに読めるレベルじゃないので本がいいんですよ
最近ようやく読めるようになってきたけど、ある程度知識のまとまりと目的意識がほしいので
- 655 :デフォルトの名無しさん:2015/11/22(日) 21:11:50.80 ID:Zdp83ecD.net
- >>633
VC++ 6 (SPなし)は
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for 80x86
Copyright (C) Microsoft Corp 1984-1998. All rights reserved.
13.10.3077は
Microsoft Visual C++ Toolkit 2003 (or VC .NET 2003)
- 656 :デフォルトの名無しさん:2015/11/22(日) 21:36:55.00 ID:Zdp83ecD.net
- >>634
Windows 3.1・・・
- 657 :デフォルトの名無しさん:2015/11/22(日) 22:20:38.47 ID:PowSWGiN.net
- >>648
猫でもわかるゲームプログラミング 第2版、2009
グラフィックス描画からアニメーション、
マルチスレッドまで、C言語でWin32APIを用いて、
ゲームプログラミングに必要な基本テクを解説
各サンプルプログラムにリファインを加えるなどした第2版
- 658 :デフォルトの名無しさん:2015/11/22(日) 22:22:12.31 ID:rVLRuBGq.net
- Advanced Windowsってもう読む価値ないの?
- 659 :デフォルトの名無しさん:2015/11/23(月) 00:26:49.20 ID:1m62BNI1.net
- 猫は古すぎねーか
- 660 :デフォルトの名無しさん:2015/11/23(月) 01:37:06.45 ID:KbsdUeA8.net
- どういう物を作りたいかによるんじゃ?
> ・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
ってあるけどAPIフックすらググればできるし
- 661 :デフォルトの名無しさん:2015/11/23(月) 10:20:21.95 ID:LhpXJjp9.net
- >>659
Win32APエ も古すぎーるからちょうどいい
- 662 :デフォルトの名無しさん:2015/11/23(月) 10:27:35.49 ID:Pq9DNQfd.net
- ペゾルト本はちょっと違うか?
- 663 :デフォルトの名無しさん:2015/11/23(月) 13:49:18.46 ID:JWzW06M6.net
- 今はC#だよ<ペゾルド
- 664 :デフォルトの名無しさん:2015/11/23(月) 14:05:35.98 ID:qqa6ydJw.net
- >>660
オンラインでなんでもググれる時代だから本より便利なんだよな
- 665 :デフォルトの名無しさん:2015/11/23(月) 14:26:22.15 ID:+Ddm9172.net
- コピペできるしね
- 666 :デフォルトの名無しさん:2015/11/23(月) 14:44:00.43 ID:5yZmzCJ8.net
- 記述間違いとか誤字脱字や新情報について
オンラインの方が改訂も早ければ有利なんだけどね
- 667 :デフォルトの名無しさん:2015/11/23(月) 16:57:02.17 ID:PZ2Lz8BK.net
- それを期待するなら英語版では
- 668 :デフォルトの名無しさん:2015/11/23(月) 22:09:47.41 ID:tQcIQ+xW.net
- >>663
いまペゾルドはC#なのか
WinでプログラムするならC#だよってことか
- 669 :デフォルトの名無しさん:2015/11/23(月) 22:18:21.01 ID:lEPcq6Ag.net
- それどころかストアアプリの本になってるよ。
MSの意向だろうけど、WinForm〜WPF世代がすっ飛ばされたのは痛い。
- 670 :デフォルトの名無しさん:2015/11/24(火) 09:52:12.84 ID:Ujv1VvaP.net
- 猫でも系は網羅性が低いのと無駄に筆者が読書に理解を強要させる書き方してるのでイライラしますよ
まぁ分かりやすいけど
- 671 :デフォルトの名無しさん:2015/11/24(火) 10:02:31.82 ID:nrP7706V.net
- 教えてもらう立場なのに「理解を強要させる」と怒るのか…
- 672 :デフォルトの名無しさん:2015/11/24(火) 12:24:13.31 ID:/bCK1VnE.net
- >>671
667じゃないけど、言葉遊びでしかないしょーもないレスすんなよ
お前みたいな奴が身の回りにいたらうぜえな〜完全に時間の無駄
正味の話って概念をいい加減覚えろ
- 673 :デフォルトの名無しさん:2015/11/24(火) 12:51:56.91 ID:aCNlMk5p.net
- 正味の話とか言うなら、>>670の「理解を強要させる書き方」はどうなん?
>>671は言葉遊びじゃない、態度の問題を提起してるだけじゃないか。
- 674 :デフォルトの名無しさん:2015/11/24(火) 12:56:47.01 ID:R6RYUl/w.net
- 面倒くさい奴らだな
お前はプログラミングすんの止めろ
- 675 :デフォルトの名無しさん:2015/11/24(火) 13:13:04.35 ID:cksHvZaS.net
- 猫のエサを食ってマズいと腹を立ててる阿呆がいると聞いて
- 676 :デフォルトの名無しさん:2015/11/24(火) 20:06:15.03 ID:Xp7UCn3h.net
- Win32 API入門
http://wisdom.s akura.ne.jp/system/winapi/
ここを一通り読んだら、後は検索で補ってくだけでいける。
- 677 :デフォルトの名無しさん:2015/11/24(火) 20:50:22.41 ID:ml2gyU90.net
- >>674
あーだこーだの奴はプログラミングには向いていないから
誰かの作ったプログラムを使うだけの方が良いよね。
でも、それに対しても気に入らん、で、あーだこーだ文句言うんだろうが
- 678 :デフォルトの名無しさん:2015/11/24(火) 20:52:54.72 ID:7QWzGJiI.net
- 書き殴る奴は向いてる向いていない以前に有害なんで書かないで欲しい
- 679 :デフォルトの名無しさん:2015/11/24(火) 21:12:36.36 ID:rGZu8hHb.net
- お前を殴るのはokだよな?
- 680 :デフォルトの名無しさん:2015/11/24(火) 21:17:37.84 ID:j8x8w3e7.net
- まず脳みそへのプログラミングが必要
- 681 :デフォルトの名無しさん:2015/11/25(水) 00:18:18.81 ID:Vd1+RMMI.net
- 猫の餌をナメちゃいけません
金缶とかチャオほたてなど飼い主がうらやむわけで
- 682 :デフォルトの名無しさん:2015/11/25(水) 01:33:16.23 ID:l9uWvmmW.net
- >>676
イコール >>653
- 683 :デフォルトの名無しさん:2015/11/25(水) 07:15:51.46 ID:zr1GKtWh.net
- >>670
>網羅性が低い
何十ものすべての項目を、
一覧表にして載せている著者がいるけど、
何が重要なのかわからない
やたらと勉強時間がかかる割に、効果が低い。
そういう情報はインターネットで十分
50項目50時間かかって、70点しか取れない。
それより、10項目10時間で、60点取れた方がよい
著者がどの項目を選んで、説明したのかが重要。
そこがプロたるゆえんで、読者がお金を払う価値がある
TACなどの専門学校では、必ず言われる。
最も少ない情報で、短時間の勉強で、60点ギリギリで合格
- 684 :デフォルトの名無しさん:2015/11/25(水) 07:17:15.19 ID:rJmLSs5J.net
- ことばあそびってなんですの
- 685 :デフォルトの名無しさん:2015/11/25(水) 10:17:46.18 ID:5wB+dJF6.net
- 煙に巻く手法の一つ
- 686 :デフォルトの名無しさん:2015/11/25(水) 10:38:32.86 ID:v92ZxAJW.net
- わかりましたね?
もうわかりましたよね?
理解するのは読書なんだからこういう書き方は極力控えるべき
- 687 :デフォルトの名無しさん:2015/11/25(水) 11:09:39.93 ID:5wB+dJF6.net
- 君は存在を控えて
- 688 :デフォルトの名無しさん:2015/11/25(水) 11:18:56.05 ID:reKtKMrl.net
- (´・ω・`).;:…(´・ω...:.;::..(´・;::: .:.;: サラサラ..
- 689 :デフォルトの名無しさん:2015/11/25(水) 19:23:04.55 ID:Ya2W2nCX.net
- >>685
煙に巻いてるのはどっち?
言葉あそびしたと言われている方?言っている方?
- 690 :デフォルトの名無しさん:2015/11/25(水) 19:31:29.10 ID:Sra0FKsR.net
- あなだのことです
- 691 :デフォルトの名無しさん:2015/11/25(水) 21:57:18.87 ID:VTzlMLYq.net
- 画面だけ見て仕事してると心に余裕がなくなるかね
- 692 :デフォルトの名無しさん:2015/11/25(水) 23:15:16.00 ID:G/n44URv.net
- マって低脳・基地外で他の仕事に就けない奴らが就く底辺職業だからな
そんな奴らが集う板・スレはこれが普通
- 693 :デフォルトの名無しさん:2015/11/26(木) 00:01:46.98 ID:wLo/SUaP.net
- よくご存知だ(児玉清)
- 694 :デフォルトの名無しさん:2015/11/26(木) 17:01:22.34 ID:yeqvnwwH.net
- WScript.Shell の CLSID をレジストリで検索すると
72C24DD5-D70A-438B-8A42-98424B88AFB8
F935DC22-1CF0-11D0-ADB9-00C04FD58A0B
の二つ見つかるのですが
どっちが本物ですか?
両方本物なら何がどう違うんですか?
- 695 :デフォルトの名無しさん:2015/11/26(木) 17:02:55.99 ID:yeqvnwwH.net
- WScript.Shell の CLSID をレジストリで検索すると
72C24DD5-D70A-438B-8A42-98424B88AFB8
F935DC22-1CF0-11D0-ADB9-00C04FD58A0B
の二つ見つかるのですが
どっちが本物ですか?
両方本物なら何がどう違うんですか?
- 696 :デフォルトの名無しさん:2015/11/26(木) 18:40:52.40 ID:uhVdTG0g.net
- スレチっぽいけど
たぶん異なるCLSIDで登録してたオブジェクトを統合したとかの結果じゃねーの?
互換性的な話で
- 697 :デフォルトの名無しさん:2015/11/28(土) 22:36:17.56 ID:Fi4wDTmy.net
- 質問します
WS_POPUPで作ったふちなしウィンドウの親ウィンドウをSetParent()で変更しました
すると、まるでスタイルをWS_CHILDに変更したかのような挙動になります
具体的には親ウィンドウを動かすと一緒に動きますし、描画もクリップします
SetParentで親ウィンドウを設定すると自動でWS_CHILDが設定されるのかと思い
SetWindowLongでWS_POPUPを設定しなおしてもうまくいきません
どうすればよいでしょうか
- 698 :デフォルトの名無しさん:2015/11/29(日) 02:28:30.33 ID:xCgxYFc2.net
- オーナーウィンドウと親ウィンドウは違うから
変更したいのは前者だろ?
- 699 :デフォルトの名無しさん:2015/11/29(日) 05:59:54.18 ID:Wjtvnm/I.net
- >うまくいきません
>どうすればよいでしょうか
どうしたいのか
書け
- 700 :デフォルトの名無しさん:2015/11/29(日) 06:13:22.46 ID:fTNkyNl8.net
- つ プラ窓より投擲
- 701 :デフォルトの名無しさん:2015/11/29(日) 11:23:43.23 ID:U49gaUJj.net
- SetParentしたらあかん
- 702 :694:2015/11/29(日) 12:46:39.72 ID:c+9MHjtm.net
- >どうしたいのか書け
ふしなしのWS_POPUPを使って、いわゆるツールウィンドウを作りました
ツールウィンドウなので親ウィンドウより手前に表示される必要があり
ツールウィンドウのCreateWindowで親ウィンドウを設定して作成しました
この時点では期待通りの動作をします
しかし、後からツールウィンドウの親ウィンドウを変更する必要が出てきました
そこでSetParentでツールウィンドウの親を変更すると
WS_POPUPの所謂オーバーラップ的な独立したウィンドウではなくなり
WS_CHILD風の、親ウィンドウのクライアント内だけで表示されるウィンドウになります
WS_POPUPスタイルのオーバーラップ的な動作を維持したまま
親ウィンドウを変更するにはどうしたらよいでしょうか
- 703 :デフォルトの名無しさん:2015/11/29(日) 14:12:41.71 ID:Cm5aRK3U.net
- >しかし、後からツールウィンドウの親ウィンドウを変更する必要が出てきました
このあたりの設計を見直す
- 704 :デフォルトの名無しさん:2015/11/29(日) 14:34:03.32 ID:c+9MHjtm.net
- 今のところ、以下の方法で対処していますが・・・
・あらかじめツールウィンドウに配置したいものを一つのWS_CHILDなウインドウ内に収めておく
・それをWS_POPUPなウィンドウに納める
・親を変更する場合は新たにWS_POPUPなウィンドウを作って中身を移し変える
一応動いてはいるんですが、あまりスマートとは言えませんね
- 705 :デフォルトの名無しさん:2015/11/29(日) 17:59:59.36 ID:k+2nqD55.net
- >>702
だから、親ウインドウじゃなくてオーナーウインドウだろ?
勘違いしてると思うから、そこを調べろ
- 706 :デフォルトの名無しさん:2015/11/29(日) 18:31:28.56 ID:eJ1soHzz.net
- おまえが勘違いしてると思う。
- 707 :デフォルトの名無しさん:2015/11/29(日) 19:13:06.03 ID:xFlU/aUF.net
- >>704
面倒ならその方法でいいんじゃない?
ツールウィンドウの親はデスクトップなので、SetParentするとそのウィンドウの子になる(デスクトップの子ではなくなる)ので
699の動作は正しい。
やりたいことはオーナーウィンドウを変更することだろうけど、そのような方法はないのでそのようなAPIもない。
まっとうな方法でやるのであれば、ダミーのウィンドウを作ってそれをオーナーウィンドウにしてツールウィンドウを作る。
- 708 :デフォルトの名無しさん:2015/11/29(日) 20:55:51.31 ID:Wjtvnm/I.net
- 大抵のことは非表示ウィンドウ経由でなんとかなると思う
オーナーウィンドウ関連で困った記憶は無いから
- 709 :デフォルトの名無しさん:2015/11/29(日) 21:03:09.00 ID:c+9MHjtm.net
- 皆さんの意見をまとめると
WS_CHILDでないとき、CreateWindowの引数で渡す親ウィンドウのパラメータは
親ウィンドウではなくオーナーウィンドウとして扱われる
(たしかにCreateWindowのMSDNに親ウィンドウまたはオーナーウィンドウって書いてありましたわ)
そして後からオーナーウィンドウを変更するAPIは用意されていない
ってことですね
失礼しました
- 710 :デフォルトの名無しさん:2015/11/30(月) 22:15:26.81 ID:xNC+/SUX.net
- manifest
- 711 :デフォルトの名無しさん:2015/12/05(土) 00:24:02.73 ID:eGerJrSR.net
- VS2015のスレにも書き込んだんですが、こちらの方にも書き込みます、マルチポスト失礼します
#include <windows.h>
int WINAPI wWinMain( HINSTANCE inst, HINSTANCE prev, wchar_t *cmdline, int show_cmd )
{
HWND window, editor;
WNDCLASS winc = {0};
winc.style = CS_HREDRAW | CS_VREDRAW;
winc.lpfnWndProc = ::DefWindowProc;
winc.hInstance = ::GetModuleHandle( NULL );
winc.hIcon = ::LoadIcon( NULL , IDI_APPLICATION );
winc.hCursor = ::LoadCursor( NULL , IDC_ARROW );
winc.hbrBackground = (HBRUSH)GetStockObject( NULL_BRUSH );
winc.lpszClassName = L"window";
::RegisterClass( &winc );
window = ::CreateWindow( L"window", L"test", WS_OVERLAPPED|WS_VISIBLE, 0, 0, 100, 100,
nullptr, nullptr, ::GetModuleHandle( nullptr ), nullptr );
editor = ::CreateWindow( L"EDIT", L"", WS_CHILD|WS_VISIBLE|ES_LEFT|ES_AUTOHSCROLL,
0, 0, 300, 100, window, nullptr, ::GetModuleHandle( nullptr ), nullptr );
MSG msg;
for( ; ::GetMessage( &msg, nullptr, 0, 0 ); ){
::TranslateMessage( &msg );
::DispatchMessage( &msg );
}
return 0L;
}
↑のバグの混入しようのないシンプルなコードで、エディットボックスに日本語を入力しようとすると
VisualStudio2015が固まります 巻き添えでエスクプローらも固まります その他もいろいろ固まります
VisualStudio2015を強制終了すると回復します デバッグでもリリースでも固まります
おまかん、ですか?
- 712 :デフォルトの名無しさん:2015/12/05(土) 00:30:56.85 ID:eGerJrSR.net
- OSはWin7のSP1でIMEは標準のMicrosoftIMEです
- 713 :デフォルトの名無しさん:2015/12/05(土) 00:33:16.52 ID:oCbOGloR.net
- >>711
正しいウィンドウプロシージャーを正しく指定しろ
- 714 :デフォルトの名無しさん:2015/12/05(土) 00:37:52.97 ID:eGerJrSR.net
- エディットボックスが載っているメインウィンドウのウインドウプロシージャが
DefWindowProcなのは再現する最小のコードにしたからです
問題になった実際のプログラムではメインウィンドウもエディットボックスも
SetWindowSubclassでサブクラス化しています
しかし同じように固まります
- 715 :デフォルトの名無しさん:2015/12/05(土) 00:40:21.12 ID:oCbOGloR.net
- >>714
メインウィンドウはサブクラス化する必要はない。
- 716 :デフォルトの名無しさん:2015/12/05(土) 00:43:51.66 ID:eGerJrSR.net
- メインウィンドウをSetWindowSubclassでサブクラス化したのは
ウインドウプロシージャにインスタンスポインタを渡すためです
他の方法もありますが、SetWindowSubclassが一番シンプルだと思うので
しかし、質問内容とまったく関係のないことです
- 717 :デフォルトの名無しさん:2015/12/05(土) 00:47:20.07 ID:oCbOGloR.net
- >>716
メッセージの流れがループしてないか?
一つ古いプロシージャーはどうしてる?
- 718 :デフォルトの名無しさん:2015/12/05(土) 00:50:54.89 ID:eGerJrSR.net
- DefSubclassProcを呼んでいます
しかし、関係ありません
なぜなら、私の環境では>>711のコードでフリーズするからです
ちなみにフリーズするのはVisualStudio上で実行したときだけです
普通にエクスプローラからプログラムを起動すれば日本語入力をしてもフリーズしません
VSのデバッガとIME周りで何か問題が起こっているみたいです
私のおまかんかとおもい書き込みました
- 719 :デフォルトの名無しさん:2015/12/05(土) 00:55:02.57 ID:oCbOGloR.net
- 2015のバグだろうな。バグレポート頼む。
- 720 :デフォルトの名無しさん:2015/12/05(土) 00:59:11.55 ID:eGerJrSR.net
- とりあえずいつの間にか11月30日に
VS2015 Update1 というのが出ていたみたいなので
アップデートしてみます
ちなみにVS2013では上記のフリーズ現象は発生しませんでした
私のOS自体アップデートにアップデートを重ねたつぎはぎ状態なので
おまかんの可能性が高いですが
- 721 :デフォルトの名無しさん:2015/12/05(土) 01:18:58.12 ID:99U7SxwK.net
- IME変えるとどうなる?
- 722 :デフォルトの名無しさん:2015/12/05(土) 01:52:34.90 ID:eGerJrSR.net
- IMEはMicrosoftIMEしか入れてないんですよね
これ以上カオスな環境になるのはいやなので、あまりインストールしたくないんですが
お勧めのIMEあります?GoogleIMEは開発終了したとか聞いたんですが
- 723 :デフォルトの名無しさん:2015/12/05(土) 10:12:01.01 ID:VYsm12i0.net
- >>718-719
bookliveがうんこなプロテクションコード仕込んでた時も似たような現象起きてたな
可能な限りシンプルな仮想実行環境作って試してみなよ
- 724 :デフォルトの名無しさん:2015/12/05(土) 10:24:16.91 ID:Rw/ONJyS.net
- >>722
自由にできるなら、いろいろ試せばいいじゃないか?
- 725 :デフォルトの名無しさん:2015/12/05(土) 11:44:36.25 ID:pK0sc289.net
- >バグの混入しようのないシンプルなコード
そうでもないですね
- 726 :デフォルトの名無しさん:2015/12/05(土) 15:07:59.42 ID:Pkwdo9n8.net
- 久しぶりに覗いてみたら、相変わらず馬鹿ばっかりだな
このスレで質問にまともに答えてるの見たこと無いわw
>>725
つまらん揚げ足取らなくていいんじゃない?
そうでもないってんなら、どこに混入する可能性があるのか具体的に言ってみろよ
言えない? あ、そうw わかってたw
>>711
こんなとこで質問しても、まともに解決できるスキル持ったやつなんて居ないって
見当違いの回答するか、センスの悪い解決策示してドヤ顔するか
どーでもいいところに着目して話しをぐちゃぐちゃにする奴ばっかなんだからw
スレにざっと目を通せばわかるだろw
- 727 :デフォルトの名無しさん:2015/12/05(土) 15:23:12.76 ID:ckYMWiJu.net
- >どーでもいいところに着目して話しをぐちゃぐちゃにする奴
確かにこれが一番多い
- 728 :デフォルトの名無しさん:2015/12/05(土) 15:23:30.20 ID:CbmC10/1.net
- ところで、結局お前も馬鹿じゃんかって言われそうなんで言うのをはばかるんだが
CreateWindowするとき、子ウィンドウのIDをNULLではなく
任意の数値を明確に指定したらどうなるのかは興味あるけどな
まあ、IME変えてみたら?みたいな馬鹿の提案よりはマシだろw
- 729 :デフォルトの名無しさん:2015/12/05(土) 15:30:43.14 ID:ckYMWiJu.net
- GetMessageの戻り値チェックもいい加減ぽい
- 730 :デフォルトの名無しさん:2015/12/05(土) 15:45:37.31 ID:kb12RFmq.net
- >>729
ほんまやなw
MSDNに書かれている警告と同じ問題が発生するコードになってるな
この問題如何にかかわらず避けるべきコードだな
- 731 :デフォルトの名無しさん:2015/12/05(土) 15:49:13.98 ID:ckYMWiJu.net
- そもそもMSDNにGetMessageの戻り値がBOOLって書いてあるのが一番の問題
- 732 :デフォルトの名無しさん:2015/12/05(土) 15:51:40.28 ID:eGerJrSR.net
- いやまー
問題が発生する最小限のコードにしただけだから
2chは行数制限あるでしょ
- 733 :デフォルトの名無しさん:2015/12/05(土) 15:53:27.88 ID:uW+W8BUz.net
- しかしWin32アプリのスケルトンで
while (GetMessage(&msg, NULL, 0, 0))
を堂々と使用してるというMSの矛盾
- 734 :デフォルトの名無しさん:2015/12/05(土) 15:57:52.29 ID:ckYMWiJu.net
- >>728
子ウィンドウのIDがNULLだとGetMessageの戻り値が-1になるのかもなー
- 735 :デフォルトの名無しさん:2015/12/05(土) 15:57:52.45 ID:J/Ic1PvJ.net
- >>732
いや、別にいいんだよ
だけど、もしあなたが質問者ならその言い草はおかしいよね
だって、>>729は、それが問題かもしれないよね?って話しをしてるわけだからw
あなたが質問者なら、懸念を払拭するコードで試してみたけど
そこの部分は問題じゃなかったって言うのが筋じゃないの?w
- 736 :デフォルトの名無しさん:2015/12/05(土) 15:58:59.28 ID:J/Ic1PvJ.net
- >>734
だけど、単独では固まることなく普通に動作するってことなんで
ちょっと、よくわからんよね
- 737 :デフォルトの名無しさん:2015/12/05(土) 16:00:39.72 ID:gzrRtkEa.net
- hWnd パラメータで無効なウィンドウハンドルを指定した場合や、
lpMsg で無効なポインタを指定した場合は、エラーが発生します
だから
- 738 :デフォルトの名無しさん:2015/12/05(土) 16:18:05.48 ID:eGerJrSR.net
- 完全に自分の環境のVS2015のデバッガとIMEで何か問題が起こっている臭いです
VS2013ではデバッガ上で実行しても問題ないですし、問題になるのはVS2015だけみたいです
エクスプローラからデバッガ無しで実行しても問題ないです
普通プログラムにミスが有っても、プログラムがクラッシュするのは当たり前としても
VSを巻き添えにしてフリーズするのは何か変なわけです
ついでにエクスプローラも固まりますし、タスクマネージャもクリックできなくなり
VSを強制終了するしか復帰の方法がなくなります
通常の状況ではないです
潜在的にデバッガに不具合があって、同じことで困っている人が居ないかとおもい書き込みました
しかし、私だけみたいなので、完全に おまかん です
これ以上、私のおまかん、について話し合ってもスレの無駄なので、やめましょう
- 739 :デフォルトの名無しさん:2015/12/05(土) 16:18:07.73 ID:q1rcdCIy.net
- スレ民:>>711のGetMessageのとこヤバくね?
質問者:いやまー、問題が発生する最小限のコードにしただけだから
スレ民:念のため修正して先に進めよ
質問者:しかし、関係ありません。なぜなら、私の環境では>>711のコードでフリーズするからです
スレ民:(白目)
- 740 :デフォルトの名無しさん:2015/12/05(土) 16:20:06.00 ID:q1rcdCIy.net
- >VSを巻き添えにしてフリーズするのは何か変なわけです
その経験が無いってことは、初心者だってことを意味するので
もう少し頭をやわらかくした方がいいよ
- 741 :デフォルトの名無しさん:2015/12/05(土) 16:30:31.36 ID:ckYMWiJu.net
- >普通プログラムにミスが有っても、プログラムがクラッシュするのは当たり前としても
>VSを巻き添えにしてフリーズするのは何か変なわけです
昔ネットワークドライブ上にプロジェクト作っててそうなったことはある
- 742 :デフォルトの名無しさん:2015/12/05(土) 16:39:03.00 ID:uFLCx2kQ.net
- マルチスレッドノデッドロックナンカデモ
PCキョウセイサイキドウトカフツウニアルカラナ
ソノテイドデツウジョウノジョウキョウジャナイデスッテイイキルノハ
アタマガヨワインダロウナッテオモワレルダケ
- 743 :デフォルトの名無しさん:2015/12/05(土) 16:44:43.34 ID:HGRqjVZT.net
- 嫌みなら半角と全角を交互に使って書くとより良いぜ
- 744 :デフォルトの名無しさん:2015/12/05(土) 16:46:13.61 ID:oc+U1/Vu.net
- 嘘でも「お騒がせしました」とか、「有難う御座いました」などの社交辞令を言わずに
「スレの無駄なので、やめましょう」と捨て台詞吐いてどっか行ったマナーの悪さに草不可避www
マルチポストする奴が嫌われる理由ってこういうことだったんだなっていう見本www
- 745 :デフォルトの名無しさん:2015/12/05(土) 16:47:56.69 ID:zuUud8BL.net
- 呪文に見える
- 746 :デフォルトの名無しさん:2015/12/05(土) 16:49:21.41 ID:zuUud8BL.net
- あ、そうだ。VS2015でクラッシュというのは、実行時だけ?デバッグ時は?
- 747 :デフォルトの名無しさん:2015/12/05(土) 16:49:58.74 ID:ifqUzVNW.net
- エコエコアザラク
- 748 :デフォルトの名無しさん:2015/12/05(土) 17:03:59.94 ID:pK0sc289.net
- シコシコピュッピュッ
- 749 :デフォルトの名無しさん:2015/12/05(土) 17:09:41.94 ID:NlJfEAqa.net
- DDK使っている時なんかOS毎お亡くなりに
たまに、最新ソースも巻き添えとか
- 750 :デフォルトの名無しさん:2015/12/05(土) 17:29:46.75 ID:ckYMWiJu.net
- DiskDestroyKiller
- 751 :デフォルトの名無しさん:2015/12/05(土) 17:33:12.23 ID:M4JOBDA+.net
- 下手なウィルスより極悪やなw
- 752 :デフォルトの名無しさん:2015/12/05(土) 18:07:17.82 ID:6eYmgp/j.net
- >>738
Windows95時代を思い出すような現象だなぁw
- 753 :デフォルトの名無しさん:2015/12/05(土) 19:33:31.50 ID:HGRqjVZT.net
- アンインストールするとディスクごと消し去るヤンデレみたいなエロゲ
- 754 :デフォルトの名無しさん:2015/12/05(土) 20:03:24.98 ID:ySecgDBd.net
- うpでーとしたらCドライブルート以下消し去ったオンゲもあったよね
- 755 :デフォルトの名無しさん:2015/12/05(土) 20:05:20.94 ID:eGerJrSR.net
- >>746
「デバッグ時」が何を指しているのかわかりませんが
VS2015のデバッガ上で実行した上で、プログラムのエディトに日本語入力をしようとするとVSがフリーズします
エクスプローラから普通に実行すれば普通に動きます
「デバッグ時」がステップ実行という意味でしたら
VSでステップ実行しながらプログラムに日本語入力をするのは困難なので試せません
フリーズするタイミングは、変換窓が出た直後です
何度やっても100%フリーズします
>>752
昔のVSはマルチスレッドプログラムをブレークポイントでとめると良く固まってました
あんな感じです
しかも日本語入力をするだけで100%フリーズするので、だましだましに使うことも出来ません
とりあえずVS2015を最新版にしてみます
- 756 :デフォルトの名無しさん:2015/12/05(土) 20:06:49.59 ID:ySecgDBd.net
- スレの無駄なので、やめましょうって言って
舌の根も乾かない内に再降臨フイタw
- 757 :デフォルトの名無しさん:2015/12/05(土) 20:28:35.36 ID:wt9GdtlO.net
- >>755
デバッガの仕組み理解してる?
ブレークポイントにしろステップ実行にしろ本来実行するべき命令をソフトウェア割り込みで乗っ取って別の処理走らせてるんだぞ
OSのカーネルレベルでデバッガ(VSのIDEだったか?)と何かが競合すればフリーズもするだろ
昔DRM絡みで何かのシステムファイルが問題起こしてただろ
- 758 :デフォルトの名無しさん:2015/12/05(土) 20:36:35.47 ID:37l+kYy9.net
- >>757
同じマシン上でVS2013なら起こらないって言ってるから
質問者の環境+VS2015固有の問題なんだろう
本人もそう思ってるみたいだし
もっと優しく言ってあげなきゃ
また、「スレの無駄なので、やめましょう」ってすねちゃうぞw
- 759 :デフォルトの名無しさん:2015/12/05(土) 20:43:55.87 ID:b6zXTnH8.net
- おまかんってどういう意味だろ?
検索してもわからんかったわ
- 760 :デフォルトの名無しさん:2015/12/05(土) 20:45:33.64 ID:zW/Ol4xt.net
- つ PyDbg
- 761 :デフォルトの名無しさん:2015/12/05(土) 21:48:12.44 ID:wharPYQR.net
- >>759
どこで検索したんだよ…
Google で おまかん って入れたら おま環 意味 って表示されるんだが
- 762 :デフォルトの名無しさん:2015/12/05(土) 22:26:09.42 ID:ls1Kp+wn.net
- INT命令に書き換えてブレークポイント作るのは本当は気持ち悪いよな
EIPが特定の値になるのをトラップするマイクロ診断的なものでないと
- 763 :デフォルトの名無しさん:2015/12/05(土) 22:30:21.01 ID:3cIIMMg0.net
- >>761
さあ? どこで検索したんやろwww
つか、解決したわw 俺天才www
#include <windows.h>
WNDPROC wndproc;
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
LRESULT lr = wndproc(hWnd, message, wParam, lParam);
if( message == WM_CLOSE ) { wndproc = NULL; }
return lr;
}
int WINAPI wWinMain( HINSTANCE inst, HINSTANCE prev, wchar_t *cmdline, int show_cmd )
{
HWND editor;
editor = ::CreateWindow(L"EDIT", L"", WS_OVERLAPPEDWINDOW|WS_VISIBLE, 0, 0, 300, 100, NULL, NULL, inst, NULL);
wndproc = (WNDPROC)(LONG_PTR)::SetWindowLongPtr(editor, GWLP_WNDPROC, (__int3264)(LONG_PTR)WndProc);
MSG msg;
while( wndproc )
{
::GetMessage( &msg, NULL, 0, 0 );
::TranslateMessage( &msg );
::DispatchMessage( &msg );
}
return 0;
}
- 764 :デフォルトの名無しさん:2015/12/05(土) 22:49:16.19 ID:9yCwvOA5.net
- 変なことしてたw どう考えてもこうだよなw
#include <windows.h>
WNDPROC wndproc;
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
LRESULT lr = wndproc(hWnd, message, wParam, lParam);
if( message == WM_CLOSE ) { PostQuitMessage(0); }
return lr;
}
int WINAPI wWinMain( HINSTANCE inst, HINSTANCE prev, wchar_t *cmdline, int show_cmd )
{
HWND editor;
editor = ::CreateWindow(L"EDIT", L"", WS_OVERLAPPEDWINDOW|WS_VISIBLE, 0, 0, 300, 100, NULL, NULL, inst, NULL);
wndproc = (WNDPROC)(LONG_PTR)::SetWindowLongPtr(editor, GWLP_WNDPROC, (__int3264)(LONG_PTR)WndProc);
MSG msg;
while( ::GetMessage( &msg, NULL, 0, 0 ) )
{
::TranslateMessage( &msg );
::DispatchMessage( &msg );
}
return 0;
}
- 765 :デフォルトの名無しさん:2015/12/06(日) 03:33:10.31 ID:RpqIStl8.net
- どうせdllでデッドロップしてるとかだったんだろ
- 766 :デフォルトの名無しさん:2015/12/06(日) 03:34:15.74 ID:1bjsyoJR.net
- VS2015でデバッグするだけのPCスペックが無いだけなんじゃね
IME起動時点で物理メモリいっぱいになっちゃうとか
- 767 :デフォルトの名無しさん:2015/12/06(日) 06:34:10.49 ID:1f6kb9ui.net
- VMで走らせててもホストごとフリーズするから困ることがたまによくある
- 768 :デフォルトの名無しさん:2015/12/06(日) 08:32:26.41 ID:kqzpr8OR.net
- >>767
物理メモリが足りないだけじゃないですか?
>>766
ですから、完全に自分の環境のVS2015のデバッガとIMEで何か問題が起こっている臭いと
前スレで申し上げたのが目に入らないのでしょうか?
私は、このスレ民が誰も持ってないVS2015を購入する財力があるんですよ?
物理メモリなんていつでも大人買いしてます
そのことを公表してしまうと、そんなに財力があるくせに、なぜ検証用のセカンドマシンを持ってないの?
という疑問を持たれるかと思いますが、その点について話し合ってもスレの無駄使いなので、やめましょう
また、この時代、IME起動した程度で物理メモリが足りなくなるなんてことありえません
アイデアを出して頂くのは歓迎ですが、幼稚すぎて話しになりません
>>765
当たり前じゃないですか
IME変換窓を表示する → 親であるエディットにメッセージをSendしようとする → エディットにコントロールIDが無いので
メインウィンドウであると勘違いしてトップレベルウィンドウのHWNDを取得し結果としてメインウィンドウ宛てに送る →
誤配で郵便局員と揉める → その間Sendしたメッセージが返ってこないのでIMEが固まる →
IMEを利用している全てのプログラムが固まる
ですよね? そんな当たり前のことも分からないのですか?
>>764
再三に渡り申し上げていますように、私のコードにはバグが入り込む余地など皆無ですから
勝手に修正するのはお止め下さい
コードに変更が加えられてバグが直っても何の意味もありません
しかしながら、これ以上の議論はスレの無駄使いなので、もうやめましょう
- 769 :デフォルトの名無しさん:2015/12/06(日) 08:58:43.45 ID:PCxLF6KN.net
- >>759
おまえのおかんがでべそ
の略
- 770 :デフォルトの名無しさん:2015/12/06(日) 09:02:27.54 ID:wDKmKefW.net
- >>769
おまえかんぺき
- 771 :デフォルトの名無しさん:2015/12/06(日) 13:48:49.22 ID:o47VB080.net
- >>755
> >>746
> 「デバッグ時」が何を指しているのかわかりませんが
> VS2015のデバッガ上で実行した上で、プログラムのエディトに日本語入力をしようとするとVSがフリーズします
> エクスプローラから普通に実行すれば普通に動きます
> 「デバッグ時」がステップ実行という意味でしたら
> VSでステップ実行しながらプログラムに日本語入力をするのは困難なので試せません
> フリーズするタイミングは、変換窓が出た直後です
> 何度やっても100%フリーズします
ステップ実行なりブレークポイントを置くなり何でもいいけど、財力あるなら
マルチモニタでも複数台PCでリモートデバッグでも何でもして問題箇所を絞ってよ。
財力あるけど能(脳)力はありません?
- 772 :デフォルトの名無しさん:2015/12/06(日) 14:24:04.68 ID:OHUYOsyJ.net
- たしかにエラーも出ないログも吐かない冷凍マグロだとやりにくいな
- 773 :デフォルトの名無しさん:2015/12/06(日) 16:51:18.20 ID:kqzpr8OR.net
- >>771
まともな解決策の一つも示すことのできなかったスレ民に
私の能力云々について、とやかく言われる筋合いはありません
ただ、能力があるかないかということであれば、私の提示したサンプルコードが
バグの入り込む隙のまったくない洗練されたものであることから、その能力を疑う余地は無いでしょう
その点はあなたと対極にあると言って過言でないと思います
端的に言って頭が良い上に金も持ってるということを知られてしまうと
あなたのように嫉妬に駆られて噛み付いてくる輩が沸くのが分かっていたので
財力のことを公表することは差し控えさせて頂いておりました
>>772
いえいえ、その程度のことは私にとっては何の障害にもなりません
実際、スレ民の力を借りるまでも無く、即座に問題を解決できたことがその証拠です
また自慢と受け取られると心苦しいのですが一言付け加えさせて頂きますと
私のレベルに到達すればプレイクポイントはアセンブリレベルで設定しますので
どこで何が起こってるのかなど一目瞭然なのであります
今回は、あなたたち無能なスレ民が無い知恵を絞り右往左往してる滑稽な姿を見て楽しんでいただけです
しかしながら、これ以上の議論はスレの無駄使いなので、もうやめましょう
- 774 :デフォルトの名無しさん:2015/12/06(日) 17:25:27.91 ID:fphXThfE.net
- >>773
みんな適当にレスしてるのにそれに対して真面目に長文で返すあなたは相当暇なんですね
- 775 :デフォルトの名無しさん:2015/12/06(日) 17:38:35.94 ID:kqzpr8OR.net
- >>774
>みんな適当にレスしてる
実生活においても何をしても中途半端な人たちですから
本気出しても中身が伴わずに適当にレスしてるように見えますよ
>相当暇なんですね
態々そんなことを言うために書き込みしたんですか?
どちらが暇なんでしょうね
ただの負け惜しみじゃないですか
- 776 :デフォルトの名無しさん:2015/12/06(日) 17:47:37.42 ID:fphXThfE.net
- >>775
あれ?もう解決したんじゃないの?
- 777 :デフォルトの名無しさん:2015/12/06(日) 18:21:39.03 ID:al/vyHCs.net
- 解決したんなら、問題を起こしてたモジュールと発生条件教えてよ。
くれくれ君じゃないなら。
- 778 :デフォルトの名無しさん:2015/12/06(日) 18:23:36.29 ID:Z7509Thm.net
- >>738
>普通プログラムにミスが有っても、プログラムがクラッシュするのは当たり前としても
>VSを巻き添えにしてフリーズするのは何か変なわけです
そうでもない
バグがあっても強引に通っていたコードがデバッガのコードが割り込むことで動かなくなる事は普通にある
>>765
バックドロップの仲間か?
>>768
>再三に渡り申し上げていますように、私のコードにはバグが入り込む余地など皆無ですから
>勝手に修正するのはお止め下さい
>コードに変更が加えられてバグが直っても何の意味もありません
「バグが入り込む余地など皆無」というのが間違いだとは思わないのか?
修正されたコードならデバッグ実行してもフリーズしないなら
修正された部分(の前のコード)がおかしいってことでしょ
- 779 :デフォルトの名無しさん:2015/12/06(日) 18:57:11.42 ID:F0HE3LOZ.net
- >>778
> バグがあっても強引に通っていたコードがデバッガのコードが割り込むことで動かなくなる事は普通にある
それとVS巻き込んでフリーズするのは全然違うと思うが
- 780 :デフォルトの名無しさん:2015/12/06(日) 19:54:33.33 ID:XJADMoL5.net
- Windows10でHookの使用が変わった?
別スレッドの子ウインドウのメッセージはHookに来るのか
それともライブラリの仕様が変わったのか
- 781 :デフォルトの名無しさん:2015/12/06(日) 20:50:17.67 ID:o47VB080.net
- >>773
いや、俺前から真面目にレスしてるよ。
財力あるってアピールしてるんなら、財力使って解決する努力しろよ
って最後の行で皮肉書いてるだけだけど?
何にもやる気なく、あなたのソースが完璧と主張するだけならしかたないね。
ここで書くよりMSに言うべきでしょ?
言えないの?
なんで言えないの?
- 782 :デフォルトの名無しさん:2015/12/06(日) 21:22:57.43 ID:NAZd77H+.net
- ID:eGerJrSRですが
VS2015をアップデートしてもフリーズは直りませんでした
しかしIMEをgoogle日本語入力にしたところ、フリーズしなくなりました
私の環境のMS-IMEとVS2015のデバッガの間でなにか不都合が起こっていたようです
お騒がせしました
ちなみに ID:kqzpr8OR は別人ですので気を悪くしないでください
ソースコードを貼り付けた意味ですが
他の人の環境でも同じことが発生するか同一コードで確かめて欲しかっただけでした
最初からおまかん、なのかどうかが知りたかっただけでした
その辺の認識の違いで食い違いが発生したみたいです
始めからそのように述べておけば良かったと反省しています
- 783 :デフォルトの名無しさん:2015/12/06(日) 22:02:20.58 ID:MC+a0W15.net
- MSIMEは何かと不具合の噂多いからなー
- 784 :デフォルトの名無しさん:2015/12/06(日) 23:40:56.47 ID:CmQ2QDBG.net
- ほんとスレの無駄だったね
- 785 :デフォルトの名無しさん:2015/12/07(月) 03:45:47.41 ID:8iat4Fp6.net
- 【 オンラインTCGエディター 】 >>1
デュエル・マスターズ的な非電源TCGの 《 オンライン化ツクール系ソフト 》 制作の企画。
例えば、ガチンコ・ジャッジを直ぐにでも導入できる機能を持っておりながら、
当面それを扱わず単純化させておいて、事後的に導入拡張する際に当該システムを
ブロック構造の組み合わせで後付け挿入できるように予めシステム化してあるソフト(エディター)。
既存の非電源TCGを劣らずに再現できるならば大概のニーズに応えられる筈。
バトスピ、ヴァンガ、ウィクロス、ポケカ、デジモン、ゼクス、モンコレ、ガンダム・ウォー、ライブオン、ディメンション・ゼロ、カードヒーロー、シャーマン・キングなど
のシステムを完全再現できるように設計するけど、他に此のTCGの此のシステムは再現希望とか有ったら書いて。
マジック:ザ・ギャザリングの全システムを完全に再現するのは無理だから、此れだけは必用だ!って部分のみリクエストして。
WEB通信での対戦は、個vs個、多数乱戦、チームvsチーム、個vsチームを可能な仕様とする方針。
設計思想は 《 RPGツクール 》 が良いかな? 他に、優れたエディター有ったら挙げてみて。
個人や企業などのベンダーが提示する開発費(見積もり)で折り合えば、発注する。
↓
エディター群から基本コンセプトを絞り込む(もちろんオリジナルで優れた新ネタが有れば導入する)。
↓
遊戯王OCGに関しては、タッグフォース、ADS、デュエルオンラインを発注先ベンダーに研究させる。
なるべく前述3つで可能な再現は全て実装させる方向を目指す。 まぁ努力する・・・
バトスピ、ヴァンガ、バディ、デュエマなど発売済みゲームソフトが存在してるケースはベンダーに研究させる。
↓
各社TCGを再現するテストプレイ ⇒ 更に改良や修正。
↓
機能制限した下位版を5万円以上で発売 + デュエリ−グ用に改造した上位版でサーバー稼動=営業開始。
↑
下位版の改造および商用利用には、別途で当社との契約が必要。
さ〜て、製作ベンダー見つけよっと!ww(クス
http://wc2014.2ch.net/test/read.cgi/entrance2/1449039272/-18
- 786 :デフォルトの名無しさん:2015/12/07(月) 07:57:18.98 ID:WaL6xLeX.net
- ガチンコ・ジャッジって何?
高度情報サイト調べたら書いてあるの?
- 787 :デフォルトの名無しさん:2015/12/07(月) 08:42:00.94 ID:rUHyUO/0.net
- それから、誤解の無いように一言付け加えさせて頂きますと
「同一コードで同じ現象が発生するのか確かめて欲しかっただけ」という発言の真意は
あなたたち低脳スレ民に解決策を求めても、解決することなんて100%無いだろうから無駄という意味です
そのあたりは、普通に社会生活を営んでいれば推し量れそうなものですが
解決策になってない提案を自信満々で書き込んでくる愚か者の多さに唖然としました
図らずもここのスレ民が、プログラミング能力以前に、人間としての能力の低さが
浮き彫りになる形となり、関わりを持たないことが最善であると認識することができました
あと、横レス恐縮ですが、>>781さんはスレ民の方ですよね?
何故、安価が>>773なんでしょうか?
真面目にレスしてないって主張してるのは>>774さんで、
真面目にレスしてる(けど能力が低いから適当に見える)って言ってるのが>>773,>>775さんですよね?
知能指数が低すぎて話しの流れが読めないのか、あるいはそもそも言葉を理解する能力が無いのか
または、真性の馬鹿で安価すらまともに打てないのか
何れにしても、またここにスレ民が馬鹿という根拠が記されたことにより
逆説的に私の言い分が100%正しい事が証明されたわけです
- 788 :デフォルトの名無しさん:2015/12/07(月) 09:03:43.48 ID:3PFXwSng.net
- 論点からずれた事だらだら並べてそんなに暇なんか?
- 789 :デフォルトの名無しさん:2015/12/07(月) 09:04:19.05 ID:0+/WYlAQ.net
- >>787
それが質問者の態度かよ!
そう思ってるならなんで質問するの?馬鹿なの?
- 790 :デフォルトの名無しさん:2015/12/07(月) 09:16:32.61 ID:sbn50vDX.net
- >>787
いやいや、あんたも大概低脳だろ
MS-IMEとVS2015のデバッガの間で何か不具合が起こってることなんて
VS2013で問題ないってことからして最初から明白なのに
VS2015をアプデしてGoogleIMEをインストールして、それで初めてその結論に達するとか
低脳丸出しじゃん
ご主人様が低脳で、使われてるVS2015が真価発揮できなくて可哀相だわ
- 791 :デフォルトの名無しさん:2015/12/07(月) 09:24:18.11 ID:2WXCWQW+.net
- つか、その結論に至るのに何日掛かってるんだよって話しだよなw
- 792 :デフォルトの名無しさん:2015/12/07(月) 10:26:18.94 ID:n4BtPw1p.net
- >>787はいつもの煽るしか脳のないお子様の騙りだろ
偽質問者のプロフ
VS2015を購入できる財力がある、でもPCは1台しか持ってない
アセンブリレベルでブレークポイントが設定できる高度な技術力、でもたどり着いた解決方法はVSとIMEの入れ替え
- 793 :デフォルトの名無しさん:2015/12/07(月) 10:31:39.04 ID:tO/J50M7.net
- 確かに原因の特定すらできてないよな
興味ないからどうでもいいけど
- 794 :デフォルトの名無しさん:2015/12/07(月) 10:50:33.78 ID:GwFr+5pM.net
- 「おま勘」連呼して「いや、おまかんじゃないよ」って言ってもらえるのチラ見してるのがキモかった
- 795 :デフォルトの名無しさん:2015/12/07(月) 11:05:16.82 ID:V+HVpMUU.net
- 人間性についての言及があるけど他の技術系のスレに比べて意識高い人少ないのは事実だよな
- 796 :デフォルトの名無しさん:2015/12/07(月) 11:19:34.93 ID:V+HVpMUU.net
- あ、意識他界の人は大勢居るけどね
- 797 :デフォルトの名無しさん:2015/12/07(月) 12:27:54.19 ID:6rSJBSiX.net
- ID:eGerJrSRですが、
ID:rUHyUO/0 は私ではないので気を悪くしないでください
アラシです
反応しないでください
- 798 :デフォルトの名無しさん:2015/12/07(月) 12:29:33.19 ID:0b9CinAj.net
- と、いいながらマッチポンプで荒らすという…
- 799 :デフォルトの名無しさん:2015/12/07(月) 12:38:36.81 ID:erlzR1YA.net
- >>797
「ID:eGerJrSRですが」くらいは俺でも言えるのでアッピールする方が怪しい
そんなにアッピールしたきゃ名前欄に「fusianasan」って書け
できないのなら黙ってろ
- 800 :デフォルトの名無しさん:2015/12/07(月) 13:00:11.78 ID:PFJ6xruc.net
- てか、いい加減スルーしようよ…
- 801 :デフォルトの名無しさん:2015/12/07(月) 13:01:09.37 ID:HgOqd3RD.net
- 誰が誰かなんて正直どーでもいい
少なくともID:eGerJrSRが
自分のやってることや考えに間違いは絶対にないと思い込んでる勘違い野郎だってことと
スレで暴れて他人に迷惑をかけても何とも思ってない痛々しい馬鹿だってことわはっきりしてる
- 802 :デフォルトの名無しさん:2015/12/07(月) 13:34:02.13 ID:KuRdWB2c.net
- 俺が村田だ
まで読んだ
- 803 :デフォルトの名無しさん:2015/12/07(月) 23:20:25.64 ID:4dGrKabk.net
- >>711 が非常識なのは当然として、
まったくピント外れの書き込みで何の役にも立ってないのに偉そうにしてる奴らもどうかと思う
- 804 :デフォルトの名無しさん:2015/12/07(月) 23:26:56.96 ID:4dGrKabk.net
- >>711
問題とは関係ないけど、
mainの最後、return 0L; なのは何か意味があるの?
- 805 :デフォルトの名無しさん:2015/12/08(火) 00:31:00.02 ID:zsH7v/oq.net
- >>804
どういうこと?
「L」の意味合いについての質問か?
- 806 :デフォルトの名無しさん:2015/12/08(火) 01:10:17.18 ID:smcxnEg4.net
- >>804
>>711様のバグのないコードだぞ?
- 807 :デフォルトの名無しさん:2015/12/08(火) 01:18:39.29 ID:BN6+7Zbb.net
- その後も自力で何とか試行錯誤を繰り返しておりましたがフリーズ問題は解決に至っておりません
このまま無かったことにするのはスレを見てる方に対して失礼だと思いましたので
引き続き、皆様のお知恵を拝借してフリーズを解決できるコードを募りたいと思います
宜しくお願いします
#include <windows.h>
int WINAPI wWinMain( HINSTANCE inst, HINSTANCE prev, wchar_t *cmdline, int show_cmd )
{
HWND window, editor;
WNDCLASS winc = {0};
winc.style= CS_HREDRAW | CS_VREDRAW;
winc.lpfnWndProc= ::DefWindowProc;
winc.hInstance= inst;
winc.hIcon= ::LoadIcon( NULL , IDI_APPLICATION );
winc.hCursor= ::LoadCursor( NULL , IDC_ARROW );
winc.hbrBackground= (HBRUSH)GetStockObject( NULL_BRUSH );
winc.lpszClassName= L"window";
::RegisterClass( &winc );
window = ::CreateWindow( L"window", L"test", WS_OVERLAPPED|WS_VISIBLE,
0, 0, 300, 100, NULL, NULL, inst, NULL );
editor = ::CreateWindow( L"EDIT", L"", WS_CHILD|WS_VISIBLE,
0, 0, 300, 100, window, 0x03e8, inst, NULL );
MSG msg = {0};
while( ::GetMessage( &msg, NULL, 0, 0 ) > 0)
{
::TranslateMessage( &msg );
::DispatchMessage( &msg );
}
return 0;
}
- 808 :デフォルトの名無しさん:2015/12/08(火) 02:58:19.81 ID:2roaNsUx.net
- コードの問題ではなくて環境の問題
仮想でもなんでもいいからクリーンなOS環境を確保する方が先決
その上で再現したらもう一度書き込みしなさい
- 809 :デフォルトの名無しさん:2015/12/08(火) 09:54:47.36 ID:A7OO03sB.net
- 低脳呼ばわりしたり、宜しくって言ってみたり
どうなってんだよ
- 810 :デフォルトの名無しさん:2015/12/08(火) 10:37:48.74 ID:vWX5dYCl.net
- >>807
最小コードよりも、動くコード書くのが先じゃないの?
ビジュアルスタジオのWIN32プロジェクトで自動生成されるテンプレを元に下記の文を追加してみたらどうだい?
HWND hEditor; // エディタ
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message){
case WM_CREATE: hEditor = CreateWindow(L
- 811 :デフォルトの名無しさん:2015/12/08(火) 10:40:19.16 ID:vWX5dYCl.net
- 書き込みミスったorz
case WM_CREATE:
hEditor=CreateWindow(L"EDIT",L"",WS_CHILD|WS_VISIBLE,0,0,300,100,hWnd,NULL,hInst,NULL);break;
case WM_DESTROY:DestroyWindow(hEditor);PostQuitMessage(0);break;
default:return DefWindowProc(hWnd, message, wParam, lParam);}
return 0;}
- 812 :デフォルトの名無しさん:2015/12/08(火) 11:44:51.55 ID:rtJmb9vL.net
- EditBoxコントロールのCreateWindow関数の一部にミスがあるみたいだけど修正すれば問題ないことは確認した
動作環境 : Windows10Pro(build10586.17), Microsoft IME
ビルド環境 : VisualStudioEnt2015Update1(Ver14.0.24720.00)
- 813 :デフォルトの名無しさん:2015/12/08(火) 12:37:52.55 ID:zjJIjn6V.net
- >>809
別人がなりすましで書き込んでいるだけだからね
IMEをグーグル日本語入力に変えてフリーズしなくなったから
本人的にはもう解決している話
- 814 :デフォルトの名無しさん:2015/12/08(火) 12:47:54.43 ID:WQt5IVqj.net
- >>809
構ってちゃんでしょ
スルーしようよ
- 815 :デフォルトの名無しさん:2015/12/08(火) 17:36:04.71 ID:eJubGLpd.net
- >>805
そう
戻り値がintなのになんでわざわざLを付けたのかってこと
- 816 :デフォルトの名無しさん:2015/12/08(火) 17:37:05.84 ID:eJubGLpd.net
- >>807では消えてるからただのミスかな
- 817 :デフォルトの名無しさん:2015/12/08(火) 19:57:13.33 ID:9OJSSokt.net
- 誘導されてきました。
------------
開発環境 XP SP3 VC++2008EE
Win32 コンソール アプリケーション
MFC=標準Windowsライブラリを使用
ATL=使用しない
文字セット=マルチバイト
実行環境 Windows NT系OS
この環境で以下のような改造したファイルオープンダイアログを
実装しようと思ってるのですが、
http://i.imgur.com/lgk1ApU.jpg
どのようにしたらいいのでしょうか?
検索してもうまく探せませんでした。
- 818 :デフォルトの名無しさん:2015/12/08(火) 20:05:24.43 ID:V92FzyIA.net
- >>817
lpfnHookで探してみて
- 819 :デフォルトの名無しさん:2015/12/08(火) 20:47:49.78 ID:9OJSSokt.net
- >>818
ありがとうございます
- 820 :デフォルトの名無しさん:2015/12/08(火) 20:56:35.07 ID:pU1qoPPC.net
- >>817
あとテンプレートもだな
- 821 :デフォルトの名無しさん:2015/12/09(水) 16:00:41.28 ID:Z+x1QnkM.net
- >>815
意味については分からん
本人が独自に決めたコーディング規約だろうくらいに思っておけばいいんじゃないの
- 822 :デフォルトの名無しさん:2015/12/10(木) 16:40:50.35 ID:xYVEMhSB.net
- Windows板の10スレで、沢山の人がIME固まると言ってるやつの再現コードなのかな
この症状は10586から出始めたから、10240で出ないなら10586そのものか、10586付属IMEの問題だったりして
財力あるなら、MSの有償テクニカルサポートに問い合わせれば真面目に対応してもらえると思う
バグならカネはかからないはず
- 823 :デフォルトの名無しさん:2015/12/11(金) 21:01:12.91 ID:7hEsJRkD.net
- どんなコーディング規約だよwww
- 824 :デフォルトの名無しさん:2015/12/12(土) 10:28:00.67 ID:npRd3MLZ.net
- おおかた 3.1/16bit -> Win32に移行したばかりの化石層から発掘されたコードのコピペだろ
- 825 :デフォルトの名無しさん:2015/12/12(土) 11:20:47.34 ID:MmL5lxhk.net
- 文字列リテラルの前部には"L"を
整数リテラルの後部には"L"を付ければおkって
意味も分からずに覚えたからでしょ
- 826 :デフォルトの名無しさん:2015/12/13(日) 04:54:19.11 ID:GpCTMsCJ.net
- 文字列に"L"付けるとどうなるの?
- 827 :デフォルトの名無しさん:2015/12/13(日) 07:31:56.73 ID:eaDqvpLQ.net
- ワイド文字しらんの?
std::locale::global( "japanese" ); // ユーザ変換によりstd::locale( "japanese" ,locale::category cat=LC_ALL )が渡される
std::wstring str( L"こんにちは" );
- 828 :デフォルトの名無しさん:2015/12/13(日) 12:59:24.78 ID:wmJ8ONej.net
- Windows XP登場あたりから特別な理由が無い限りUnicodeでプログラム組むことが推奨されてきたのに
この時代にL(_T)知らん奴が居ることに驚いた
- 829 :デフォルトの名無しさん:2015/12/13(日) 13:11:12.55 ID:2pFFNjWZ.net
- この時代にLつけないとワイド文字認識しないことに驚いた
- 830 :デフォルトの名無しさん:2015/12/13(日) 13:26:16.21 ID:wmJ8ONej.net
- >>829
既存コードとの互換性を考えたら”L無し=ワイド文字”ってのはやばいでしょ
プロジェクトのプロパティやpragmaディレクティブで、Lついてない文字列を
一括でワイド文字と認識させるようにするって案ならあってもいいかなって思う
- 831 :デフォルトの名無しさん:2015/12/13(日) 14:55:28.61 ID:S5USnmm8.net
- winでしかC言語触ったことがないピーヒョロな頭なんで考えが及ばなくても仕方ないじゃん。
やばいとか知らねー。
- 832 :デフォルトの名無しさん:2015/12/13(日) 21:27:00.40 ID:ScgB15D7.net
- LなしはUTF8にしてくれた方が
- 833 :デフォルトの名無しさん:2015/12/13(日) 21:38:50.72 ID:2pFFNjWZ.net
- コマンドプロンプトがマルチバイトでないとちゃんと表示できない
からGUIと組み合わせる場合にめんどくさいんだよな
あと古い上に代わりがないタイプのAPIがchar*しか対応なかったり
- 834 :名無しさん@そうだ選挙に行こう:2015/12/14(月) 12:11:01.23 ID:hRRo1CCV.net
- そうそう、includeもマルチバイトなんだよな
- 835 :名無しさん@そうだ選挙に行こう:2015/12/14(月) 14:23:41.55 ID:baKxaSGv.net
- >>825-828
wchar(UTF-16) と char(UTF-8) をどっちも
wchar(UTF-8) と char(UTF-8) だと思ってる人が結構いる
- 836 :名無しさん@そうだ選挙に行こう:2015/12/14(月) 14:56:24.64 ID:K7v/F4Aj.net
- >>835
いねーよそんな奴w
- 837 :名無しさん@そうだ選挙に行こう:2015/12/14(月) 15:29:30.45 ID:hRRo1CCV.net
- >>835
まー確かに0x00ffまではUTF-8といえないことも・・・、いやいや、いねーわそんな奴w
- 838 :名無しさん@そうだ選挙に行こう:2015/12/14(月) 15:38:58.09 ID:DSJzQQ/E.net
- >>835
wcharのwは何のwなんだよw
- 839 :名無しさん@そうだ選挙に行こう:2015/12/14(月) 16:37:25.30 ID:hRRo1CCV.net
- >>838
「なんだよw」のwは何のwなんだよw
- 840 :名無しさん@そうだ選挙に行こう:2015/12/14(月) 18:00:55.66 ID:Ag+6b4jq.net
- >>839
「なんだよw」のwは何のwなんだよw
- 841 :名無しさん@そうだ選挙に行こう:2015/12/14(月) 18:11:14.75 ID:reTGASBb.net
- ユニコードなのに色んなコードがあるのがなんとも
- 842 :名無しさん@そうだ選挙に行こう:2015/12/14(月) 18:29:10.36 ID:W0/Eg9YL.net
- 文字集合は一つ
符号化方式は一つじゃないから
- 843 :デフォルトの名無しさん:2015/12/14(月) 20:57:07.79 ID:mQKSdQ1D.net
- charw
- 844 :デフォルトの名無しさん:2015/12/15(火) 07:39:41.73 ID:9P3I1wS2.net
- >>839
昔ネトゲでは半角しか入力できませんでした・・・
て続けたらいいのかw
- 845 :デフォルトの名無しさん:2015/12/15(火) 09:40:51.53 ID:GmzcEDm2.net
- ωchar_t *ω = NULLPO;
- 846 :デフォルトの名無しさん:2015/12/15(火) 21:36:27.75 ID:PseeQbpS.net
- 半角カタカナとはなんだったのか
- 847 :デフォルトの名無しさん:2015/12/15(火) 22:44:46.92 ID:o5vxE/KH.net
- char(笑)
- 848 :デフォルトの名無しさん:2015/12/16(水) 04:38:00.32 ID:JxdBAlmf.net
- >>845-846
ガッ
旧サロゲートだなー
- 849 :デフォルトの名無しさん:2015/12/16(水) 14:14:35.28 ID:EEnl9+ch.net
- >>841
ほんこれ
16bit(65,536通り)じゃ、世界中の文字を表現するのに最初から足りないんだよな
日本の絵文字も一億個くらい入れたいから
LCHAR=32bit char を作って、文字コード統一してくれ
- 850 :デフォルトの名無しさん:2015/12/16(水) 21:34:08.98 ID:YGwjiYwh.net
- もうぜんぶ64ビットでいいよ・・・
- 851 :デフォルトの名無しさん:2015/12/17(木) 00:48:21.74 ID:Vfp48Rrj.net
- UTF32でいいじゃん
- 852 :デフォルトの名無しさん:2015/12/17(木) 12:09:01.46 ID:Szn4FINI.net
- 始皇帝に頼めばやってくれそう
- 853 :デフォルトの名無しさん:2015/12/17(木) 19:15:30.59 ID:Szn4FINI.net
- 鯖落ちてたぬ
- 854 :デフォルトの名無しさん:2015/12/17(木) 20:00:08.82 ID:MUNBX9mT.net
- >>849
世界中の文字を入れる必要なんかない
ある程度メジャーな言語が表現できれば十分
- 855 :デフォルトの名無しさん:2015/12/17(木) 21:33:30.91 ID:o7OE0QW2.net
- >>854
君みたいな奴がウニコードの仕様を決めたんだろうな
- 856 :デフォルトの名無しさん:2015/12/17(木) 22:37:13.62 ID:O/TlL5Ei.net
- 世界中のあらゆる文字を表現するなんて大それた目標はTRONコードみたいな
拡張可能な可変長コードでやってりゃよかったんだよ。
今のゴミ溜めみたいになったUnicodeみてると、オリジナルのUnicodeは妥協も多いが
そのぶん現実的、実用的だったと思うわ。
- 857 :デフォルトの名無しさん:2015/12/18(金) 23:29:03.09 ID:Pd1EZ5ai.net
- プログラマはMacを使ってるってマジ?
http://hayabusa3.2ch.net/test/read.cgi/news/1450395043/
- 858 :デフォルトの名無しさん:2015/12/19(土) 06:36:23.57 ID:JTS0FgkK.net
- 雰囲気プログラマな
- 859 :デフォルトの名無しさん:2015/12/19(土) 13:09:27.46 ID:EW8XrhCB.net
- 画面上の座標を指定して、そこにある文字を取得するAPIがあったとおもったんですが、なんて関数だったかわかる方教えてください。
- 860 :デフォルトの名無しさん:2015/12/19(土) 13:13:29.63 ID:omg72g7V.net
- そんなのが存在してるとして、どういう仕組で動くんだろう
- 861 :デフォルトの名無しさん:2015/12/19(土) 13:29:57.81 ID:2CKHjxE+.net
- >>859
文字を画像で取得するならCOPYRECT
- 862 :デフォルトの名無しさん:2015/12/19(土) 13:39:36.64 ID:nLbzSKo0.net
- >>860
fontの画像と比較するとか?
- 863 :デフォルトの名無しさん:2015/12/19(土) 15:20:19.93 ID:cnr2UN2D.net
- OCRがやってることなんだから対して驚くことなかろう
- 864 :デフォルトの名無しさん:2015/12/19(土) 15:22:50.20 ID:iG82T79N.net
- captcha解くために別のURLで人間に回答させてDB化するソフトがあったな
- 865 :デフォルトの名無しさん:2015/12/19(土) 17:07:21.92 ID:JTS0FgkK.net
- >>860
テキストVRAMを読むんですよ。
- 866 :デフォルトの名無しさん:2015/12/19(土) 23:02:33.63 ID:NrSgV7LX.net
- 指定した位置の文字を読み取るWin32API
https://msdn.microsoft.com/ja-jp/library/cc429673.aspx
https://msdn.microsoft.com/ja-jp/library/cc429664.aspx
- 867 :デフォルトの名無しさん:2015/12/19(土) 23:06:47.65 ID:nLbzSKo0.net
- >>866
どう言う原理か30文字で要約してくれ
- 868 :デフォルトの名無しさん:2015/12/19(土) 23:48:08.03 ID:NHtd1Eg1.net
- コンソールだったら文字ベースで情報保持してるんだから、訳ないでしょ。
- 869 :デフォルトの名無しさん:2015/12/19(土) 23:52:15.16 ID:nLbzSKo0.net
- >>868
文字数オーバー
答えになっていない
20点
やり直し
- 870 :デフォルトの名無しさん:2015/12/20(日) 02:06:05.56 ID:56xMgfm6.net
- バカが偉そうなのは何で?
- 871 :デフォルトの名無しさん:2015/12/20(日) 07:18:46.95 ID:37nsyMmy.net
- >>867
MSがそのように作ったからだよ。ばか。
- 872 :デフォルトの名無しさん:2015/12/20(日) 07:46:34.97 ID:uuZPbj7S.net
- >>870
馬鹿はエラが張ってるだろ
- 873 :デフォルトの名無しさん:2015/12/20(日) 11:00:10.04 ID:8RLYRFXT.net
- consoleならallocconsoleで自前でバッファ用意出来るから
画面の位置のを読むのは時間の無駄
- 874 :デフォルトの名無しさん:2015/12/20(日) 12:27:47.08 ID:zAzsvh37.net
- 引数の座標データがPOINTS構造体ではなくてCOORD構造体な件について。
- 875 :デフォルトの名無しさん:2015/12/20(日) 13:48:28.72 ID:8RLYRFXT.net
- coord: 座標
何が問題?
- 876 :デフォルトの名無しさん:2015/12/20(日) 15:46:54.52 ID:hmqFHT/t.net
- POINTSと複数形になってるところがポイントじゃね
ということでCOORD構造体の配列じゃなくてふざけんなってことかね。
- 877 :片山博文MZ ◆T6xkBnTXz7B0 :2015/12/20(日) 15:50:10.13 ID:DvVXmBam.net
- そのSはSHORTのSだろ
- 878 :デフォルトの名無しさん:2015/12/20(日) 16:18:02.21 ID:8RLYRFXT.net
- 最小化が(-32768,-32768)かなんかだったけど
32768以上のサイズのウィンドウだったら隠しきれないな
- 879 :デフォルトの名無しさん:2015/12/20(日) 17:11:38.42 ID:KkGGgVF0.net
- >>878
世界のどこかで試したことのある愛すべきバカはいないのだろうか?
- 880 :デフォルトの名無しさん:2015/12/20(日) 17:30:51.78 ID:MKBZtdD0.net
- POINTSはスクリーン座標(マウスで取得するクライアント領域の座標)、CHOORDはコンソールスクリーンバッファの座標だろ
ピクセル単位とコンソール文字単位じゃまるで意味が違う
- 881 :デフォルトの名無しさん:2015/12/20(日) 17:33:13.91 ID:MKBZtdD0.net
- 訂正:COORD
- 882 :デフォルトの名無しさん:2015/12/21(月) 22:35:49.69 ID:FHH9nXMk.net
- うちの環境でさえ 7680x1600 だから、
これの4倍くらいなら、そんな凄いバカでなくてもやらかすだろ
- 883 :デフォルトの名無しさん:2015/12/22(火) 10:14:24.66 ID:rqbDbnyc.net
- ウィンドウアプリでも_cprintfを使いたいのですが代替APIはありますか?
- 884 :片山博文MZ ◆T6xkBnTXz7B0 :2015/12/22(火) 10:38:01.21 ID:Ho+K44el.net
- >>883
SetTextColor
TextOut
DrawText
DrawTextEx
- 885 :デフォルトの名無しさん:2015/12/22(火) 13:03:35.05 ID:rqbDbnyc.net
- >>884
対応できました。ありがとうございます。
- 886 :デフォルトの名無しさん:2015/12/22(火) 20:30:17.58 ID:0q8I2qvC.net
- ncurses
- 887 :デフォルトの名無しさん:2015/12/22(火) 23:54:02.55 ID:cFhaBXKc.net
- >>882
そんなアホみたいにデカイ液晶有るのか?
何に使っている?
- 888 :デフォルトの名無しさん:2015/12/23(水) 00:13:35.04 ID:IHjjwtj5.net
- 何枚か並べているんだろう
- 889 :デフォルトの名無しさん:2015/12/23(水) 02:57:17.09 ID:/wOBmLFi.net
- >>887
何も知らないゴミは書き込むなよ。
幅1920pxのディスプレイでクアッドディスプレイやれば7680になるだろうが。
グラボ2枚刺にディスプレイ4枚程度なら今時どんな貧乏人でもできる。
お前みたいに知識もなく調べもせずに書き込んでスレを消費するゴミクズは目障りなんだよ。
知識もない調べない知恵送れのゴミクズがまともな人間の会話に混ざろうとするな、身の程を知れ。
アホはお前だろ。と言いたいところだがお前はアホ未満のゴミだから言えないな。
出ていけ。
- 890 :デフォルトの名無しさん:2015/12/23(水) 03:38:24.63 ID:h+VA4S6f.net
- 無知なのにおかしなこと書き込む奴も大概だが環境の自慢厨はもっと目障りなんだよ
自慢したいのなら知識だけにしとけ
- 891 :デフォルトの名無しさん:2015/12/23(水) 06:12:37.31 ID:Bay2doKJ.net
- >>889
なぜそんなにイライラしているのですか?
君みたいな童貞は余裕が無いのは分かりますが…
- 892 :デフォルトの名無しさん:2015/12/23(水) 08:50:14.87 ID:2F8TsTF+.net
- 実際に第三象限に描かれた最小化ウィンドウが
第一象限に現れてくることってあるの?
どんなでかいディスプレイ用意しても無駄じゃね?
- 893 :デフォルトの名無しさん:2015/12/23(水) 14:02:06.27 ID:v0nEZQ5O.net
- >>889
煽っているところ申し訳ないんだが
「1920pxディスプレイを4枚並べて」という場合、32768を超えるためには18枚必要なんだが
2560pxディスプレイでも13枚必要
シャープあたりが1600万円の7,680×4,320pxディスプレイを出すらしいがそれでも5枚必要だ
>>882は「うちの環境の4倍」と言っている
仮にすでに何枚か並べているとして全部で12枚とか16枚以上のディスプレイを使うというのは「普通にやらかす」ことなのだろうか
値段的なことはおいておいても1枚から追加して4枚というのはありえることと思うが
4枚の人が16枚にするというのは「凄いバカ」ではないだろうか
そういう点から>>887は物理的に7,680×4,320pxディスプレイと解釈したんだと思う
ちなみにアスキーさんの記事
http://weekly.ascii.jp/elem/000/000/285/285487/
>>892
ディスプレイの配置によるんじゃないだろうか
プライマリディスプレイが基準になるはずでセカンダリ以降をプライマリの左に配置するとマイナス座標になる
プライマリが下で上にセカンダリを配置するとこれももマイナス座標になる
- 894 :デフォルトの名無しさん:2015/12/24(木) 02:23:52.41 ID:h3JTIwaN.net
- >環境の自慢厨
どこの誤爆か知らんが
環境の自慢厨とやらがいるスレでやれ発達障害
- 895 :デフォルトの名無しさん:2015/12/24(木) 03:31:04.38 ID:5C+hR802.net
- >>889のことを言ってるんだろ
- 896 :デフォルトの名無しさん:2015/12/24(木) 03:51:07.60 ID:cfkhT3OL.net
- わざわざID変わった後に亀レスしてくるところを見ると
>>882>>889>>894
は同一人物か?
- 897 :デフォルトの名無しさん:2015/12/24(木) 05:47:25.79 ID:h3JTIwaN.net
- 反論できなくなると自演認定する奴いるよな
追い詰められると関係ない話をこじつけて保身しようとするのは発達障害の典型
- 898 :デフォルトの名無しさん:2015/12/24(木) 06:28:11.13 ID:jvPsYvZG.net
- 自演否定でも自演擁護でも構わんがいちいちスレを荒らすな
自己主張したいなら余所でやれ
- 899 :デフォルトの名無しさん:2015/12/24(木) 11:10:35.00 ID:h3JTIwaN.net
- >>898=鏡に向かって喋ってる内容をわざわざ書き込む発達障害
- 900 :デフォルトの名無しさん:2015/12/24(木) 11:44:25.08 ID:+OAEjoT0.net
- >>896
>は同一人物か?
そうだろう。かつ童貞で頭も悪い。
- 901 :デフォルトの名無しさん:2015/12/24(木) 17:31:01.76 ID:MjLZfEC/.net
- >>899
お前が話ずらしてんじゃねーかw
- 902 :デフォルトの名無しさん:2015/12/24(木) 17:39:29.34 ID:dt2VllYo.net
- ここで髪の話はよせ
- 903 :デフォルトの名無しさん:2015/12/24(木) 18:14:59.25 ID:4YM2CMve.net
- 900
- 904 :デフォルトの名無しさん:2015/12/24(木) 20:03:32.93 ID:edQDesEY.net
- お前らメリクリ!
- 905 :デフォルトの名無しさん:2015/12/24(木) 20:38:50.32 ID:mFTVVltg.net
- このディスプレイ横に並べたらいけそう
https://www.youtube.com/watch?v=m1RJASQT5i8
- 906 :デフォルトの名無しさん:2015/12/24(木) 21:23:19.78 ID:DECH3WsR.net
- Win32はLPARAMに符号ありのxとyを詰め込んでいるから
-32768〜32767までしか座標を扱えないんだよな
- 907 :デフォルトの名無しさん:2015/12/25(金) 12:25:35.03 ID:ISLz7uba.net
- 関連動画にやたらボウリングが出てくるのはおま環?
- 908 :デフォルトの名無しさん:2015/12/25(金) 15:54:07.14 ID:jK/x+z8S.net
- 905
- 909 :デフォルトの名無しさん:2015/12/25(金) 18:28:59.25 ID:AIOAKki4.net
- ぷ。
- 910 :デフォルトの名無しさん:2015/12/26(土) 14:09:13.88 ID:E3MIEZFa.net
- 質問します
実行するのに長い時間のかかる関数があります
呼び出すと処理が終わるまで帰ってこず、途中で中断するような仕組みも用意されていません
この関数はソースがない外部のものなので修正はできません
この関数を呼び出すとUIが長い間固まるので、当然ワーカースレッドで実行します
ここまでは良いです
しかしユーザが中断ボタンを押した時は処理を中断させたいです
TerminateThreadでワーカースレッドを無理やり終了することは出来ます
若干メモリリークするでしょうが、頻度は多くないので諦めることすら検討しています
問題はクリティカルセクションです
マルチスレッドなのでクリティカルセクションを使っているわけですが
EnterしたままLeaveせずにスレッドが終了するとクリティカルセクションは未定義な状態になると書いてあります
https://msdn.microsoft.com/ja-jp/library/cc429095.aspx
最低でもクリティカルセクションだけはLeaveしてから終了しなければなりません
一つ考えたのは、長い時間のかかる関数を別プロセスで実行することです
キャンセルする場合はプロセスごと殺します
もっとうまい方法はないですか?
http://www.codeproject.com/Articles/71529/Exception-Injection-Throwing-an-Exception-in-Other
一応ここに答えのようなものが載っているのですが
- 911 :デフォルトの名無しさん:2015/12/26(土) 14:17:19.97 ID:E3MIEZFa.net
- どちらにせよ、
http://www.codeproject.com/Articles/71529/Exception-Injection-Throwing-an-Exception-in-Other
に書いてある方法でワーカースレッドに外から無理やり例外を発生させたとしても
今対象の長い時間のかかる関数の中がどうなっているかわかからないので難しいと思いました
長い時間のかかる関数が、C++の例外機構を使ってRAIIでクリティカルセクションを管理していれば
無理やり例外を発生させることでLeaveさせることが出来るかもしれませんが
そうじゃなかった場合、Leaveせずに関数を抜けることになります
もちろんメモリリークもしますでしょう
別プロセスで実行するしか他にやりようがないように思えてきましたが
何か良い案はありますでしょうか
- 912 :デフォルトの名無しさん:2015/12/26(土) 14:21:43.20 ID:E3MIEZFa.net
- >C++の例外機構を使ってRAIIで
この日本語はちょっとおかしいですね
例外機構を使うか、もしくはRAIIで
に訂正しておきます
- 913 :デフォルトの名無しさん:2015/12/26(土) 14:29:31.38 ID:E3MIEZFa.net
- 世の中には処理に時間のかかる関数がゴマンとあると思います
それらが外部のライブラリで修正不可能な事も一般的なことだと思います
加えて、長く時間のかかる処理は、ユーザーは何時でもキャンセルできるのも普通なことと思います
皆さん一体どうしているんですか?
実はキャンセルしているように見えて、キャンセルしておらず、最後まで走っており
キャンセルした場合は、結果データを捨てているだけ、とかですか?
- 914 :デフォルトの名無しさん:2015/12/26(土) 14:35:54.26 ID:PvF8tuZ2.net
- DOSコマンドで中断しようとして^C押したら
延々と時間が経った後に
結果を表示せず「中断しました(キリっ)」
って出て
どうせ最後まで実行するなら結果表示しろってむかついたのは良い思い出
- 915 :デフォルトの名無しさん:2015/12/26(土) 14:40:32.69 ID:MqeDNb2X.net
- クリティカルセクションにEnterしてるのはどっちのコードなんだよ。
自分のコードからEnterしてるんじゃねぇの?そんだったら、
TerminateThreadを呼び出すとともに、クリティカルセクションLeaveすれば
いいだけじゃねぇのか??
まぁ、クリティカルセクションは特定のスレッドにアタッチされると思ったから、カウント1の
バイナリセマフォ使えばいいんじゃねぇのかな。
使って。
- 916 :デフォルトの名無しさん:2015/12/26(土) 14:45:55.06 ID:Sgv0r5+y.net
- プロセスをキルすればいいだろ。
簡単なことさ
- 917 :デフォルトの名無しさん:2015/12/26(土) 14:49:45.60 ID:MqeDNb2X.net
- つか、まぁ、厳密にはTerminateThreadでキルするタイミングとスレッドが普通に
スレッドが終了するタイミングが重なったりするから、もっと制御必要か。
- 918 :デフォルトの名無しさん:2015/12/26(土) 15:07:23.22 ID:Igcba1qr.net
- >>911
> 別プロセスで実行するしか他にやりようがないように思えてきましたが
これだね。長い処理ならプロセス生成のペナルティなんてゴミでしょ。
- 919 :デフォルトの名無しさん:2015/12/26(土) 15:52:38.79 ID:MqeDNb2X.net
- つか、間違えた。TerminateThreadの説明みると、TerminateThreadの前ではバイナリセマフォとか
関係なくなすすべなしだわ。ごめん。別プロセスがいいね。
- 920 :デフォルトの名無しさん:2015/12/26(土) 17:22:27.23 ID:E3MIEZFa.net
- >>915
どっちと言われても両方だと思います
自分のプログラム側も自分を守るためにクリティカルセクションは使っていますが
こっちは自分のコードなので好きにできるので
>>911の方法でメインスレッドからワーカースレッドに無理やり例外を発生させる方法でも
なんとかなるので構わないんですけども
呼びだされ側の、時間のかかる関数側も、そっちはそっちで自分を守るために
クリティカルセクションなどを使っている可能性がありまして
ソースコードがないので実際にどういう実装になっているかは定かではないのですが・・・
勝手に想定外の例外を発生させて関数を巻き戻して上手く開放処理が走る
保証はないといった感じです
もし関数側が例外機構もRAIIも使わずにCスタイルでEnter/Leaveしていたら
>>911の方法で無理やり外から例外を発生させても意味無いですから
別プロセスで走らすしかなさそうですね
- 921 :デフォルトの名無しさん:2015/12/26(土) 23:51:05.38 ID:7vqLpcYG.net
- >>920
馬鹿には無理
身の程を知れ
ここはお前みたいな奴がヴァカアピールするスレではない
- 922 :デフォルトの名無しさん:2015/12/27(日) 03:07:52.61 ID:vtL+jd1t.net
- ブーメラン
- 923 :デフォルトの名無しさん:2015/12/27(日) 03:21:59.70 ID:uDQp4eWs.net
- ソースないならアセンブリ見て解析しろよ
- 924 :デフォルトの名無しさん:2015/12/27(日) 05:06:34.16 ID:n35dT9A9.net
- アセンブリ?
アセンブルのはソースだべ?
- 925 :デフォルトの名無しさん:2015/12/27(日) 09:46:06.79 ID:W/VOfYcN.net
- あせんぶろーぜ
- 926 :デフォルトの名無しさん:2015/12/27(日) 14:33:06.55 ID:Acfv8QHx.net
- WM_MOUSEWHEELのLPARAMに入ってるマウス座標って、クライアント座標じゃなくてスクリーン座標なんだね
下らんことで詰んでもうた
- 927 :デフォルトの名無しさん:2015/12/27(日) 14:40:36.28 ID:IeXywcCL.net
- >>926
ScreenToClient()で変換すりゃ良いんじゃない?
- 928 :デフォルトの名無しさん:2015/12/27(日) 14:51:26.69 ID:Acfv8QHx.net
- >>927
それでやります。あざます
- 929 :デフォルトの名無しさん:2015/12/27(日) 18:05:29.28 ID:zGVY6mFV.net
- よくハマるところだよね。
- 930 :デフォルトの名無しさん:2015/12/27(日) 23:11:12.75 ID:wEcqjPTL.net
- MSDNに書いてる事をドヤ顔で・・・
- 931 :デフォルトの名無しさん:2015/12/28(月) 12:22:33.02 ID:Y4DeX8w+.net
- クライアントの左上が (0, 0) じゃなくて
タイトルバーとかウィンドウ枠の分ずれてるのはなんでなん?
- 932 :デフォルトの名無しさん:2015/12/28(月) 12:56:04.56 ID:dgI6+oKo.net
- >>930
> MSDNに書いてる事をドヤ顔で・・・
語れなくて悔しいのはわかった
- 933 :デフォルトの名無しさん:2015/12/28(月) 12:59:54.19 ID:b3qQlUF/.net
- >>931
クライアントじゃないから
- 934 :デフォルトの名無しさん:2015/12/28(月) 16:20:50.20 ID:i875NmCw.net
- じゃー
ツールバーとかステータスバーの分はズレなかったように思うけど
メニューバーとスクロールバーだけ特別扱いなのは何で?
あとから拡張したからってのは分かってることだけどまるで一貫性がないよね
メニューバーもただのWS_CHILDだった方が後々都合が良かったのにね
- 935 :デフォルトの名無しさん:2015/12/28(月) 16:45:13.81 ID:EuCUuVkC.net
- タイトルバーとかはNC(非クライアント)領域って呼ばれててる。
WM_PAINTに対してWM_NCPAINTって。
まぁ、ただの呼び名の問題だからな。そんなこだわっても。
- 936 :デフォルトの名無しさん:2015/12/28(月) 18:19:55.77 ID:Y4DeX8w+.net
- 左右の幅を縮めるとメニューバーが二段になって
クライアント領域が全部ずれたりするよね
- 937 :デフォルトの名無しさん:2015/12/28(月) 18:39:36.94 ID:By8jd1bH.net
- それはない。
- 938 :デフォルトの名無しさん:2015/12/29(火) 00:36:46.96 ID:NmwzIy5H.net
- >>932
自己紹介はしなくていい
- 939 :デフォルトの名無しさん:2015/12/29(火) 00:50:08.25 ID:ngajy4jA.net
- >>938
単発w
- 940 :デフォルトの名無しさん:2015/12/29(火) 01:08:23.57 ID:NmwzIy5H.net
- >>939
ID変わるタイミング知らんのかw
- 941 :デフォルトの名無しさん:2015/12/29(火) 06:43:26.45 ID:x2QuPiOh.net
- わざわざそのタイミング狙ってまでレスすることかよ w
ってことだろ
- 942 :デフォルトの名無しさん:2015/12/29(火) 11:39:54.40 ID:6CCbAlEQ.net
- くやしかったの?ごめんねw
- 943 :デフォルトの名無しさん:2015/12/29(火) 18:26:58.60 ID:a9NNa9Ep.net
- 30分も経ってるのに、タイミングとか言われてもなあ
- 944 :デフォルトの名無しさん:2015/12/30(水) 00:32:40.72 ID:6CJqV1bM.net
- >>941
30分しか経ってないのに「単発w」とか単発って言いたいだけだろw
- 945 :デフォルトの名無しさん:2015/12/30(水) 01:41:46.09 ID:eZTJN+3O.net
- キッズ多いのなぁ
- 946 :デフォルトの名無しさん:2015/12/30(水) 02:11:12.54 ID:Ov2mfylL.net
- 最近このスレには頭悪いのが多いな
- 947 :デフォルトの名無しさん:2015/12/30(水) 02:22:22.51 ID:tlmx9qoR.net
- 分からないなら黙っててください。
ウザイだけです。
時代とどっちがいい?
- 948 :デフォルトの名無しさん:2015/12/30(水) 07:54:15.63 ID:IhDAQ//h.net
- >>946
ID導入されてからだよ。
まともな回答も全く返ってこなくなった。
恐らくまともな回答者と悪質な荒らし両方が消えて、
そのどちらでもない中途半端な層だけが残ったんだろう。
少なくとも問題を解決するために質問する場所ではなくなった。
回答の質と回答がくるまでにかかる時間を考えるとここは効率悪すぎる。
そして効率の悪すぎる選択肢を選ぶプログラマに成長はない。
- 949 :デフォルトの名無しさん:2015/12/30(水) 08:31:48.19 ID:ceGJ3m+f.net
- 3行以上書くのは文章構成力のない痰カスと相場が決まっておる
- 950 :デフォルトの名無しさん:2015/12/30(水) 09:21:12.55 ID:WpIjR9s5.net
- >>834←中途半端な層
>>950も中途半端な層
- 951 :デフォルトの名無しさん:2015/12/30(水) 09:23:21.08 ID:WpIjR9s5.net
- 安価間違えるのも中途半端な層
>>949への誤安価
- 952 :デフォルトの名無しさん:2015/12/30(水) 09:39:25.78 ID:Jq3rckJ5.net
- 無様すぎ
- 953 :デフォルトの名無しさん:2015/12/30(水) 10:08:42.12 ID:z3VqKnG6.net
- >>950
なにこの年末カミングアウト
- 954 :デフォルトの名無しさん:2015/12/30(水) 11:16:54.04 ID:DYiybrjz.net
- >>1-1000
中途半端な層
- 955 :デフォルトの名無しさん:2015/12/30(水) 12:58:58.92 ID:t7rYBktz.net
- >>1-1000
中途半端な唇
- 956 :デフォルトの名無しさん:2015/12/30(水) 13:45:28.41 ID:uafjeGLa.net
- 底辺同士仲良くやれ
- 957 :デフォルトの名無しさん:2015/12/30(水) 13:47:12.22 ID:Q+ZAoAOe.net
- >>956
「一歩引いた目線で事態を俯瞰できる冷静な俺」を演出しようとする中途半端な層
- 958 :デフォルトの名無しさん:2015/12/30(水) 13:52:42.30 ID:1eDT/VUE.net
- うぜえ
止めねえと殺すぞ
- 959 :デフォルトの名無しさん:2015/12/30(水) 14:20:38.06 ID:/HMKIoW3.net
- >>957
厨二臭い層
- 960 :デフォルトの名無しさん:2015/12/30(水) 22:14:25.35 ID:z3VqKnG6.net
- 通報しました
- 961 :デフォルトの名無しさん:2015/12/31(木) 10:28:39.23 ID:KKAqg1l1.net
- >回答の質と回答がくるまでにかかる時間を考えるとここは効率悪すぎる。
2ちゃんはとっくにオワコン
- 962 :デフォルトの名無しさん:2015/12/31(木) 17:08:02.56 ID:0eyIQ7zd.net
- >>958=ロクに回答もできないくせに威勢だけは一人前の中途半端な層
- 963 :デフォルトの名無しさん:2015/12/31(木) 17:17:59.10 ID:gJy9w4AY.net
- >>946
ID導入の前は荒しの巣窟と化していた
ID導入で落ち着いたやり取りが続くようになった
>>948 はたぶん昔の荒し野郎
- 964 :デフォルトの名無しさん:2015/12/31(木) 17:56:06.76 ID:2PlDRXcT.net
- >>564
紅白見る→録画したガキ使見る→お前らのレポ見る→寝る
- 965 :デフォルトの名無しさん:2015/12/31(木) 18:50:58.09 ID:0eyIQ7zd.net
- 落ち着いてやり取りはできるようになったけど、
情報価値のない雑談レベルのやり取りばっか
そして何よりいきなりレッテル貼ってる辺り
>>963がID出る前に荒らし回ってた奴だろうな
前に荒らしてた奴もいきなりレッテル貼ったり罵倒したりするパターンだったしな
自演で荒らす→ID導入→回答者流出により情報価値がなくなる、という完璧なコンボを決めた>>963
- 966 :デフォルトの名無しさん:2015/12/31(木) 20:10:34.60 ID:NXxyivrJ.net
- >>965
> そして何よりいきなりレッテル貼ってる辺り
なにこのでかいブーメラン w
- 967 :デフォルトの名無しさん:2015/12/31(木) 21:50:22.63 ID:nJLqX/zt.net
- 一度リセットした方がいいなこのスレ
- 968 :デフォルトの名無しさん:2015/12/31(木) 22:12:55.21 ID:F75alAnQ.net
- CopyRectと構造体代入の相違について100字以内で説明せよ
- 969 :デフォルトの名無しさん:2015/12/31(木) 22:21:11.76 ID:KP9fkYAQ.net
- CopyRectと構造体代入には100字以内ぐらいの相違があるのである。
- 970 :デフォルトの名無しさん:2016/01/01(金) 00:51:59.47 ID:Robe7ssm.net
- >>968
ウザい。
ここは出題スレじゃないがそれも分からないほど知能が低いのか?
消えろゴミクズ。
- 971 :デフォルトの名無しさん:2016/01/01(金) 02:07:38.70 ID:Y4ZB9vSq.net
- お前らあけおめ
- 972 :デフォルトの名無しさん:2016/01/02(土) 15:04:41.20 ID:dDeNCcj5.net
- めりくり
- 973 :デフォルトの名無しさん:2016/01/02(土) 18:12:53.46 ID:wHwB68HU.net
- むりくり
- 974 :デフォルトの名無しさん:2016/01/02(土) 23:23:35.90 ID:EH4JctI/.net
- スカートめくり
- 975 :デフォルトの名無しさん:2016/01/03(日) 00:02:41.64 ID:qiKwbZ3e.net
- 初めて通信ポート(COM?)が接続された状態では
送受信タイムアウトは無しですかい?
- 976 :デフォルトの名無しさん:2016/01/03(日) 07:45:08.78 ID:WvZ6ZWof.net
- タイムアウトに頼ってる時点で
アウト
- 977 :デフォルトの名無しさん:2016/01/03(日) 14:32:54.55 ID:wr72odRt.net
- タイム(アウトに頼ってる時点で)アウト
- 978 :デフォルトの名無しさん:2016/01/03(日) 17:49:43.90 ID:7mAtatH9.net
- (このスレで質問してる時点で)アウト
- 979 :デフォルトの名無しさん:2016/01/03(日) 20:05:36.34 ID:buM4hFpe.net
- ここは半年くらい前から偏差値20くらいのレベルになっているな。
- 980 :デフォルトの名無しさん:2016/01/03(日) 20:18:59.08 ID:dC+f8AkW.net
- 1年前は偏差値22くらいはあったよな
- 981 :デフォルトの名無しさん:2016/01/03(日) 22:59:52.74 ID:cm6nEbxV.net
- 偏差値20もあったの?
- 982 :デフォルトの名無しさん:2016/01/03(日) 23:17:05.65 ID:qiKwbZ3e.net
- 接続直後にGetCommTimeoutsしたらいいじゃん
- 983 :デフォルトの名無しさん:2016/01/03(日) 23:17:58.29 ID:qiKwbZ3e.net
- という結論になりますた
- 984 :デフォルトの名無しさん:2016/01/04(月) 04:46:02.89 ID:xj/2f+ZR.net
- あけおめ
- 985 :デフォルトの名無しさん:2016/01/04(月) 11:01:30.01 ID:AAcHANMO.net
- ことよろ
- 986 :デフォルトの名無しさん:2016/01/04(月) 19:00:39.97 ID:uh/Y4MEw.net
- >>975
N81X
- 987 :デフォルトの名無しさん:2016/01/05(火) 07:23:36.17 ID:4YKOrwwk.net
- vc2010でドラゴンクエストXのキーボード入力をフックするプログラムを作っているのですが、
実際、キーボードをフックするまでは出来たのですが、実際にドラクエXを実行しても
キーボードが入力されたことになりません。原因は何が考えられますでしょうか
キーボードのフックはメモ帳などに実際に出てきているので問題ないです
- 988 :デフォルトの名無しさん:2016/01/05(火) 08:19:19.23 ID:7Q2tXWc2.net
- >>987
ドラクエXのプロテクトどんなのか知らんけど
・管理者として起動
・起動のタイミング
いろいろ試した?
- 989 :デフォルトの名無しさん:2016/01/05(火) 08:34:02.91 ID:QQENqvYE.net
- >>988
家に帰ってから試してみます。
- 990 :デフォルトの名無しさん:2016/01/05(火) 13:45:12.72 ID:lhyUPbMU.net
- あと、ゲームの場合はDirectXから入力とってたりするとやり方によってはうまくいかない
- 991 :デフォルトの名無しさん:2016/01/05(火) 15:50:55.71 ID:Woj1scU2.net
- クラック系は板違いじゃ
- 992 :デフォルトの名無しさん:2016/01/05(火) 17:02:32.92 ID:B9TyBRm4.net
- DirectInput使ってるだろうから、WinAPIでやりくりしても無駄のような
- 993 :デフォルトの名無しさん:2016/01/05(火) 17:21:41.22 ID:QQENqvYE.net
- こういう関数作ってますが、setKeyDown(VK_F1, 1)と呼び出しても入りません。
void setKeyDown(WORD VirtualKey, BOOL bKeepPressing)
{
INPUT data;
data.type = INPUT_KEYBOARD;
data.ki.wVk = VirtualKey;
data.ki.wScan = MapVirtualKey(data.ki.wVk, 0);
data.ki.time = 0;
data.ki.dwFlags = KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYDOWN;
data.ki.dwExtraInfo = ::GetMessageExtraInfo();
::SendInput(1, &data, sizeof(INPUT));
if (!bKeepPressing){
data.ki.dwFlags = KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP;
::SendInput(1, &data, sizeof(INPUT));
}
}
- 994 :デフォルトの名無しさん:2016/01/05(火) 18:57:40.55 ID:MmiOC2W0.net
- あけうめ
- 995 :デフォルトの名無しさん:2016/01/05(火) 19:04:03.54 ID:IesHwkgH.net
- 次
Win32API質問箱 Build122
http://peace.2ch.net/test/read.cgi/tech/1451988219/
- 996 :デフォルトの名無しさん:2016/01/05(火) 20:03:03.22 ID:ZQLyvfM1.net
- DirectInputとか
- 997 :デフォルトの名無しさん:2016/01/05(火) 20:44:31.27 ID:3P8foX3g.net
- >>995
おつ
- 998 :デフォルトの名無しさん:2016/01/05(火) 21:04:10.66 ID:nA3aY+gr.net
- >>987
ドライバ作れ
>>992
自動芋・・・
- 999 :デフォルトの名無しさん:2016/01/05(火) 21:09:36.93 ID:4YKOrwwk.net
- DirectInputのフックってどうやるんですか?
- 1000 :デフォルトの名無しさん:2016/01/05(火) 21:11:11.35 ID:4YKOrwwk.net
- というか矢印キーとか入るキーは入るんですが、入るキーと入らないキーの違いがわからない
- 1001 :片山博文MZ ◆T6xkBnTXz7B0 :2016/01/05(火) 21:15:48.75 ID:bG6ahL5d.net
- キーボードフィルタドライバを作ればフックできる。DDKのインストール必須。
- 1002 :デフォルトの名無しさん:2016/01/05(火) 21:19:40.79 ID:4YKOrwwk.net
- 次スレでもよろしく
- 1003 :デフォルトの名無しさん:2016/01/05(火) 21:29:52.48 ID:IesHwkgH.net
- 1000
http://i.imgur.com/BpoUAOA.jpg
- 1004 :2ch.net投稿限界:Over 1000 Thread
- 2ch.netからのレス数が1000に到達しました。
総レス数 1004
254 KB
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★