Win32API質問箱 Build126

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2020/05/01(金) 22:16:51.96ID:ZJ42fMZB
Win32APIについての質問はこちらへどうぞ。

■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。
 英語版( http://msdn.microsoft.com/en-us/library/ )の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで

■過去スレ
Win32API質問箱 Build125
https://mevius.5ch.net/test/read.cgi/tech/1551247748/
Win32API質問箱 Build124
https://mevius.5ch.net/test/read.cgi/tech/1510395780/

■関連スレ
Visual Studio 2019 Part4 https://mevius.5ch.net/test/read.cgi/tech/1585715794/
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/
28デフォルトの名無しさん
垢版 |
2020/05/07(木) 14:35:46.38ID:biI6CgIS
>>25のコードがあったので、>>27のコードに変えてみた。
結果はダメだったです。
2020/05/07(木) 14:46:04.24ID:3Zb9YKCz
NG ワードは、MANGO 板のスレで、絞り込みができる

cmd@.exe
ls の特定のオプションとか

はてなブログのURL で、吸い込まれるような動きをしたら、絶対に続けて書き込んではいけない。
3日ぐらいアクセス禁止にされる

twitter の長いURL も、吸い込まれるものがあるとか
30デフォルトの名無しさん
垢版 |
2020/05/07(木) 15:30:22.36ID:biI6CgIS
>>22
>今回のはタスクバーから出したときにOSが再描画しろと仰ってWM_PAINTを発行してるから従いなさい。

ご指示の通りにして、とりあえず解決しました。

Windowsの場合、OSが割り込んで、むりやり画面クリアして再描画してしまう場合があることも意識して、
画像の描画プログラムを組み立てる必要もあるのですね。

処理を軽くしようとして、背景は1度書いたら背景フラグをオンにして再描画しないようにしてたのですが、
OS割り込みによる再描画を考慮してなかったので、
裏目に出てしまったようです。
2020/05/07(木) 15:47:08.20ID:b7ooihQ1
吸い込まれるってなんのことや
2020/05/07(木) 16:15:55.38ID:0pZrsm5h
>>30
OS割り込みというか、WM_SIZE メッセージが来たら、背景も何もかも
全部再描画するようにすれば良いだけ。
2020/05/07(木) 16:18:19.91ID:0pZrsm5h
>>32
なお、WM_SIZE が来ても、その場で本当に再描画するという意味ではない。
WM_PAINT つまり、MFC でいうなら、OnDraw() 関数の中で背景も何もかも
再描画されるように工夫する。
そのためには、何らかのフラグを用意して、普段は0にしておき、WM_SIZE
メッセージハンドラであるOnSize()の中で 1 にする。
OnDraw()関数の最後で0にする。
34デフォルトの名無しさん
垢版 |
2020/05/07(木) 16:56:41.22ID:8jv+kISL
>>31
描き込んでもレスに反映されないことがある
可笑しいと思ってもう一度そのまま同じ内容を描き込むと
そのままアク禁
2020/05/07(木) 17:08:25.79ID:khGNNtcv
大きさ固定で BMP に描画
WM_PAINT は BMP を BitBlt するだけ

大きさが変わったとき 自分の意思で表示内容を更新する時は BMP をゼロから描画しなおす

WM_SIZINGで大きさが変わったを知って
見合ったサイズのBMPに作り直し→表示内容を更新
2020/05/07(木) 17:33:56.09ID:IeUYmiVS
VBAでAPI使ってるレベルの者だが、メモリDCからBitbltするだけじゃね?
2020/05/07(木) 17:42:01.72ID:0pZrsm5h
とにかく、最小化状態から通常状態に戻したときは、何もかもそれまでの描画が
失われるのは昔からのWindowsの仕様。
普段は高速化のため部分描画をしたい場合は、そうしておいて、WM_SIZEが
来た直後にだけは、なんとか色々な方法で工夫して全体描画すればよい。
38デフォルトの名無しさん
垢版 |
2020/05/08(金) 00:39:11.34ID:taENaF02
CreateWindow関数って存在しないの知ってる?これ豆な
2020/05/08(金) 01:17:12.85ID:0sjMHJ2y
>>38
マクロでは存在している。
実際のDLL内での関数名は、Unicode版と非Unicode版でそれぞれ語尾にWとAが付くが。
2020/05/08(金) 01:23:45.95ID:dYQlSH+b
>>39
CreateWindow
って、ファイルシステムとは関係ないのに、どうして A と W を実装しているのでしょうか?
2020/05/08(金) 01:51:09.10ID:0sjMHJ2y
>>40
結論的には、クラス名、Window名が CHARかWCHARかの違い。
今見てみたら、
1. CreateWindowA、CreateWindowWも、それぞれ、
  CreateWindowExA、CreateWindowExW に置き変わるマクロである。

2. CreateWindowは、UNICODE マクロが定義されていれば、
  CreateWindowW を通じて、CreateWindowExW に置き換わる。
  定義されていなければ、
  CreateWindowA を通じて、CreateWindowExA に置き換わる。

3. A 系は、クラス名、Window名が、CHARへのポインタであるのに対し、
  W 系は、クラス名、Window名が、WHARへのポインタである。

4. CreateWindow() や、CreateWindowEx() は、クラス名、Window名が、
  どちらも、TCHARへのポインタであるので、UNICODEマクロが定義されている
  かどうかで、それらの文字列がCHARかWCHARに自動的に切り替わる。 
2020/05/08(金) 05:42:10.41ID:FYQVpLgs
〜Exって関数名、拡張は1回きりって浅はかな付け方を
よくここまで堂々とやるなって感心しちまう
2020/05/08(金) 07:16:28.52ID:x33oSwnd
バージョン増えると後ろに2とか番号付くぐらい適当だよ
2020/05/08(金) 08:24:01.23ID:UfrpmU+3
なんなら***ExExもアリだからな
Exが一度だけという浅はかな固定観念に縛られていてはMSには成れないのさ
2020/05/08(金) 08:34:41.07ID:s7XsZ3eu
GetTextExtentPoint32にもっとEx付けたい
2020/05/08(金) 08:35:06.55ID:+jRc4+db
じゃあ逆にどうしろと?
eclipse のソースコードなんかでも、インターフェースはバージョン番号増やしてく感じだよ

IDocumentExtension
IDocumentExtension2
IDocumentExtension3
IDocumentExtension4
47デフォルトの名無しさん
垢版 |
2020/05/08(金) 10:55:14.01ID:oIDbptWL
IDocumentExtension98
IDocumentExtension98SE
IDocumentExtensionMe
IDocumentExtension2000
IDocumentExtensionXP
2020/05/08(金) 12:40:05.23ID:SGzHt0H0
IDocumentExtension7
IDocumentExtension8.1
IDocumentExtension10
IDocumentExtension2000
あれ?2000が一番新しいんかな?
2020/05/08(金) 13:00:29.63ID:FYQVpLgs
IDocumentExtension8.1って、ここだけメンバーなの?
2020/05/08(金) 14:42:14.34ID:DxagrNge
CreateWindowは元々これが実体
win98辺りでunicode対応となってから内部でAとWに分けられてって流れじゃなかったっけ

歴史長いんだからよっぽどの先見の明がないと名前の整合性なんて無理でしょ
内部の関数ならまだしも外部公開のAPIなんてね
名前や仕様がころころ変わって阿鼻叫喚になるよりマシ
2020/05/08(金) 14:59:13.46ID:FYQVpLgs
あったねー MFC42.DLLだっけ?
2020/05/08(金) 16:27:41.55ID:+jRc4+db
Aって ASCII の A ?
W は、 Wide の W ?
でいいんけ?
53デフォルトの名無しさん
垢版 |
2020/05/08(金) 17:08:17.38ID:iOEjZYuS
ANSI かな
54デフォルトの名無しさん
垢版 |
2020/05/08(金) 19:58:44.84ID:XNwDJZFz
>>50
win16(win3.1)では実態
win32(NT,95)でAとWに分割。マクロで互換性をキープ
ただし9xは殆どのW系を実装しておらず失敗する
win32cとか呼ばれてた
2020/05/08(金) 20:55:35.84ID:+jRc4+db
文字コードの ANSI って、なんなんだろ

ASCII とか Shift-JIS とかだと分かるけど、
ANSI って言われると、…ん? ANSI …?ってなる

メモ帳の ANSI って、Shift-JIS のことなんだっけ?
なんで Shift-JIS をこんなわけわからん名前にしてるんだろ
2020/05/08(金) 21:14:31.19ID:g8DwAXAR
ウィンドウズのマルチバイト文字列変換は、コードページ切り替えで実現している。
既定のコードページANSI (CP_ACP)は、日本語ウィンドウズでは932(Shift_JIS)に転送される。英語圏のウィンドウズでは1252などになる。具体的な値はGetACP関数で取得できる。

シフトJIS変換では、WideCharToMultiByteとMultiByteToWideCharの第一引数にCP_ACPではなく、明示的に932を指定した方がいい。
2020/05/08(金) 21:16:27.83ID:XNwDJZFz
ANSI・・・ JISと敵対する組織であり世界に暗躍するISO一味の筆頭
Shift-JIS・・・ 悪の秘密結社MSにより改造されたJIS
2020/05/08(金) 21:18:08.68ID:DxagrNge
>>54
CreateWindowは2000からAとWだね
95〜98系はほぼUNICODE対応されておらず、リソースや文字列を扱うごく一部のしかない

>>55
ANSIがASCIIを制定
これをベースに各種ローカル文字コードが乱立
そしてUNICODEへ
2020/05/08(金) 21:49:33.14ID:NOJZfKLR
いい加減Aはサポートを打ち切っちゃえと思う
TCHARの為に無駄な手間が増える
60デフォルトの名無しさん
垢版 |
2020/05/08(金) 22:31:37.13ID:/+tKw0XQ
無理にTCHAR使わなくて良いんだよ
_Tも_Lも面倒なだけ
2020/05/08(金) 22:37:21.10ID:4UXJHFlD
自分でA環境切ってれば面倒は無いと思うが
AのAPI残してるからこそ生き延びてるレガシーアプリはまだ無視できねんじゃないかなあ
未だに日本語パスとかでコケるアプリがあるのはそのせいでもあるんだろうけど
2020/05/08(金) 22:49:11.78ID:NOJZfKLR
>>60
無理ではないけど...
Aを切ってくれないと思い切りが

そういえば
Wしか使えないWindowsが昔あったな
63デフォルトの名無しさん
垢版 |
2020/05/08(金) 22:50:57.33ID:/+tKw0XQ
CEとかだっけ
2020/05/08(金) 22:52:30.48ID:NOJZfKLR
おっ
よくご存じで
2020/05/08(金) 23:52:07.44ID:DxagrNge
レガシーな制御機器を扱うソフトからすると、OSでUNICODEに一本化されると困るというか面倒極まりない
2020/05/09(土) 06:57:55.10ID:IGvav/BT
APIのA系がいらんというだけで
制御系は好きな文字コードでやれば良いんだよ

ファイルのアクセスや各種プロトコルでは
いろんな文字コードを使うはずで
全ての文字コード用に各種APIが対応してる
なんて必要は全く無い
変換APIだけ用意してくれれば良い
2020/05/09(土) 11:08:41.27ID:NXe586WT
>>66
言われてみればその通りやな
2020/05/09(土) 11:14:28.38ID:QCHAZIsg
OS側で文字を入力・加工したものを制御系に流す、又はその逆のことを全く考慮しないならそうだね
2020/05/09(土) 11:39:49.17ID:OifcNah8
でもUTF8って、マルチバイト文字じゃないの?
W系の関数ってUTF16だよね?
70デフォルトの名無しさん
垢版 |
2020/05/09(土) 11:56:33.06ID:3rxWY8lS
UTF8とUTF16は表現が違うだけで空間は一緒やろ
(厳密には一対一ではない)

Shift_JIS と UTF16 とかで変換しようとすると化けたり欠けたりする
WideCharToMultiByte と MultiByteToWideChar の引数は UTF8 だけにするべき
2020/05/09(土) 12:26:48.39ID:CUL9xwyE
要求されているコード次第だろ。
SJISが必要な場面で変換できない文字が含まれていたならエラーにするだけ。
2020/05/09(土) 12:29:46.42ID:/Z4Vk9Yy
Go は、ワイド・UTF-8。
Windows は、ANSI・CP932

だから、Windows のみ、変換が必要!

WSL なら、Linux/Windows間の変換を、Windowsが自動変換するだろ
2020/05/09(土) 13:44:45.28ID:OifcNah8
ちょっと前にWindows10がUTF8を使用する機能が追加されたと聞いたけど、あれはどういう仕組みなの?
開発するときはWCHARやW系の関数を使っててもいいの?
2020/05/09(土) 13:53:34.15ID:y1dzFt5u
>>73
>Windows10がUTF8を使用する機能が追加された
設定で A 系がデフォで UTF-8 になると聞いています
2020/05/09(土) 13:59:36.27ID:OifcNah8
>>74
ということは、A系はなくすどころか、これから主流に戻っていくということ?
2020/05/09(土) 17:38:12.35ID:IGvav/BT
内部はUTF16
2020/05/09(土) 18:36:20.72ID:MO8a3o69
設定で変えないとな今だとちゃんとシステムがUTF8かどうか確認しないとバグるだろうなぁ。。。
2020/05/09(土) 18:41:38.14ID:MSg9l4oI
A系やWideCharToMultiByteを使ってかつsjisだと決め打ちしてるとバグるね
2020/05/09(土) 20:45:09.00ID:bNQ8i22s
聞いてるだけでよくわからなくなってくる
マルチバイト星人はこの先もしばらくは無駄な苦労をしていくことになりそう
80デフォルトの名無しさん
垢版 |
2020/05/09(土) 23:03:31.09ID:VZmAPRaM
TCHAR はもういらない子
2020/05/09(土) 23:48:55.23ID:VnJD5UE+
>>80
mingw で提供されている <windows.h> は TCHAR を使っているから、おさらばするわけにはいかないでしょうね…
https://mevius.5ch.net/test/read.cgi/tech/1434079972/53
2020/05/10(日) 00:10:35.50ID:lS9VwhWL
マイクロソフトが提供為てるわけじゃないんだし知ったことかよ
2020/05/10(日) 00:59:54.73ID:sYQDYC6t
創造主は世界を A と W に分けた。


後の A&W である。
2020/05/10(日) 07:07:50.16ID:TKKqj4ZC
>>70
> (厳密には一対一ではない)
UTF8 と UTF16 って符号化文字集合は同じだから全符号化表現が一対一対応するんだと思ってたわ
例えば何が一対一にならないん?
2020/05/10(日) 09:57:36.15ID:FEs4SWZl
同じ文字に複数の表現方法があるとか
86デフォルトの名無しさん
垢版 |
2020/05/10(日) 10:02:11.48ID:Fp1kS4OT
WinSockの話はこのスレであってる?
ブラウザを作りたいんだけど、書店で本を探しても無くってさ
2020/05/10(日) 10:16:37.79ID:iOuxRny5
プロトコルはRFCをあたる
受け取ったデータの可視化やうそんこの文字指定から文字化け回避とか、そっちのほうは知らない
88デフォルトの名無しさん
垢版 |
2020/05/10(日) 10:18:22.51ID:Fp1kS4OT
>>86
自作ゲームに、将来的に通信対戦の機能とかをつけたいから。
89デフォルトの名無しさん
垢版 |
2020/05/10(日) 10:22:11.17ID:Fp1kS4OT
>>87
わかった。RFCを調べてみる。

あと、2ちゃんの別スレも見つかったから、それも調べてみる。
『ネットワークプログラミング相談室 Port30 [転載禁止]©2ch.net 』
https://mevius.5ch.net/test/read.cgi/tech/1414709836/
2020/05/10(日) 11:03:37.16ID:sYQDYC6t
フライドチキンはKFCでお願いします。
2020/05/10(日) 21:18:11.74ID:MdXjYqca
筋トレやダイエットにはPFCバランスが大事らしい
2020/05/11(月) 00:39:02.31ID:37dgyJTT
DFC
貧乳にアクセスするためのプロトコル
93デフォルトの名無しさん
垢版 |
2020/05/14(木) 17:10:26.05ID:xR/PZA9p
32bit アプリサポート終了のお知らせ
2020/05/14(木) 17:21:03.49ID:eHRrlmRs
32bitOSが終わるだけでWOW64は無くならんと思うが
2020/05/14(木) 18:11:15.76ID:wD9bKf3u
それも時間の問題かも
2020/05/14(木) 18:26:01.94ID:uakMKPpl
過去資産切り捨てるだけでメリット皆無
ってこの話題何回目だ
2020/05/14(木) 18:27:58.15ID:wD9bKf3u
コスト削減
2020/05/14(木) 18:35:32.89ID:8JWtj6XY
>>94
ということは16bitアプリ終了のお知らせってことか
2020/05/14(木) 19:16:57.69ID:wD9bKf3u
だね
2020/05/14(木) 19:18:28.93ID:eHRrlmRs
>>97
コスト削減どころかWindowsシェア削減になるね
2020/05/14(木) 19:38:59.13ID:wD9bKf3u
「どころか」
全然つながってない

32bitのシェアが減ればコストに見合わなくなるので
開発を打ち切るのは当然

それによってアプリ開発者も負担が減る

OSの64bit化で16bitを切ったのもそういう理由
2020/05/14(木) 20:23:50.17ID:DKKTi7r6
素人たちはこれだから困る
32ビット対応を継続することで、比較対象ができることでバグが少なくなるのだ
両方で動くコードは安定しているし、今後128ビット対応にも生きてくる
2020/05/14(木) 20:25:45.84ID:wD9bKf3u
同じコストを書ければ
片方だけの開発、評価の方がバグが少ない
当然だ
2020/05/14(木) 20:26:28.62ID:wD9bKf3u
128bit?
そんな時代は少なくとも数十年は来ない
105デフォルトの名無しさん
垢版 |
2020/05/14(木) 20:32:36.16ID:xR/PZA9p
IPv6ですねわかります
106デフォルトの名無しさん
垢版 |
2020/05/14(木) 20:39:37.00ID:swrzxMJK
で、オマエラは32bitアプリはもう作らないの?
107デフォルトの名無しさん
垢版 |
2020/05/14(木) 20:40:13.60ID:QxbT6fEj
ロクヨンロクヨンいちにっぱ、1988年。
108デフォルトの名無しさん
垢版 |
2020/05/14(木) 20:42:32.92ID:xR/PZA9p
sizeof int == sizeof long
よりも
sizeof int < sizeof long
の方がなじみがある
2020/05/14(木) 20:48:00.53ID:wD9bKf3u
int : 16bit / long : 32bit
int : 32bit / long : 32bit
int : 32bit / long : 64bit
どれも良く使う

Windowsに限定すれば今は32bit/32bitだけだが
2020/05/14(木) 20:49:50.08ID:wD9bKf3u
趣味のプログラムだと32bitアプリはもう作らない
仕事だとまだ必要
2020/05/14(木) 21:16:04.45ID:uakMKPpl
まーた自分の希望的観測を大局的指針だと強弁しちゃう勘違い君が来ちゃったか
前と全く同じ事言っちゃってて進歩してないな
2020/05/14(木) 21:25:47.85ID:wD9bKf3u
16bitは切った
これが事実
2020/05/14(木) 21:39:36.59ID:wbq2quQU
なんのこっちゃと思ったらOEM向けの32bit版OSを提供しなくなるってだけの話か
Windowsに関しちゃMSはゆーっくり削ってくねえ
2020/05/14(木) 22:18:38.95ID:ssqTGeCM
APIHOOKどうする ?
115デフォルトの名無しさん
垢版 |
2020/05/14(木) 23:55:54.26ID:7qxmxCRs
真っ赤な奴が一人で喋ってるというだけで信頼度0
2020/05/15(金) 01:57:25.78ID:T5z4Mqc/
この人前も同じ様なガバガバ理論を連レスしてたな

> 16bitは切った
> これが事実

これをドヤ顔で推すのなら、同じ理論で128bitOSが出るまでは32bitアプリは生きることになるぞ
117デフォルトの名無しさん
垢版 |
2020/05/15(金) 02:07:48.44ID:PClFYiSI
>>116
96bitで切ります
2020/05/15(金) 04:23:46.36ID:sHW7IJmG
>>116
なんで?
AMD64は16bit切ったけど、128の時32bit切るってどうして言い切れるの?
2020/05/15(金) 07:03:42.39ID:kJI5kK91
128bitなんか出ないよ
2020/05/15(金) 07:09:21.09ID:kJI5kK91
16bitは切った
32bitもいずれ切る
128bit CPUは出ない
2020/05/15(金) 07:25:33.82ID:Pb1EIu78
32bitのCPUが4つだから128bitだ、と嘘をつくゲーム機メーカーがあったな
2020/05/15(金) 08:01:44.45ID:GEHeiiL6
プレステ3だっけ
123デフォルトの名無しさん
垢版 |
2020/05/15(金) 09:25:45.18ID:v3x5k1hP
インテルのロードマップによると次に出るのは80ビットプロセッサ。
2020/05/15(金) 10:32:06.39ID:Sz6wqqvQ
レジスタに名前つけてほしいんだ
r10とか無機質な使い捨て兵士みたいな奴よりraxやrbpのほうがかわいげがあるだろ
2020/05/15(金) 11:21:50.10ID:QE59VEMD
>>122
Cellに関してそんなデマ流れてたっけ?
2020/05/15(金) 12:48:58.84ID:oHmbvZOo
>>122
ドリームキャストでは
2020/05/15(金) 18:13:09.35ID:sHW7IJmG
>>124
鉄オタを見てみなよ
103とか485とか、謎の数字で大喜びしてるよ?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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