X



Win32API質問箱 Build124
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
2017/11/11(土) 19:23:00.69ID:TpLoCFAx
Win32APIについての質問はこちらへどうぞ。

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

■過去スレ
Win32API質問箱 Build123
http://mevius.2ch.net/test/read.cgi/tech/1475897582/
Win32API質問箱 Build122
http://echo.2ch.net/test/read.cgi/tech/1451988219/
Win32API質問箱 Build121
http://echo.2ch.net/test/read.cgi/tech/1438695290/
Win32API質問箱 Build120
http://echo.2ch.net/test/read.cgi/tech/1428570962/

■関連スレ
Visual Studio 2017 Part4
http://mevius.2ch.net/test/read.cgi/tech/1509244956/
【C++】 DirectX初心者質問スレ Part40 【C】
http://mevius.2ch.net/test/read.cgi/tech/1474782237/
0102デフォルトの名無しさん
垢版 |
2017/12/10(日) 20:23:53.29ID:bN2Fk6CS
>-lodbc32 でコンパイル

これで実行時に見に行くのが 32 になるか 64 になるかは決まらない
いわんか wow64 を見るのか system32 を見るのかをや
0103デフォルトの名無しさん
垢版 |
2017/12/12(火) 10:54:59.64ID:dxitcW2N
WS_POPUPの子ウィンドウって、
親ウィンドウからはGetNextWindow()などのループで辿っていけないものですか?
GW_ENABLEDPOPUPだと、見えているものしか出てこないようです。
0109デフォルトの名無しさん
垢版 |
2017/12/12(火) 13:05:49.05ID:dxitcW2N
>>107
デスクトップの子ウィンドウを巡っていって、
片っ端からその親を調べていくしかないってことですか?
0111 ◆QZaw55cn4c
垢版 |
2017/12/13(水) 19:25:57.66ID:oFXUjnGM
>>99
引き続き ODBC まわりを触っている
コンパイラの警告を黙らせるために、いい加減に適当にキャストしていたのが、バグ(c++ delete が失敗する)のもとになっていた
ああ、ダウンキャスト/アップキャストの区別がつかない、こまったこまった
0113 ◆QZaw55cn4c
垢版 |
2017/12/20(水) 21:21:04.61ID:8hKmNCKf
ODBC を完全に把握した
しかし、面倒なので jdbc を使うことにした…
0114デフォルトの名無しさん
垢版 |
2017/12/24(日) 20:20:35.24ID:lhIRobpu
IsWindows10OrGreater関数を、
Windows10最新版(build16299)で使用すると、
Windows10にも関わらずfalseが返ってきます。
原因に心当たりのある聡明なお方はいらっしゃいませんか…?
0116片山博文MZ ◆T6xkBnTXz7B0
垢版 |
2017/12/24(日) 20:45:24.50ID:gjaYlpPe
GetVersionExはウソつきだが、OSのバージョン番号に依存するアプリは地獄へ行かねばならぬ。
0118デフォルトの名無しさん
垢版 |
2017/12/24(日) 21:46:03.09ID:wguJVDMb
それapiじゃなくてVersionHelpers.hにある関数じゃないか?デバッグして何かえってるか見ろ
0119デフォルトの名無しさん
垢版 |
2017/12/24(日) 22:22:12.25ID:VzvV4f9p
VersionHelpers.hの実装はVerifyVersionInfoだけどどのみちマニフェストでの指定は必要ってだけやね
0125デフォルトの名無しさん
垢版 |
2018/01/01(月) 14:03:42.43ID:yaUpEKWz
あけおめ
0129 ◆QZaw55cn4c
垢版 |
2018/01/13(土) 20:37:47.18ID:9/EYlaQy
win32api の記述を C から C++ に移行中です
CreateWindow() が hwnd を返すタイミングより先に、ウィンドウプロシージャに WM が流れ始めることを特定するのに時間がかかりました…
0130デフォルトの名無しさん
垢版 |
2018/01/13(土) 22:36:08.61ID:TKXLfFcD
>>129
20年前位にやったなあ
WindowProc
DialogProc
ThreadProc
****Callback
この辺を包んでクラス化

ウィンドウの場合
CreateWindowのパラメータでクラスのポインタを渡し
WM_CREATEで受け取るって感じ
0131 ◆QZaw55cn4c
垢版 |
2018/01/13(土) 22:55:08.82ID:9/EYlaQy
>>130
そうです、それです!WNDCLASS.cbWndExtra を使うのがミソです!

CreateWindow(..... 最後 (Derived)this);

extern "C" long CALLBACK WindProc(...) {
if (msg == WM_CREATE) {
p = (Derived*)((LPCREATESTRUCT)lp)->lpCreateParams;
SetWindowLong(hwnd, 0, (LONG)p);
p->hwnd = hwnd // これを見つけるのが大変だった
.
} else {
p = GetWindowLong(hwnd, 0)
return p->WindowProc() // goto Derived::WindowProc()
}
Derived::WindowProc() {
this->Base::WindowProc()

virtual Base::WindowProc() {
HWND hwnd // member instance variable
return ::DefWindowProc(this->hwnd, mwg, wp, lp);

温故知新…
0133 ◆QZaw55cn4c
垢版 |
2018/01/14(日) 00:44:30.50ID:ekN/OeXo
>>132
了解!そういうのは全部まとめて ::DefWindowProc() に流しちゃっているのでダイジョブです!
0134デフォルトの名無しさん
垢版 |
2018/01/14(日) 02:25:37.15ID:yVTJx4nd
この行いらね
HWND hwnd // member instance variable
0135 ◆QZaw55cn4c
垢版 |
2018/01/14(日) 08:36:59.72ID:ekN/OeXo
>>134
ごめんなさい >>131 ははおって書いたので、内容が今一つはっきりしなかったこと謝罪いたします。
その行は、自作 Window クラスのメンバとして書いたつもり、Window クラスに hwnd を持たせたいと考えているのです
0138片山博文MZ ◆T6xkBnTXz7B0
垢版 |
2018/01/15(月) 01:09:31.49ID:rJu9VjYT
cbWndExtra == 0なウィンドウには使えないから、結局、設計思想が間違っている。
0146デフォルトの名無しさん
垢版 |
2018/01/19(金) 16:44:05.34ID:2zY1R7Mw
MSゴシックやMS明朝のフォントで描画するとき、
小さいときはビットマップフォントが使われることは知っているのですが、
常にビットマップフォントを使わないように
CreateFontなどで指定することはできませんか?
0147デフォルトの名無しさん
垢版 |
2018/01/19(金) 17:25:15.15ID:bZ1P4CsQ
使われることも知らなかったが、小さいとドットが出てくるからビットマップをやめるメリットがなく逆に処理が多くなるデメリットが大きくなるんじゃないか?
0148デフォルトの名無しさん
垢版 |
2018/01/19(金) 17:43:48.94ID:SC+4wpaQ
DirectWriteだと強制的にヒンティング切れるからそれでイケる
GDIはGetGlyphOutlineでAA付きで書き出すくらいしか知らん
0149デフォルトの名無しさん
垢版 |
2018/01/19(金) 17:50:56.78ID:0WIN7azb
24dot x 24dot とかで truetype 描画とかしたいの?
0150デフォルトの名無しさん
垢版 |
2018/01/19(金) 17:51:10.40ID:H+lB59KU
ワイは大きめのビットマップメモリ領域に一度描画してから、縮小表示という無駄オブ無駄処理しとるやで
0152片山博文MZ ◆T6xkBnTXz7B0
垢版 |
2018/01/19(金) 20:16:32.63ID:2v31ru1f
IPアドレスコントロールのEDIT子ウィンドウがGWLP_USERDATAを使っているみたい。。。
0154片山博文MZ ◆T6xkBnTXz7B0
垢版 |
2018/01/19(金) 23:42:37.51ID:2v31ru1f
GWLP_USERDATAを使うのは低コストな選択肢としてアリ。ただし、IPアドレスコントロール内部やユーザー側のコントロールに触れる場合は、
問題が生じる可能性がある、という結論でファイナルアンサー。
0155デフォルトの名無しさん
垢版 |
2018/01/20(土) 04:45:27.61ID:kn1Qti/r
extradataはチェインにして使うもんじゃね?
0156デフォルトの名無しさん
垢版 |
2018/01/20(土) 10:42:21.43ID:eYoKNwxu
>>154
問題が生じる可能性があるけど選択肢としてアリなら
なぜ他人の実装には間違ってるなんてケチつけたんだ?
0157デフォルトの名無しさん
垢版 |
2018/01/22(月) 11:37:19.82ID:BYAVkCTU
>>147-150
ありがとうございます。
やっぱり簡単にはいかないんですかね。
印刷の処理は今のままでよく、画面上をその印刷イメージに近づけたいので、
DirectWriteの勉強をしてみたいと思います。
0158デフォルトの名無しさん
垢版 |
2018/01/22(月) 12:42:48.77ID:kH4wUtRw
印刷物をモニターに等倍表示したいんだ!ってわけじゃないだろ?
モニター上に拡大表示すりゃいいじゃん
0159デフォルトの名無しさん
垢版 |
2018/01/22(月) 20:49:32.77ID:ZoyisMRe
わざわざ小さいときはビットマップフォントを使うのは、
その方が綺麗だからなんだけど
0160デフォルトの名無しさん
垢版 |
2018/01/22(月) 22:24:40.60ID:CymiFGuu
>>157
>印刷の処理は今のままでよく、画面上をその印刷イメージに近づけたいので
やったことないけど・・・
CreateDC(プリンタドライバ名・・・)
CreateCompatibleDC()
CreateCompatibleBitmap()
でプリンタ互換のメモリデバイスコンテキストを作成し、これに印刷と同じ描画を行った後、
BitBltで画面にコピーするなり、DIBセクションにコピーするなりすれば良いんじゃね?
0161デフォルトの名無しさん
垢版 |
2018/01/22(月) 22:31:46.76ID:XoG7D2n/
それするとデバイスコンテキストに書き込んだ時に、フォントがビットマップ描画になるから嫌ってんでしょ
そもそもプリンタ自体の解像度とかあるから、ビットマップやめたとこでそれ意味あんのって感じだけどw
0162デフォルトの名無しさん
垢版 |
2018/01/22(月) 23:19:36.00ID:CymiFGuu
>>161
解像度の高いプリンタではTrueType中のVectorデータ、解像度の低い画面ではTrueType
中のビットマップデータが使われることで、文字幅(→結果的に文字位置)が微妙に違って
しまうのを嫌っているんじゃないかとエスパーした
0164デフォルトの名無しさん
垢版 |
2018/01/23(火) 03:11:18.71ID:vxISVnp8
TeX使え
0165デフォルトの名無しさん
垢版 |
2018/01/23(火) 09:23:53.86ID:8Xy2PdTe
Acrobat Readerは、MSゴシックやMS明朝で画面上の表示が小さいときも
ビットマップフォントは使われないようですし、
やはりビットマップフォントよりも綺麗に見えるので、
これと同じような描画ができないかと思った次第です。
もちろん、AdobeがGDIだけで描いているとは思ってませんが。
0169デフォルトの名無しさん
垢版 |
2018/01/30(火) 17:55:13.46ID:SJob4Z7Y
win32api直接叩いてるんですけど、タブオーダーってどうやって設定されるんですか?
多分 CreateWindow 呼んでコントロールを作った順番そのままだと思うんですが、
なんかTABキー押してもフォーカスが移動しないんです
0171片山博文MZ ◆T6xkBnTXz7B0
垢版 |
2018/01/30(火) 18:09:59.30ID:XXEBAVhR
モードレスの場合は、メッセージループにIsDialogMessage呼び出しが必要。
0173デフォルトの名無しさん
垢版 |
2018/01/30(火) 18:29:42.34ID:SJob4Z7Y
ああー
助かりました
IsDialogMessage でうまくいきました。
余談ですが CreateWindow の呼び出し順とは逆に移動するんですね。
Z手前から奥に向かって移動する感じですかね。
とりあえず後はどうにかなりそうです
0174デフォルトの名無しさん
垢版 |
2018/01/30(火) 21:54:44.90ID:fLRARGcM
プリプロセッサマクロ値 "_MSC_VER" を知る方法はありませんか?
cuda 9.1 提供のヘッダの #error が反応してしまいます
0179デフォルトの名無しさん
垢版 |
2018/02/02(金) 22:47:25.95ID:0FY9q5SB
dll間でデータを共有するのはdata_segでできるけど
dllAで動的確保したデータ(クラスでメンバ関数有り)をdllBでも使えるようにするには
マッピング以外に何がある?
0180デフォルトの名無しさん
垢版 |
2018/02/02(金) 23:33:47.71ID:3zbIMbyp
ふつうにポインタ渡せばいいんじゃね?もちろんクラスの定義は一致している前提だけど。
0181デフォルトの名無しさん
垢版 |
2018/02/03(土) 09:27:06.89ID:KnnmFvy8
ごめんdllA, dllBって書いたけど間違い

正しくはexeAとexeBが同じdllを使ってる状況で
exeAで動的確保して初期化もしたクラス(メンバ関数有り)をexeBのdllでも使いたいんだ
0183デフォルトの名無しさん
垢版 |
2018/02/03(土) 10:55:22.08ID:FhluCmMv
プロセス間で共有したいんだろ?
共有メモリでもなんでも使ってデータ本体を保管
データ本体にアクセスするクラスを作ってそれはプロセス内でのみ利用すりゃいい
要はクラスそのものはプロセス間で利用しようと考えない
0186デフォルトの名無しさん
垢版 |
2018/02/08(木) 23:07:42.59ID:C1oz7nNF
Windowsがシャットダウンした時刻を記録したいんだけど、
1秒おきにファイルに時刻を書き込み続けるしかないかね?
0187デフォルトの名無しさん
垢版 |
2018/02/08(木) 23:27:36.93ID:UuuqIveG
カーネルエラーで落ちたのでなければイベントログにシャットダウン時刻が書いてあるはずだが
0190デフォルトの名無しさん
垢版 |
2018/02/09(金) 03:30:07.89ID:dI/VZTKe
初歩的な内容で申し訳ないのですが、、、

親ウィンドウと子ウィンドウがあります。
子ウィンドウは自分でCreateWindow()を使い、親のウィンドウハンドルを指定して作っています。

そこで質問ですが、親ウィンドウでWM_DESTROYを処理する際に、子ウィンドウに対して
明示的にDestroyWindow()を一々実行する必要はありますか?
自分としては子ウィンドウは親の破棄に伴って暗黙のうちに破棄されると勝手に解釈しているのですが、
間違いがあればご指摘ください。
0191デフォルトの名無しさん
垢版 |
2018/02/09(金) 04:33:00.77ID:dI/VZTKe
確認不足でした。
DestroyWindowをしなくてもちゃんと破棄されていましたね。
WM_DESTROYが来ていました。
すみませんでした。
0192デフォルトの名無しさん
垢版 |
2018/02/09(金) 07:08:12.16ID:h2mjWzgv
わかればよろしい
0193デフォルトの名無しさん
垢版 |
2018/02/13(火) 21:23:21.68ID:KbLCHvlc
ウィンドウサイズが変更禁止されているウィンドウを強制的にサイズ変更する方法を教えてください
■ このスレッドは過去ログ倉庫に格納されています

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