Win32APIについての質問はこちらへどうぞ。
■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。
英語版( http://msdn.microsoft.com/en-us/library/ )の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
■過去スレ
Win32API質問箱 Build126
https://mevius.5ch.net/test/read.cgi/tech/1588339011/
Win32API質問箱 Build125
https://mevius.5ch.net/test/read.cgi/tech/1551247748/
Win32API質問箱 Build124
https://mevius.5ch.net/test/read.cgi/tech/1510395780/
■関連スレ
Visual Studio 2020 Part1 https://mevius.5ch.net/test/read.cgi/tech/1634166667/
Visual Studio 2019 Part7 https://mevius.5ch.net/test/read.cgi/tech/1634178709/
Visual Studio 2017 Part7 https://mevius.5ch.net/test/read.cgi/tech/1558179898/
【C++】 DirectX初心者質問スレ Part41 【C】 https://mevius.5ch.net/test/read.cgi/tech/1521786252/
Win32API質問箱 Build127
■ このスレッドは過去ログ倉庫に格納されています
2021/12/09(木) 21:32:56.60ID:sYLpmj89
100デフォルトの名無しさん
2022/01/30(日) 15:28:34.78ID:CkvbqakA >>65
SHOpenWithDialog
SHOpenWithDialog
101デフォルトの名無しさん
2022/01/30(日) 15:56:05.88ID:CkvbqakA >>33
Shell_NotifyIconGetRect
Shell_NotifyIconGetRect
102デフォルトの名無しさん
2022/02/19(土) 21:16:14.65ID:XaFwU4s3 CreateFileで返ってきたファイルハンドルを使って、CreateFileでGENERIC_READ/GENERIC_WRITEの
どちら(もしくは両方)のアクセスモードが指定されていたかを調べる方法はないでしょうか?
どちら(もしくは両方)のアクセスモードが指定されていたかを調べる方法はないでしょうか?
103デフォルトの名無しさん
2022/02/19(土) 22:43:56.49ID:XaFwU4s3 質問を撤回変更します
特定のファイルへの書き込みの際、同タイミングで別プロセスから同じファイルへの書き込みを防ぐため
ファイルのロックを行なおうとしましたが、下記のようなコードは間違っていますでしょうか?
実際にはWriteFileでエラーになります
HANDLE file;
BOOL ret;
DWORD wrote;
OVERLAPPED ov = {0};
file = CreateFile("test.dat", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
ret = LockFileEx(file, 0, 0, 0xffffffff, 0xffffffff, &ov);
ret = WriteFile(file, "aaa", 3, &wrote, 0);
ret = UnlockFileEx(file, 0, 0xffffffff, 0xffffffff, &ov);
CloseHandle(file);
よろしくお願いします
特定のファイルへの書き込みの際、同タイミングで別プロセスから同じファイルへの書き込みを防ぐため
ファイルのロックを行なおうとしましたが、下記のようなコードは間違っていますでしょうか?
実際にはWriteFileでエラーになります
HANDLE file;
BOOL ret;
DWORD wrote;
OVERLAPPED ov = {0};
file = CreateFile("test.dat", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
ret = LockFileEx(file, 0, 0, 0xffffffff, 0xffffffff, &ov);
ret = WriteFile(file, "aaa", 3, &wrote, 0);
ret = UnlockFileEx(file, 0, 0xffffffff, 0xffffffff, &ov);
CloseHandle(file);
よろしくお願いします
104デフォルトの名無しさん
2022/02/19(土) 22:47:06.25ID:XaFwU4s3105蟻人間 ◆T6xkBnTXz7B0
2022/02/19(土) 22:51:38.16ID:okjLjEAk このページのACCESS_MASKのところに書いてある。
https://note.com/lacnote/n/n214c53e98cc4
https://note.com/lacnote/n/n214c53e98cc4
107デフォルトの名無しさん
2022/02/20(日) 03:52:43.84ID:CO1siO2a やりたいことが伝わっていないようですが、要するにWEBサーバーでよくある
アクセスカウンターや掲示板でファイルの読み書きをするにあたって衝突を防ぎたいということです
ファイルオープン時にエラーにしてしまうのは本意ではなく、あくまでファイルのロックで制御したいのです
ということで、書き込み時はこのようにすれば解決できました。
ret = LockFileEx(file, LOCKFILE_EXCLUSIVE_LOCK, 0, 0xffffffff, 0xffffffff, &ov);
読み込み時は元の
ret = LockFileEx(file, 0, 0, 0xffffffff, 0xffffffff, &ov);
このようにすれば、複数プロセスで読み込みが競合しても同時アクセスが可能で、書き込みプロセスが発生したときは
意図した通りに排他処理され、後から実行されたプロセスはLockFileExで待機されるようになりました
アクセスカウンターや掲示板でファイルの読み書きをするにあたって衝突を防ぎたいということです
ファイルオープン時にエラーにしてしまうのは本意ではなく、あくまでファイルのロックで制御したいのです
ということで、書き込み時はこのようにすれば解決できました。
ret = LockFileEx(file, LOCKFILE_EXCLUSIVE_LOCK, 0, 0xffffffff, 0xffffffff, &ov);
読み込み時は元の
ret = LockFileEx(file, 0, 0, 0xffffffff, 0xffffffff, &ov);
このようにすれば、複数プロセスで読み込みが競合しても同時アクセスが可能で、書き込みプロセスが発生したときは
意図した通りに排他処理され、後から実行されたプロセスはLockFileExで待機されるようになりました
108デフォルトの名無しさん
2022/02/20(日) 19:05:58.76ID:9HPBNdt5 Webサーバの排他処理を、このような実装で提案してくるレベルの会社に仕事を頼むのは危険、とは思った
109デフォルトの名無しさん
2022/02/20(日) 20:03:47.36ID:M4xRQQqb CreateFileが先だとどのみちエラーになる可能性が残るから
ミューテックスやイベントオブジェクトで排他制御するなあ
Lockなんちゃらは使ったことないわ
ミューテックスやイベントオブジェクトで排他制御するなあ
Lockなんちゃらは使ったことないわ
110デフォルトの名無しさん
2022/02/20(日) 21:30:44.11ID:uUEkIMOM 俺なら迷わずDBMS使うわ
SQLite3 とかならサーバーもいらんし
SQLite3 とかならサーバーもいらんし
111デフォルトの名無しさん
2022/02/21(月) 03:06:22.69ID:duSmRXnB >>109
shareが付いてるからエラーにはならないのでは?
shareが付いてるからエラーにはならないのでは?
112デフォルトの名無しさん
2022/03/07(月) 02:42:31.87ID:TXt6EOws WritePrivateProfileString で ini ファイルに書き込むと、たまに「他のプロセスが使用中です。」という例外が発生します。
防止するにはどすればいいでしょうか?
防止するにはどすればいいでしょうか?
113デフォルトの名無しさん
2022/03/07(月) 02:44:48.03ID:qb65CxmV 他のプロセスが使用しないようにする
114デフォルトの名無しさん
2022/03/07(月) 09:16:25.25ID:cTvXM31Y 大体にして開いてるのエクスプローラー、アンチウイルス、常駐系だったりするしな
MS-DOSでも使うしか
MS-DOSでも使うしか
115デフォルトの名無しさん
2022/03/07(月) 10:39:51.12ID:Xc0f0iGk 他のプロセスでiniファイルを使っていたとしてもWritePrivateProfileStringで例外なんか出るか?
116デフォルトの名無しさん
2022/03/07(月) 10:52:53.03ID:2N5B8miS ぐぐった感じ APIそのものは例外を発行しないものの C#のプラットフォーム側がだしてるくさい
117デフォルトの名無しさん
2022/03/07(月) 23:41:31.01ID:oHAGcJuV C#のランタイムはこのスレの範疇じゃないなあ
118デフォルトの名無しさん
2022/03/08(火) 17:52:46.46ID:f1RrvjSh リストビューを範囲選択しているときの四角形、7や10などでは青い半透明で描画されますが、
APIでこれと同じものを描画することはできるのでしょうか?
APIでこれと同じものを描画することはできるのでしょうか?
119デフォルトの名無しさん
2022/03/08(火) 18:26:38.59ID:ZpoSJ5Ls 一方、ワイは自前で描画した
120デフォルトの名無しさん
2022/03/08(火) 18:33:19.49ID:iHDsiIkr だから自前で同じものを描画できるかって質問だろ
俺か?俺は知らん!
俺か?俺は知らん!
121デフォルトの名無しさん
2022/03/08(火) 18:36:57.44ID:f1RrvjSh >>119
自分で色などを調べて、直値で半透明の四角形を描いたということですか。
XP以降のエクスプローラーに載っている描画のようなので、
UxThemeのテーマ描画関数にでも含まれているのかと思ったのですが、
外からは呼べないものなのですかね。
自分で色などを調べて、直値で半透明の四角形を描いたということですか。
XP以降のエクスプローラーに載っている描画のようなので、
UxThemeのテーマ描画関数にでも含まれているのかと思ったのですが、
外からは呼べないものなのですかね。
122デフォルトの名無しさん
2022/03/08(火) 19:03:07.84ID:ZpoSJ5Ls >>120
自前じゃなくてAPIでって書いてるやん
>>121
正攻法は分からないので、それっぽい色で直接描画した
参考にならなくてスマン
ワイもいい方法知りたい
DrawThemeBackgroundでリストビュー関係のパーツで描画をすればかなり近そうなんだけど、
本当にそれでいいのか分からなくて面倒でスルーした
https://docs.microsoft.com/en-us/windows/win32/controls/parts-and-states
こちらのツールも参考にさせてもらってた
ttp://dev.onionsoft.net/seed/info.ax?id=1201
で、結局描画そのものは自前になるわなということでやめた
自前じゃなくてAPIでって書いてるやん
>>121
正攻法は分からないので、それっぽい色で直接描画した
参考にならなくてスマン
ワイもいい方法知りたい
DrawThemeBackgroundでリストビュー関係のパーツで描画をすればかなり近そうなんだけど、
本当にそれでいいのか分からなくて面倒でスルーした
https://docs.microsoft.com/en-us/windows/win32/controls/parts-and-states
こちらのツールも参考にさせてもらってた
ttp://dev.onionsoft.net/seed/info.ax?id=1201
で、結局描画そのものは自前になるわなということでやめた
123デフォルトの名無しさん
2022/03/09(水) 09:25:42.26ID:DJwI/bmR124デフォルトの名無しさん
2022/03/17(木) 11:37:08.28ID:SxsSQH3/ NamedPipeにおけるPIPE_TYPE_BYTEとPIPE_TYPE_MESSAGEの違いは何なのでしょうか?
PIPE_TYPE_BYTEでは書き込み側がWriteFileを何回行ったとしても読み手側はReadFile1度で済み、
PIPE_TYPE_MESSAGEでは書き込み側が行ったWriteFile回数分、読み手側もReadFileがヒットするという理解であってますか?
PIPE_TYPE_BYTEでは書き込み側がWriteFileを何回行ったとしても読み手側はReadFile1度で済み、
PIPE_TYPE_MESSAGEでは書き込み側が行ったWriteFile回数分、読み手側もReadFileがヒットするという理解であってますか?
125デフォルトの名無しさん
2022/03/20(日) 18:08:07.29ID:XF1vAqW3 参考書を一冊読み終わった程度のガチガチの初心者です。
初めて何か簡単なものを作ろうと思ったのですが、ウィンドウのサイズの指定の仕方が良くわかりませんでした。
VisualStudio2022でテンプレートはユニバーサルWindows-C++/Cxです。
どなたかwinndowの大きさの指定の仕方を教えていただければ幸いです。
そもそもどこからプログラムが始まるのかもよくわかっていません。
・・・質問する場所が間違ってたらすみません。
初めて何か簡単なものを作ろうと思ったのですが、ウィンドウのサイズの指定の仕方が良くわかりませんでした。
VisualStudio2022でテンプレートはユニバーサルWindows-C++/Cxです。
どなたかwinndowの大きさの指定の仕方を教えていただければ幸いです。
そもそもどこからプログラムが始まるのかもよくわかっていません。
・・・質問する場所が間違ってたらすみません。
126デフォルトの名無しさん
2022/03/20(日) 20:18:13.42ID:km0F04pf Win32APIなら MoveWindow あたりかな。
UWPのことは↓の方がいいかもね。
https://mevius.5ch.net/test/read.cgi/tech/1627556967/
なお蛇足だけど 「UWP 将来性」 でGoogle検索してみると、UWPに関しては微妙な評価も少なくなく。
初心者が、あえてUWPを選んで、これから勉強していく・・・というのはどうなんだろう? という気はしないでもない
UWPのことは↓の方がいいかもね。
https://mevius.5ch.net/test/read.cgi/tech/1627556967/
なお蛇足だけど 「UWP 将来性」 でGoogle検索してみると、UWPに関しては微妙な評価も少なくなく。
初心者が、あえてUWPを選んで、これから勉強していく・・・というのはどうなんだろう? という気はしないでもない
127デフォルトの名無しさん
2022/03/20(日) 20:48:42.24ID:pl7vy6ae CreateWindow(Ex)のwidth,height引数だろ
128デフォルトの名無しさん
2022/03/20(日) 21:44:52.47ID:KeTIMbSf ウィンドウのサイズの指定の仕方すら載ってない参考書って何なの
129デフォルトの名無しさん
2022/03/20(日) 21:55:49.41ID:+2LwwNeE UWPはフルスクリーン専用ですから!
130デフォルトの名無しさん
2022/03/20(日) 21:57:26.05ID:DiBIkIVz ウィンドウのサイズはWindowsのプログラムじゃないんだよ
うまく言えないけど、それは違うんだよ
うまく言えないけど、それは違うんだよ
131デフォルトの名無しさん
2022/03/20(日) 22:29:38.63ID:KeTIMbSf 自分で制御できてこそプログラミングなのでは
ちなUWP ウィンドウサイズでぐぐったら出てくるでしょ
ちなUWP ウィンドウサイズでぐぐったら出てくるでしょ
132デフォルトの名無しさん
2022/03/20(日) 22:59:19.18ID:O6cWnna8 UWPなんて儲からないのが決定づいたからMSの投資対象じゃないでしょ
将来性とかじゃないんだよ
終わったの
将来性とかじゃないんだよ
終わったの
133デフォルトの名無しさん
2022/03/20(日) 23:32:49.71ID:n/9ce90/ ケンシロウ「おわた」
134デフォルトの名無しさん
2022/03/21(月) 13:53:10.22ID:ROKj/vns >>126
ありがとうございます。
なんか記事めっちゃ少ないなって思ったんですよ。
c++始めたてで「よし、c++でサーバー作るぞ!!」って思って探したとき以上に
記事がないんですよ。
そもそも将来性が危ぶまれていたのですね。
本当にありがとうございます。
テンプレート何使うのかから考え直します。
ありがとうございます。
なんか記事めっちゃ少ないなって思ったんですよ。
c++始めたてで「よし、c++でサーバー作るぞ!!」って思って探したとき以上に
記事がないんですよ。
そもそも将来性が危ぶまれていたのですね。
本当にありがとうございます。
テンプレート何使うのかから考え直します。
135デフォルトの名無しさん
2022/03/21(月) 17:01:31.15ID:2zy4bB2k Visual studio のテンプレート選びのことなら、最初だけね。
慣れてくると、テンプレートはかえって邪魔だったりするので、空のソリューションから始めるようになるよ。
C++でいくなら(初心者なら、最初はC++よりもCの方がいいかもしれないかな、覚えることが少ないので・・・とは思うけど)
(MFC等のクラスライブラリを使わずに)Win32APIだけでゴリゴリ動かすプログラム作成からトライするのがよろしいかと。
いずれにせよWindowsアプリの場合、Win32APIは避けて通れないので、勉強するなら順番的に最初で。
それで不満があったり、学校や仕事なら必要に応じて、趣味なら好みで、他の手法に手を出していくような順番で考えるといいと思われます。
困ったら Google 先生に聞いてみてね、いくらでもサンプルが入手できるから、理解も早まるはず
慣れてくると、テンプレートはかえって邪魔だったりするので、空のソリューションから始めるようになるよ。
C++でいくなら(初心者なら、最初はC++よりもCの方がいいかもしれないかな、覚えることが少ないので・・・とは思うけど)
(MFC等のクラスライブラリを使わずに)Win32APIだけでゴリゴリ動かすプログラム作成からトライするのがよろしいかと。
いずれにせよWindowsアプリの場合、Win32APIは避けて通れないので、勉強するなら順番的に最初で。
それで不満があったり、学校や仕事なら必要に応じて、趣味なら好みで、他の手法に手を出していくような順番で考えるといいと思われます。
困ったら Google 先生に聞いてみてね、いくらでもサンプルが入手できるから、理解も早まるはず
136デフォルトの名無しさん
2022/03/21(月) 17:46:41.29ID:UrcF9Qp5 結局テンプレートは自分で作ったな
137デフォルトの名無しさん
2022/03/21(月) 18:08:25.99ID:ROKj/vns 承知しました。
templateの作成から始めます。
ありがとうございます。
templateの作成から始めます。
ありがとうございます。
138デフォルトの名無しさん
2022/03/21(月) 21:19:01.53ID:pAID/0z9 いやー、普通にc#から入っていいとおもうがねぇ。
まっさらな人がこれからcharとwcharとutf8とutf16を
ちゃんとデフォルトで言語の標準ライブラリで変換出来ない世界から入るのは遠回り過ぎて、
結局は目的にまったく近づけず挫折するかと。
まっさらな人がこれからcharとwcharとutf8とutf16を
ちゃんとデフォルトで言語の標準ライブラリで変換出来ない世界から入るのは遠回り過ぎて、
結局は目的にまったく近づけず挫折するかと。
139デフォルトの名無しさん
2022/03/22(火) 01:06:06.87ID:TibwPpTv 何でrustの悪口言うの?
Microsoftがいつかライブラリを作って提供してくれるはずだよ?
Microsoftがいつかライブラリを作って提供してくれるはずだよ?
140デフォルトの名無しさん
2022/03/22(火) 12:47:17.13ID:qjij/RpP 今使えないと…
141デフォルトの名無しさん
2022/03/22(火) 22:09:30.99ID:XUVyJctM142デフォルトの名無しさん
2022/03/24(木) 17:58:28.49ID:EzbC8tGw >>138
どうも、134です。
インターネットとc++は相性悪いからやめとけって言う話は自分でも
どことなくわかっているはずなのになぜかc++に執着してしまっています。
はじめて3か月くらいでしょうか・・・。
boostのサーバーのサンプルコードの一つの中身を片っ端から読んでみようかと思いましたが、
なんかOSどれか調べてるなぁとか、c++のバージョンチェックしてるなぁとか、
このヘッダインクルードしてたらこっちはインクルードしないよーとか、
この関数ちゃんと動くの?とか
実際に知りたかったことにたどり着く前にboostには挫折してしまいましたが、
c++には”まだ”挫折してないです。
・・・”まだ”なんだよなぁ
どうも、134です。
インターネットとc++は相性悪いからやめとけって言う話は自分でも
どことなくわかっているはずなのになぜかc++に執着してしまっています。
はじめて3か月くらいでしょうか・・・。
boostのサーバーのサンプルコードの一つの中身を片っ端から読んでみようかと思いましたが、
なんかOSどれか調べてるなぁとか、c++のバージョンチェックしてるなぁとか、
このヘッダインクルードしてたらこっちはインクルードしないよーとか、
この関数ちゃんと動くの?とか
実際に知りたかったことにたどり着く前にboostには挫折してしまいましたが、
c++には”まだ”挫折してないです。
・・・”まだ”なんだよなぁ
143デフォルトの名無しさん
2022/03/24(木) 18:01:49.40ID:EzbC8tGw そんなわけで、DialogBoxの引数なんですが、LRESULTだったり、INT_PTRだったりします。
long以上の整数ポインタだったら何でもよいのでしょうか?
long以上の整数ポインタだったら何でもよいのでしょうか?
144デフォルトの名無しさん
2022/03/24(木) 18:10:21.95ID:EzbC8tGw ごめんなさい、全然違いました。
DialogBoxの第四引数につかうウィンドウプロシージャの
DialogProcの型はlong以上の整数型ポインタなのでしょうか?
また、ウィンドウプロシージャって関数であってますよね?
実はクラスでしたとか言わないですよね?
DialogBoxの第四引数につかうウィンドウプロシージャの
DialogProcの型はlong以上の整数型ポインタなのでしょうか?
また、ウィンドウプロシージャって関数であってますよね?
実はクラスでしたとか言わないですよね?
145デフォルトの名無しさん
2022/03/24(木) 19:01:41.84ID:bNSOayig DialogBox の第4引数はダイアログプロシージャー(関数)のアドレス値(ポインタ)だね。
Type: DLGPROC
A pointer to the dialog box procedure.
なお、ダイアログボックスの場合は「ダイアログボックスプロシージャー」といって。
ウィンドウプロシージャーとの共通点は多いけど、同じものではないから、区別して理解する必要があるよ。
DLGPROC と WNDPROC の違いについて調べてみてね
Type: DLGPROC
A pointer to the dialog box procedure.
なお、ダイアログボックスの場合は「ダイアログボックスプロシージャー」といって。
ウィンドウプロシージャーとの共通点は多いけど、同じものではないから、区別して理解する必要があるよ。
DLGPROC と WNDPROC の違いについて調べてみてね
146デフォルトの名無しさん
2022/03/24(木) 19:14:59.99ID:EzbC8tGw147デフォルトの名無しさん
2022/03/25(金) 01:06:11.70ID:1GxlrlpP 20年以上前まではWin32APIに関する本は山ほどあったけどもうそういう時代じゃないから今すぐ辞めたほうがいいよ
一応20年以上前の知識が今でも通用はするけど知ってたらちょっと得する程度で今は他にもっといい手段があるからね
生まれてくる時代が遅すぎたね
一応20年以上前の知識が今でも通用はするけど知ってたらちょっと得する程度で今は他にもっといい手段があるからね
生まれてくる時代が遅すぎたね
148デフォルトの名無しさん
2022/03/25(金) 01:37:15.09ID:4RHKXjgo 日本語ではね
英語ならPavel Yosifovich氏のWindows 10 System Programming, Part 1 と 2 が有る
Pavel Yosifovich氏はインサイドWindowsやWindowsカーネルドライバプログラミングの原著の人だ
誰か翻訳してくれればいいけど、今更Win32本を翻訳したいと思う酔狂な人は居ないだろう…
英語ならPavel Yosifovich氏のWindows 10 System Programming, Part 1 と 2 が有る
Pavel Yosifovich氏はインサイドWindowsやWindowsカーネルドライバプログラミングの原著の人だ
誰か翻訳してくれればいいけど、今更Win32本を翻訳したいと思う酔狂な人は居ないだろう…
149デフォルトの名無しさん
2022/03/25(金) 01:37:29.01ID:5XdEy59o バカ言うなよ
Win32APIはずっとこの先生きのこる
Win32APIはずっとこの先生きのこる
150デフォルトの名無しさん
2022/03/25(金) 01:40:27.96ID:F8nkIqx9 >>148
おまえは英語を読めないのか?読めたとしてもマイクロソフトは解釈が難しい表現ばかりだから、日本マイクロソフトでもわからないことばかり。
おまえは英語を読めないのか?読めたとしてもマイクロソフトは解釈が難しい表現ばかりだから、日本マイクロソフトでもわからないことばかり。
151デフォルトの名無しさん
2022/03/25(金) 06:30:11.55ID:0hAphrOl WIN32APIの本なんか読んだ覚えがない
Win32.hlpとグーグル検索だけでマスターした
もう20年も使ってるが一番長生きでコスパ最強の言語だわ
Win32.hlpとグーグル検索だけでマスターした
もう20年も使ってるが一番長生きでコスパ最強の言語だわ
152デフォルトの名無しさん
2022/03/25(金) 07:15:38.67ID:yedPBFGG Advanced Windowsだけは読んでたな
15年くらい前から1に書いてあるよね
思えば遠くに来たな…
15年くらい前から1に書いてあるよね
思えば遠くに来たな…
153デフォルトの名無しさん
2022/03/25(金) 08:13:48.45ID:EjQkOY3c >>150
英語を読めないなんて一言も書いてないだろ
英語を読めないなんて一言も書いてないだろ
154デフォルトの名無しさん
2022/03/25(金) 10:10:19.86ID:mOX1pyWB155デフォルトの名無しさん
2022/03/25(金) 11:28:00.83ID:7tuvarTq Advancedと言いつつペゾルト本よりよほどプリミティブな部分を網羅してくれてる書籍よね
邦訳版はもはや入手性悪いけど
邦訳版はもはや入手性悪いけど
156デフォルトの名無しさん
2022/03/25(金) 13:43:49.12ID:o7CXkIQI c++やるんだったら英語は必須なのでしょうか。
マイクロソフトのサイトに載っている説明もほぼほぼ英語ですし・・・、
自分は英語読めないんですけど、なんかもう、最近少しなら読めるようになってきました。
頭痛くなりますけど・・・。
マイクロソフトのサイトに載っている説明もほぼほぼ英語ですし・・・、
自分は英語読めないんですけど、なんかもう、最近少しなら読めるようになってきました。
頭痛くなりますけど・・・。
157デフォルトの名無しさん
2022/03/25(金) 13:50:30.58ID:6oNwnU1m158デフォルトの名無しさん
2022/03/25(金) 13:51:07.06ID:6oNwnU1m アホミスしちまったw
- IEEE
+ ISO/IEC
- IEEE
+ ISO/IEC
159デフォルトの名無しさん
2022/03/25(金) 19:29:22.91ID:04aIfOpD >>155
そもそも原題はAdvancedじゃないしな
そもそも原題はAdvancedじゃないしな
160デフォルトの名無しさん
2022/03/26(土) 08:24:31.76ID:PxCGY5CH161デフォルトの名無しさん
2022/03/26(土) 08:47:33.85ID:rc4mKLfq162デフォルトの名無しさん
2022/03/26(土) 09:48:41.10ID:PxCGY5CH >>161
ありがとうございます。
ありがとうございます。
163デフォルトの名無しさん
2022/03/26(土) 10:06:36.44ID:AckD8zcc DeepL翻訳お勧め
164デフォルトの名無しさん
2022/03/26(土) 10:21:19.75ID:PxCGY5CH エディットボックスの中のテキストをGetDlgItemTextでもらってきたのですが(TCHAR*)、
PCSTRに変換する方法がわかりません、便利な関数は用意されていなくて、自分で作ったほうが良いのでしょうか?
char*をwchar_t*に変換するのは見つかったのですが、その逆が出来ません。
PCSTRに変換する方法がわかりません、便利な関数は用意されていなくて、自分で作ったほうが良いのでしょうか?
char*をwchar_t*に変換するのは見つかったのですが、その逆が出来ません。
165デフォルトの名無しさん
2022/03/26(土) 11:13:01.22ID:53jeva53 >>164
GetDlgItemTextA?
GetDlgItemTextW?
A ならそのまま使えるのでは?W なら https://mevius.5ch.net/test/read.cgi/tech/1434079972/53 ::WideCharToMultiByte
GetDlgItemTextA?
GetDlgItemTextW?
A ならそのまま使えるのでは?W なら https://mevius.5ch.net/test/read.cgi/tech/1434079972/53 ::WideCharToMultiByte
166デフォルトの名無しさん
2022/03/26(土) 11:27:14.11ID:v+3Jhngl >>163
d
d
167デフォルトの名無しさん
2022/03/26(土) 12:03:42.82ID:ZxvtMkkN DeepL の方が、Google 翻訳よりも高品質
でも最近、Googleも向上した。
DeepLを真似たのかも
でも最近、Googleも向上した。
DeepLを真似たのかも
168デフォルトの名無しさん
2022/03/26(土) 12:19:49.39ID:PxCGY5CH169デフォルトの名無しさん
2022/03/26(土) 12:27:23.77ID:PxCGY5CH >>165
ありがとうございます。
Aの方使ったら出きるっぽいです。
なんですけど・・・今それを確認しようとしてmbstowcs_sを使ってみたけれど
文字化けが・・・どっかがミスッてるはずなんですけど、しばらくかかりそう。
とりあえずローカルウィンドウで見たらchar変数の中にバッチしがいってたので
当初の目的を解決できました。
こんなことで3時間くらい使ってしまいました。
頭痛い・・・。
ありがとうございます。
Aの方使ったら出きるっぽいです。
なんですけど・・・今それを確認しようとしてmbstowcs_sを使ってみたけれど
文字化けが・・・どっかがミスッてるはずなんですけど、しばらくかかりそう。
とりあえずローカルウィンドウで見たらchar変数の中にバッチしがいってたので
当初の目的を解決できました。
こんなことで3時間くらい使ってしまいました。
頭痛い・・・。
170デフォルトの名無しさん
2022/03/26(土) 12:57:20.76ID:9jtFEqJp 文字コードについてはMSがもっとも時間かけて多言語対応してるからMSのルールを守るのが吉。
171デフォルトの名無しさん
2022/03/26(土) 13:14:01.93ID:rk/dILHG DeepLをMSが買収して、ドキュメントを全部高品質な日本語で提供してくれ
172デフォルトの名無しさん
2022/03/26(土) 13:15:53.49ID:9jtFEqJp いらんことはせずに昔のMSDNライブラリのように人に翻訳させろ。
173デフォルトの名無しさん
2022/03/26(土) 14:22:58.08ID:u+BPDoH4 文字列を入出力するAPIは末尾Wを使うよう心掛けよ
174デフォルトの名無しさん
2022/03/26(土) 14:25:53.60ID:ZxvtMkkN 情報通信研究機構(NICT)も翻訳バンクを運用して、
「みんなの自動翻訳」を、Linux に技術提供している
みんなの自動翻訳@TexTra®
https://mt-auto-minhon-mlt.ucri.jgn-x.jp/
漏れは使った事ないけど
「みんなの自動翻訳」を、Linux に技術提供している
みんなの自動翻訳@TexTra®
https://mt-auto-minhon-mlt.ucri.jgn-x.jp/
漏れは使った事ないけど
175デフォルトの名無しさん
2022/03/26(土) 14:27:04.89ID:LcghdYUH みかん星人事件で止めたんじゃなかったっけ
176デフォルトの名無しさん
2022/03/26(土) 14:28:59.19ID:9jtFEqJp >>173
だからMSのルールを守りなさい。
だからMSのルールを守りなさい。
177デフォルトの名無しさん
2022/03/26(土) 18:35:55.11ID:39VlCDpx 文字や文字列の記述は TCHAR(_TCHAR) 系統のマクロで統一するのが旧来からの作法だわね。
最近の Visual Studio の C/C++ はデフォルトで UNICODE,_UNICODE が定義されているので。
APIの末尾にWを付けるというルールは忘れていい気もする。
必要時のみA(やW)を付けて、あとは WideCharToMultiByte、MultiByteToWideChar を使う程度かな
最近の Visual Studio の C/C++ はデフォルトで UNICODE,_UNICODE が定義されているので。
APIの末尾にWを付けるというルールは忘れていい気もする。
必要時のみA(やW)を付けて、あとは WideCharToMultiByte、MultiByteToWideChar を使う程度かな
178デフォルトの名無しさん
2022/03/26(土) 18:41:49.01ID:G8hldp18 TCHARなんかもう10年近く見かけてない。
普通にLとだけ書く。
マルチバイトにする意味ないんだし。
普通にLとだけ書く。
マルチバイトにする意味ないんだし。
179デフォルトの名無しさん
2022/03/26(土) 19:14:13.28ID:BLvFEtLU マクロの結果で分岐させるコードだと
インテリセンスとかに負荷かかる印象しかないから
気づくとW系のコードで埋まっている
インテリセンスとかに負荷かかる印象しかないから
気づくとW系のコードで埋まっている
180デフォルトの名無しさん
2022/03/26(土) 19:22:58.17ID:Zkd3VYsw UTF8になったら、またマルチバイトに戻るわけではいの?
181デフォルトの名無しさん
2022/03/26(土) 19:41:02.41ID:39VlCDpx サロゲートペア対応とかで、特定のWin32APIの仕様が混乱してたりして、メリットが無くなってきてるからね。
将来的に ANSI/UTF8 がデフォルトになる可能性も完全には否定できず
将来的に ANSI/UTF8 がデフォルトになる可能性も完全には否定できず
182デフォルトの名無しさん
2022/03/26(土) 20:07:18.83ID:tpQ7cDA8183デフォルトの名無しさん
2022/03/26(土) 20:14:40.35ID:39VlCDpx そうね、今は基本W系だよね。
ただそうねえ、念のためA系についても忘れないでおいた方がいいかも、とは少しだけ思う。
https://docs.microsoft.com/ja-jp/windows/apps/design/globalizing/use-utf8-code-page
ただそうねえ、念のためA系についても忘れないでおいた方がいいかも、とは少しだけ思う。
https://docs.microsoft.com/ja-jp/windows/apps/design/globalizing/use-utf8-code-page
184デフォルトの名無しさん
2022/03/26(土) 20:57:55.95ID:tpQ7cDA8 忘れてはいないからこそ忘れてる(OR 分かっていない)人が混ざった時の問題が怖いのよ
185デフォルトの名無しさん
2022/03/26(土) 21:11:34.30ID:9k2FRpJr プラットフォームによってはワイド版のPOSIX関数がなかったりするから微妙だなあ
186デフォルトの名無しさん
2022/03/26(土) 21:22:26.00ID:xinKsQI1187デフォルトの名無しさん
2022/03/26(土) 21:22:54.54ID:PxCGY5CH ダイヤルボックスで指定したIPアドレスとポートで作ったソケットからちょっとした文字列を
送ろうとしたんですけどLNK2019エラーが出てしまいます。
VisualStudio2022、c++14、サブシステムはWindows (/SUBSYSTEM:WINDOWS)です。
エラー2019は何となくサブシステムが違うようなイメージで間違っていないでしょうか。
送ろうとしたんですけどLNK2019エラーが出てしまいます。
VisualStudio2022、c++14、サブシステムはWindows (/SUBSYSTEM:WINDOWS)です。
エラー2019は何となくサブシステムが違うようなイメージで間違っていないでしょうか。
188デフォルトの名無しさん
2022/03/26(土) 21:32:36.07ID:9JnLg/Xm >>187
> エラー2019は何となくサブシステムが違うようなイメージで間違っていないでしょうか。
何故ググらないの?
https://docs.microsoft.com/ja-jp/cpp/error-messages/tool-errors/linker-tools-error-lnk2019
> エラー2019は何となくサブシステムが違うようなイメージで間違っていないでしょうか。
何故ググらないの?
https://docs.microsoft.com/ja-jp/cpp/error-messages/tool-errors/linker-tools-error-lnk2019
189デフォルトの名無しさん
2022/03/26(土) 21:37:24.88ID:PxCGY5CH >>188
すみません、前回別の事で同じエラーが出たときに読んだんですけどよくわからなくて
マイクロソフト見てもわからないと思ったのですけど、もう一度読み直してみると、
何か忘れてるのかなぁって思ったので、もう少し頑張ってみます。
すみません、前回別の事で同じエラーが出たときに読んだんですけどよくわからなくて
マイクロソフト見てもわからないと思ったのですけど、もう一度読み直してみると、
何か忘れてるのかなぁって思ったので、もう少し頑張ってみます。
190デフォルトの名無しさん
2022/03/26(土) 21:39:46.78ID:wvtz3UMM クリティカルセクションで質問です
EnterCriticalSectionでスレッドの排他制御を行うとき、
作成したスレッド間では排他制御できています
これを、作成したスレッドではなく呼び出し元のプロセス側で
EnterCriticalSectionを実行しても、その間はスレッドの動作は
排他制御されて停止する(待つ)という認識で間違いないでしょうか?
EnterCriticalSectionでスレッドの排他制御を行うとき、
作成したスレッド間では排他制御できています
これを、作成したスレッドではなく呼び出し元のプロセス側で
EnterCriticalSectionを実行しても、その間はスレッドの動作は
排他制御されて停止する(待つ)という認識で間違いないでしょうか?
191デフォルトの名無しさん
2022/03/26(土) 22:55:33.42ID:39VlCDpx 質問の意図が正しく理解できてない可能性がありますが。
A critical section object provides synchronization similar to that provided by a mutex object,
except that a critical section can be used only by the threads of a single process.
Critical section objects cannot be shared across processes.
要約:
「クリティカル セクション」 オブジェクトはミューテックス オブジェクトと同様な同期を実現しますが、
クリティカル セクション オブジェクトは1つのプロセス内のスレッド間でだけ使えます。
クリティカルセクションオブジェクトは、プロセス間で共有できません。
A critical section object provides synchronization similar to that provided by a mutex object,
except that a critical section can be used only by the threads of a single process.
Critical section objects cannot be shared across processes.
要約:
「クリティカル セクション」 オブジェクトはミューテックス オブジェクトと同様な同期を実現しますが、
クリティカル セクション オブジェクトは1つのプロセス内のスレッド間でだけ使えます。
クリティカルセクションオブジェクトは、プロセス間で共有できません。
192デフォルトの名無しさん
2022/03/26(土) 23:03:19.27ID:tpQ7cDA8 >>189
"何故" LNK2019が起きているかをぐぐったり他人に投げる前に確認しないと遠回りになりそう
"何故" LNK2019が起きているかをぐぐったり他人に投げる前に確認しないと遠回りになりそう
193デフォルトの名無しさん
2022/03/26(土) 23:16:32.24ID:iKQRZLPO >>177
自分で勝手に W つけちゃだめだと思うよ…
ちゃんと「windows.h をインクルードする前に」 #define UNICODE しているか確認してね
C++11 or later になってからずいぶんと楽になりました…
https://mevius.5ch.net/test/read.cgi/tech/1434079972/53
自分で勝手に W つけちゃだめだと思うよ…
ちゃんと「windows.h をインクルードする前に」 #define UNICODE しているか確認してね
C++11 or later になってからずいぶんと楽になりました…
https://mevius.5ch.net/test/read.cgi/tech/1434079972/53
194デフォルトの名無しさん
2022/03/26(土) 23:17:11.29ID:iKQRZLPO >>190
つソース出せ、話はそれからだ
つソース出せ、話はそれからだ
195デフォルトの名無しさん
2022/03/26(土) 23:25:46.00ID:wvtz3UMM >>191
ありがとうございます
> クリティカル セクション オブジェクトは1つのプロセス内のスレッド間でだけ使えます。
> クリティカルセクションオブジェクトは、プロセス間で共有できません。
これは認識しているのですが、この文面を借りれば
「クリティカル セクション オブジェクトは1つのプロセス(メインプロセス・スレッド呼び出し側)と
スレッド(メインプロセスから呼び出されたスレッド)間で使えるのかどうか」
ということです
よろしくお願いします
ありがとうございます
> クリティカル セクション オブジェクトは1つのプロセス内のスレッド間でだけ使えます。
> クリティカルセクションオブジェクトは、プロセス間で共有できません。
これは認識しているのですが、この文面を借りれば
「クリティカル セクション オブジェクトは1つのプロセス(メインプロセス・スレッド呼び出し側)と
スレッド(メインプロセスから呼び出されたスレッド)間で使えるのかどうか」
ということです
よろしくお願いします
196デフォルトの名無しさん
2022/03/26(土) 23:48:22.49ID:5YtPDb7J >>195
複数のスレッドで使えると思いますよ、というか、そのためのクリティカルセクションでしょう?
ただ、私もクリティカルセクションの使い方がまずいのか、スタベーションに悩まされたまま放置しているので、断言はできないけど
なおちゃんとハンドルを static かヒープに置いていますか?スタック上にハンドルを置いていたら無意味ですよ…
複数のスレッドで使えると思いますよ、というか、そのためのクリティカルセクションでしょう?
ただ、私もクリティカルセクションの使い方がまずいのか、スタベーションに悩まされたまま放置しているので、断言はできないけど
なおちゃんとハンドルを static かヒープに置いていますか?スタック上にハンドルを置いていたら無意味ですよ…
197デフォルトの名無しさん
2022/03/26(土) 23:54:48.59ID:39VlCDpx >>195
使えます(正しくコーディングされていれば
念のため補足すると、プロセスというのはスレッドの集合であり。
プロセス生成と同時にスタートするスレッドのことを「メインスレッド」と言います。
なので、より正しい言い方としては以下のようになると思われます。
・メインスレッド
・(メインスレッドと同じプロセスに属する、メインスレッド等で生成された)メインスレッド以外のスレッド
これらのスレッド間でクリティカルセクションオブジェクトを共有することができます(排他制御可能です)
使えます(正しくコーディングされていれば
念のため補足すると、プロセスというのはスレッドの集合であり。
プロセス生成と同時にスタートするスレッドのことを「メインスレッド」と言います。
なので、より正しい言い方としては以下のようになると思われます。
・メインスレッド
・(メインスレッドと同じプロセスに属する、メインスレッド等で生成された)メインスレッド以外のスレッド
これらのスレッド間でクリティカルセクションオブジェクトを共有することができます(排他制御可能です)
198デフォルトの名無しさん
2022/03/26(土) 23:59:25.14ID:wvtz3UMM >>196
ありがとうございます
何か不具合が起きていると言うことではなくて、クリティカルセクションの
仕様について確認しようと思って質問しました
結局、そういうコードを書いて確認しましたが、メインプロセスではEnterCriticalSection
が効きませんでした
メインプロセスでEnterCriticalSectionを実行すれば、その間スレッドが止まる(その逆もある)
ということがもしかして可能なのかなと思った訳です
どうも失礼しました
ありがとうございます
何か不具合が起きていると言うことではなくて、クリティカルセクションの
仕様について確認しようと思って質問しました
結局、そういうコードを書いて確認しましたが、メインプロセスではEnterCriticalSection
が効きませんでした
メインプロセスでEnterCriticalSectionを実行すれば、その間スレッドが止まる(その逆もある)
ということがもしかして可能なのかなと思った訳です
どうも失礼しました
199デフォルトの名無しさん
2022/03/27(日) 00:06:26.31ID:AVpqtd2i >>197
入れ違いになってすみません
使えるとレス頂いたのでプログラムを確認しましたが、これは書き方が
悪かったようで確認になってませんでした
レス頂いた内容でとても分かりやすく理解できました
どうもありがとうございました
入れ違いになってすみません
使えるとレス頂いたのでプログラムを確認しましたが、これは書き方が
悪かったようで確認になってませんでした
レス頂いた内容でとても分かりやすく理解できました
どうもありがとうございました
■ このスレッドは過去ログ倉庫に格納されています
