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/
探検
Win32API質問箱 Build124
■ このスレッドは過去ログ倉庫に格納されています
2017/11/11(土) 19:23:00.69ID:TpLoCFAx
2017/12/04(月) 22:43:49.45ID:7Hssi5iQ
2017/12/04(月) 22:54:06.06ID:m/z1wPSa
考えるもなにも普通にスケール-1ちゃうんか
2017/12/04(月) 23:12:40.00ID:7Hssi5iQ
>>78
oh www
oh www
低レベルな話ですみません。
ダイアログアプリケーション(calc.exe と同様)
を win32api/C で書いています。
希望:ベースのダイアログの色を起動後に変えたい。
したこと: WM_CTLCOLORSTATICを捕らえて、
SetBkColor((HDC)wp, BackGroundColorG); および
return HBRUSH / HBRUSH を DefWindowProc() に渡さずに返す
以上で、スタティックコントロールの背景色およびエディットコントロールのディスエイブル時の背景色は変わりました。
しかし、ベースダイアログの色は変わりません。
頭で、RegisterClass() にわたす前に設定する WNDCLASS の hbrBackground の値が、ダイアログのCreateWindow() の後も反映されています。
後から
SetClassLongPtr((HWND)lp, GCL_HBRBACKGROUND, (LONG)hbrBackGroundS)
しても反映されないことを確認しています。
起動後にダイアログの色を変えるにはどうすればいいでしょうか?
明日には再現コードをお見せできると思います。
アドバイスいただきたくよろしくお願いいたします。
#WINDCLASS.hbrBackground = NULL にすると、透けてデスクトップが移りこみ、これはこれで面白いです…もう寝ます
ダイアログアプリケーション(calc.exe と同様)
を win32api/C で書いています。
希望:ベースのダイアログの色を起動後に変えたい。
したこと: WM_CTLCOLORSTATICを捕らえて、
SetBkColor((HDC)wp, BackGroundColorG); および
return HBRUSH / HBRUSH を DefWindowProc() に渡さずに返す
以上で、スタティックコントロールの背景色およびエディットコントロールのディスエイブル時の背景色は変わりました。
しかし、ベースダイアログの色は変わりません。
頭で、RegisterClass() にわたす前に設定する WNDCLASS の hbrBackground の値が、ダイアログのCreateWindow() の後も反映されています。
後から
SetClassLongPtr((HWND)lp, GCL_HBRBACKGROUND, (LONG)hbrBackGroundS)
しても反映されないことを確認しています。
起動後にダイアログの色を変えるにはどうすればいいでしょうか?
明日には再現コードをお見せできると思います。
アドバイスいただきたくよろしくお願いいたします。
#WINDCLASS.hbrBackground = NULL にすると、透けてデスクトップが移りこみ、これはこれで面白いです…もう寝ます
81デフォルトの名無しさん
2017/12/05(火) 02:14:11.47ID:7/1p3S3k >>80
WM_CTLCOLORDLG でブラシを返す
WM_CTLCOLORDLG でブラシを返す
>>81
コメントいただき感謝しています。
試してみたのですが、よくありません。やはりダイアログは WNDCLASS.hbrBackground の指定が優先されています。
現象を再現させたコード次のとおりです。こちらでは cygwin/mingw 32 ビットでコンパイルしています。
test.c https://ideone.com/pch378
test.h https://ideone.com/1iKq2z
test.rc https://ideone.com/kZH3Uf
makefile https://ideone.com/9MDXT0
コメントいただき感謝しています。
試してみたのですが、よくありません。やはりダイアログは WNDCLASS.hbrBackground の指定が優先されています。
現象を再現させたコード次のとおりです。こちらでは cygwin/mingw 32 ビットでコンパイルしています。
test.c https://ideone.com/pch378
test.h https://ideone.com/1iKq2z
test.rc https://ideone.com/kZH3Uf
makefile https://ideone.com/9MDXT0
83片山博文MZ ◆T6xkBnTXz7B0
2017/12/05(火) 04:05:08.93ID:KBxdaLdg WM_ERASEBKGND
84デフォルトの名無しさん
2017/12/05(火) 04:43:50.94ID:wJV4W7rZ ここ参照
https://stackoverflow.com/questions/20519533/change-the-background-color-of-a-dialog-box-win32api
Tab キーによるフォーカス移動などを司る IsDialogMessage を呼んでいる辺りも注目
https://stackoverflow.com/questions/20519533/change-the-background-color-of-a-dialog-box-win32api
Tab キーによるフォーカス移動などを司る IsDialogMessage を呼んでいる辺りも注目
>>81, >>83-84
コメントありがとうございます。
状況が変わりました。すなわち、
1. DefWindowProc() ではなく、DefDialogProc() にする
2. (>>81) WM_CTLCOLORDLG メッセージ処理(ブラシを返す)
によりダイアログのベースの色が変わりました。
現在典拠を探しています。
遅いところ皆様ありがとうございました。勇気がでてきました!
https://ideone.com/ZBuhbz
>>84
StackOverflow のプログラム例は、(通常)ウィンドウがあって、そこから CreateDialog で新しくモードレスダイアログを作るときの作法ですね。
IsDailogMessage() が必要かどうかは、まだよくわかりません。
コメントありがとうございます。
状況が変わりました。すなわち、
1. DefWindowProc() ではなく、DefDialogProc() にする
2. (>>81) WM_CTLCOLORDLG メッセージ処理(ブラシを返す)
によりダイアログのベースの色が変わりました。
現在典拠を探しています。
遅いところ皆様ありがとうございました。勇気がでてきました!
https://ideone.com/ZBuhbz
>>84
StackOverflow のプログラム例は、(通常)ウィンドウがあって、そこから CreateDialog で新しくモードレスダイアログを作るときの作法ですね。
IsDailogMessage() が必要かどうかは、まだよくわかりません。
86デフォルトの名無しさん
2017/12/05(火) 07:41:30.27ID:S7FU9Yl0 大雑把に言うと WindowProc に来る前 DefDlgProc が
値を返しちゃうので色が変わらないわけです (多分)。
他にも DefDlgProc が反応するメッセージについては WindowProc ではなく DlgProc で処理する必要があります。
どれがそうか一覧等あるのかは知りませんが。
値を返しちゃうので色が変わらないわけです (多分)。
他にも DefDlgProc が反応するメッセージについては WindowProc ではなく DlgProc で処理する必要があります。
どれがそうか一覧等あるのかは知りませんが。
2017/12/08(金) 17:59:18.20ID:UBTxsLd5
フルスクリーンでも、色の取得ができるAPIは存在しないのでしょうか?
GetPixelを試みましたが、何故かフルスクリーン対象にすると 常に0を返されます
フルスク色取得が可能なapi、もしくはGetPixelでも出来るのでしたらやり方を教えてください
GetPixelを試みましたが、何故かフルスクリーン対象にすると 常に0を返されます
フルスク色取得が可能なapi、もしくはGetPixelでも出来るのでしたらやり方を教えてください
88デフォルトの名無しさん
2017/12/08(金) 21:57:36.41ID:TcYdv7Hd MemDC にコピーしてから好きに弄ぶ
2017/12/09(土) 12:37:57.44ID:nuTX+Pqx
できましたありがとう
90デフォルトの名無しさん
2017/12/09(土) 22:01:16.23ID:Lkee30cD 質問です。
あるソフトがしたUSBの出力を、コンピュータの外部ではなくそのコンピュータ内の他のソフトへリダイレクトすることはできますでしょうか?
あるソフトがしたUSBの出力を、コンピュータの外部ではなくそのコンピュータ内の他のソフトへリダイレクトすることはできますでしょうか?
2017/12/09(土) 22:33:28.46ID:rMepMJ5T
>>90
方法1 (「あるソフト」にパッチが可能なら)
CreateFile()/WriteFile()などをフックする。
ただし、これらはKernel32.dllにあるAPIなので通常の方法ではフックできない。
「あるソフト」内のByte列"Kernel32.dll"を(例えば)"Xernel32.dll"に書き換え、
Xernel32.dllを作成・フックする。
方法2
対象デバイス用デバイスドライバと同じAPIを持ち、かつその入出力を「他のソフト」
へ受け渡すAPIを持つデバイスドライバを作成する。
方法3 (本物のUSBデバイスも生かしておくなら)
フィルタードライバーを作成し、そこで「あるソフト」の出力を盗み見る。
方法1 (「あるソフト」にパッチが可能なら)
CreateFile()/WriteFile()などをフックする。
ただし、これらはKernel32.dllにあるAPIなので通常の方法ではフックできない。
「あるソフト」内のByte列"Kernel32.dll"を(例えば)"Xernel32.dll"に書き換え、
Xernel32.dllを作成・フックする。
方法2
対象デバイス用デバイスドライバと同じAPIを持ち、かつその入出力を「他のソフト」
へ受け渡すAPIを持つデバイスドライバを作成する。
方法3 (本物のUSBデバイスも生かしておくなら)
フィルタードライバーを作成し、そこで「あるソフト」の出力を盗み見る。
2017/12/09(土) 23:13:14.29ID:ntUKDUa2
kernelにあっても普通にインジェクトでフックできるような・・・
2017/12/09(土) 23:53:32.26ID:ntUKDUa2
と、書き込んでからプロキシ思い出した。あれ64bitのは作るの面倒すぎだけど32だったらありだな
94デフォルトの名無しさん
2017/12/10(日) 04:43:00.48ID:Ivp7Fyt3 USBハブで物理的にteeすることって可能なんだろうか
2017/12/10(日) 04:49:03.51ID:jPbEe7nV
Window API Hook で検索すればすぐ出てくるけど API のフックはかなり簡単にできる
DLL インジェクション併用で CreateFile / WriteFile をフックするのがいいかもね
DLL インジェクション併用で CreateFile / WriteFile をフックするのがいいかもね
2017/12/10(日) 09:52:56.38ID:tk0MZw2P
> ・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
テンプレのこれいるか?ってほど簡単にできるしな
1つのページを見るだけではできなくても
いくつかのページの情報を自分なりにまとめたらできるようになる
テンプレのこれいるか?ってほど簡単にできるしな
1つのページを見るだけではできなくても
いくつかのページの情報を自分なりにまとめたらできるようになる
97デフォルトの名無しさん
2017/12/10(日) 10:07:01.58ID:0DY65cdk 皆さまありがとうございました
APIフックを試します
APIフックを試します
2017/12/10(日) 10:07:15.33ID:0xn5varO
>>94
usbアナライザ
usbアナライザ
うーむ、やっとコンパイルできた…
32ビットコードは 32ビットのODBCデータソースしかみないし
64ビットコードは 64ビットのODBCデータソースしかみないのか…
手持ちの excel は 32ビットで、見に行くODBC テーブルは 32 ビット用であったことが混迷に拍車をかけてしまっていた
cigwin の odbcライブラリとしては -lodbc32 でコンパイルしているが、32ビットなのか 64 ビットなのか、いったいどうなっているんだ?!
32ビットコードは 32ビットのODBCデータソースしかみないし
64ビットコードは 64ビットのODBCデータソースしかみないのか…
手持ちの excel は 32ビットで、見に行くODBC テーブルは 32 ビット用であったことが混迷に拍車をかけてしまっていた
cigwin の odbcライブラリとしては -lodbc32 でコンパイルしているが、32ビットなのか 64 ビットなのか、いったいどうなっているんだ?!
100デフォルトの名無しさん
2017/12/10(日) 20:10:47.46ID:NCCsPX6A shell32.dll とか kernel32.dll とかもそうだし、
32→64 ビットではモジュールの名前変わらなかったからね
32→64 ビットではモジュールの名前変わらなかったからね
101片山博文MZ ◆T6xkBnTXz7B0
2017/12/10(日) 20:15:22.78ID:mhuWrsB5 dumpbin 使え。
102デフォルトの名無しさん
2017/12/10(日) 20:23:53.29ID:bN2Fk6CS >-lodbc32 でコンパイル
これで実行時に見に行くのが 32 になるか 64 になるかは決まらない
いわんか wow64 を見るのか system32 を見るのかをや
これで実行時に見に行くのが 32 になるか 64 になるかは決まらない
いわんか wow64 を見るのか system32 を見るのかをや
103デフォルトの名無しさん
2017/12/12(火) 10:54:59.64ID:dxitcW2N WS_POPUPの子ウィンドウって、
親ウィンドウからはGetNextWindow()などのループで辿っていけないものですか?
GW_ENABLEDPOPUPだと、見えているものしか出てこないようです。
親ウィンドウからはGetNextWindow()などのループで辿っていけないものですか?
GW_ENABLEDPOPUPだと、見えているものしか出てこないようです。
104デフォルトの名無しさん
2017/12/12(火) 11:15:35.06ID:79jDOY0/ 見えてる=enabled popup
ってことなんだな。普通にGW_CHILD使えばいいじゃん
ってことなんだな。普通にGW_CHILD使えばいいじゃん
105デフォルトの名無しさん
2017/12/12(火) 11:48:53.11ID:dxitcW2N >>104
GW_CHILDだとWS_POPUPのやつは出てこないようです
GW_CHILDだとWS_POPUPのやつは出てこないようです
106デフォルトの名無しさん
2017/12/12(火) 12:27:55.11ID:RQRbm0+h 人間は見えるものしか見ない
馬鹿は観たいものしか見ない
馬鹿は観たいものしか見ない
107片山博文MZ ◆T6xkBnTXz7B0
2017/12/12(火) 12:33:23.81ID:pbeXhwoZ EnumWindows、EnumChildWindows推奨。
108デフォルトの名無しさん
2017/12/12(火) 13:04:46.42ID:79jDOY0/ ためしたらまじでgw_childだめなんだなw
全ウインドウの親見てくのか
全ウインドウの親見てくのか
109デフォルトの名無しさん
2017/12/12(火) 13:05:49.05ID:dxitcW2N110片山博文MZ ◆T6xkBnTXz7B0
2017/12/12(火) 14:01:58.99ID:pbeXhwoZ EnumChildWindowsだけでいっか。
>>99
引き続き ODBC まわりを触っている
コンパイラの警告を黙らせるために、いい加減に適当にキャストしていたのが、バグ(c++ delete が失敗する)のもとになっていた
ああ、ダウンキャスト/アップキャストの区別がつかない、こまったこまった
引き続き ODBC まわりを触っている
コンパイラの警告を黙らせるために、いい加減に適当にキャストしていたのが、バグ(c++ delete が失敗する)のもとになっていた
ああ、ダウンキャスト/アップキャストの区別がつかない、こまったこまった
112デフォルトの名無しさん
2017/12/14(木) 06:12:13.99ID:fEY/FzHm (´・ω・`)知らんがな
114デフォルトの名無しさん
2017/12/24(日) 20:20:35.24ID:lhIRobpu IsWindows10OrGreater関数を、
Windows10最新版(build16299)で使用すると、
Windows10にも関わらずfalseが返ってきます。
原因に心当たりのある聡明なお方はいらっしゃいませんか…?
Windows10最新版(build16299)で使用すると、
Windows10にも関わらずfalseが返ってきます。
原因に心当たりのある聡明なお方はいらっしゃいませんか…?
115片山博文MZ ◆T6xkBnTXz7B0
2017/12/24(日) 20:23:06.42ID:gjaYlpPe116片山博文MZ ◆T6xkBnTXz7B0
2017/12/24(日) 20:45:24.50ID:gjaYlpPe GetVersionExはウソつきだが、OSのバージョン番号に依存するアプリは地獄へ行かねばならぬ。
117デフォルトの名無しさん
2017/12/24(日) 21:23:48.92ID:Y4i+PXlu 質問に対する答えを書かないアホは地獄行きだバカ
118デフォルトの名無しさん
2017/12/24(日) 21:46:03.09ID:wguJVDMb それapiじゃなくてVersionHelpers.hにある関数じゃないか?デバッグして何かえってるか見ろ
119デフォルトの名無しさん
2017/12/24(日) 22:22:12.25ID:VzvV4f9p VersionHelpers.hの実装はVerifyVersionInfoだけどどのみちマニフェストでの指定は必要ってだけやね
120デフォルトの名無しさん
2017/12/27(水) 18:30:50.24ID:tTz9yXWR GetCursorPos ってマルチモニタに対応してるんですかね?
122片山博文MZ ◆T6xkBnTXz7B0
2017/12/27(水) 19:06:57.63ID:b9N+03Hh >>121
ウソを書いてしまった。ごめんなさい。
仮想スクリーンではなく、プライマリーなスクリーン座標になる。
https://msdn.microsoft.com/en-us/library/windows/desktop/dd145136.aspx
これとSM_XVIRTUALSCREENとSM_YVIRTUALSCREENを使って座標値をずらすと仮想スクリーン座標が得られる。
ウソを書いてしまった。ごめんなさい。
仮想スクリーンではなく、プライマリーなスクリーン座標になる。
https://msdn.microsoft.com/en-us/library/windows/desktop/dd145136.aspx
これとSM_XVIRTUALSCREENとSM_YVIRTUALSCREENを使って座標値をずらすと仮想スクリーン座標が得られる。
123デフォルトの名無しさん
2017/12/27(水) 19:42:44.76ID:tTz9yXWR >>122
ありがとうございます!!
ありがとうございます!!
124片山博文MZ ◆T6xkBnTXz7B0
2017/12/31(日) 00:31:58.10ID:iQxViKH1 あれでうまく動いたのか?
125デフォルトの名無しさん
2018/01/01(月) 14:03:42.43ID:yaUpEKWz あけおめ
126デフォルトの名無しさん
2018/01/06(土) 01:36:21.17ID:d+dr+APG しっかし、おっさん臭いスレだな
127デフォルトの名無しさん
2018/01/06(土) 09:18:28.54ID:Pup7wZC7 若者はモバイルだからな
128デフォルトの名無しさん
2018/01/06(土) 17:57:07.19ID:OwgVV/3f モバイルカテゴリの人がWindows関連スレを覗きに来るか?
win32api の記述を C から C++ に移行中です
CreateWindow() が hwnd を返すタイミングより先に、ウィンドウプロシージャに WM が流れ始めることを特定するのに時間がかかりました…
CreateWindow() が hwnd を返すタイミングより先に、ウィンドウプロシージャに WM が流れ始めることを特定するのに時間がかかりました…
130デフォルトの名無しさん
2018/01/13(土) 22:36:08.61ID:TKXLfFcD >>129
20年前位にやったなあ
WindowProc
DialogProc
ThreadProc
****Callback
この辺を包んでクラス化
ウィンドウの場合
CreateWindowのパラメータでクラスのポインタを渡し
WM_CREATEで受け取るって感じ
20年前位にやったなあ
WindowProc
DialogProc
ThreadProc
****Callback
この辺を包んでクラス化
ウィンドウの場合
CreateWindowのパラメータでクラスのポインタを渡し
WM_CREATEで受け取るって感じ
>>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);
温故知新…
そうです、それです!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);
温故知新…
132デフォルトの名無しさん
2018/01/14(日) 00:26:50.32ID:TQ+v9n4/ 厳密にはWM_CREATEの前にもいくつかメッセージ飛んでくるけどね
>>132
了解!そういうのは全部まとめて ::DefWindowProc() に流しちゃっているのでダイジョブです!
了解!そういうのは全部まとめて ::DefWindowProc() に流しちゃっているのでダイジョブです!
134デフォルトの名無しさん
2018/01/14(日) 02:25:37.15ID:yVTJx4nd この行いらね
HWND hwnd // member instance variable
HWND hwnd // member instance variable
136デフォルトの名無しさん
2018/01/14(日) 16:42:02.47ID:hYyI16IJ 片山先生の MZC4 みたいなのを作ってるわけね
>>136
はい
https://github.com/katahiromz/MZC4/blob/master/include/MWindowBase.hpp をみました
私の趣向としては、hwnd は完全に隠蔽したい、そのため WNDCLASS.cbWndExtra をあえて使うことになります
はい
https://github.com/katahiromz/MZC4/blob/master/include/MWindowBase.hpp をみました
私の趣向としては、hwnd は完全に隠蔽したい、そのため WNDCLASS.cbWndExtra をあえて使うことになります
138片山博文MZ ◆T6xkBnTXz7B0
2018/01/15(月) 01:09:31.49ID:rJu9VjYT cbWndExtra == 0なウィンドウには使えないから、結局、設計思想が間違っている。
139デフォルトの名無しさん
2018/01/15(月) 03:14:12.16ID:dcGpNZle GWLP_USERDATAをライブラリ側で潰してる時点で同レベルだな
140片山博文MZ ◆T6xkBnTXz7B0
2018/01/15(月) 03:19:04.90ID:rJu9VjYT しかし、ハンドルマップにしたら、コストがかかるんだよな。
141デフォルトの名無しさん
2018/01/15(月) 03:40:01.33ID:dcGpNZle 他人に設計思想が間違ってると宣いつつ自分は即座に言い訳
さすがカス山
さすがカス山
142デフォルトの名無しさん
2018/01/15(月) 08:03:32.90ID:ss1wTrUG MFCはハンドルマップ
143デフォルトの名無しさん
2018/01/15(月) 08:53:13.95ID:SI03IcDF ATL方式もあるよ
144デフォルトの名無しさん
2018/01/18(木) 23:24:20.23ID:hzc1DIOG ATLは機械語直接いじってジャンプかぁ
145デフォルトの名無しさん
2018/01/19(金) 12:47:35.39ID:xkA2S8go146デフォルトの名無しさん
2018/01/19(金) 16:44:05.34ID:2zY1R7Mw MSゴシックやMS明朝のフォントで描画するとき、
小さいときはビットマップフォントが使われることは知っているのですが、
常にビットマップフォントを使わないように
CreateFontなどで指定することはできませんか?
小さいときはビットマップフォントが使われることは知っているのですが、
常にビットマップフォントを使わないように
CreateFontなどで指定することはできませんか?
147デフォルトの名無しさん
2018/01/19(金) 17:25:15.15ID:bZ1P4CsQ 使われることも知らなかったが、小さいとドットが出てくるからビットマップをやめるメリットがなく逆に処理が多くなるデメリットが大きくなるんじゃないか?
148デフォルトの名無しさん
2018/01/19(金) 17:43:48.94ID:SC+4wpaQ DirectWriteだと強制的にヒンティング切れるからそれでイケる
GDIはGetGlyphOutlineでAA付きで書き出すくらいしか知らん
GDIはGetGlyphOutlineでAA付きで書き出すくらいしか知らん
149デフォルトの名無しさん
2018/01/19(金) 17:50:56.78ID:0WIN7azb 24dot x 24dot とかで truetype 描画とかしたいの?
150デフォルトの名無しさん
2018/01/19(金) 17:51:10.40ID:H+lB59KU ワイは大きめのビットマップメモリ領域に一度描画してから、縮小表示という無駄オブ無駄処理しとるやで
151片山博文MZ ◆T6xkBnTXz7B0
2018/01/19(金) 19:13:16.59ID:2v31ru1f152片山博文MZ ◆T6xkBnTXz7B0
2018/01/19(金) 20:16:32.63ID:2v31ru1f IPアドレスコントロールのEDIT子ウィンドウがGWLP_USERDATAを使っているみたい。。。
153デフォルトの名無しさん
2018/01/19(金) 23:33:33.01ID:SC+4wpaQ 結局、設計思想が間違っていたなカス山
154片山博文MZ ◆T6xkBnTXz7B0
2018/01/19(金) 23:42:37.51ID:2v31ru1f GWLP_USERDATAを使うのは低コストな選択肢としてアリ。ただし、IPアドレスコントロール内部やユーザー側のコントロールに触れる場合は、
問題が生じる可能性がある、という結論でファイナルアンサー。
問題が生じる可能性がある、という結論でファイナルアンサー。
155デフォルトの名無しさん
2018/01/20(土) 04:45:27.61ID:kn1Qti/r extradataはチェインにして使うもんじゃね?
156デフォルトの名無しさん
2018/01/20(土) 10:42:21.43ID:eYoKNwxu157デフォルトの名無しさん
2018/01/22(月) 11:37:19.82ID:BYAVkCTU >>147-150
ありがとうございます。
やっぱり簡単にはいかないんですかね。
印刷の処理は今のままでよく、画面上をその印刷イメージに近づけたいので、
DirectWriteの勉強をしてみたいと思います。
ありがとうございます。
やっぱり簡単にはいかないんですかね。
印刷の処理は今のままでよく、画面上をその印刷イメージに近づけたいので、
DirectWriteの勉強をしてみたいと思います。
158デフォルトの名無しさん
2018/01/22(月) 12:42:48.77ID:kH4wUtRw 印刷物をモニターに等倍表示したいんだ!ってわけじゃないだろ?
モニター上に拡大表示すりゃいいじゃん
モニター上に拡大表示すりゃいいじゃん
159デフォルトの名無しさん
2018/01/22(月) 20:49:32.77ID:ZoyisMRe わざわざ小さいときはビットマップフォントを使うのは、
その方が綺麗だからなんだけど
その方が綺麗だからなんだけど
160デフォルトの名無しさん
2018/01/22(月) 22:24:40.60ID:CymiFGuu >>157
>印刷の処理は今のままでよく、画面上をその印刷イメージに近づけたいので
やったことないけど・・・
CreateDC(プリンタドライバ名・・・)
CreateCompatibleDC()
CreateCompatibleBitmap()
でプリンタ互換のメモリデバイスコンテキストを作成し、これに印刷と同じ描画を行った後、
BitBltで画面にコピーするなり、DIBセクションにコピーするなりすれば良いんじゃね?
>印刷の処理は今のままでよく、画面上をその印刷イメージに近づけたいので
やったことないけど・・・
CreateDC(プリンタドライバ名・・・)
CreateCompatibleDC()
CreateCompatibleBitmap()
でプリンタ互換のメモリデバイスコンテキストを作成し、これに印刷と同じ描画を行った後、
BitBltで画面にコピーするなり、DIBセクションにコピーするなりすれば良いんじゃね?
161デフォルトの名無しさん
2018/01/22(月) 22:31:46.76ID:XoG7D2n/ それするとデバイスコンテキストに書き込んだ時に、フォントがビットマップ描画になるから嫌ってんでしょ
そもそもプリンタ自体の解像度とかあるから、ビットマップやめたとこでそれ意味あんのって感じだけどw
そもそもプリンタ自体の解像度とかあるから、ビットマップやめたとこでそれ意味あんのって感じだけどw
162デフォルトの名無しさん
2018/01/22(月) 23:19:36.00ID:CymiFGuu >>161
解像度の高いプリンタではTrueType中のVectorデータ、解像度の低い画面ではTrueType
中のビットマップデータが使われることで、文字幅(→結果的に文字位置)が微妙に違って
しまうのを嫌っているんじゃないかとエスパーした
解像度の高いプリンタではTrueType中のVectorデータ、解像度の低い画面ではTrueType
中のビットマップデータが使われることで、文字幅(→結果的に文字位置)が微妙に違って
しまうのを嫌っているんじゃないかとエスパーした
163デフォルトの名無しさん
2018/01/23(火) 00:43:10.75ID:aEarH6Fp せやからワイが>>150で書いたんや
164デフォルトの名無しさん
2018/01/23(火) 03:11:18.71ID:vxISVnp8 TeX使え
165デフォルトの名無しさん
2018/01/23(火) 09:23:53.86ID:8Xy2PdTe Acrobat Readerは、MSゴシックやMS明朝で画面上の表示が小さいときも
ビットマップフォントは使われないようですし、
やはりビットマップフォントよりも綺麗に見えるので、
これと同じような描画ができないかと思った次第です。
もちろん、AdobeがGDIだけで描いているとは思ってませんが。
ビットマップフォントは使われないようですし、
やはりビットマップフォントよりも綺麗に見えるので、
これと同じような描画ができないかと思った次第です。
もちろん、AdobeがGDIだけで描いているとは思ってませんが。
166デフォルトの名無しさん
2018/01/23(火) 11:56:46.96ID:YgQfJm1f Instructs the font mapper to choose from only TrueType fonts.
167デフォルトの名無しさん
2018/01/23(火) 12:41:24.18ID:Q06yU05c AdobeはBGRに対応してなくて糞
168デフォルトの名無しさん
2018/01/24(水) 16:35:20.95ID:yxm2qYfd 文字コード総合スレ Part11
http://mevius.2ch.net/test/read.cgi/tech/1516629503/
http://mevius.2ch.net/test/read.cgi/tech/1516629503/
169デフォルトの名無しさん
2018/01/30(火) 17:55:13.46ID:SJob4Z7Y win32api直接叩いてるんですけど、タブオーダーってどうやって設定されるんですか?
多分 CreateWindow 呼んでコントロールを作った順番そのままだと思うんですが、
なんかTABキー押してもフォーカスが移動しないんです
多分 CreateWindow 呼んでコントロールを作った順番そのままだと思うんですが、
なんかTABキー押してもフォーカスが移動しないんです
170デフォルトの名無しさん
2018/01/30(火) 18:02:35.67ID:h2qX+tcO モーダルダイアログじゃないと動かないよ
171片山博文MZ ◆T6xkBnTXz7B0
2018/01/30(火) 18:09:59.30ID:XXEBAVhR モードレスの場合は、メッセージループにIsDialogMessage呼び出しが必要。
172デフォルトの名無しさん
2018/01/30(火) 18:19:21.99ID:FAoT3aWr タブキー押されたらsetfocus
173デフォルトの名無しさん
2018/01/30(火) 18:29:42.34ID:SJob4Z7Y ああー
助かりました
IsDialogMessage でうまくいきました。
余談ですが CreateWindow の呼び出し順とは逆に移動するんですね。
Z手前から奥に向かって移動する感じですかね。
とりあえず後はどうにかなりそうです
助かりました
IsDialogMessage でうまくいきました。
余談ですが CreateWindow の呼び出し順とは逆に移動するんですね。
Z手前から奥に向かって移動する感じですかね。
とりあえず後はどうにかなりそうです
174デフォルトの名無しさん
2018/01/30(火) 21:54:44.90ID:fLRARGcM プリプロセッサマクロ値 "_MSC_VER" を知る方法はありませんか?
cuda 9.1 提供のヘッダの #error が反応してしまいます
cuda 9.1 提供のヘッダの #error が反応してしまいます
175デフォルトの名無しさん
2018/01/30(火) 22:09:19.27ID:Z73Qxpjd は?
printfでもしてみればいいだろ
printfでもしてみればいいだろ
176デフォルトの名無しさん
2018/01/30(火) 22:36:28.87ID:5Yx/uuQb VS2008でも使ってるのか?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 ★2 [Hitzeschleier★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★2 [ぐれ★]
- 【中国局長】両国関係に「深刻な影響」 首相発言の撤回要求 [蚤の市★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★3 [BFU★]
- 【卓球】早田ひな、「総額100万スられた」「ずっと憧れていたスペインとイタリア…」ヨーロッパ旅行で悲劇 スリ被害を告白 [muffin★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- 産経新聞「高市早苗の答弁さぁ……思慮が足りてなくね?官僚と詰めずに思いつきで話しているでしょ」 [175344491]
- 【実況】博衣こよりのえちえち歌枠🧪
- 【高市速報】日本人の3割「中国への武力行使に踏み切る必要がある」ANN世論調査 [931948549]
- 【雑談】暇人集会所part18
- 高市早苗「支持者の理解を得られないので台湾発言を撤回できない」 [931948549]
- 外務省局長、よくわからないまま帰国へ [834922174]
