Win32APIについての質問はこちらへどうぞ。
■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。
英語版( http://msdn.microsoft.com/en-us/library/ )の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
■過去スレ
Win32API質問箱 Build124
http://mevius.5ch.net/test/read.cgi/tech/1510395780/
Win32API質問箱 Build123
http://mevius.2ch.net/test/read.cgi/tech/1475897582/
Win32API質問箱 Build122
http://echo.2ch.net/test/read.cgi/tech/1451988219/
Win32API質問箱 Build121
http://echo.2ch.net/test/read.cgi/tech/1438695290/
Win32API質問箱 Build120
http://echo.2ch.net/test/read.cgi/tech/1428570962/
■関連スレ
Visual Studio 2019
http://mevius.5ch.net/test/read.cgi/tech/1548765663/
Visual Studio 2017 Part6
http://mevius.5ch.net/test/read.cgi/tech/1528645068/
【C++】 DirectX初心者質問スレ Part41 【C】
http://mevius.5ch.net/test/read.cgi/tech/1521786252/
探検
Win32API質問箱 Build125
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2019/02/27(水) 15:09:08.64ID:6ExXwgQU289デフォルトの名無しさん
2019/09/14(土) 11:02:16.25ID:BTqGkHHG290デフォルトの名無しさん
2019/09/14(土) 11:26:55.16ID:BTqGkHHG 後HANDLEのスマポのデストラクタでCloseHandleするとき
失敗したり何も入ってなかったり
無効なハンドルの場合はCloseHandleしないようにする場合も嫌らしい
無効なハンドルを表す値が二つ有るからな!!
if( handle && handle != INVALID_HANDLE_VALUE ){ ::CloseHandle( handle ); }
と書いてしまいたいところだが、本当にこれでよいのか?
それかCloseHandleに無効なハンドルを渡したときは何もしないことを期待して
if文なしで単に::CloseHandle( handle );とだけ書くか
しかしCloseHandleに無効なハンドルを渡したときの動作はMSDNには書かれてないんだよな
まぁ何もしないと思うが
失敗したり何も入ってなかったり
無効なハンドルの場合はCloseHandleしないようにする場合も嫌らしい
無効なハンドルを表す値が二つ有るからな!!
if( handle && handle != INVALID_HANDLE_VALUE ){ ::CloseHandle( handle ); }
と書いてしまいたいところだが、本当にこれでよいのか?
それかCloseHandleに無効なハンドルを渡したときは何もしないことを期待して
if文なしで単に::CloseHandle( handle );とだけ書くか
しかしCloseHandleに無効なハンドルを渡したときの動作はMSDNには書かれてないんだよな
まぁ何もしないと思うが
291デフォルトの名無しさん
2019/09/14(土) 11:39:00.01ID:BTqGkHHG ああ今調べたら、CloseHandleに無効なハンドル渡したら
GetLastErrorが汚染されるらしいな
GetLastErrorが汚染されるらしいな
292デフォルトの名無しさん
2019/09/14(土) 11:51:46.43ID:U/7wJfIU 初期化と開放とかのインターフェース作って、そのインターフェース派生でAPIアクセスしてるな
その手のはAPI直接叩くソース書くと後からコーディングミスに気付いても修正困難になるしバグの元
その手のはAPI直接叩くソース書くと後からコーディングミスに気付いても修正困難になるしバグの元
293デフォルトの名無しさん
2019/09/14(土) 13:23:12.69ID:i3tDL1ol294デフォルトの名無しさん
2019/09/14(土) 13:47:20.57ID:U/7wJfIU どれもコモンコントロールだよ
歴史的には昔はリストビューがコモンコントロールじゃなかったかもしれないが分からない
歴史的には昔はリストビューがコモンコントロールじゃなかったかもしれないが分からない
295デフォルトの名無しさん
2019/09/14(土) 14:05:12.55ID:mIZ3m5oP 昔のWindowsAPIはHANDLEとポインタが別物だったのを知らん人がいるのか
296デフォルトの名無しさん
2019/09/14(土) 14:06:49.93ID:mIZ3m5oP297デフォルトの名無しさん
2019/09/14(土) 15:56:30.20ID:6R0WtlX/ フリーのリソースエディタとAPIでGUIプログラムを作っているけど、
もう時代遅れなのかな。
みなさんは、GUIプログラムはどうやって作っていますか。
もう時代遅れなのかな。
みなさんは、GUIプログラムはどうやって作っていますか。
298デフォルトの名無しさん
2019/09/14(土) 16:05:19.86ID:BWRFT45i リソースエディタなんぞ使わず全部apiからテキストエディタ上で
数値指定で作ってるんでそんな自分よりかは進んでるぞ
まあ今の時代ならvisual studio使うのが普通だろうね
数値指定で作ってるんでそんな自分よりかは進んでるぞ
まあ今の時代ならvisual studio使うのが普通だろうね
299デフォルトの名無しさん
2019/09/14(土) 16:05:25.06ID:YkcbTkKM 20年前から来たのかな?
>>297
cygwin/mingw64 でコンパイル・リンクできるよう、リソースは手書きですね…
cygwin/mingw64 でコンパイル・リンクできるよう、リソースは手書きですね…
301蟻人間 ◆T6xkBnTXz7B0
2019/09/14(土) 16:58:44.72ID:0f+SL6BM 俺は自作のリソーエディタ使ってるけど。MinGWでもVC++でもビルドできるよ。
302デフォルトの名無しさん
2019/09/14(土) 17:18:22.21ID:i3tDL1ol303デフォルトの名無しさん
2019/09/14(土) 19:04:46.82ID:TUFMAlcF WinUser.h
ComboBox CB_ERR
ListBox LB_ERR
CommCtrl.h
ListView関係のメッセージやマクロ
この違いは歴史関係って事?
LVM_INSERTITEMが失敗した場合は-1が返るけど
LV_ERR(-1)とするのはおかしい?
ComboBox CB_ERR
ListBox LB_ERR
CommCtrl.h
ListView関係のメッセージやマクロ
この違いは歴史関係って事?
LVM_INSERTITEMが失敗した場合は-1が返るけど
LV_ERR(-1)とするのはおかしい?
304デフォルトの名無しさん
2019/09/14(土) 19:37:03.95ID:5CB9SZmv 作者の気持ちを想像して答えなさいスレッド
305デフォルトの名無しさん
2019/09/14(土) 21:33:59.27ID:FV8dJ/wR Windowsで.NET使わずにC/C++とWin32APIでPerl互換の正規表現を使ったプログラムを作る場合、
従来はboost::regexやPCREなど別途ライブラリが必要だったけど、Windows10以降はICUの正規表現を使えるようになった。
ただし、可変長文字列を扱うUnicodeStringクラスがヘッダーファイルicu.hから削除されているので、std::wstringなどで代替する必要がある。
従来はboost::regexやPCREなど別途ライブラリが必要だったけど、Windows10以降はICUの正規表現を使えるようになった。
ただし、可変長文字列を扱うUnicodeStringクラスがヘッダーファイルicu.hから削除されているので、std::wstringなどで代替する必要がある。
306デフォルトの名無しさん
2019/09/14(土) 21:43:24.62ID:EnCOcX5P ListViewはWindows95で追加されたコントロール
307デフォルトの名無しさん
2019/09/14(土) 22:37:17.04ID:bBqfD384 昔の事は多少は多目に見てやれよ。今みたいにSNSが活発じゃないし、githubで他人のソースも簡単に見れるわけしゎゃない。知見を共有しづらい時代なんだから
308デフォルトの名無しさん
2019/09/14(土) 22:44:48.45ID:BTqGkHHG システムハンガリアンという糞も生みだしたしな
309デフォルトの名無しさん
2019/09/14(土) 23:54:23.09ID:EnCOcX5P ハンガリアン記法自体はBug捕り等に有効だったのに
310デフォルトの名無しさん
2019/09/15(日) 01:22:53.14ID:84ndTw+e dwは長さが一番揺らいでると思う
311デフォルトの名無しさん
2019/09/15(日) 04:13:59.48ID:oAEy9Na1 Standard Control
Common Control
Common Control
312デフォルトの名無しさん
2019/09/15(日) 07:17:29.58ID:o13gcpb2 >>309
システムハンガリアンは違うし、なんで過去形なんだ?
システムハンガリアンは違うし、なんで過去形なんだ?
313デフォルトの名無しさん
2019/09/15(日) 10:17:05.74ID:WyNEQ0+k314デフォルトの名無しさん
2019/09/15(日) 12:35:24.64ID:tu3q64lr unix の execlp だと pid は変化しませんが、
Win32API の execlp とか _execlp とかだと processID は変化してしまうようです。
CreateProcess が呼ばれているからだと思いますが、
Win32API の execlp とか _execlp とかで変わったあとの processID を知る方法はありますか?
(起動された側で getpid() で判るのですが、そっちではなくて元の processID を握ってる方からのリンクが切れて困ってます。)
Win32API の execlp とか _execlp とかだと processID は変化してしまうようです。
CreateProcess が呼ばれているからだと思いますが、
Win32API の execlp とか _execlp とかで変わったあとの processID を知る方法はありますか?
(起動された側で getpid() で判るのですが、そっちではなくて元の processID を握ってる方からのリンクが切れて困ってます。)
315デフォルトの名無しさん
2019/09/15(日) 18:08:42.80ID:jdtp5u68 >>297
俺はリソーススクリプト直叩き
MSDNに詳しい情報乗ってるし、英語だけど
プログラマなら大体わかるよ、翻訳サイトを使ってもいいしね
そして、ライブラリ化しといて次から簡単に使えるようにしとく
バージョン情報とかも関数やクラスにして簡単に使えるようまとめとけば便利
GUIは.NETがクラス化の良いお手本になるよ
俺はリソーススクリプト直叩き
MSDNに詳しい情報乗ってるし、英語だけど
プログラマなら大体わかるよ、翻訳サイトを使ってもいいしね
そして、ライブラリ化しといて次から簡単に使えるようにしとく
バージョン情報とかも関数やクラスにして簡単に使えるようまとめとけば便利
GUIは.NETがクラス化の良いお手本になるよ
316デフォルトの名無しさん
2019/09/15(日) 19:39:40.56ID:WzV8SEFI VS使わない縛りなの?
317デフォルトの名無しさん
2019/09/15(日) 19:55:06.55ID:G+rzyOKL >>314
> Win32API の execlp とか _execlp
そもそもexeclpとかはwin32apiじゃなくて単なるライブラリだよ
とりあえずざっとソース見る限りではpidを返す方法はないみたい(インターフェースもないしね)
自分で実装するしかないと思う
> Win32API の execlp とか _execlp
そもそもexeclpとかはwin32apiじゃなくて単なるライブラリだよ
とりあえずざっとソース見る限りではpidを返す方法はないみたい(インターフェースもないしね)
自分で実装するしかないと思う
318デフォルトの名無しさん
2019/09/15(日) 23:50:00.36ID:jdtp5u68 >>316
VSは使ってるよ、昔は無料のエディションには
MFCもリソースエディタも付いてなかったからな
趣味でやってるから問題なし
フリーのリソースエディタを入れるか迷ったこともあったけど
直叩きで行けるしまあいいかと
VSは使ってるよ、昔は無料のエディションには
MFCもリソースエディタも付いてなかったからな
趣味でやってるから問題なし
フリーのリソースエディタを入れるか迷ったこともあったけど
直叩きで行けるしまあいいかと
319デフォルトの名無しさん
2019/09/16(月) 00:47:21.27ID:iDbWACrZ それぐらい普通、何でもないよ
俺なんかメニューバーとかスクロールバーとかツールバーとかリストビューとか
こまごましたUIパーツ、全部DirectXで一からフルスクラッチで書いたし
4K画面だとリストビューとか動作がカクカクになるから使い物にならんよ
フォントの描画が重いみたい
俺なんかメニューバーとかスクロールバーとかツールバーとかリストビューとか
こまごましたUIパーツ、全部DirectXで一からフルスクラッチで書いたし
4K画面だとリストビューとか動作がカクカクになるから使い物にならんよ
フォントの描画が重いみたい
320デフォルトの名無しさん
2019/09/16(月) 00:49:05.96ID:B+hfHu5+ 結構前からリソースエディタは無料版VSでも入ってたろ
321蟻人間 ◆T6xkBnTXz7B0
2019/09/16(月) 01:47:28.54ID:cPhlmIua 後世のために書いておくが、Visual StudioのリソースコンパイラーはUTF-8の扱いに致命的なバグがあって、最悪の場合、文字化けする。あれはANSIコードページかUTF-16で使うものだ。
322デフォルトの名無しさん
2019/09/16(月) 10:51:40.64ID:7yboD6Fj323デフォルトの名無しさん
2019/09/16(月) 12:37:37.02ID:IB1jvVpV324デフォルトの名無しさん
2019/09/16(月) 17:55:40.47ID:+LXKkUCe そもそもリソースファイルにUTF8が使えるなんて知らなかったわ
325デフォルトの名無しさん
2019/09/16(月) 17:57:32.41ID:Y7LS5TKS いや使えないでしょUTF-8
326蟻人間 ◆T6xkBnTXz7B0
2019/09/16(月) 18:32:35.66ID:cPhlmIua MinGWのwindresというコンパイラーなら、pragmaでコードページ指定すればUTF-8が使える。
Visual Studioのrcは前述の通りUTF-8読み込みにバグがある。
Visual Studioのrcは前述の通りUTF-8読み込みにバグがある。
327デフォルトの名無しさん
2019/09/16(月) 18:40:12.76ID:OCMqZYFH RisohEditorってどうなん
328蟻人間 ◆T6xkBnTXz7B0
2019/09/16(月) 18:43:49.21ID:cPhlmIua RisohEditorはUTF-8とUTF-16のソースが扱える。UTF-16の入力は、独自のプリプロセッサでUTF-8に変換している。
329蟻人間 ◆T6xkBnTXz7B0
2019/09/16(月) 18:46:27.85ID:cPhlmIua VSのRCの文字化けバグについては
https://developercommunity.visualstudio.com/content/problem/384705/visualstudio-v1590-resource-editor-using-utf-8-bom.html
こちらで。まだ直っていない。
https://developercommunity.visualstudio.com/content/problem/384705/visualstudio-v1590-resource-editor-using-utf-8-bom.html
こちらで。まだ直っていない。
330デフォルトの名無しさん
2019/09/16(月) 18:52:28.03ID:OHfOAVfs リソースファイルはBOMつきUTF-16LEでいけるでしょ。
331デフォルトの名無しさん
2019/09/16(月) 19:26:31.76ID:dTSbudTn 重箱。UTF-16LE/BEと呼ぶ場合はBOMを付けてはならないらしい。
332デフォルトの名無しさん
2019/09/16(月) 19:56:19.89ID:OCMqZYFH UTF-8 も BOM 付けちゃいけないんだろ
333デフォルトの名無しさん
2019/09/16(月) 20:21:16.53ID:dTSbudTn UTF-8なら禁止はされていない。
334デフォルトの名無しさん
2019/09/17(火) 00:30:59.73ID:J+q8D2Xe >>331
理解が間違っている。
「BOMつきUTF-16LE」と「UTF-16LE」は別のものであり、どちらも存在する。
「UTF-16LE」にBOMがついていないからこそ「BOMつきUTF-16LE」という表現が成り立つ。
小倉トーストとトーストが別のものであることと同じであり、トーストに小倉餡がついていないからこそ小倉トーストが成り立つ。
理解が間違っている。
「BOMつきUTF-16LE」と「UTF-16LE」は別のものであり、どちらも存在する。
「UTF-16LE」にBOMがついていないからこそ「BOMつきUTF-16LE」という表現が成り立つ。
小倉トーストとトーストが別のものであることと同じであり、トーストに小倉餡がついていないからこそ小倉トーストが成り立つ。
335デフォルトの名無しさん
2019/09/17(火) 02:12:33.57ID:GJd5TLi7 粒餡と餡子が別のものであることと同じであり、
餡子に粒が入ってないからこそ粒餡が成り立つ
ってことですね
餡子に粒が入ってないからこそ粒餡が成り立つ
ってことですね
336デフォルトの名無しさん
2019/09/17(火) 02:53:38.24ID:J+q8D2Xe 名古屋のモーニングにゆで卵がついたからといって、モーニングでなくなるわけではないのだ。
無論、ゆで卵がつかないモーニングもある。ゆで卵がつこうがつくまいがモーニングなのだ。
無論、ゆで卵がつかないモーニングもある。ゆで卵がつこうがつくまいがモーニングなのだ。
337デフォルトの名無しさん
2019/09/17(火) 03:09:38.39ID:F6p74H2h 名古屋とか言う異世界の話はやめようぜ
意味が分からん
意味が分からん
338デフォルトの名無しさん
2019/09/17(火) 18:03:14.36ID:IoM9hprN 名古屋が4次元?
339デフォルトの名無しさん
2019/09/17(火) 18:08:21.64ID:+bGUkqkJ みそかつ
みそ煮込みうどん
高血圧
みそ煮込みうどん
高血圧
340デフォルトの名無しさん
2019/09/17(火) 18:36:53.76ID:TzGpBMAj 段ボール入り肉まんが人によってはバレないが、やはり人間的にはエラーが出やすい
そういうことだな
そういうことだな
341デフォルトの名無しさん
2019/09/18(水) 14:01:12.80ID:+0ud2Fjw Caretの点滅間隔について質問です
自アプリがアクティブの時のみ点灯(点滅間隔にUINT_MAXを指定して擬似的に)
自アプリが起動中はWM_SETFOCUSでON(点灯)に、WM_KILLFOCUSでOFF(元の間隔)にする事はできましたし他のアプリにも影響はありません
ですが自アプリが終了したら他のアプリでもONの状態になってしまいます
メッセージを追ってみると
WM_CLOSEでDestroyWindow
→WM_KILLFOCUSでOFFへ
→プロセスが終了
になっていたので自アプリ内で再度ONになっている事はないです
これはどういう事ですか?
自アプリがアクティブの時のみ点灯(点滅間隔にUINT_MAXを指定して擬似的に)
自アプリが起動中はWM_SETFOCUSでON(点灯)に、WM_KILLFOCUSでOFF(元の間隔)にする事はできましたし他のアプリにも影響はありません
ですが自アプリが終了したら他のアプリでもONの状態になってしまいます
メッセージを追ってみると
WM_CLOSEでDestroyWindow
→WM_KILLFOCUSでOFFへ
→プロセスが終了
になっていたので自アプリ内で再度ONになっている事はないです
これはどういう事ですか?
342デフォルトの名無しさん
2019/09/18(水) 19:04:24.43ID:L8SHYgAR WM_CLOSE
→DestroyWindow (hWnd 失効)
→WM_KILLFOCUSでOFFへ (hWnd 違いで無視)
→プロセスが終了
かな
知らんけど
→DestroyWindow (hWnd 失効)
→WM_KILLFOCUSでOFFへ (hWnd 違いで無視)
→プロセスが終了
かな
知らんけど
343デフォルトの名無しさん
2019/09/18(水) 19:30:38.13ID:+0ud2Fjw ありがとうございます
引数は間隔のみですが一応DestroyWindow直前でOFFにしてみても同じ結果でした
引数は間隔のみですが一応DestroyWindow直前でOFFにしてみても同じ結果でした
344デフォルトの名無しさん
2019/09/18(水) 19:31:59.76ID:Dukdxvvo 完成品には道のり遠くw
345デフォルトの名無しさん
2019/09/18(水) 19:37:10.52ID:+0ud2Fjw Getで値を見てみるとONの状態になってしまうのではなく
アプリが終了したら間隔が0xfeeefeeeになってしまう
でした
言い直しますと
System設定の500(ミリ秒)からUINT_MAXではなく200へ変更するようにしても
アプリを終了したら間隔が0xfeeefeeeになってしまう
です
アプリが終了したら間隔が0xfeeefeeeになってしまう
でした
言い直しますと
System設定の500(ミリ秒)からUINT_MAXではなく200へ変更するようにしても
アプリを終了したら間隔が0xfeeefeeeになってしまう
です
346デフォルトの名無しさん
2019/09/18(水) 19:39:32.20ID:Dukdxvvo たまねぎスレw
347デフォルトの名無しさん
2019/09/18(水) 19:57:32.75ID:u5s3196f 方法は何でもいいけど、例えばクリックしたらキャレット処理を終了→その後アプリ終了でどうなるかやってみ
問題が絞り込めるでしょ
WM_CLOSEで終了処理が思ったように動いてないってのはありがち
問題が絞り込めるでしょ
WM_CLOSEで終了処理が思ったように動いてないってのはありがち
348デフォルトの名無しさん
2019/09/18(水) 20:00:53.08ID:Dukdxvvo はい完成品なしw
349デフォルトの名無しさん
2019/09/18(水) 20:07:36.38ID:+0ud2Fjw350デフォルトの名無しさん
2019/09/18(水) 20:10:21.94ID:Dukdxvvo はいBASICからやり直しw
351デフォルトの名無しさん
2019/09/18(水) 20:10:41.11ID:+0ud2Fjw352デフォルトの名無しさん
2019/09/18(水) 20:12:42.36ID:rjYHNvyN 0xfeeeってデバッグの時の初期化されてない奴の値じゃないっけ
終了時に数値の参照先おかしくなってるとかかな
終了時に数値の参照先おかしくなってるとかかな
353デフォルトの名無しさん
2019/09/18(水) 20:31:05.81ID:VIgnmm9s 「あなたのアプリがWM_CLOSEで0xfeeefeeeにしてる」のは明白でしょ
0xfeeefeeeって特別な値よ、ググってみそ
0xfeeefeeeって特別な値よ、ググってみそ
354蟻人間 ◆T6xkBnTXz7B0
2019/09/18(水) 20:50:12.78ID:d3y9L0GY DestroyCaretしてないとか?
355デフォルトの名無しさん
2019/09/18(水) 20:51:02.69ID:doMp/Sm3 DEBUGビルドのランタイムで
newからのdelete や malloc からの free の後に 確保領域の内容を0xfeee で埋める
ポインタを開放した後に指し先の内容値を取得し、セットしちゃってるんでないの?
newからのdelete や malloc からの free の後に 確保領域の内容を0xfeee で埋める
ポインタを開放した後に指し先の内容値を取得し、セットしちゃってるんでないの?
356デフォルトの名無しさん
2019/09/18(水) 20:51:25.32ID:nSTUFOvJ 速度設定するとこにトレース出力でもおいて、まずはほんとに意図しないタイミングで呼ばれてないのかチェックだな
357デフォルトの名無しさん
2019/09/18(水) 20:54:27.99ID:GIOjMe2C イベントを2回通っていて、認識できてないとか。
358デフォルトの名無しさん
2019/09/18(水) 21:32:56.42ID:+0ud2Fjw359デフォルトの名無しさん
2019/09/18(水) 21:52:22.59ID:8Lx1p1Xb Releaseモードで検証したら
360デフォルトの名無しさん
2019/09/18(水) 21:58:28.43ID:rjYHNvyN 別のとこでメモリ壊してるんかな
その部分だけの最小コード書いてみては
それでもなるなら手に負えない感じが
その部分だけの最小コード書いてみては
それでもなるなら手に負えない感じが
361デフォルトの名無しさん
2019/09/18(水) 22:24:23.19ID:Ei+Tp6td >>352-353, >>355
0xfeee なんてパターンあったっけ?
0xFDFDFDFD No man's land (normally outside of a process)
0xDDDDDDDD Freed memory
0xCDCDCDCD Uninitialized (global)
0xCCCCCCCC Uninitialized locals (on the stack)
の4パターンしか知らんかったわ
https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-6.0/aa260966(v=vs.60)#what-exactly-do-you-mean-by-failure
0xfeee なんてパターンあったっけ?
0xFDFDFDFD No man's land (normally outside of a process)
0xDDDDDDDD Freed memory
0xCDCDCDCD Uninitialized (global)
0xCCCCCCCC Uninitialized locals (on the stack)
の4パターンしか知らんかったわ
https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-6.0/aa260966(v=vs.60)#what-exactly-do-you-mean-by-failure
362デフォルトの名無しさん
2019/09/18(水) 22:31:02.62ID:rjYHNvyN なかったっけ
うろ覚えで書いたから間違ってたかな
うろ覚えで書いたから間違ってたかな
363デフォルトの名無しさん
2019/09/18(水) 22:48:37.86ID:u5s3196f 0xfeeefeeeでググれ
364デフォルトの名無しさん
2019/09/18(水) 22:51:58.57ID:u5s3196f >>358
> キャレット関係の終了処理をWM_LBUTTONDOWNのタイミングに変更した時に
> WM_CLOSEの方のキャレット関係の終了処理はコメントアウトしました
マウスクリックで終了してる「はず」なのに終了してないなら、そもそもキャレット処理を
全く走らせてなくても問題が再現する「はず」
でもその場合は問題ないってなら、やはり終了処理に何かある
> キャレット関係の終了処理をWM_LBUTTONDOWNのタイミングに変更した時に
> WM_CLOSEの方のキャレット関係の終了処理はコメントアウトしました
マウスクリックで終了してる「はず」なのに終了してないなら、そもそもキャレット処理を
全く走らせてなくても問題が再現する「はず」
でもその場合は問題ないってなら、やはり終了処理に何かある
365デフォルトの名無しさん
2019/09/19(木) 04:56:26.34ID:WgtBHfjG >>363
お前がググれよw
お前がググれよw
366デフォルトの名無しさん
2019/09/19(木) 08:37:27.80ID:55mEbAq6 >>361
new -> delete -> 値が0xfeeefeeeに
もしnewしたクラスのメンバ変数が値を保持して間隔設定してるなら
delete後に0xfeeefeeeなるよ
クラスポインタをdeleteしてからNULLにしたらエラーになるはず
こんな感じじゃないかな
WM_CLOSEで(deleteしてから)DestroyWindow (クラスポインタとメンバ変数の値が0xfeeefeeeに)
→WM_KILLFOCUSでOFFへ (OFFにする時に参照してるメンバ変数が0xfeeefeee)
→プロセスが終了
でもハードコードでもなるみたいだから違うかも?
new -> delete -> 値が0xfeeefeeeに
もしnewしたクラスのメンバ変数が値を保持して間隔設定してるなら
delete後に0xfeeefeeeなるよ
クラスポインタをdeleteしてからNULLにしたらエラーになるはず
こんな感じじゃないかな
WM_CLOSEで(deleteしてから)DestroyWindow (クラスポインタとメンバ変数の値が0xfeeefeeeに)
→WM_KILLFOCUSでOFFへ (OFFにする時に参照してるメンバ変数が0xfeeefeee)
→プロセスが終了
でもハードコードでもなるみたいだから違うかも?
367デフォルトの名無しさん
2019/09/19(木) 09:42:21.55ID:BhEGNWlU unix の pipe は双方向だと思うのですが
win32api の pipe (namedpipe ではない方) は一方通行なんでしょうか?
先生なんとかなりませんか?
win32api の pipe (namedpipe ではない方) は一方通行なんでしょうか?
先生なんとかなりませんか?
368デフォルトの名無しさん
2019/09/19(木) 09:45:58.80ID:VunEY3BQ WM_CLOSE
↓
WM_DESTROY
↓
WM_DESTROY
369デフォルトの名無しさん
2019/09/19(木) 09:51:38.16ID:VunEY3BQ ああ
WM_QUIT
かな
WM_QUIT
かな
370デフォルトの名無しさん
2019/09/19(木) 10:17:38.29ID:nEj2AKuG >>367
UNIXも一方通行では
UNIXも一方通行では
371デフォルトの名無しさん
2019/09/19(木) 10:35:55.09ID:WgtBHfjG >>366
間隔設定がよくわからんが
class C { int a; };
auto x = new C();
delete x;
ってやるとxのポイント先が0xddddddddになるんだが…
Visual Studio Express 2017, 15.9.16
間隔設定がよくわからんが
class C { int a; };
auto x = new C();
delete x;
ってやるとxのポイント先が0xddddddddになるんだが…
Visual Studio Express 2017, 15.9.16
372デフォルトの名無しさん
2019/09/19(木) 12:34:19.77ID:WgtBHfjG373デフォルトの名無しさん
2019/09/19(木) 16:05:31.90ID:NIaCYNJC >>365
どこのgoogle使ってんの?
>0xfeeefeee を検索するとHeapFree で処分された後のヒープ領域がこの値で埋められている、とわかる。 ということは「処分済みヒープへのポインタを誰かが使っている」ということだ。
なお、正解かどうかは論じてないので悪しからず
どこのgoogle使ってんの?
>0xfeeefeee を検索するとHeapFree で処分された後のヒープ領域がこの値で埋められている、とわかる。 ということは「処分済みヒープへのポインタを誰かが使っている」ということだ。
なお、正解かどうかは論じてないので悪しからず
374デフォルトの名無しさん
2019/09/19(木) 16:41:49.39ID:cbyVF/Zh 解放バッファの埋めパターンは、ライブラリが自力でセットするものなの?
375デフォルトの名無しさん
2019/09/19(木) 17:15:02.02ID:BhEGNWlU -D_DEBUGで自動化やろ
376デフォルトの名無しさん
2019/09/19(木) 18:06:22.20ID:NIaCYNJC とりあえず>>373の検証
100バイトHeapAllocして適当にa~zの文字書き込んでHeapFreeの前後でダンプ取ったけど、
0xfeeefeeeが入ることはなかったな
debug版
前
61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 00
後
F0 C6 42 05 88 41 47 05 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 00
release版
前
61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 00
後
78 EF 81 05 F0 54 79 05 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 00
free後に何か入ってるけど、実行毎に違う値が入ってる
0xfeeefeeeに関しては、単純に何かのAPIがそういう処理してるんでは
100バイトHeapAllocして適当にa~zの文字書き込んでHeapFreeの前後でダンプ取ったけど、
0xfeeefeeeが入ることはなかったな
debug版
前
61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 00
後
F0 C6 42 05 88 41 47 05 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 00
release版
前
61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 00
後
78 EF 81 05 F0 54 79 05 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 00
free後に何か入ってるけど、実行毎に違う値が入ってる
0xfeeefeeeに関しては、単純に何かのAPIがそういう処理してるんでは
377デフォルトの名無しさん
2019/09/19(木) 18:13:44.87ID:VunEY3BQ コンパイラによっても違うのか
http://www.nobugs.org/developer/win32/debug_crt_heap.html
http://www.nobugs.org/developer/win32/debug_crt_heap.html
378デフォルトの名無しさん
2019/09/19(木) 18:42:59.80ID:NIaCYNJC APIだからコンパイラ関係ないと思うけどね
OSは8.1だけど
コンパイラというかライブラリが関係するはずのmallocでやってみた
vs2017 - ツールセットvs2013(詳細略)
以下並びは>376と同じだけどダンプの長さはa~zの26+1バイトじゃなく30バイト
allocも100ではなく30バイト
debug
61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 00 CD CD CD
DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD
release
61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 00 00 00 00
61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 00 00 00 00
OSは8.1だけど
コンパイラというかライブラリが関係するはずのmallocでやってみた
vs2017 - ツールセットvs2013(詳細略)
以下並びは>376と同じだけどダンプの長さはa~zの26+1バイトじゃなく30バイト
allocも100ではなく30バイト
debug
61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 00 CD CD CD
DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD
release
61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 00 00 00 00
61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 00 00 00 00
379デフォルトの名無しさん
2019/09/19(木) 19:23:51.83ID:55mEbAq6380デフォルトの名無しさん
2019/09/19(木) 22:12:42.24ID:1bu8PAPD381デフォルトの名無しさん
2019/09/19(木) 22:36:38.24ID:2Kmv27QM vs2003とかそのあたりかなこれ
382デフォルトの名無しさん
2019/09/20(金) 00:25:02.03ID:n3bycm/n Win10 Pro(32bit)でHeapFreeやってみた
VS2017(Community Edition)は0xfeeefeeeにならなかったが、
VC2010(Express Edition)でやってみたら0xfeeefeeeになったわ(確保していた領域の先頭8バイトほどに0xfeeefeeeじゃない値が入っていたが)
面倒だからオプションとか生成されたバイナリとか詳しく比較してない
VS2017(Community Edition)は0xfeeefeeeにならなかったが、
VC2010(Express Edition)でやってみたら0xfeeefeeeになったわ(確保していた領域の先頭8バイトほどに0xfeeefeeeじゃない値が入っていたが)
面倒だからオプションとか生成されたバイナリとか詳しく比較してない
383デフォルトの名無しさん
2019/09/20(金) 09:31:26.82ID:DNSz8VRz384デフォルトの名無しさん
2019/09/28(土) 11:23:33.59ID:2Q8qxITa メッセージ処理の
case(msg)
ってなんで
case(msg.message)
じゃないの?
構造体直接評価できるの?
case(msg)
ってなんで
case(msg.message)
じゃないの?
構造体直接評価できるの?
385デフォルトの名無しさん
2019/09/28(土) 11:29:50.08ID:2Q7OqYnQ どこかのサイト?
386デフォルトの名無しさん
2019/09/28(土) 11:46:59.83ID:QstsG7m2 メッセージは構造体じゃなくて UINT やろ
387デフォルトの名無しさん
2019/09/28(土) 14:28:14.81ID:hWveUl7z >>384
多分サンプルの読み方を勘違いしている
GetMessage関数なんかで使われるlpMsgとかはMSG構造体なので中でメッセージIDを
確認したいならば「msg.message」を見ることになる
メッセージIDのハンドリング行うサンプルなんかで普通に使われてるWndProc関数の
uMsgはUNIT型の「msg.message」が実体なのでcaseでそのままハンドリングできる
でないか?
多分サンプルの読み方を勘違いしている
GetMessage関数なんかで使われるlpMsgとかはMSG構造体なので中でメッセージIDを
確認したいならば「msg.message」を見ることになる
メッセージIDのハンドリング行うサンプルなんかで普通に使われてるWndProc関数の
uMsgはUNIT型の「msg.message」が実体なのでcaseでそのままハンドリングできる
でないか?
388デフォルトの名無しさん
2019/09/28(土) 16:13:30.79ID:91yg28/R caseにカッコつけんな
389デフォルトの名無しさん
2019/09/28(土) 17:54:36.06ID:zcWtf1aP 本来ライブラリに任せるべきところをかなりネイティブなwinsockプログラミングをしています。
TCP通信にて最大セグメントを超えてwinsock2.sendを行った場合はどうなってしまうのでしょうか?
エラーとなるためそこも自前で実装する必要があるのか、それともwinsockが勝手に分割を行ってくれるのか、はたまたネットワークアダプタやルーターなどのデバイスが勝手にやってくれるのか、どういう挙動となるのかご伝授お願いします
TCP通信にて最大セグメントを超えてwinsock2.sendを行った場合はどうなってしまうのでしょうか?
エラーとなるためそこも自前で実装する必要があるのか、それともwinsockが勝手に分割を行ってくれるのか、はたまたネットワークアダプタやルーターなどのデバイスが勝手にやってくれるのか、どういう挙動となるのかご伝授お願いします
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… ★2 [BFU★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★2 [BFU★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 [ぐれ★]
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 [Hitzeschleier★]
- 政府、株式の配当など金融所得を高齢者の医療保険料や窓口負担に反映する方針を固めた [バイト歴50年★]
- 【維新】吉村知事「中国人観光客だけに頼るビジネスモデル変えていかないといけない」「高市総理の発言は撤回する必要はない」 [Hitzeschleier★]
- 中国高官と話す外務省局長の表情、やばい ★2 [175344491]
- 中国外務省「日中関係の悪化は高市早苗首相が原因」と名指しで強く非難。キタ━(゚∀゚)━! [153490809]
- 【悲報】日本人「日本が中国と戦争になったら世界中の国が応援してくれるぞ!」 [616817505]
- 小野田経済安保相「すぐに経済的威圧するところへの依存はリスク」😲 [861717324]
- 日本政府「高市総理の発言は問題ないと伝え、中国総領事のSNS投稿は問題があると中国に伝えました😊」 [931948549]
- 【ほんこん悲報】吉本新喜劇の中国公演が中止に! [523957489]
