X



Win32API質問箱 Build127

0001デフォルトの名無しさん
垢版 |
2021/12/09(木) 21:32:56.60ID:sYLpmj89
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/
0203デフォルトの名無しさん
垢版 |
2022/03/27(日) 01:12:55.86ID:yS8KpDml
>>200
スタン・ハンセンとハルク・ホーガンかなあ。
プロレスについては詳しくないので、プロレススレで
0204デフォルトの名無しさん
垢版 |
2022/03/27(日) 04:28:08.59ID:yA+QVyZU
1プロセス内に、複数のスレッドを起動できる。
1対多の関係

それら同一プロセス内の複数のスレッドを調停するのが、critical section じゃないの?
0205デフォルトの名無しさん
垢版 |
2022/03/27(日) 04:33:51.34ID:aGS6McBI
>>204
まちがってはいないがアバウトすぎる…
スレッド固有のデータは何?
スレッドで共有するデータは何?
0207デフォルトの名無しさん
垢版 |
2022/03/27(日) 06:51:08.16ID:nbMAc3Vl
実は「ウィー!」と言ってなかった スタン・ハンセン雄たけびの真相: J-CAST ニュース
https://www.j-cast.com/2015/10/08247400.html?p=all
2015年10月08日18時42分


🤘ウィー!
0208sage
垢版 |
2022/03/27(日) 07:55:58.79ID:wX3DpwsS
ちと出遅れたが
WinMainの第3引数は LPSTR
UNICODE版はスレチ
0214デフォルトの名無しさん
垢版 |
2022/04/05(火) 10:57:12.74ID:PKvr+8WT
現在プリンタ選択ダイアログを自作していて、質問があります。
印刷コモンダイアログに表示されているプリンタ名はEnumPrintersで取得できたのですが、アイコンを取得する方法がわかりません。
どうすればアイコンを取得できますか?
0219デフォルトの名無しさん
垢版 |
2022/04/07(木) 19:12:44.04ID:mVtcUlDy
ウィンドウのリサイズイベント(WM_SIZE、WM_SIZING等)が来た時、ユーザーが直接そのウィンドウに対してリサイズを行ったのか、
ディスプレイ解像度等が変わり、システムの都合で結果的に変わったのかを判定したいと考えています。
ディスプレイ設定が変わった場合はWM_DISPLAYCHANGE等で判るので、
ユーザーが能動的にウィンドウをリサイズしたかどうかの判定ができればよいと思うのですが、
何か良い判定方法はあるでしょうか。
0221デフォルトの名無しさん
垢版 |
2022/04/07(木) 22:02:00.24ID:mVtcUlDy
>>220
よさげなメッセージがあったんですね!
ありがとうございます!
0222デフォルトの名無しさん
垢版 |
2022/04/07(木) 22:34:26.91ID:mVtcUlDy
https://stackoverflow.com/questions/1826165/wm-entersizemove-wm-exitsizemove-when-using-menu-not-always-paired
ここによると、WM_ENTERSIZEMOVEが来てもリサイズや移動がキャンセルされるとWM_EXITSIZEMOVEが来ない場合があるようで、
その場合でもWM_ENTERSIZEMOVE中のWM_CAPTURECHANGEDで終了が判定できるとのことです。
たしかにタイトルバーからサイズや移動をキャンセルするとそのような動きでした。
これで解決しそうです。ありがとうございました。
0225デフォルトの名無しさん
垢版 |
2022/04/08(金) 15:18:23.25ID:ZELibu1M
スケーリング変更で実質解像度が変わった場合もWM_ENTERなんちゃらが来るね
WM_DISPLAYCHANGEも来るから区別は付くかな
0226デフォルトの名無しさん
垢版 |
2022/04/09(土) 22:15:49.34ID:d9RaMPBt
画面端の四隅に独自スナップはやったなあ
吸い付くと気持ちいいのよね
0227デフォルトの名無しさん
垢版 |
2022/04/09(土) 22:35:18.94ID:unOoTfDz
osの画面の位置設定が、吸いつくくせにぴったり揃わず微妙にずれる
ふざけた動作だったな
0228デフォルトの名無しさん
垢版 |
2022/04/10(日) 09:07:01.55ID:67K4hItk
windows10になってから
座標を0,0にしても少し隙間が空くようになったのもふざけてる
0230デフォルトの名無しさん
垢版 |
2022/04/10(日) 12:00:36.82ID:qE10hPc2
最低限必要な処理性能を引き上げることで
グラフィックボードやPCの買い替えを促進することができました。
0231デフォルトの名無しさん
垢版 |
2022/04/10(日) 13:17:17.03ID:wqaUV7TG
実際AVX2未満だと256bit命令でまともな事ほとんどできないからHaswell未満切り捨てたくなる気持ちは分かる
0232デフォルトの名無しさん
垢版 |
2022/05/10(火) 16:03:53.83ID:Asxcv1id
MSゴシックなどのフォントで、DrawTextで右寄せ(DT_RIGHT)の文字列を描くと、
イタリック体のときに右が欠けてしまうのですが、こんな仕様なのでしょうか?
0234デフォルトの名無しさん
垢版 |
2022/05/12(木) 23:26:02.37ID:zDTh1Mrl
>>232
日本語のことなど真剣に考えてませんから
0239デフォルトの名無しさん
垢版 |
2022/05/13(金) 15:33:38.71ID:ezCooE+T
そもそもMSゴシックを斜体にするのがダサいので、DrawTextとしても想定外という説
0241デフォルトの名無しさん
垢版 |
2022/05/13(金) 17:38:27.24ID:9J+8i6yQ
自力で右端を広げないといけないんですかね。
ただ、DT_WORDBREAKやDT_EDITCONTROLを付けて自動折り返しを設定していると、
どこで折り返されるかは事前に想定できないので、行末にスペースというのも難しそうです。
0243デフォルトの名無しさん
垢版 |
2022/05/20(金) 06:40:29.02ID:QdnN/13A
テンポラリのビットマップに描画して実測する関数作っとけば以後は気にせずに済む
0247デフォルトの名無しさん
垢版 |
2022/06/07(火) 13:41:20.24ID:IY5aTV4U
アスペクト比を固定したいため、ウィンドウの最大化を完全に無効にしたいのですが、フレームをダブルクリックしたり、Windowsキー + ↑での最大化を塞ぐにはどのように処理すればいいでしょうか?
0250デフォルトの名無しさん
垢版 |
2022/06/07(火) 14:39:30.72ID:IY5aTV4U
>>248
ありがとうございます!
一度やってみたのですが、うまくいかなかったので、やり方がよくなかったのかもしれません
Unityという特殊な環境が影響してるのかもしれないですが、、、
0251デフォルトの名無しさん
垢版 |
2022/06/07(火) 14:41:36.70ID:IY5aTV4U
>>249
後出しですみません
ドラッグでのサイズ変更は許可したいので、ウィンドウスタイルでは無理なのかなーと思ってます
今のところWM_SIZINGはうまく機能してるようです
0254デフォルトの名無しさん
垢版 |
2022/06/07(火) 15:31:44.87ID:OnF3qCRP
ちゃんと抜いてんならそれだけで自動的にシステムメニューも含めて
タイトルバーダブクリやWin+↑も無効化されるはずだがな
0256デフォルトの名無しさん
垢版 |
2022/06/07(火) 16:05:01.49ID:IY5aTV4U
>>255
ありがとうございます
ダブルクリックの方はこれで回避できるんですけど、Windowsキーの方がどうやっても防げなくて、、、
WM_WINDOWPOSCHANGING を拾えばいけるかなー
0258デフォルトの名無しさん
垢版 |
2022/06/07(火) 16:55:24.79ID:LNP3bNny
正確には、ってかそれじゃ最初からスナップによるリサイズを防ぎたいって全然違う質問じゃん
SYSCOMMAND監視して無理矢理引っぺがしたりはできるけど行儀悪すぎだから
任意のウィンドウサイズになってもボックスでレンダリングのアスペクト比維持した方がマシだな
0259デフォルトの名無しさん
垢版 |
2022/06/07(火) 17:24:17.68ID:HZXBW/m6
>>256
SPYでその時にどのメッセージ(多分複数)が来てるか調べて
どれを捨てる or 改変すれば望みの動作になるかを考えろ
0260デフォルトの名無しさん
垢版 |
2022/06/07(火) 21:10:34.66ID:TZU+Jbyx
最大化はダイアログのスタイルにして抑止するのが定石だけど誰も書かないので一応
C#のFormBorderStyle = FixedDialog の時のウィンドウスタイル=0x16c80000 拡張ウィンドウスタイル=0x00050101
これでスナップの影響も受けないし、その上でサイズ変更もやりたければできる。
許容しつつアス比を維持するのもいい。ゲームのフルスクリーンモードとかそんな感じだろうし
0261デフォルトの名無しさん
垢版 |
2022/07/03(日) 16:22:44.87ID:K2/9xttr
HINSTANCEかHWNDから、そのプロセスが貰っているコマンドラインオプションを知る方法ってある?
0263蟻人間 ◆T6xkBnTXz7B0
垢版 |
2022/07/03(日) 16:44:52.75ID:wwKaul6r
GetWindowThreadProcessId使えばHWNDからプロセスID (pid)が得られるはずだ。
0264デフォルトの名無しさん
垢版 |
2022/07/03(日) 17:40:46.92ID:K2/9xttr
>>262
thx
もう晩酌始めちまったんで
素面に戻ってからやってみるわ

お、飯が炊けた
酢飯と酢の物作んなきゃ
0265デフォルトの名無しさん
垢版 |
2022/07/13(水) 14:56:13.92ID:6WIGt+Xj
SetWindowPlacement, GetWindowPlacement を使ってウィンドウ位置の保存と復元をしています
マルチモニター環境でも当該モニターで表示されていたウィンドウ情報の保存と復元が Windows10 以前では行えていましたが、
Windows11 になってからは、マウス操作しているモニターで全てウィンドウが表示されてしまいます

これはプログラム側で何か修正が必要なのか、Windows11 上の設定(アプリのプロパティ?)が必要なのでしょうか?
Windows11 でマルチモニターの仕様が変わったというのは分かりますが、具体的にどのように対応すればいいのか分かりません

よろしくお願いします
0267デフォルトの名無しさん
垢版 |
2022/07/13(水) 15:53:47.47ID:LawUXVQN
標準の仮想デスクトップとかも追加されてるのでちゃんと動くのかよくわからんよな
0268デフォルトの名無しさん
垢版 |
2022/07/13(水) 17:22:23.86ID:6WIGt+Xj
>>266
構造体のゼロクリア、length メンバへの sizeof 設定は行っています
使用しているメンバは rcNormalPosition と showCmd のみです

>>267
Windows11 では、モニターのオンオフで狂ってしまったウィンドウ位置の復元を
するようになったという程度の知識しかありません(正しいかどうかも分かりません)が、
実機で色々テストするしかないかもですね(Windows11 にしたくない)
0269デフォルトの名無しさん
垢版 |
2022/07/14(木) 22:38:26.85ID:ztzbKaJ8
ベータ以前の11のことだからバグかもしれないのがな
11.1で完成するOSなんだろうな
0270デフォルトの名無しさん
垢版 |
2022/07/14(木) 23:19:01.63ID:je7st1fi
手元の開発環境を Windows11 & マルチモニターで揃えてテストしてみると問題は再現しませんでした
これは問題が発生した環境依存によるものの可能性が非常に高くなりました

お騒がせしましてすみませんでした
0271デフォルトの名無しさん
垢版 |
2022/07/22(金) 09:23:12.50ID:nl1lv8Ha
名前付きパイプで質問です。
Windows10(x64)で64ビットアプリ(サーバー)と32/64ビットアプリ(クライアント)でパイプ通信するのですが、クライアントが64ビットの場合は問題なし、32ビットの場合は動作したりしなかったっりで、サーバーのCreateNamedPipe関数のnMaxInstancesを1から255にしたら解消しました。
クライアントは1つだけなので1で良いと思ったのですが、何なんだろう?
0273デフォルトの名無しさん
垢版 |
2022/07/26(火) 18:26:55.94ID:fMGzaZG1
プログラ厶の最低限の文法わかってる人間が、WindowsAPIを使用したGUIプログラムを作りたい場合に、おすすめの本ってありませんか?

正直WindowsAPIのハンドルとかハンガリー記法とかで面食らってぶつかってます。
0274デフォルトの名無しさん
垢版 |
2022/07/26(火) 18:51:12.11ID:od2hcCSg
> WindowsAPIを使用したGUIプログラムを作りたい

そもそも止めとけ楽な道を進めと思うんだけど、なんで?

> おすすめの本

今時そんな本あるのか分からないけど、猫でもわかるシリーズのWEBサイトでいいんじゃないの
0275デフォルトの名無しさん
垢版 |
2022/07/26(火) 19:38:38.71ID:qDGm82dw
NT4.0や95の頃の書籍はメッセージやハンドル等丁寧な解説がされていたと思う
0278デフォルトの名無しさん
垢版 |
2022/07/27(水) 21:47:08.84ID:K/AxbL6V
>>274
今まで他の言語で楽をさせてもらってたのは、他の方のおかげだと気付いて、実際に自分も勉強したいという思いです。

>>275
まさにおっしゃる通りで、先日なんとか相馬 俊治さんという方の本を見つけました、古い本のほうがわかりやすいです。
0279デフォルトの名無しさん
垢版 |
2022/07/29(金) 10:07:57.73ID:utvRDsk1
C#でもWndProcとかに手を付けると結局Win32APIレベルのメッセージループの仕組みの知識が必要だし
C/C++でWin32APIだけ使ったメッセージループ検証用GUIアプリを用意しとくと捗るよ
0280デフォルトの名無しさん
垢版 |
2022/07/30(土) 02:15:20.39ID:pJ1A3nc7
C++でクラス化ラップ化する前のピュアなメッセージループをなら猫かな
そこから先は ラップしてるライブラリの方言が出てくるだろうし
0281デフォルトの名無しさん
垢版 |
2022/07/30(土) 12:31:23.06ID:YQlRXD6d
>>277
ありがとうございます!ツールももちろんですがこの作者のHP自体が非常に貴重ですね!

>>279
ありがとうございます!ラップしてしまうとWin32APIの挙動が見えなくなるので、生で見える環境を用意しておいたほうが良いようなイメージでしょうか?
0282デフォルトの名無しさん
垢版 |
2022/08/01(月) 14:57:50.07ID:ei01gCPD
>>277
RisohEditor良さそうやね
見た目レトロで良いからネイティブWin32で超軽量GUI作りたいってシーン結構あるから重宝しそうやわ
0283蟻人間 ◆T6xkBnTXz7B0
垢版 |
2022/08/01(月) 16:08:58.49ID:eMiJU5As
MsgCrackにWM_DESTROYを入力すると
void OnDestroy(void)
って出てくる。
これを#include <windowsx.h>のHANDLE_MSGマクロと一緒に使うと吉。
0288デフォルトの名無しさん
垢版 |
2022/08/01(月) 20:38:09.58ID:Z+HQWfkn
>>284

windowsx.hで定義されてるHANDLE_MSG()マクロを使えば
いちいちcase文を書く必要がない

switch (uMsg)
{
HANDLE_MSG(hwnd, WM_CREATE, OnCreate);
HANDLE_MSG(hwnd, WM_COMMAND, OnCommand);
...
default:
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}

使わないメッセージはスルーしていい
OnCreate()やOnCommand()のプロトタイプもwindowsx.hで定義されてるので引数を間違ったらエラーで教えてくれる
0289デフォルトの名無しさん
垢版 |
2022/08/02(火) 17:15:54.00ID:64Iv6nA4
#define BEGIN {
#define END }
に近い感じなので マクロにお任せってあまり好きではない(個人的感想)
0291デフォルトの名無しさん
垢版 |
2022/08/02(火) 22:59:22.62ID:clR4IgPX
こういうシステム的な部分を作るとき厄介なのが細かい引数間違えたりすることなのですべて定義されてるのは助かるよ
windowsx.hに入ってるってことはMS推奨なんだろうし
0292デフォルトの名無しさん
垢版 |
2022/08/03(水) 08:49:02.53ID:HRex91Fl
そのヘッダか忘れたけどコモンコントロール系はマクロが無いとやってられん
それ前提でMSDNにリファレンスがあるし
0296デフォルトの名無しさん
垢版 |
2022/08/05(金) 02:46:33.66ID:RasK5Hhu
大きな文字や小さな文字をコマンドプロンプトに同じ行で表示したいのですが可能でしょうか?
設定で変えるのではなくプログラムで結果によって変えたいのですが
よろしくお願いします。
0298デフォルトの名無しさん
垢版 |
2022/08/05(金) 13:41:02.21ID:w8qsceV0
8pt
   ■                 
   ■  ■     ■ ■■■■■  
 ■■■■       ■    ■   
   ■ ■     ■  ■■■■■■ 
  ■■■■■■   ■     ■   
 ■■■■   ■  ■     ■   
■  ■■   ■  ■■ ■■■■   
■ ■■   ■■  ■■ ■  ■■■ 
■■■■  ■■    ■ ■■■■   

16pt
      ■                ■               
      ■     ■         ■■   ■      ■■■  
     ■■■■■■■■         ■■   ■■■■■■■     
 ■■■■■■■■■            ■■        ■■     
     ■■               ■■        ■■     
     ■■   ■■          ■■        ■■■■■  
     ■■■■■■■■■        ■    ■■■■■■■■■■  
     ■■■ ■■ ■■■       ■         ■■     
   ■■■■  ■■   ■■     ■■         ■■     
  ■■ ■■ ■■     ■■    ■■         ■■     
 ■■  ■■ ■■     ■■    ■■ ■       ■■     
 ■■  ■■■■      ■■     ■■■   ■■■■■■     
■■   ■■■       ■■     ■■■  ■■   ■■■■   
■■   ■■       ■■      ■■   ■    ■■ ■■■ 
■■  ■■■     ■■■       ■■   ■■   ■■  ■■ 
 ■■■  ■   ■■■■        ■■    ■■■■■      
          ■■                           
レスを投稿する


ニューススポーツなんでも実況