1 名前:デフォルトの名無しさん [2019/02/27(水) 15:09:08.64 ID:6ExXwgQU.net] Win32APIについての質問はこちらへどうぞ。 ■注意 ・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。 ・日本語版MSDN Online Libraryは不完全です。 英語版( msdn.microsoft.com/en-us/library/ )の利用推奨。 ・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。 ・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで ■過去スレ Win32API質問箱 Build124 mevius.5ch.net/test/read.cgi/tech/1510395780/ Win32API質問箱 Build123 mevius.2ch.net/test/read.cgi/tech/1475897582/ Win32API質問箱 Build122 echo.2ch.net/test/read.cgi/tech/1451988219/ Win32API質問箱 Build121 echo.2ch.net/test/read.cgi/tech/1438695290/ Win32API質問箱 Build120 echo.2ch.net/test/read.cgi/tech/1428570962/ ■関連スレ Visual Studio 2019 mevius.5ch.net/test/read.cgi/tech/1548765663/ Visual Studio 2017 Part6 mevius.5ch.net/test/read.cgi/tech/1528645068/ 【C++】 DirectX初心者質問スレ Part41 【C】 mevius.5ch.net/test/read.cgi/tech/1521786252/
240 名前:デフォルトの名無しさん mailto:sage [2019/07/12(金) 12:00:48.30 ID:Y/iKed6k.net] なんでここまで説明しないと分からんのだろ 特にハイコンテクストって訳でもないのに
241 名前:デフォルトの名無しさん mailto:sage [2019/07/12(金) 12:24:57.20 ID:gSsTJBIy.net] 誰が誰に対して? 1回目の誰が2回目の誰に対してマージされて処理されるのか? おやすみ
242 名前:デフォルトの名無しさん mailto:sage [2019/07/12(金) 12:53:40.57 ID:nIUn02wm.net] GetCursorPosでポインターの場所、GetKeyStateでマウスボタンが押されてるか離されてるか 取得できるから、あとは時間測って適当にクリックとダブルクリック、ドラッグを判別する SwapMouseButtonで右利き左利きとか、GetDoubleClickTimeでダブルクリック判定する時間とか そんなのを設定できるようにしとけば完璧 これがおまえらが一番納得する方法だろwww
243 名前:デフォルトの名無しさん [2019/07/12(金) 17:04:32.98 ID:Uu5c0ODM.net] 自信満々で嘘書くな迷惑
244 名前:デフォルトの名無しさん mailto:sage [2019/07/13(土) 05:00:55.61 ID:5W75r4eA.net] クリック動作はダブルクリックの直前に発生しても致命的にならないものであればいんでない? クリック 選択 ダブルクリック 実行 これを逆にするようなら難しくなるだけかと
245 名前:デフォルトの名無しさん mailto:sage [2019/08/04(日) 16:34:02.68 ID:78/vdzUN.net] QueryPerformanceFrequencyが10000000を返してくるようになってた 将来はQPCは常に100ナノ秒単位で表しますよってなっていくんだろうか 今回たまたま自分の環境がそうなってしまっただけなんだろうか
246 名前:蟻人間 mailto:sage [2019/08/04(日) 21:08:54.77 ID:QRYqe1Xw.net] https://katahiromz.web.fc2.com/msgcrack/ja Win32の人、使ってみてね。便利だよ。
247 名前:デフォルトの名無しさん [2019/08/05(月) 13:40:42.17 ID:NOA3rn3w.net] グロ中尉
248 名前:デフォルトの名無しさん [2019/08/07(水) 11:59:12.69 ID:6nD1xIcw.net] 現在、AddFontResourceとRemoveFontResourceを使って プログラムからフォントを登録して使っています。 でもこの方法だと、RemoveFontResourceを呼んでも システムを再起動しないと登録されたままになってしまいます。 その間はフォントファイルも削除できないです。 どうにかプログラム使用時だけフォントを有効にする方法はないでしょうか? プログラム終了すれば登録されたフォントも登録解除されるような方法がいいです。
249 名前:デフォルトの名無しさん mailto:sage [2019/08/07(水) 12:59:48.16 ID:u0NlqDQ2.net] >>245 ドキュメントを読むとWM_FONTCHANGEをブロードキャストする必要があるらしいけどやってる? もしくはAddFontResourceExでFR_PRIVATEを指定すると > When the process terminates, the system will remove all fonts installed by the process with the AddFontResourceEx function とあるからそれに頼るのもありかも
250 名前:デフォルトの名無しさん mailto:sage [2019/08/07(水) 13:05:20.88 ID:6nD1xIcw.net] >>246 AddFontResourceExでFR_PRIVATE指定でもしかするといけるかもしれませんね! 試してみます。ありがとうございます。
251 名前:デフォルトの名無しさん mailto:sage [2019/09/05(木) 10:39:03.32 ID:qYKhXOia.net] 質問させてください。 日本語の Windows10 で、Windows Explorer のアドレスバーに 日本語で「デスクトップ」とだけ入力してエンターキーを押すとデスクトップに移動できます。 他にも、「ドキュメント」「ピクチャ」「ダウンロード」「3D オブジェクト」「OneDrive」など いくつかの単語が特定のフォルダーと関連付けられていますが、 この対応をプログラムで調べる方法はありますでしょうか。 例えば SHGetFileInfo を使えばデスクトップのフルパスから 「デスクトップ」という日本語の display name を得ることはできますが、 SHGetFileInfo では上記のような関連付けの有無は判定できませんし、 そもそもフルパスから日本語名を得るのではなくその逆をしたいので、 SHGetFileInfo はあまり役に立たなそうです。 何かお分かりのことがありましたら教えていただけないでしょうか。 どうぞよろしくお願いします。
252 名前:デフォルトの名無しさん mailto:sage [2019/09/05(木) 10:44:01.37 ID:Cn2xW5Dx.net] 内部で対応表持たせるしかないだろ
253 名前:蟻人間 mailto:sage [2019/09/05(木) 11:22:27.86 ID:sYiofqED.net] SHGetLocalizedNameという関数が日本語パス名を返すみたいだが、逆はない。 SHGetSpecialFolderLocation/SHGetSpecialFolderPathで特殊フォルダのパス名を取得し、 SHGetLocalizedNameで日本語パス名を取得する。 それで対応表を作るといいだろう。
254 名前:デフォルトの名無しさん mailto:sage [2019/09/05(木) 11:23:33.11 ID:A2EHupI7.net] それは対応表作るにしても結構苦労するよ 例えば俺のWin10のユーザフォルダの中を見ると 同じフォルダ内にドキュメント、と、ピクチャ、が二つずつあったりする ディスプレイネームが同じでITEMIDLISTが違うアイテムが 同一フォルダに複数存在してたりする環境もあるって事 俺の場合は片方はOneDriveでもう一つはローカル用 同じ名前で同じフォルダ だから単にドキュメントといってもどっちの事か分からんwwwという事態に 苦労するよ、それ
255 名前:デフォルトの名無しさん mailto:sage [2019/09/05(木) 11:28:46.02 ID:A2EHupI7.net] てか、同じ名前のアイテムを同一フォルダに突っ込むWindowsが糞仕様なんだけど 普通に使う分にもどっちがどっちか分からんでムカつく OneDriveの方は「ドキュメント(OneDrive)」とか区別付く名前にしとけよ それかOneDriveっていうフォルダ掘ってその下に配置しろよ 同じ名前のアイテムが同じフォルダにあると混乱することぐらい分かるだろ糞
256 名前:デフォルトの名無しさん mailto:sage [2019/09/05(木) 12:28:53.83 ID:ug+Xr8Ig.net] 独り言はチラ裏へ
257 名前:デフォルトの名無しさん mailto:sage [2019/09/05(木) 12:29:13.60 ID:Cn2xW5Dx.net] アクセス履歴見ながら対応表を順次変更すりゃいい そういうのはアイデア次第でどうとでもなる
258 名前:デフォルトの名無しさん mailto:sage [2019/09/05(木) 12:30:06.05 ID:qYKhXOia.net] >>249 レスどうもありがとうございます。 他の方のレスを拝見してみても、やっぱりなかなか難しそうですね。 >>250 大変有用な情報どうもありがとうございます。この方針が一番現実的そうですね。 SHGetSpecialFolderLocation/SHGetSpecialFolderPath は CSIDL しか受け付けなくて、「3D オブジェクト」のように CSIDL がないフォルダもあるので、 CSIDL の代わりに GUID が使える SHGetKnownFolderIDList を使おうと思います。 ただいずれにしても、どのフォルダの CSIDL/GUID を指定するかは プログラムの段階で決めないという認識で正しいでしょうか? その部分を自動で決められれば最高なのですが難しそうですね。 あと、日本語名を取得するのに SHGetLocalizedName を紹介していただきましたが、 SHGetFileInfo を使うのとどちらがいいでしょうか? SHGetFileInfo なら直接日本語名が得られるのに対して、SHGetLocalizedName だと 'the ID of the localized file name in the resource file' が返ってきますが、 こちらのほうがパフォーマンス的に有利だったりするのでしょうか? >>251 貴重なご意見どうもありがとうございます。確かになかなか問題の根は深そうです。 エクスプローラーのアドレスバーはそのあたりをいい感じに解決しているようなので その仕組みをそのまま拝借できたら楽なのですが、そう簡単には行かなさそうですね。
259 名前:デフォルトの名無しさん mailto:sage [2019/09/05(木) 12:39:12.77 ID:qYKhXOia.net] >>252 >>254 レスどうもありがとうございます。 確かに Windows のフォルダ階層の仕組みは少し分かりにくいところがありますが、 今回の件についてはその問題はあまり関係なくて、 ちょっと誤解を与えてしまっている気がするので改めてやりたいことを説明させていただきます。 エクスプローラでは、今どのフォルダを開いているかにかかわらず、 アドレスバーに単に「デスクトップ」とだけ入力してエンターキーを押せばデスクトップに移動できます。 つまり、エクスプローラーの中では「デスクトップ」という単一の単語とデスクトップのフルパスとが 対応付けられているということになります。そして私は、この対応表を取得したいと考えております。
260 名前:デフォルトの名無しさん mailto:sage [2019/09/05(木) 13:04:18.60 ID:REbzCKHr.net] 質問です。 ファイルに関連付けされている実行ファイルパスを取得するのに FindExecutable()やAssocQueryString()を使っているのですが、 一部関連付けが取得できません。 どうやら関連付け先の実行ファイルの種類がWindowsパッケージ(デスクトップ)版と ストアアプリ版とでは動作が異なるらしく、パッケージ版は上記APIで取得できる ようですがストアアプリ版は取得できないようです。 仕方がないのでレジストリを直接たどる方法を模索しているのですが、 パッケージ版は分かるのですがストアアプリ版がよく分りません。 自分で調べた限りでは、HKCR\{拡張子}\OpenWithProgidsのREG_NONE型の{名前} を元に、HKCR\{名前}\ApplicationのApplicationNameまでたどればいいと いう情報を見つけて実践してみました。が、
261 名前:デフォルトの名無しさん mailto:sage [2019/09/05(木) 13:05:00.53 ID:REbzCKHr.net] (つづき) 実際に.pdfがedgeに関連付けられていて上記APIでは取得できない環境 においてレジストリをたどると \HKCR\.pdf\OpenWithProgids のREG_NONE型の名前「AppXd4nrz8ff68srnhf9t5a8sbjyar1cr723」を元に \HKCR\AppXd4nrz8ff68srnhf9t5a8sbjyar1cr723\Application のApplicationNameまではたどり着きました。 しかしこれに設定されている文字列が @{Microsoft.MicrosoftEdge_44.18362.329.0_neutral__8wekyb3d8bbwe?ms-resource://Microsoft.MicrosoftEdge/Resources/AppName} となっています。 どう見ても実行パスではないというか、これをさらにどうにかするのか たどる方法が間違っているのか分からなくなりました。 正しい方法をよろしくお願いします。
262 名前:デフォルトの名無しさん mailto:sage [2019/09/05(木) 13:11:24.93 ID:d3q2zCXJ.net] >>256 試しにmspaintと入力してエンター押したらペイントが起動しない? と言う事は入力が日本語ならC:\Users\<ユーザー名>\この中の対応するフォルダを開く とか内部でやってるんじゃないかな 英語の場合はLoadLibraryと同じように Explorer.exeと同じディレクトリ Explorer.exeのカレントディレクトリ システムディレクトリ Windowsディレクトリ 環境変数のPATHに指定されてるディレクトリ の順で検索されてmspaintが起動とか
263 名前:デフォルトの名無しさん mailto:sage [2019/09/05(木) 13:14:07.55 ID:d3q2zCXJ.net] 英語とか日本語とか関係なかったねw
264 名前:デフォルトの名無しさん mailto:sage [2019/09/05(木) 22:24:50.64 ID:qYKhXOia.net] >>259 レスありがとうございます。お返事が遅くなってしまい申し訳ないです。 > 試しにmspaintと入力してエンター押したらペイントが起動しない?
265 名前:r> 本当ですね! しかし一方で、C:\Users\<ユーザ名>\AppData というフォルダはあるのに アドレスバーに AppData と入力してエンターを押しても期待通りの動作はせず、 なかなかルールは複雑みたいです。 また、日本語環境ではアドレスバーに「Desktop」と入力してエンターを押しても 期待される動作にはならず、「デスクトップ」でなければならないようなので、 やはりシステムの言語設定は関係あるように思われます。 SHGetFileInfo で取得できる displayName を調べれば 日本語環境ならデスクトップフォルダから「デスクトップ」という文字列が得られるので その逆ができればいいかと思ったのですが、実際はそれほど簡単な問題ではないようです。 例えば私の環境では C:\Users\<ユーザ名> の displayName は ウィンドウズの GUI から設定できる「ユーザ名(アカウント名)」になっていますが、 エクスプローラーのアドレスバーで期待通りの動作になる文字列は 「ユーザ名(アカウント名)」ではなく「フルネーム」でした。 エクスプローラーのアドレスバーの動作を完全に模倣するのは難しそうですが、 ここでいただいたアドバイスを元に、現実的な方法を考えていきたいと思います。 [] [ここ壊れてます]
266 名前:蟻人間 mailto:sage [2019/09/05(木) 22:38:16.11 ID:oF7lOGXi.net] レジストリにAppPathという設定もあるぞ。
267 名前:デフォルトの名無しさん mailto:sage [2019/09/06(金) 19:55:29.68 ID:H/ygVIaK.net] >>261 いくつか気付いた事を報告 その1/2 ・ユーザーフォルダ内のフォルダで移動できたもの アドレス帳 お気に入り デスクトップ ドキュメント ピクチャ ビデオ ミュージック 仮説1 〜\<ユーザー名>\(日本語名で表示される一部のフォルダ)って条件なのかもしれない 仮説2 仮説1の一部のフォルダで法則があるとしたらレジストリで保存場所を変更できるフォルダではないか? 試しに「プログラム」「スタートアップ」と入力しても移動できた レジストリの「HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders」 ここに列挙されてるやつがヒントになるかもしれない ・レジストリをヒントに入力して移動できたもの プログラム recent sendto スタート メニュー スタートアップ ・その他で移動できたもの (ツリービューで日本語表記をヒントにした) パブリック コンピュータ ネットワーク コントロール パネル ごみ箱
268 名前:デフォルトの名無しさん mailto:sage [2019/09/06(金) 20:02:10.05 ID:H/ygVIaK.net] いくつか気付いた事を報告 その2/2 ・ここまでの間に気付いた事 アドレスバーに「コ」と入力すると コントロール パネル コンピュータ コンピュータの簡単操作センター この3つの入力候補が現れたけど 入力候補が表示されるのとされないのもあった あと日本語・英語混在(sendto recent)でさらに混乱させる事になってしまったかもしれないw
269 名前:デフォルトの名無しさん mailto:sage [2019/09/06(金) 20:40:37.12 ID:H/ygVIaK.net] ドキュメントがDocumentsの表示になった時の直し方で LocalizedResourceNameが出てくるからそれをヒントにするのもいいかもしれない
270 名前:デフォルトの名無しさん mailto:sage [2019/09/06(金) 23:22:21.54 ID:ZBxclhCf.net] >>262 コメントどうもありがとうございます。 色々とレジストリにもヒントが隠れてそうなので調べてみたいと思います。 >>263-265 大変有用な情報どうもありがとうございます。 書いていただいた内容を見ながら実験してみて分かったこととして、 問題のアドレスバーの挙動は環境によって相当にブレがあるようです。 私の環境(Windows 10 Pro)では、 >>263 に書いていただいた文字列のうち 「recent」「コンピュータ(ちなみにコンピュータ『ー』もダメ)」は 期待通りの動作にならず、代わりにブラウザ(私の環境では Firefox)で 入力した文字列が検索されてしまいました。 私の環境ではアドレスバーに「Creative Cloud Files」と入力すると 対応する Adobe のソフトが作ったフォルダが開かれるので ある程度外部ソフト等の影響があるだろうとは思っていたのですが、 「コンピュータ」ですら環境によって結果が異なるとは予想外でした。 ちなみに外部ソフトの影響に関しては、レジストリの HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace に登録されているものが該当しているような気がするのですが、 確かなことは分かっていません。 ともあれ、非常に興味深い実験結果と考察を読ませていただき 大変勉強になりました。どうもありがとうございます。 また何かお気づきのことがあれば教えていただけると嬉しく思います。
271 名前:デフォルトの名無しさん mailto:sage [2019/09/07(土) 09:05:50.93 ID:/U7tKF4y.net] >>266 10の場合はコンピュータがPCに変わったんだと思う
272 名前:デフォルトの名無しさん [2019/09/07(土) 09:58:32.00 ID:dh6f1+zl.net] これはひどい
273 名前:デフォルトの名無しさん mailto:sage [2019/09/07(土) 13:40:15.53 ID:LGCtCXOo.net] デフォルトで用意されている日本語のフォルダ名を英語に戻す https://laboradian.com/use-en-folder-name/ 11個の日本語名になっているフォルダ 日本語名のフォルダには、desktop.ini という隠しファイルがある
274 名前:デフォルトの名無しさん mailto:sage [2019/09/12(木) 18:25:54.76 ID:h3dV0Q14.net] Win32アプリのバージョンリソースについての質問です。 自作アプリの1.0.0をリリースした後、1.1.0を作成中にベータ版を出す場合、 リソースのFILEVERSIONやPRODUCTVERSIONはどのように記述するのがよいのでしょうか。 1,1,0,0は、1.1.0の正式版に使いたいのですが、これより大きい値を付けるのも変だし、 数字以外の文字は入力できないようなので。
275 名前:デフォルトの名無しさん mailto:sage [2019/09/12(木) 19:23:34.97 ID:WE18f4SS.net] 1.0.0.1とかはあかんの?
276 名前:デフォルトの名無しさん mailto:sage [2019/09/12(木) 19:48:34.37 ID:5JZ2mwNb.net] 好きにしろよww 自作アプリなんて俺は1.0も1.1も2.0もみんなβだから1.00から0.01刻みで増やしてる 昔はカスタムビルドステップでビルド番号もつけてたけど今はやってない
277 名前:デフォルトの名無しさん mailto:sage [2019/09/12(木) 20:46:30.04 ID:igJ/H+nC.net] ちょろめとかふぃれふぉxはメジャーの数字上げ過ぎてひどいことになってるな ばかなんですかね
278 名前:デフォルトの名無しさん [2019/09/13(金) 10:15:47.66 ID:wKEqF87n.net] 1.1.0.α 1.1.0.β 1.1.0.γ
279 名前:デフォルトの名無しさん [2019/09/13(金) 10:18:26.30 ID:ud7Tmahn.net] 1.0.0.01 1.0.0.011 1.0.0.0111 1.0.0.01111
280 名前:デフォルトの名無しさん mailto:sage [2019/09/13(金) 11:29:05.95 ID:aNvomMID.net] >>271 > 1.0.0.1とかはあかんの? やっぱりこれが妥当なんですかね。 他のアプリのベータ版も見てみたいとは思うのですが。 秀丸エディタは、ベータ版は4桁目を増やし続けて、リリース版には99を入れてました。 1.1.0.99が1.1.0のリリース版という法則でした。 > 1.1.0.α > 1.0.0.01 FILEVERSIONやPRODUCTVERSIONには、αや01は入力できないです。 必ず4つの数字を入れないと、勝手に0が入ってしまいますし。
281 名前:デフォルトの名無しさん mailto:sage [2019/09/13(金) 12:49:50.53 ID:IRP8OWhI.net] 昔、同僚にクラス設計やコメントの書式にやたら拘る奴がいたの思い出した 綺麗なソースコード書いてたけど、まったく動かないゴミですぐ職場から消えたわw
282 名前:デフォルトの名無しさん mailto:sage [2019/09/13(金) 12:54:34.90 ID:NSArXc0X.net] そういう人って恋人も見た目重視にしてそう ソースコード(見た目)って意味で
283 名前:デフォルトの名無しさん mailto:sage [2019/09/13(金) 17:47:19.57 ID:+RoIj51L.net] >>276 所詮決め事なんで>>272 の言うとおり好きにしてくださいって話だけど 良くありがちなのは
284 名前:<Wャーバージョン.マイナーバージョン.ビルドバージョン みたいな メジャーバージョンはアーキテクチャとかUIの大きな変更とかユーザから見ても 変更されたことが分かるような場合 マイナーバージョンは単機能追加とかバグ修正などユーザから一見分からない ような軽微な変更の場合 ビルドバージョンは作業途中の状態を管理するための連番や単一作業の区切りを 管理するための連番とか みたいな感じで自分で目的を決めて使うしかないよ 他には作業の効率管理のためにさらにビルド回数を最後に付けてコンパイルする たびに番号加算していくとか 後はOSのバージョンごとにパッキングを変える場合はPRODUCTOVERSIONと FILEVERSIONを関連性は持たせるけど個別に管理するとか >>273 あれは企業的に仕事をしてますよアピールなので残念なのは経営層か 投資家かな バグ修正はマイナーバージョン、それ以外はすべてメジャーバージョンの修正に することですごくたくさん仕事してますよがアピールできるので [] [ここ壊れてます]
285 名前:デフォルトの名無しさん [2019/09/13(金) 17:52:57.53 ID:xaEp9cr2.net] >>273 さんはそんなこと言われなくても判ってて書いてるだろ
286 名前:デフォルトの名無しさん mailto:sage [2019/09/13(金) 23:06:09.82 ID:ZW8mwhnp.net] INVALID_HANDLE_VALUEってマジで糞だよな うっかりしてると失敗したときNULLが返ってくるって勘違いするというか ボーッとしてるとそういうコード書いちまうことがある 大概のAPIでは失敗したときNULLが返ってくるってのもある 混在いやん
287 名前:デフォルトの名無しさん mailto:sage [2019/09/13(金) 23:10:11.55 ID:ZW8mwhnp.net] あと、なんでINVALID_HANDLE_VALUEが必要になったのか技術的な背景が気になる 普通に0を返しとけばいいじゃん、って思うよね 他のAPIがそうなってるんだから 謎
288 名前:デフォルトの名無しさん mailto:sage [2019/09/13(金) 23:49:45.81 ID:xZuGkTzd.net] お前だけじゃボケ
289 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 00:13:31.65 ID:n9TGnnZi.net] >>281 どんなAPIでも最低限の仕様確認してから使えよ
290 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 03:06:20.87 ID:BTqGkHHG.net] しかしそれらを超越した次元で総合的に判断してやっぱりINVALID_HANDLE_VALUEは糞 必要ないからな
291 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 03:09:13.59 ID:ztnZ3eZq.net] The Old New Thingにあったな https://devblogs.microsoft.com/oldnewthing/20040302-00/?p=40443
292 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 05:42:23.89 ID:MJsGg5EL.net] >>284 それは論点が違う マジで糞かどうかだろうが 285はちゃんと自分なりの見解を言っているし 286は情報提供している お前だけとかくだらんことしか言わんボーガスとは次元が違う 16bit時代は低コストに拘るあまり 色々とアホなことをしていた その名残を糞って言えないやつも糞だ
293 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 10:06:00.92 ID:TUFMAlcF.net] ComboBoxはCB_ERRがある ListBoxはLB_ERRがある ListViewはただの-1で定義無し LV_ERRじゃないのはなんで?
294 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 11:02:16.25 ID:BTqGkHHG.net] >>286 読んで思い出したが そうそうHANDLEのスマポ作るときにウザいんだよな 既定の初期値を何にしておくかって問題があるからな! ああ糞だ
295 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 11:26:55.16 ID:BTqGkHHG.net] 後HANDLEのスマポのデストラクタでCloseHandleするとき 失敗したり何も入ってなかったり 無効なハンドルの場合はCloseHandleしないようにする場合も嫌らしい 無効なハンドルを表す値が二つ有るからな!! if( handle && handle != INVALID_HANDLE_VALUE ){ ::CloseHandle( handle ); } と書いてしまいたいところだが、本当にこれでよいのか? それかCloseHandleに無効なハンドルを渡したときは何もしないことを期待して if文なしで単に::CloseHandle( handle );とだけ書くか しかしCloseHandleに無効なハンドルを渡したときの動作はMSDNには書かれてないんだよな まぁ何もしないと思うが
296 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 11:39:00.01 ID:BTqGkHHG.net] ああ今調べたら、CloseHandleに無効なハンドル渡したら GetLastErrorが汚染されるらしいな
297 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 11:51:46.43 ID:U/7wJfIU.net] 初期化と開放とかのインターフェース作って、そのインターフェース派生でAPIアクセスしてるな その手のはAPI直接叩くソース書くと後からコーディングミスに気付いても修正困難になるしバグの元
298 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 13:23:12.69 ID:i3tDL1ol.net] >>288 前者2つはOS基本機能、後者はコモンコントロールというオプション という違いから歴史と立ち位置が違う ついでに言えば設計から全然違うんで、定義がないのは不思議ではない
299 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 13:47:20.57 ID:U/7wJfIU.net] どれもコモンコントロールだよ 歴史的には昔はリストビューがコモンコントロールじゃなかったかもしれないが分からない
300 名前:デフォルトの名無しさん [2019/09/14(土) 14:05:12.55 ID:mIZ3m5oP.net] 昔のWindowsAPIはHANDLEとポインタが別物だったのを知らん人がいるのか
301 名前:デフォルトの名無しさん [2019/09/14(土) 14:06:49.93 ID:mIZ3m5oP.net] >>288 ポインタが奇数になるはずはない(キリっ だから奇数の空間を全て別のオブジェクトに おれ天才じゃね?って糞言語が日本にはある
302 名前:デフォルトの名無しさん [2019/09/14(土) 15:56:30.20 ID:6R0WtlX/.net] フリーのリソースエディタとAPIでGUIプログラムを作っているけど、 もう時代遅れなのかな。 みなさんは、GUIプログラムはどうやって作っていますか。
303 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 16:05:19.86 ID:BWRFT45i.net] リソースエディタなんぞ使わず全部apiからテキストエディタ上で 数値指定で作ってるんでそんな自分よりかは進んでるぞ まあ今の時代ならvisual studio使うのが普通だろうね
304 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 16:05:25.06 ID:YkcbTkKM.net] 20年前から来たのかな?
305 名前: mailto:sage [2019/09/14(土) 16:49:47.51 ID:1pj+LkZL.net] >>297 cygwin/mingw64 でコンパイル・リンクできるよう、リソースは手書きですね…
306 名前:蟻人間 mailto:sage [2019/09/14(土) 16:58:44.72 ID:0f+SL6BM.net] 俺は自作のリソーエディタ使ってるけど。MinGWでもVC++でもビルドできるよ。
307 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 17:18:22.21 ID:i3tDL1ol.net] >>294 コモンかどうか名前はさておき、リストビューは明確にcomctl32を使うような 宣言とリンクがないと使えないでしょ リストもコンボはこいつの範疇ではない
308 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 19:04:46.82 ID:TUFMAlcF.net] WinUser.h ComboBox CB_ERR ListBox LB_ERR CommCtrl.h ListView関係のメッセージやマクロ この違いは歴史関係って事? LVM_INSERTITEMが失敗した場合は-1が返るけど LV_ERR(-1)とするのはおかしい?
309 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 19:37:03.95 ID:5CB9SZmv.net] 作者の気持ちを想像して答えなさいスレッド
310 名前:デフォルトの名無しさん [2019/09/14(土) 21:33:59.27 ID:FV8dJ/wR.net] Windowsで.NET使わずにC/C++とWin32APIでPerl互換の正規表現を使ったプログラムを作る場合、 従来はboost::regexやPCREなど別途ライブラリが必要だったけど、Windows10以降はICUの正規表現を使えるようになった。 ただし、可変長文字列を扱うUnicodeStringクラスがヘッダーファイルicu.hから削除されているので、std::wstringなどで代替する必要がある。
311 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 21:43:24.62 ID:EnCOcX5P.net] ListViewはWindows95で追加されたコントロール
312 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 22:37:17.04 ID:bBqfD384.net] 昔の事は多少は多目に見てやれよ。今みたいにSNSが活発じゃないし、githubで他人のソースも簡単に見れるわけしゎゃない。知見を共有しづらい時代なんだから
313 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 22:44:48.45 ID:BTqGkHHG.net] システムハンガリアンという糞も生みだしたしな
314 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 23:54:23.09 ID:EnCOcX5P.net] ハンガリアン記法自体はBug捕り等に有効だったのに
315 名前:デフォルトの名無しさん [2019/09/15(日) 01:22:53.14 ID:84ndTw+e.net] dwは長さが一番揺らいでると思う
316 名前:デフォルトの名無しさん mailto:sage [2019/09/15(日) 04:13:59.48 ID:oAEy9Na1.net] Standard Control Common Control
317 名前:デフォルトの名無しさん mailto:sage [2019/09/15(日) 07:17:29.58 ID:o13gcpb2.net] >>309 システムハンガリアンは違うし、なんで過去形なんだ?
318 名前:デフォルトの名無しさん mailto:sage [2019/09/15(日) 10:17:05.74 ID:WyNEQ0+k.net] >>306 そうなのか 他の人もありがとう
319 名前:デフォルトの名無しさん [2019/09/15(日) 12:35:24.64 ID:tu3q64lr.net] unix の execlp だと pid は変化しませんが、 Win32API の execlp とか _execlp とかだと processID は変化してしまうようです。 CreateProcess が呼ばれているからだと思いますが、 Win32API の execlp とか _execlp とかで変わったあとの processID を知る方法はありますか? (起動された側で getpid() で判るのですが、そっちではなくて元の processID を握ってる方からのリンクが切れて困ってます。)
320 名前:デフォルトの名無しさん mailto:sage [2019/09/15(日) 18:08:42.80 ID:jdtp5u68.net] >>297 俺はリソーススクリプト直叩き MSDNに詳しい情報乗ってるし、英語だけど プログラマなら大体わかるよ、翻訳サイトを使ってもいいしね そして、ライブラリ化しといて次から簡単に使えるようにしとく バージョン情報とかも関数やクラスにして簡単に使えるようまとめとけば便利 GUIは.NETがクラス化の良いお手本になるよ
321 名前:デフォルトの名無しさん mailto:sage [2019/09/15(日) 19:39:40.56 ID:WzV8SEFI.net] VS使わない縛りなの?
322 名前:デフォルトの名無しさん mailto:sage [2019/09/15(日) 19:55:06.55 ID:G+rzyOKL.net] >>314 > Win32API の execlp とか _execlp そもそもexeclpとかはwin32apiじゃなくて単なるライブラリだよ とりあえずざっとソース見る限りではpidを返す方法はないみたい(インターフェースもないしね) 自分で実装するしかないと思う
323 名前:デフォルトの名無しさん mailto:sage [2019/09/15(日) 23:50:00.36 ID:jdtp5u68.net] >>316 VSは使ってるよ、昔は無料のエディションには MFCもリソースエディタも付いてなかったからな 趣味でやってるから問題なし フリーのリソースエディタを入れるか迷ったこともあったけど 直叩きで行けるしまあいいかと
324 名前:デフォルトの名無しさん mailto:sage [2019/09/16(月) 00:47:21.27 ID:iDbWACrZ.net] それぐらい普通、何でもないよ 俺なんかメニューバーとかスクロールバーとかツールバーとかリストビューとか こまごましたUIパーツ、全部DirectXで一からフルスクラッチで書いたし 4K画面だとリストビューとか動作がカクカクになるから使い物にならんよ フォントの描画が重いみたい
325 名前:デフォルトの名無しさん mailto:sage [2019/09/16(月) 00:49:05.96 ID:B+hfHu5+.net] 結構前からリソースエディタは無料版VSでも入ってたろ
326 名前:蟻人間 mailto:sage [2019/09/16(月) 01:47:28.54 ID:cPhlmIua.net] 後世のために書いておくが、Visual StudioのリソースコンパイラーはUTF-8の扱いに致命的なバグがあって、最悪の場合、文字化けする。あれはANSIコードページかUTF-16で使うものだ。
327 名前:デフォルトの名無しさん [2019/09/16(月) 10:51:40.64 ID:7yboD6Fj.net] 不定期 https://stefansundin.github.io/xn_resource_editor/
328 名前:デフォルトの名無しさん mailto:sage [2019/09/16(月) 12:37:37.02 ID:IB1jvVpV.net] >>321 コンパイラーの問題だからエディターは何でもいいんじゃね って話ではないの?
329 名前:デフォルトの名無しさん mailto:sage [2019/09/16(月) 17:55:40.47 ID:+LXKkUCe.net] そもそもリソースファイルにUTF8が使えるなんて知らなかったわ
330 名前:デフォルトの名無しさん mailto:sage [2019/09/16(月) 17:57:32.41 ID:Y7LS5TKS.net] いや使えないでしょUTF-8
331 名前:蟻人間 mailto:sage [2019/09/16(月) 18:32:35.66 ID:cPhlmIua.net] MinGWのwindresというコンパイラーなら、pragmaでコードページ指定すればUTF-8が使える。 Visual Studioのrcは前述の通りUTF-8読み込みにバグがある。
332 名前:デフォルトの名無しさん [2019/09/16(月) 18:40:12.76 ID:OCMqZYFH.net] RisohEditorってどうなん
333 名前:蟻人間 mailto:sage [2019/09/16(月) 18:43:49.21 ID:cPhlmIua.net] RisohEditorはUTF-8とUTF-16のソースが扱える。UTF-16の入力は、独自のプリプロセッサでUTF-8に変換している。
334 名前:蟻人間 mailto:sage [2019/09/16(月) 18:46:27.85 ID:cPhlmIua.net] VSのRCの文字化けバグについては https://developercommunity.visualstudio.com/content/problem/384705/visualstudio-v1590-resource-editor-using-utf-8-bom.html こちらで。まだ直っていない。
335 名前:デフォルトの名無しさん mailto:sage [2019/09/16(月) 18:52:28.03 ID:OHfOAVfs.net] リソースファイルはBOMつきUTF-16LEでいけるでしょ。
336 名前:デフォルトの名無しさん mailto:sage [2019/09/16(月) 19:26:31.76 ID:dTSbudTn.net] 重箱。UTF-16LE/BEと呼ぶ場合はBOMを付けてはならないらしい。
337 名前:デフォルトの名無しさん [2019/09/16(月) 19:56:19.89 ID:OCMqZYFH.net] UTF-8 も BOM 付けちゃいけないんだろ
338 名前:デフォルトの名無しさん mailto:sage [2019/09/16(月) 20:21:16.53 ID:dTSbudTn.net] UTF-8なら禁止はされていない。
339 名前:デフォルトの名無しさん [2019/09/17(火) 00:30:59.73 ID:J+q8D2Xe.net] >>331 理解が間違っている。 「BOMつきUTF-16LE」と「UTF-16LE」は別のものであり、どちらも存在する。 「UTF-16LE」にBOMがついていないからこそ「BOMつきUTF-16LE」という表現が成り立つ。 小倉トーストとトーストが別のものであることと同じであり、トーストに小倉餡がついていないからこそ小倉トーストが成り立つ。
340 名前:デフォルトの名無しさん mailto:sage [2019/09/17(火) 02:12:33.57 ID:GJd5TLi7.net] 粒餡と餡子が別のものであることと同じであり、 餡子に粒が入ってないからこそ粒餡が成り立つ ってことですね