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/
462デフォルトの名無しさん
垢版 |
2017/03/14(火) 10:21:04.36ID:vbV/Jpv3
>>459
テトリスのひとか
がんがれ
463459
垢版 |
2017/03/14(火) 23:58:45.78ID:MclzPbbI
環境も書いたほうがいいですね、Win7 x64でVC++2010 Expressです、rcファイル作って「BLOCKS BITMAP "block.bmp"」と書いてます
ファイル名は間違えていないですし、リンクしてoファイルは作っていないですけど間違っていますか?
最初は自作のbmpファイルでやっていたんですけど、途中から作られたbmpファイルでやろうとして表示されなくなりました
ここにあるblock.bmpというやつです
https://github.com/DQNEO/CppTetris

動画を見てロジックを理解しながら学習したいのですが、なかなか捗らないです

>>460
ごめんなさい、何行目のことかわからないです

>>461
修正しました!

>>462
ありがとうございます
2017/03/15(水) 12:08:58.48ID:7YWEdixI
馬鹿には無理
2017/03/15(水) 12:54:33.61ID:rPK+nkkO
用意されてたbmpでは動く。自作bmpでは動かない。ってことかよ。だとしたら原因ひとつじゃん
2017/03/15(水) 13:11:54.57ID:h6gBY/+f
>>463
imgurにでも自分で作ったbmp上げてみてよ
2017/03/15(水) 13:37:27.01ID:7YWEdixI
imgurって内容変わるんじゃね
2017/03/15(水) 13:42:29.19ID:h6gBY/+f
マジかごめん
2017/03/15(水) 16:58:13.14ID:0QbqsbzH
>>463
たぶん表示されてるんだと思う
WM_CREATE内の//debugの下の行を
BitBlt(hMemDC, 0, 0, 24, 24, hBlockDC, 0, 24, SRCCOPY);
にするとどうなる?
2017/03/15(水) 18:59:14.47ID:Jw8FgjFy
ちょっと見てみたよ
bmpのIDだけど、BLOCKS と "BLOCKS" は別だからね
BLOCKSは数値に置き換えられてるけどLoadBitmapは文字列の"BLOCKS"で読もうとしてる
初心者の頃はやりがちなやつだな
2017/03/15(水) 20:15:49.77ID:5s+i++Yx
>>469
ありがとうございます、これで表示されました
でもhttp://dqn.sakusakutto.jp/2012/11/cpp_tetris.htmlこの動画とは別の画像が表示されます
動画上では灰色ブロックが出てきているのに、自分の環境では赤色のブロックが出てきている状況です

>>470
動画では「"BLOCKS"」と定義されていたので自分は「TEXT("BLOCKS")」と定義したんですが両者は違うものなのでしょうか?
472デフォルトの名無しさん
垢版 |
2017/03/15(水) 20:16:40.91ID:LU+w+iAT
rcの方だろ
2017/03/15(水) 21:50:38.03ID:5BC7GJpQ
USBメモリなどUSB機器の接続検知をおこないたいのですが、WM_DEVICECHANGEを使用すると
https://qanda.rakuten.ne.jp/qa5211631.html
のようにUSBメモリによってはDBT_DEVICEARRIVALが何度か来てしまいます。
↑のQ&Aにあるように、正常に認識されたときを検出するにはどうすればよいでしょうか?
2017/03/15(水) 23:07:40.31ID:5s+i++Yx
>>472
rcのほうが間違えているということですか?
では「"BLOCKS" BITMAP "block.bmp"」ってことですか?
2017/03/16(木) 09:34:05.83ID:fy4K8iiJ
こうやって手取り足取りな奴はイライラする
2017/03/16(木) 11:58:27.68ID:bBZQNLcb
>>475
じゃあ来なければいいよ
2017/03/16(木) 15:14:09.34ID:Oq2mLnGK
お前が手足を完全にもいでトドメを刺せばいい
478デフォルトの名無しさん
垢版 |
2017/03/16(木) 17:17:19.21ID:Xe646fvV
モイっ!
2017/03/16(木) 22:29:13.60ID:xw1bzJ/c
>>473
((PDEV_BROADCAST_HDR)lParam)->dbch_devicetype が全部同じなの?
2017/03/19(日) 01:08:24.24ID:bawtCMkE
SHAppBarMessage(ABM_QUERYPOS, &abd);が正しい値を取得できない場合どうすればいいですか?

Windows10の設定:システム:ディスプレイ:ディプレイカスタマイズ画面
テキスト、アプリ、その他の項目サイズを変更する
で100%から175%までいろいろ変化させてみると表示位置のずれが発生します。
2017/03/19(日) 04:28:36.19ID:yhAiVzME
>>473
デバイスイベントが来たら、タイマーで少し時間が経ってからデバイスをチェックする。
時間が経つ前に次のデバイスイベントが来たら、タイマーをセットしなおしてまた少し時間が経つまで待つ。
2017/03/20(月) 10:38:14.59ID:px9bK4BM
タスクトレイの自動的に隠すになっているかを調べる場合どうすればよいですか?
2017/03/20(月) 11:02:11.90ID:OlmnVrTw
レジストリでも見ればわかるんじゃない?
484482
垢版 |
2017/03/20(月) 11:03:48.79ID:px9bK4BM
自己解決・・
APPBARDATA appbardata;
appbardata.cbSize = sizeof(APPBARDATA);
appbardata.hWnd = FindWindow(L"Shell_TrayWnd", 0);
if(SHAppBarMessage(ABM_GETSTATE, &appbardata))
{
// 自動的に隠れている
}
2017/03/20(月) 23:28:19.28ID:pgDQQg6b
最近、win32 はいつまで残るんだろうな、とふと不安になる
.net とか妙なものが蔓延ってるけど。
2017/03/21(火) 00:19:55.43ID:3zup+qvo
MS32bitOSが居る限りはなくならないだろ
.netだって内部的にWin32API呼び出しているし
2017/03/21(火) 02:42:20.25ID:dRq3wtLU
ここまで来て過去の莫大な資産を捨てることなんてあるの?
過去のwindowsアプリが新しいwindowsで動かなくなる日が来たら、それはもうwindowsじゃないと思う
2017/03/21(火) 03:05:14.83ID:RH/+/4vn
.NetですらFormsもWPFも放置でUWPに移行させようとしてるし、本音では過去のを全て捨ててUWPに一本化したいんだろう。
現実的には自らの強み(過去の資産)を手放すことになるから、やりたくてもやれないのだろうけど。
2017/03/21(火) 03:48:34.60ID:5huRZA1V
> FormsもWPFも放置でUWPに移行

MSって過去にも色々出しては無かったことにしてきたよな・・・
UWPすらどうなることか
2017/03/21(火) 04:41:12.33ID:ScjZQ1Ox
新しいものを出してきても、古いOSに対応させないから状況的に使えなくて、
使ってもいいかなと思える状況になった頃には古い技術になっているという悪循環
2017/03/21(火) 14:27:42.86ID:6WWBsw/3
>>485
windowsが無くなるまでは残るだろうと思ってたが

windowsが無くなりそうだしな
2017/03/21(火) 14:35:53.84ID:3zup+qvo
Win32APIは過去の莫大な資産であり、過去の莫大な負債でもある
2017/03/21(火) 17:25:00.36ID:ghEa3fZg
WindowsRuntimeを使わないといけなくなって
c++でコーディングし始めたけどかなり面倒くさい。
c++/cx使えっていうことだろうけど。
windows runtimeがwin32apiの代わりになるのかな?
2017/03/21(火) 23:26:33.91ID:y88e15JH
しっかし、なんで win32 はあんなに作るのが面倒くさいんだろうな・・・
1〜10まで教える感じではなく、1、10、100、1000まで教えてやっと動く感じ。
その分痒い所に手が届くが。。。
だんだん倦厭されているということは、今の納期!納期!の文化とは合わないんだろうな。
2017/03/22(水) 00:22:36.94ID:153gnM05
>>493
CX糞

https://github.com/Microsoft/cppwinrt
↑正解
2017/03/22(水) 00:24:51.70ID:Qoic3+WX
工程の短縮というのもあるけど
「どのアプリケーションでも同じことをしたければ同じ操作をすればいい」と言うのを求めると
同じ操作(同じ動作)をひとつの部品として提供するほうが良い
そういう開発者独自の機能より、一般化された機能や操作性が重要視されるようになったのも一因だと思う
2017/03/22(水) 00:30:45.76ID:oXk4FtJ8
>>495
これってまだいろいろ未完成じゃないん?
sdkにも含まれてないし扱いが不鮮明なんだよな。
2017/03/22(水) 00:48:25.76ID:KP40M7fU
https://msdn.microsoft.com/en-us/magazine/mt745094
https://msdn.microsoft.com/en-us/magazine/mt745090

C++/CXを置き換えてくのか平行してくのか知らんけど言語プロジェクションを
純C++のヘッダのみで提供するコンセプトなのかしら
ただ肝心の.winmdからヘッダを生成するコンパイラが(まだ)未提供だから
Win2Dみたいな標準に含まれてないランタイムコンポーネントは使えん感じ

ちょっと試してみた感じ/ZWも不要で既存のC++ライブラリとマージしやすそうだし
VS2017+CUの時点で使い物になってて欲しいなあ
2017/03/23(木) 12:03:55.36ID:39On3zda
>>494
APIの粒度の問題を言われてもな
2017/03/23(木) 20:22:15.45ID:NUnQTAC3
でも結局どの言語でもAPIインポートするんだよな
意味ないな
2017/03/26(日) 14:21:34.35ID:bO2o38VX
>>494
>痒い所に手が届く

これ重要
2017/03/26(日) 15:20:48.57ID:6+wpTDFL
代わりに痒くもないところが腫れあがる
2017/03/27(月) 08:29:30.36ID:S+/FPMiq
そりゃ掻いてる場所が違うんだ
2017/03/27(月) 08:31:23.68ID:CkZovUeE
痒いところをかくといけないのでかけないようになってます
2017/03/29(水) 15:32:52.21ID:Si2XZHCG
ショートカットの.lnkとかあと特殊なフォルダとかに出る
アイコン右下のやつってなんて名前なんでしょうか?
2017/03/29(水) 15:39:16.42ID:uG+6tdKu
overlay icons
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つはメニューウインドウ
メインウインドウにキーフォーカスがあるとメニューウインドウでキー操作できず、メニューウインドウにフォーカスがあるとメインウインドウでキー操作できない
メッセージを適宜流せばいいんじゃないか?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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