X



トップページLinux
1002コメント351KB
今夜も Wine で乾杯! - 21本目 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001login:Penguin
垢版 |
2017/08/12(土) 21:18:15.22ID:tNr8ii2i
Linux上でWindowsのアプリを動作させるソフトウェア
Wineに関する情報交換スレ。

前スレ
今夜も Wine で乾杯! - 20本目
https://mao.2ch.net/test/read.cgi/linux/1455088008/

Wine本家
http://www.winehq.org/
http://wiki.winehq.org/

動作報告Wikiや過去ログなど
http://www.2chlinux.org/index.php?FrontPage

ここにパッチをうpするときはgzipやbzip2で圧縮した上で
base64などでエンコードしてください。おながいします。
動作報告は>>2のテンプレ使用を推奨。
0465396
垢版 |
2018/02/22(木) 01:30:28.67ID:9+xI5ulA
Wine で、MDI Child Wnd の TITLE BAR をドラッグしたときの処理について。

DEFWND_DefWinProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam )
-->case WM_NCLBUTTONDOWN
-->NC_HandleNCLButtonDown()
-->case HTCAPTION
-->SendMessageW( hwnd, WM_SYSCOMMAND, SC_MOVE + HTCAPTION, lParam )
-->DEFWND_DefWinProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam )
-->case WM_SYSCOMMAND
-->NC_HandleSysCommand()
-->WINPOS_SysCommandSizeMove()

最後の関数は、タイトルバーをドラッグを開始直後に一回だけ呼び出される事
を確認した。その後のドラッグ中は呼び出されず、この関数の内部でドラッグ
の処理がされている可能性が高い。

この最後の関数の中に、次のような、メッセージ・ループがある:
if (!GetMessageW( &msg, 0, 0, 0 )) break;
if (CallMsgFilterW( &msg, MSGF_SIZE )) continue;

/* Exit on button-up, Return, or Esc */
if ((msg.message == WM_LBUTTONUP) ||
((msg.message == WM_KEYDOWN) &&
((msg.wParam == VK_RETURN) || (msg.wParam == VK_ESCAPE)))) break;

if ((msg.message != WM_KEYDOWN) && (msg.message != WM_MOUSEMOVE)) {
TranslateMessage( &msg );
DispatchMessageW( &msg );
continue; /* We are not interested in other messages */
}
0466396
垢版 |
2018/02/22(木) 01:32:06.83ID:9+xI5ulA
さらに次のような、枠だけを書くか、実際に動かしてしまうコードが続く :

if (!DragFullWindows)
draw_moving_frame( parent, hdc, &sizingRect, thickframe );
else {
RECT rect = sizingRect;
MapWindowPoints( 0, parent, (POINT *)&rect, 2 );
SetWindowPos( hwnd, 0, rect.left, rect.top,
rect.right - rect.left, rect.bottom - rect.top,
( hittest == HTCAPTION ) ? SWP_NOSIZE : 0 );
}
■ このスレッドは過去ログ倉庫に格納されています

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