Win32API質問箱 Build123©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2016/10/08(土) 12:33:02.29ID:0jaJMPXG
Win32APIについての質問はこちらへどうぞ。

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

■過去スレ
Win32API質問箱 Build122
http://echo.2ch.net/test/read.cgi/tech/1451988219/
2017/03/29(水) 15:40:33.19ID:F9h34aTY
IDがqz
https://www.youtube.com/watch?v=9zzRg-rBpOQ
https://twitter.com/NomuraShuya/status/846159908542169088
2017/03/29(水) 15:41:59.56ID:3SDK0DLs
右下ってシールドか?
キャプチャぐらい貼れよ無能
2017/03/29(水) 15:43:11.84ID:F9h34aTY
これやろ

矢印
2017/03/29(水) 16:02:42.50ID:3SDK0DLs
矢印は左下だろ
アイコンオーバーレイって名称のことかな。ま、どうでもいいや
511デフォルトの名無しさん
垢版 |
2017/04/01(土) 18:40:58.67ID:m+AYjiBS
Win32APIサポート終了のお知らせ
2017/04/01(土) 18:56:32.68ID:Q4azjyiD
>>511
ソース希望
2017/04/01(土) 19:30:55.19ID:WcYopVS3
>>512
今日の日付
2017/04/03(月) 01:29:34.83ID:BKde4+E+
嘘をついていいのは午前中なんだが。
2017/04/03(月) 02:36:19.44ID:EQsFkd4r
それもウソだよ
2017/04/03(月) 20:45:49.66ID:fIAaSCsY
ウソだってのがウソなんだよ
2017/04/03(月) 20:47:03.89ID:DvppQH2R
4/1だけにしとけよ
2017/04/03(月) 21:39:52.92ID:gWDrFV4S
昭和64年は短命
64も短命?
128移行か
2017/04/03(月) 23:53:31.94ID:qQvnlfYK
コンピュータの進歩がかなり鈍化してきているし
物理的な限界に直面しつつあるから
128bitは俺の生きている間に来るかどうか
今の段階では個人用途でそれだけのメモリ空間が必要になる使い道が思い浮かばん
それはPCの性能がまだそこに全然達していないから全く思い浮かばんってことなんだけど
そこへ至るまでに何段階もの紆余曲折あるだろうから今の段階で考えるだけ無駄だけどね
世の中も全然変わってるだろうし
それはともかく256テラバイト以上のメモリともなると
それを処理するCPUも相当速くないと意味ないからね
今の状態ですらどちらかというとメモリは余り気味でCPUがボトルネックになってる感じだし
メモリは余ってるけど、データ積んだところでCPUが現実的な時間で処理しきれないっていう
まぁ1万コアぐらいないと256テラバイト以上のメモリは生かしきれないんじゃないかな
その場合メモリ帯域は足りるのかとか考えると、コアごとにキャッシュを山のように積むか
コヒーレンシとか考えるともはやそれも難しく
PS3のCellみたいなプログラミングを強いられるかもしれないな
生きてないと思うけど
2017/04/04(火) 00:09:36.07ID:3+iIkQVP
そういうことを考えると128bitはあまり現実味がないというか
ムーアの法則通りに半導体の性能が上がり続けたとしても
あくまで実時間に対して2倍2倍に増えていくってオーダーだけども
bit数の増え方はもっと激しくて、1bit増えるたびに2倍の空間になるのに
そのbit数自体が2倍2倍に増えて行くわけだから、オーダーが全然違う
8bit→16bit、16bit→32bit、32bit→64bitのように順調にはいかない
どんどん間が長くなっていく
128bitは遠い遠い未来か、もしくは訪れないってことになる
2017/04/04(火) 00:18:54.12ID:u5Wjlvjc
>>519
そのころはAIがプログラム書くようになるから心配無いよ
2017/04/04(火) 01:30:54.91ID:BzumqOQh
>>520
>8bit→16bit、16bit→32bit、32bit→64bitのように順調にはいかない

それはマイクロプロセッサしか見てないだろ。
メインフレームの世界だと、トランジスタ機になったときには
32bitや36bitがすでにできていたから、そこから全く進化してない
ともいえる。
2017/04/04(火) 05:56:42.50ID:/PIYb7TP
>>519
VLIWは?
2017/04/04(火) 08:06:05.98ID:Tyt+m4C4
>PS3のCellみたいなプログラミングを強いられるかもしれないな

中国のスパコン1位がそんなアーキティクチャで2位以下にトリプルスコアの圧勝だったな。
この先、性能を追求したらそうならざるを得ないかも。
2017/04/04(火) 08:19:35.41ID:1dU9a0gl
そんな下の層の違いは上には影響しないから俺には関係ないな
2017/04/04(火) 09:42:55.60ID:mPQmMovw
ボトルネックといえばフロントサイドバスとストレージ
2017/04/04(火) 22:01:11.94ID:73kME/Mz
128ビットも必要なプログラムは人間には書けない
2017/04/04(火) 22:14:00.40ID:eHZToKh6
書くのは簡単
2017/04/04(火) 22:23:58.48ID:u5Wjlvjc
一桁二桁の加減乗除なら良いが、128ビットフルに使う計算だと、紙の幅越えないかなw
2017/04/04(火) 22:31:01.19ID:2+tk3Olf
SSE2使ってるとどうやって128bit使おうかばかり考える
531デフォルトの名無しさん
垢版 |
2017/04/05(水) 01:26:41.60ID:XXr1MGA7
っつーかナニを128ビットにするわけよ?
2017/04/05(水) 02:45:28.37ID:qYLi57Sr
俺のナニは8bitだしorz
2017/04/05(水) 08:06:40.12ID:Bh5NPBNH
なに見栄張ってるんだよ
お前のは a bit (=ちょっと) だろ
2017/04/05(水) 08:54:18.24ID:BdqpqknF
just bit(1ビットだけ)だろ?
2017/04/05(水) 09:46:20.77ID:v8qJ9EUo
>>531
そりゃcharを16個詰め込んだりするだろ
536デフォルトの名無しさん
垢版 |
2017/04/05(水) 14:24:34.32ID:+eJqUohN
ここまで漏れの自演
2017/04/06(木) 17:46:17.73ID:Wug7VRpa
質問お願いします。
QueryPerformanceFrequency
で得た値は実行ごとに変わったりするから毎回計測しないと駄目ですか?
2017/04/06(木) 18:05:42.24ID:lEpGhGGY
どんな理由から毎回計測しないようにしたいんだ?それによる
2017/04/06(木) 18:18:16.44ID:Wug7VRpa
QueryPerformanceFrequencyの値がプログラムを終了するまで一定なら
1回しかこれを実行したくないし変わるなら一回時間を計測するごとにこれを実行したいです
2017/04/06(木) 18:30:27.17ID:lEpGhGGY
それなら一度だけでよかったはず
2017/04/07(金) 17:01:14.12ID:3o5iBWIM
システム起動中に変わることはないってさ
2017/04/07(金) 22:21:01.99ID:9JlGmFFU
ハイバーネーションみたいなのとかVMとか組み合わさるとどうなるかわかんないけどそういうことになってるね
2017/04/08(土) 09:03:07.92ID:ptqONvxu
俺は使うたびに毎回読んでるわ
あえてそうしない意味もないから
2017/04/08(土) 17:48:41.54ID:C7AQR+Mi
すみません、教えてください。

Borland BCC でC/Cppを勉強しているのですが、
CreateWindow( "EDIT", "あああああ", ....
にすると、あああああ の部分が文字化けして ,,,, と表示されてしまいます。
CreateWindow( "STATIC", "あああああ", ...
だと問題なく表示されます。

どうか教えてください、宜しくお願いします。
2017/04/08(土) 22:40:07.71ID:42pK0vcr
>>544
BCCはよくわかんけど、パラメーターが変とかじゃね?あと考えられるのはUNICODEとか?
このコードは RAD Studio10.1 BerlinとVS2015/2017で動くことは確認済み
HINSTANCE hInst;HWND hEdit,hStatic;
HWND hWnd= Handle; // BCBとか用
hInst=GetModuleHandle(0);
hEdit = CreateWindow(TEXT("EDIT") , TEXT("あああ") ,WS_CHILD | WS_VISIBLE | ES_LEFT,0 , 0 , 400 , 20 , hWnd , 0 ,hInst , NULL);
hStatic = CreateWindow(TEXT("STATIC") , TEXT("あああ") ,WS_CHILD | WS_VISIBLE | ES_LEFT ,0 , 20 , 400 , 20 ,hWnd , 0 ,hInst , NULL);
2017/04/09(日) 07:27:35.73ID:qFsmFYyf
>>544
省略せずに書いてみて。
547544
垢版 |
2017/04/10(月) 07:47:25.26ID:RoCnetHj
すみません、お手数をおかけします。


// あああああ が表示される
CreateWindow( "STATIC",
"あああああ", WS_CHILD | WS_VISIBLE | SS_CENTER,
x, y, w, h,
hGrp1, (HMENU)ID_TEXT1, hInst, NULL );

// あああああ が表示されず ,,,,, となる
CreateWindow( "EDIT",
"あああああ", WS_CHILD | WS_VISIBLE | SS_CENTER,
x, y+50, w, h,
hGrp1, (HMENU)ID_TEXT2, hInst, NULL );

hGrp1 はグループボックスです。
2017/04/10(月) 08:21:28.02ID:73IQobxS
"EDIT"にはSS_CENTERは使えないよ。EDITにはES_...スタイルを使う。
2017/04/10(月) 08:53:21.05ID:ZIRNWk3W
>>547
とりあえずコントロール毎に指定フラグが違う事を指摘しておく
2017/04/10(月) 16:45:44.18ID:PH6zMRzh
>>547
マルチバイト文字列が上手くいかないなら"AAAA"のようにシングルバイト文字列で試してみればいいじゃないか。
2017/04/10(月) 17:20:37.45ID:vopNHtdq
>>547
WM_SETFONTを使って、フォントを関連付けしてみたらどうだい?
2017/04/10(月) 17:25:49.47ID:73IQobxS
SS_CENTERがES_ENDELIPSISとして解釈されたんだろうな。
【今日の教訓】
EDITコントロールには、ES_で始まるスタイルを使え。SS_はEDITには使うな。
2017/04/10(月) 17:32:00.56ID:73IQobxS
ごめん、ES_ENDELIPSISというスタイルはなかった。SS_CENTERの代わりにES_CENTERを指定すればいい。
2017/04/10(月) 21:33:08.91ID:G1/iiInq
なんでESとかSSとか種類が有るの?
2017/04/10(月) 21:59:23.57ID:PH6zMRzh
そりゃ特定のコントロールに対するものだからさ。
あとSS_CENTERもES_CENTERも winuser.h で 0x01L と定義されている。

例えば共通の定義 XX_CENTER 0x01L としていた場合、
EDITコントロールの仕様変更でXX_CENTER 0x02L としたくても
STATICコントロールで同じ意義を使っているため変えることが出来ないだろ。
もし定義を変えた場合、STATICコントロールで0x02L というのは別の意味を持っている(かもしれない)ので動作がおかしくなる。
だから意味は同じでも“値”としては別のものとして扱う(定義する)。
2017/04/10(月) 22:00:00.06ID:PH6zMRzh
ミス
意義→定義
2017/04/10(月) 23:44:29.58ID:CESguEkt
じゃー将来SS_CENTERが別の値に変更されても安心だね
2017/04/11(火) 07:55:30.63ID:pJyY6xCH
変えたらひどいことになるけどなw
本音と建前みたいなもんでCの欠点だな。後発言語はそういうとこカバーされてる(のもある)
2017/04/11(火) 17:52:35.12ID:xC3FSY5Y
モーダルダイアログをメインの親とし、その後動的にサブメニューを表示する仕組みがあります。
サブメニュー表示中も親側の操作を可能とするため、サブメニューはモードレスとしていますが、
TABなどのキー入力が効きません。
辛うじて、初期フォーカスがあるボタンのみスペースキーを受け付けます。
マウス操作は問題ありません。

原因としてはサブメニューのキー処理をする IsDialogMessage を含むメッセージループが必要
なんだろうと思いますが、こういう場合の定石というのはあるのでしょうか?

思い付く実装は以下2パターンです。

その1
親もモードレスとし、親のメッセージループ中にサブメニューのメッセージも処理する仕組みを入れる。

その2
サブメニュー表示後に別スレッドを立ち上げ、そこでサブメニューのメッセージループを回す。


普通はこうだよ。とか他の方法などありましたらお願いします。
2017/04/11(火) 17:55:40.75ID:xC3FSY5Y
ちょっと語弊がありましたので訂正です。

ここで言う「サブメニュー」とは、CreateMenu などで作られる一般的に言うメニューではなく、
単なるポップアップスタイルのタイトルなしダイアログのことです。
CreateDialog で画面を作っています。
勝手に言葉を作ってすみません。
2017/04/11(火) 18:23:36.29ID:9HH9Hffg
2つウインドウがあって、1つはメインウインドウ、もう1つはメニューウインドウ
メインウインドウにキーフォーカスがあるとメニューウインドウでキー操作できず、メニューウインドウにフォーカスがあるとメインウインドウでキー操作できない
メッセージを適宜流せばいいんじゃないか?
2017/04/11(火) 22:23:16.04ID:xC3FSY5Y
フォーカスはそれがあるウィンドウで処理できるようなUIを考えています。
ユーザーがメインウィンドウにフォーカスを(マウスなどで)移せば、
以降はそのウィンドウでキーボード操作ができればいいです。その逆も然り。

適宜メッセージを流すにしても、結局どこでメッセージループを回すかという
話になるのではと思うのですが、違うのでしょうか?
2017/04/12(水) 22:43:12.22ID:iYQoJoP4
なにいってんだこいつ
2017/04/12(水) 23:28:35.38ID:lhjyuLrL
分からないのに無理して答えるなよ
565デフォルトの名無しさん
垢版 |
2017/04/13(木) 02:45:23.01ID:8XBnDqPS
最近よく足がつる
2017/04/13(木) 11:42:08.71ID:9jlRESvt
>>562
フォーカスを移してキーボード操作なんて危険なことを平気でやろうとする人はWin32APIなんて使わない方が良いんじゃね?

普通はフォーカスを移そうとしているオブジェクトにフォーカスを移す移さない関係なく文字列送信するもんじゃないの?

キーボード操作中にユーザーが別のウィンドウをクリックした場合とか考えないの?
2017/04/13(木) 13:32:39.75ID:OCOdT3+H
>>562
難しく考えるよりも、例えば、MVCベースで考えて設計したらいいんじゃねーの?
オブジェクト指向で設計するのもいいし、データ処理ありきで設計するのもあり、やりやすいように作ればいいよ。
2017/04/13(木) 17:59:38.26ID:zh4lU2gJ
>>566
なんで何も理解できていないのに無理に話に入ろうとするの?
2017/04/13(木) 18:16:04.36ID:xmE6C1ua
spyで見てどこにメッセージ届いてるか見ろ
2017/04/14(金) 00:20:20.46ID:+RGtmVs/
フォースを使うのじゃ
2017/04/14(金) 00:39:04.52ID:6ECgJlCU
Windows 10 Creators Update入れたら
DrawTextで大きめのフォントの描画が異常に遅くなった。
高DPI未対応のアプリは見捨ててGDIはシンプルに動いてほしい。
2017/04/14(金) 05:38:58.24ID:kIyPPZzD
>>567
2行目めちゃくちゃだなw
2017/04/14(金) 10:41:54.49ID:7fCdXhh/
>>561
>メッセージを適宜
それが質問内容でしょうよ。

>>566
タブコンに子ウィンドウ貼り付けて画面切り替えやキー入力受付なんて
日常茶飯事なのになにとち狂ったこと言ってるんだよ。

>>572
ほんとそう。
自分の知ってる単語を並べただけだわな。
2017/04/14(金) 11:11:32.10ID:LVRPT4/o
Win32APIの後継でc++/cliじゃないライブラリってないのかね?
2017/04/14(金) 11:29:24.19ID:iAr+rl+J
win32apiはオンリーワンで現役なので後継ってもんがそもそもなし
.netはラッパーライブラリ、cliは言語仕様
>>574の求めてる物の意味が分からん
UWPでも触ってろと言えばいいのか?
2017/04/14(金) 15:40:59.51ID:Z/bjVn5R
しいて言えばQtじゃね?
Qtのアプリって結構あるよね
2017/04/14(金) 18:23:47.19ID:R7yCPQGT
>>574
ライブラリってかAPIはユニバーサルwinのがそれじゃないの?
2017/04/14(金) 18:31:24.82ID:uRqmXJpf
WinRT API
579デフォルトの名無しさん
垢版 |
2017/04/14(金) 22:27:03.58ID:Gjx6wpyy
ここでWTLがまさかの大復活を遂げるわけよ
2017/04/15(土) 06:16:39.59ID:qt9qpnGQ
ちょっとしたもんつくるにはwtlが一番いい
2017/04/15(土) 18:14:11.71ID:JjgxHVsv
>>574
Windows API
後継っつーか名前が変わっただけだが
2017/05/05(金) 00:01:23.37ID:j+7+fM28
Windows10S では Win32/.net アプリは動かないだと。
UWPに変換すれば行けるらしいが、もうおしまいか?
2017/05/05(金) 00:15:11.42ID:NU+YZp1H
Windows10Sが相手にされなくて終わるだけ。
2017/05/05(金) 00:41:30.18ID:W8ns9+oF
既に相手されていない感
2017/05/05(金) 03:08:44.86ID:IUUvTOhg
お前らが相手にされてないじゃん
おっさんしかいないだろうこのスレ
2017/05/05(金) 08:12:57.54ID:WdEsZnG0
今回のターゲット層はメインストリームじゃないから
既存のアプリが使えなくても不満は少ないと踏んでるんだろう
まあWindowsRTみたいに核爆死はしないんじゃないか
MSもそんなに数を出荷しないだろうから

もう一度WindowsRTをSurfaceやらに載せることを夢見ているのなら
やはりもう一度爆死するだろう
2017/05/05(金) 18:13:03.55ID:ERU+CvkU
教育用途だっけ
今時のキッズは学校支給タブレットの制限外してゲームしてるらしいからその点ではいいかもな
2017/05/06(土) 18:59:21.43ID:0OTJXmRc
あるプログラムで使用中のGDIオブジェクトの個数を数える方法はありますか?
2017/05/06(土) 20:36:55.22ID:TAVkl+y8
タスクマネージャで見れるよ
2017/05/06(土) 20:50:23.24ID:IA0Dpe0I
GetGuiResources(hProcess, GR_GDIOBJECTS)
2017/05/06(土) 20:53:17.94ID:Mwx5Td89
>>588
GetGuiResources
GR_GDIOBJECTS(0) Return the count of GDI objects.
ってあるし。
2017/05/06(土) 20:54:47.07ID:NWV3MG9s
ありがとー。
2017/05/06(土) 21:06:22.69ID:HiVS0qll
なにするつもりなのさ
2017/05/06(土) 21:08:39.06ID:NWV3MG9s
メモリーリーク対策やデバッグやらだよ。
595雪風
垢版 |
2017/05/06(土) 21:54:04.69ID:QwsGrGdx
>>593
自演 オナヌーだろ
2017/05/06(土) 22:06:22.10ID:sQ11ayCM
書いてて恥ずかしくないの?
2017/05/07(日) 02:01:32.34ID:KMqw+OzL
memory leak detector
https://tocsworld.wordpress.com/2014/09/02/vc%E3%83%A1%E3%83%A2%E3%83%AA%E3%83%AA%E3%83%BC%E3%82%AF%E6%A4%9C%E5%87%BA%E3%83%84%E3%83%BC%E3%83%AB/
598デフォルトの名無しさん
垢版 |
2017/05/07(日) 07:23:08.46ID:fOF53fEF
firefoxとかリーク笑えるよな
2017/05/09(火) 09:36:37.30ID:PBqzgUoz
特定のアプリケーションがハング状態になってるかを判断する方法ありませんか?
.netではRespondingプロパティで判断できるようですがwin32apiでやりたいので
2017/05/09(火) 09:45:13.26ID:XSL1JKA6
そこまで分かってるならソース読めよ
https://github.com/Microsoft/referencesource/blob/master/System/services/monitoring/system/diagnosticts/Process.cs

SendMessageTimeoutでWM_NULLを投げてるだけだな
2017/05/09(火) 10:04:41.73ID:4hsRJ4JE
その質問コピペだよ
2017/05/09(火) 10:17:40.46ID:PBqzgUoz
ありがとうございました!
2017/05/09(火) 11:30:51.02ID:fjUlBZmQ
>>600
これ使ってDoS攻撃みたいなこと出来るんかな
2017/05/09(火) 21:20:50.87ID:2/UhKD8y
最近のアプリに多い、重い処理は別スレッドで実行してGUIが固まらないようにしてる場合は役に立たないかな
2017/05/09(火) 21:48:08.53ID:LCRfM0F6
>>604
それは「重い処理のときにハングアップしているように見える」というだけの話で、
そういうレベルでの意味ならマルチスレッド化によって役には立たない。
でもそういうマルチスレッド化したソフトウェアでも
画面描画の時の不具合などでハングアップすることもあるわけで役に立たないということはないよ。
2017/05/09(火) 22:06:52.23ID:2/UhKD8y
>>605
バグでずっと重い処理が終わらない場合を想定してた。ウィンドウメッセージは処理されるものの、事実上のハング。
確かに全く役に立たないわけではないね。
2017/05/09(火) 23:47:50.15ID:Ephb2XFu
ウィンドウがわかるならIsHungAppWindowってのがある
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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