趣味+メモ用のブログです。
GNU/Linux関連、OSS関連情報、調査事項になるでしょうが、何を書くか分かりません。
× [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
またまた、サクラエディタを修正。
サクラエディタ1.6.5にて、パッチをパワーアップして適用していただいた。 (http://sakura.qp.land.to/?FAQ%2F47) が、以下の2点の問題が残っている。 1)スクロール時に表示が乱れる。(1行目が画面更新されない) 2)日本語入力時に入力確定時に文字が取り消されることがある。 1)スクロール時に表示が乱れる。については、暫定修正版を作成 (ぱちぱちぱち!!) http://sakaihdt.gozaru.jp/sakura.html どうも、ScrollAtV関数内で使用されている、 「::InvalidateRect( m_hWnd, NULL, TRUE );」が 正常に動作していないように思える。 ここの部分を修正してもなおらなかったのだが、 ScrollAtVを呼び出している外の関数で、 画面のリドロウ(RedrawAll() もしくは、OnPaint()関数) を呼び出すことで回避できたのだが、 処理速度が非常に重い気がする・・・・・ もう少し調査が必要。 っていうか、Wine側調査しなくっちゃ!! PR
linux-2.6.31.1 をコンパイルしてみるが、
途中でエラー!? Debian GNU/Linux 5.0.3 gcc (Debian 4.3.2-1.1) make[1]: ディレクトリ `/home/sakaihdt/kernel/linux-2.6.31.1/Documentation/lguest' に入ります cc -m32 -Wall -Wmissing-declarations -Wmissing-prototypes -O3 -I../../include -I../../arch/x86/include -U_FORTIFY_SOURCE lguest.c -o lguest lguest.c:21:25: error: sys/eventfd.h: そのようなファイルやディレクトリはありません lguest.c: In function ‘create_thread’: lguest.c:1021: warning: implicit declaration of function ‘eventfd’ make[1]: *** [lguest] エラー 1 make[1]: ディレクトリ `/home/sakaihdt/kernel/linux-2.6.31.1/Documentation/lguest' から出ます make: *** [debian/stamp/build/kernel] エラー 2 だそうだ。 とりあえず、ソースを直してみる。 ま、とりあえず、ヘッダのインクルードを削除!! Documents/guest/lguest.c:21:25: // #include <sys/eventfd.h> うまくとおりました!! ってそんなもん?! Let's note R8に debian GNU/Linux lennyをインストール 通常インストール後、 kernel 2.6.30-1をセルフコンパイル。 Intel Wifi Link 5100 がカーネル 2.6.27-6以降でサポートらしく、 lennyのデフォルトカーネル 2.6.26では未対応。 ファームウェアについては、以下のページからダウンロード http://www.intellinuxwireless.org/?n=downloads iwlwifi-5000-ucode-8.24.2.12.tgz /lib/firmware に解凍したファイルを配置。 あと、音関連も少々いじった。 参照URLどこだっけかな
さあWINE側の調査開始。
windowハンドルは OK とのことなので、 dlls/user32/win.c を参照してみる。 97 */ 98 static WND *create_window_handle( HWND parent, HWND owner, LPCWSTR name, 99 HINSTANCE instance, BOOL unicode ) 100 { 135 if (!(win = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, 136 sizeof(WND) + extra_bytes - sizeof(win->wExtra) ))) ここか? HeepAlloc()関数をググってみる。 http://msdn.microsoft.com/ja-jp/library/cc430107.aspx
GetProcessHeap関数を呼べばいいのか? ってわけで、resource.cで呼び出している箇所を、 (global16.c)を書き換えてみたんだけど、だめだね、 リンクできない。 やっぱり16はだめなのか? さいちゃれんじだ!!
さて状況整理、状況整理。
だれにも紹介したつもりないけれど、 だれかみてるのかしら、このブログ。 どうせ、ログばっかりだしね。 (1) Wine側の対応 結局 Accelarator Tableが、Wineではちゃんと実装されていないことが 原因のよう。 http://bugs.winehq.org/show_bug.cgi?id=19368 Dmitry Timoshkov氏より返信 ============================================= > I seem " Windows has Accelarator Table in Shared Memory "
やっと直せた。
●バイナリイメージと修正ソースを以下においておきます。 http://sakaihdt.gozaru.jp/sakura.html 結局、サクラエディタの10行程度の修正で済みました。 ●原因について(修正した箇所) サクラエディタでは、Accelaratorテーブル(ショートカットテーブル)を 共有メモリに入れていたのですが、 TranslateAccelerator()呼び出し時に、 (Wineでは)既に有効になっていないようです。 修正は、Accelaratorテーブルを共有メモリでなく、 TranslateAccelerator()関数を呼び出している関数の ローカル変数として作成することで対応しました。 WineとWindowsのAccelaratorテーブルのもちかたが 違っている為だと考えられます。 とりあえず、Wine側とサクラ側に連絡するとしますか・・・・
さらにチャレンジ!!
> ● Windowz7上での呼び出し階層 > CEditWndProc() hwnd:132848 uMsg:273 wParam:65574 iParam:0 > DispatchEvent() hwnd:132848 uMsg:273 wParam:65574 iParam:0 > CEditWnd::OnCommand() wNotifyCode=1 > CEditWnd::OnCommand() nFuncCode=30311 > [d:\project\sakuraeditor\trunk\sakura_core\ceditview_command.cpp:344] debug sakai F_UP > OnPaint(28,96)-(925,97) : 1 > > となっており、最終的に「WNDCLASSEX 」クラスの > 「lpfnWndProc(コールバック)」までたどりつくのです。 までは分かっているのですが、その先の調査です。 メインのループの中で、GetMessage()関数でまずメッセージを受け取っています。 (sakuraeditor CEditWnd.cpp:MessageLoop()関数内) じゃぁここでトラップしてやったらどうかと思い修正。 ------------------------------------------- //複数プロセス版 /* メッセージループ */ void CEditWnd::MessageLoop( void ) { MSG msg; int ret; //2004.02.17 Moca GetMessageのエラーチェック while ( NULL != m_hWnd && ( ret = GetMessage( &msg, NULL, 0, 0 ) ) ){ if( ret == -1 ){ break; } //@@@ 2002.01.14 YAZAKI 印刷プレビューをCPrintPreviewに独立させたことによる変更 if( m_pPrintPreview && NULL != m_pPrintPreview->GetPrintPreviewBarHANDLE() && ::IsDialogMessage( m_pPrintPreview->GetPrintPreviewBarHANDLE(), &msg ) ){ /* 印刷プレビュー 操作バー */ }else if( NULL != m_cEditDoc.m_cDlgFind.m_hWnd && ::IsDialogMessage( m_cEditDoc.m_cDlgFind.m_hWnd, &msg ) ){ /* 「検索」ダイアログ */ }else if( NULL != m_cEditDoc.m_cDlgFuncList.m_hWnd && ::IsDialogMessage( m_cEditDoc.m_cDlgFuncList.m_hWnd, &msg ) ){ /* 「アウトライン」ダイアログ */ }else if( NULL != m_cEditDoc.m_cDlgReplace.m_hWnd && ::IsDialogMessage( m_cEditDoc.m_cDlgReplace.m_hWnd, &msg ) ){ /* 「置換」ダイアログ */ }else if( NULL != m_cEditDoc.m_cDlgGrep.m_hWnd && ::IsDialogMessage( m_cEditDoc.m_cDlgGrep.m_hWnd, &msg ) ){ /* 「Grep」ダイアログ */ }else if( NULL != m_cEditDoc.m_cHokanMgr.m_hWnd && ::IsDialogMessage( m_cEditDoc.m_cHokanMgr.m_hWnd, &msg ) ){ /* 「入力補完」 */ }else if( NULL != m_hwndSearchBox && ::IsDialogMessage( m_hwndSearchBox, &msg ) ){ /* 「検索ボックス」 */ ProcSearchBox( &msg ); }else { /* GetMessage後に則ってしまう!! */ if( msg.message == WM_KEYUP ){ DispatchEvent( msg.hwnd, msg.message, msg.wParam, msg.lParam ); }else{ if( NULL != m_pShareData->m_hAccel ){ if( TranslateAccelerator( msg.hwnd, m_pShareData->m_hAccel, &msg ) ){ }else{ TranslateMessage( &msg ); DispatchMessage( &msg ); } }else{ TranslateMessage( &msg ); DispatchMessage( &msg ); } } } } return; } ------------------------------------------- でWindowsでは動くんだけど、Wineでは動かない。 だめ!! 切り口を変えて、なぜSakuraEditorで動かないか検討してみる。 × SakuraEditor ○ TeraPad ○ Notopad++ ○ 秀丸エディター(検証はできていない) ○のエディターでソースがあるのは、notepad++のみ。 notepad++では、F3/F5/CTRL+Cなどのキーは、 アクセラレータを使用している模様。 ※ SakuraEditorでは、WM_KEYUPを直接判断している。 (やじるしきーはわからない。。。。。) これが違うの? ちょっと WM_COMMANDのアクセラレータについて 調べる必要があるかしら???? 参考URL: http://www.geocities.jp/ky_webid/win32c/033.html --------------------------------------------------- 19:36追記 http://www.geocities.jp/ky_webid/win32c/025.html のページをコンパイルしてwineで動かしてみた。 矢印キー、CTRL、BSなどがwineでも動作する、 Why? sakuraeditorに戻って、ちょっとソースを修正。 ●修正前 CEditWnd.cpp:MessageLoop()関数内 if( NULL != m_pShareData->m_hAccel ){ if( TranslateAccelerator( msg.hwnd, m_pShareData->m_hAccel, &msg ) ){ }else{ TranslateMessage( &msg ); DispatchMessage( &msg ); } }else{ TranslateMessage( &msg ); DispatchMessage( &msg ); } ●修正後 TranslateMessage( &msg ); DispatchMessage( &msg ); とすると、Windowsでも矢印キーなどが聞かない現象が発生。 つまり、「TranslateAccelerator」関数に何らかの問題がある? これは継続調査の必要あり・・・
2chで質問してみたら、wine-develに聞いてみたら?ってことで、
wine-devel(bugzilla)に投稿した。 http://bugs.winehq.org/show_bug.cgi?id=19368 で、拙い英語ではありましたが、「Vitally Margolen」さんより返信 > The code looks soo bad it's impossible to see what it's doing and how it's > doing it. It would be much easier for a dev from sakura-editor project to find > the problem. Or at least point to exact place where they are expecting > left/right/up/down arrow keys. 氏曰く、簡単に解決できそう?! > The ctrl,shift,alt + hotkeys don't work because of bug 1348. bug 1348をみてみぃ!! →パッチがあったんで、1.1.26にマージしてみたんだけど、 だめだねぇ。落っこちてしまいます。 > > "sakura editor" catch Up/Down/Ctrl event from lpfnWndProc() callback. > Where exactly? Which file? Which function? ●落っこちたときのコンソールログ (パッチを当てた箇所で落ちている・・・・) sakaihdt@ubuntu-prime ~/tools$ /usr/local/wine/bin/wine sakura.exe sakaihdt@ubuntu-prime ~/tools$ fixme:keyboard:RegisterHotKey (0x10030,4660,0x00000003,90): stub wine: Unhandled page fault on read access to 0x00000084 at address 0x7e48c483 (thread 001a), starting debugger... First chance exception: page fault on read access to 0x00000084 in 32-bit code (0x7e48c483). Register dump: CS:0073 SS:007b DS:007b ES:007b FS:0033 GS:003b EIP:7e48c483 ESP:003364bc EBP:00336504 EFLAGS:00010216( R- -- I -A-P- ) EAX:00000000 EBX:7e4d5ff4 ECX:7e4d9dea EDX:00000000 ESI:000000ff EDI:00000012 Stack dump: 0x003364bc: 00010030 00000000 00000000 b7f85ff4 0x003364cc: 00000000 00000001 00000001 b7e632b9 0x003364dc: 00000000 7ecded48 7ecad673 7ecad244 0x003364ec: 00000000 0000000c 00000034 7ecc0ff4 0x003364fc: 00000001 00000000 00336534 7ec41aea 0x0033650c: 00010030 00001234 00000003 0000005a Backtrace: =>0 0x7e48c483 X11DRV_RegisterHotKey+0x153(hwnd=0x10030, id=4660, modifiers=<is not available>, vk=90) [/home/sakaihdt/src/wine-1.1.26/build/dlls/winex11.drv/../../../dlls/winex11.drv/keyboard.c:2082] in winex11 (0x00336504) 1 0x7ec41aea RegisterHotKey+0x5a(hwnd=0x10030, id=4660, modifiers=3, vk=90) [/home/sakaihdt/src/wine-1.1.26/build/dlls/user32/../../../dlls/user32/input.c:877] in user32 (0x00336534) 2 0x004126db in sakura (+0x126db) (0x0033d22c) 3 0x00411b0a in sakura (+0x11b0a) (0x0033d254) 4 0x7ec9a8fa WINPROC_wrapper+0x1a() in user32 (0x0033d284) 5 0x7ec9ad4a call_window_proc+0x6a(hwnd=<register EDI not in topmost frame>, msg=<register ESI not in topmost frame>, wp=0, lp=3397872, result=0x33d358, arg=0x411ae4) [/home/sakaihdt/src/wine-1.1.26/build/dlls/user32/../../../dlls/user32/winproc.c:469] in user32 (0x0033d2c4) 6 0x7eca0077 WINPROC_call_window+0xf7(hwnd=<register EDI not in topmost frame>, msg=1, wParam=0, lParam=3397872, result=0x33d358, unicode=0, mapping=WMCHAR_MAP_SENDMESSAGE) [/home/sakaihdt/src/wine-1.1.26/build/dlls/user32/../../../dlls/user32/winproc.c:2229] in user32 (0x0033d304) 7 0x7ec5eff1 call_window_proc+0x91(hwnd=<register ESI not in topmost frame>, msg=<register EDI not in topmost frame>, wparam=0, lparam=3397872, unicode=0, same_thread=1, mapping=WMCHAR_MAP_SENDMESSAGE) [/home/sakaihdt/src/wine-1.1.26/build/dlls/user32/../../../dlls/user32/message.c:1634] in user32 (0x0033d364) 8 0x7ec642f5 send_message+0x1d5(info=<register EDI not in topmost frame>, res_ptr=0x33d400, unicode=0) [/home/sakaihdt/src/wine-1.1.26/build/dlls/user32/../../../dlls/user32/message.c:2483] in user32 (0x0033d3c4) 9 0x7ec647b3 SendMessageA+0x53(hwnd=0x10030, msg=1, wparam=0, lparam=3397872) [/home/sakaihdt/src/wine-1.1.26/build/dlls/user32/../../../dlls/user32/message.c:2626] in user32 (0x0033d404) 10 0x7ec93185 WIN_CreateWindowEx+0x2465(cs=0x33d8f0, className=0x33d6f0, flags=32) [/home/sakaihdt/src/wine-1.1.26/build/dlls/user32/../../../dlls/user32/win.c:1305] in user32 (0x0033d6c4) 11 0x7ec93494 CreateWindowExA+0xc4(exStyle=0, className="CEditApp", windowName="CEditApp", style=13565952, x=-2147483648, y=0, width=100, height=100, parent=(nil), menu=(nil), instance=0x400000, data=(nil)) [/home/sakaihdt/src/wine-1.1.26/build/dlls/user32/../../../dlls/user32/win.c:1471] in user32 (0x0033d924) 12 0x00411e0b in sakura (+0x11e0b) (0x0033d98c) 13 0x00401dad in sakura (+0x1dad) (0x0033fed0) 14 0x0047cc7b in sakura (+0x7cc7b) (0x0033ff00) 15 0x00000000 (0x0033ffe8) 16 0xb7e65e1d wine_call_on_stack+0x1d() in libwine.so.1 (0x00000000) 0x7e48c483 X11DRV_RegisterHotKey+0x153 [/home/sakaihdt/src/wine-1.1.26/build/dlls/winex11.drv/../../../dlls/winex11.drv/keyboard.c:2082] in winex11: movl 0x84(%edx),%eax 2082 err = XGrabKey(display, x_keycode, x_modifiers|grab_mask, DefaultRootWindow(display), False, GrabModeAsync, GrabModeAsync); Modules: Module Address Debug info Name (72 modules) PE 400000- 6b8000 Export sakura ELF 7b800000-7b963000 Deferred kernel32<elf> \-PE 7b820000-7b963000 \ kernel32 ELF 7bc00000-7bcb1000 Deferred ntdll<elf> \-PE 7bc10000-7bcb1000 \ ntdll ELF 7bf00000-7bf04000 Deferred <wine-loader> ELF 7e023000-7e056000 Deferred uxtheme<elf> \-PE 7e030000-7e056000 \ uxtheme ELF 7e056000-7e0bf000 Deferred libgcrypt.so.11 ELF 7e0bf000-7e0d1000 Deferred libtasn1.so.3 ELF 7e0d1000-7e0e7000 Deferred libresolv.so.2 ELF 7e0e7000-7e10b000 Deferred libk5crypto.so.3 ELF 7e10b000-7e19d000 Deferred libkrb5.so.3 ELF 7e19d000-7e23a000 Deferred libgnutls.so.26 ELF 7e23a000-7e265000 Deferred libgssapi_krb5.so.2 ELF 7e265000-7e29c000 Deferred libcups.so.2 ELF 7e2b7000-7e2c0000 Deferred libxcursor.so.1 ELF 7e2c0000-7e2c5000 Deferred libxfixes.so.3 ELF 7e2c5000-7e2c9000 Deferred libxcomposite.so.1 ELF 7e2c9000-7e2d1000 Deferred libxrandr.so.2 ELF 7e2d1000-7e2db000 Deferred libxrender.so.1 ELF 7e2db000-7e2de000 Deferred libxinerama.so.1 ELF 7e2de000-7e2e3000 Deferred libxdmcp.so.6 ELF 7e2e3000-7e2fd000 Deferred libxcb.so.1 ELF 7e2fd000-7e301000 Deferred libxau.so.6 ELF 7e301000-7e306000 Deferred libuuid.so.1 ELF 7e306000-7e3f5000 Deferred libx11.so.6 ELF 7e3f5000-7e405000 Deferred libxext.so.6 ELF 7e405000-7e41d000 Deferred libice.so.6 ELF 7e41d000-7e426000 Deferred libsm.so.6 ELF 7e42a000-7e42e000 Deferred libgpg-error.so.0 ELF 7e42e000-7e432000 Deferred libkeyutils.so.1 ELF 7e432000-7e43b000 Deferred libkrb5support.so.0 ELF 7e43b000-7e43f000 Deferred libcom_err.so.2 ELF 7e441000-7e4de000 Dwarf winex11<elf> \-PE 7e450000-7e4de000 \ winex11 ELF 7e55b000-7e582000 Deferred libexpat.so.1 ELF 7e582000-7e5af000 Deferred libfontconfig.so.1 ELF 7e5af000-7e5c5000 Deferred libz.so.1 ELF 7e5c5000-7e63c000 Deferred libfreetype.so.6 ELF 7e63c000-7e6a9000 Deferred rpcrt4<elf> \-PE 7e650000-7e6a9000 \ rpcrt4 ELF 7e6a9000-7e7a5000 Deferred ole32<elf> \-PE 7e6c0000-7e7a5000 \ ole32 ELF 7e7a5000-7e7c6000 Deferred imm32<elf> \-PE 7e7b0000-7e7c6000 \ imm32 ELF 7e7c6000-7e824000 Deferred shlwapi<elf> \-PE 7e7d0000-7e824000 \ shlwapi ELF 7e824000-7e9b2000 Deferred shell32<elf> \-PE 7e830000-7e9b2000 \ shell32 ELF 7e9b2000-7ea64000 Deferred comdlg32<elf> \-PE 7e9c0000-7ea64000 \ comdlg32 ELF 7ea64000-7eb2c000 Deferred comctl32<elf> \-PE 7ea70000-7eb2c000 \ comctl32 ELF 7eb2c000-7ebce000 Deferred gdi32<elf> \-PE 7eb40000-7ebce000 \ gdi32 ELF 7ebce000-7ed1a000 Dwarf user32<elf> \-PE 7ebf0000-7ed1a000 \ user32 ELF 7ed1a000-7ed50000 Deferred winspool<elf> \-PE 7ed20000-7ed50000 \ winspool ELF 7ed50000-7eda6000 Deferred advapi32<elf> \-PE 7ed60000-7eda6000 \ advapi32 ELF 7eda6000-7edb2000 Deferred libnss_files.so.2 ELF 7edb2000-7edbb000 Deferred libnss_compat.so.2 ELF 7efbf000-7efe5000 Deferred libm.so.6 ELF 7efe7000-7f000000 Deferred libnsl.so.1 ELF b7cc2000-b7cc6000 Deferred libdl.so.2 ELF b7cc6000-b7e29000 Deferred libc.so.6 ELF b7e2a000-b7e43000 Deferred libpthread.so.0 ELF b7e44000-b7e4f000 Deferred libnss_nis.so.2 ELF b7e5e000-b7f9a000 Dwarf libwine.so.1 ELF b7f9c000-b7fba000 Deferred ld-linux.so.2 Threads: process tid prio (all id:s are in hex) 0000000e 00000016 0 00000015 0 00000014 0 00000010 0 0000000f 0 00000011 00000018 0 00000017 0 00000013 0 00000012 0 00000019 (D) Z:\home\sakaihdt\tools\sakura.exe 0000001a 0 <== 0000001b 0000001c 0 Backtrace: =>0 0x7e48c483 X11DRV_RegisterHotKey+0x153(hwnd=0x10030, id=4660, modifiers=<is not available>, vk=90) [/home/sakaihdt/src/wine-1.1.26/build/dlls/winex11.drv/../../../dlls/winex11.drv/keyboard.c:2082] in winex11 (0x00336504) 1 0x7ec41aea RegisterHotKey+0x5a(hwnd=0x10030, id=4660, modifiers=3, vk=90) [/home/sakaihdt/src/wine-1.1.26/build/dlls/user32/../../../dlls/user32/input.c:877] in user32 (0x00336534) 2 0x004126db in sakura (+0x126db) (0x0033d22c) 3 0x00411b0a in sakura (+0x11b0a) (0x0033d254) 4 0x7ec9a8fa WINPROC_wrapper+0x1a() in user32 (0x0033d284) 5 0x7ec9ad4a call_window_proc+0x6a(hwnd=<register EDI not in topmost frame>, msg=<register ESI not in topmost frame>, wp=0, lp=3397872, result=0x33d358, arg=0x411ae4) [/home/sakaihdt/src/wine-1.1.26/build/dlls/user32/../../../dlls/user32/winproc.c:469] in user32 (0x0033d2c4) 6 0x7eca0077 WINPROC_call_window+0xf7(hwnd=<register EDI not in topmost frame>, msg=1, wParam=0, lParam=3397872, result=0x33d358, unicode=0, mapping=WMCHAR_MAP_SENDMESSAGE) [/home/sakaihdt/src/wine-1.1.26/build/dlls/user32/../../../dlls/user32/winproc.c:2229] in user32 (0x0033d304) 7 0x7ec5eff1 call_window_proc+0x91(hwnd=<register ESI not in topmost frame>, msg=<register EDI not in topmost frame>, wparam=0, lparam=3397872, unicode=0, same_thread=1, mapping=WMCHAR_MAP_SENDMESSAGE) [/home/sakaihdt/src/wine-1.1.26/build/dlls/user32/../../../dlls/user32/message.c:1634] in user32 (0x0033d364) 8 0x7ec642f5 send_message+0x1d5(info=<register EDI not in topmost frame>, res_ptr=0x33d400, unicode=0) [/home/sakaihdt/src/wine-1.1.26/build/dlls/user32/../../../dlls/user32/message.c:2483] in user32 (0x0033d3c4) 9 0x7ec647b3 SendMessageA+0x53(hwnd=0x10030, msg=1, wparam=0, lparam=3397872) [/home/sakaihdt/src/wine-1.1.26/build/dlls/user32/../../../dlls/user32/message.c:2626] in user32 (0x0033d404) 10 0x7ec93185 WIN_CreateWindowEx+0x2465(cs=0x33d8f0, className=0x33d6f0, flags=32) [/home/sakaihdt/src/wine-1.1.26/build/dlls/user32/../../../dlls/user32/win.c:1305] in user32 (0x0033d6c4) 11 0x7ec93494 CreateWindowExA+0xc4(exStyle=0, className="CEditApp", windowName="CEditApp", style=13565952, x=-2147483648, y=0, width=100, height=100, parent=(nil), menu=(nil), instance=0x400000, data=(nil)) [/home/sakaihdt/src/wine-1.1.26/build/dlls/user32/../../../dlls/user32/win.c:1471] in user32 (0x0033d924) 12 0x00411e0b in sakura (+0x11e0b) (0x0033d98c) 13 0x00401dad in sakura (+0x1dad) (0x0033fed0) 14 0x0047cc7b in sakura (+0x7cc7b) (0x0033ff00) 15 0x00000000 (0x0033ffe8) 16 0xb7e65e1d wine_call_on_stack+0x1d() in libwine.so.1 (0x00000000)
今日もデバッグ楽しいな!!
前回は、OnCommand()関数までいっていて、Wineが怪しいというところまでわかっておりましたがはてはて・・・・ ● Windowz7上での呼び出し階層 CEditWndProc() hwnd:132848 uMsg:273 wParam:65574 iParam:0 DispatchEvent() hwnd:132848 uMsg:273 wParam:65574 iParam:0 CEditWnd::OnCommand() wNotifyCode=1 CEditWnd::OnCommand() nFuncCode=30311 [d:\project\sakuraeditor\trunk\sakura_core\ceditview_command.cpp:344] debug sakai F_UP OnPaint(28,96)-(925,97) : 1 となっており、最終的に「WNDCLASSEX 」クラスの 「lpfnWndProc(コールバック)」までたどりつくのです。 Windowzでは、矢印ボタン・F1、F2、Cntl+Cなどの押下で、「lpfnWndProc(コールバック)」が呼び出されるのですが、Wine上では、呼び出されていない。。。。 (ちなみにSPACEも動作がおかしいが、コールバックは呼び出されている) つまりWine側の、ipfnWndProc関数を修正すれば良さそうだ、 sakura側での修正はちょっとむづかしそう!? |
カレンダー
カテゴリー
フリーエリア
最新コメント
最新記事
(05/02)
(01/25)
(01/15)
(12/04)
(12/01)
最新トラックバック
ブログ内検索
最古記事
(02/21)
(07/12)
(07/12)
(07/18)
(07/20) |