趣味+メモ用のブログです。
GNU/Linux関連、OSS関連情報、調査事項になるでしょうが、何を書くか分かりません。
× [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
さらにチャレンジ!!
> ● 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」関数に何らかの問題がある? これは継続調査の必要あり・・・ PR
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側での修正はちょっとむづかしそう!?
Windowz上での調査
●スペースを押した場合!! ・デバッグは、MYTRACE()マクロを使用できる。(VC上のみ?) ・入力は、CEDITView_Command.cppで処理される模様 ・テキストペインでスペースキーを押したら、 以下の関数は呼び出されて処理されている。 /* コマンドコードによる処理振り分け */ BOOL CEditView::HandleCommand( MYTRACEログ?: OnPaint(166,0)-(925,429) : 0 [d:\project\sakuraeditor\trunk\sakura_core\ceditview_command.cpp:317] debug sakai F_INDENT_SPACE [d:\project\sakuraeditor\trunk\sakura_core\ceditview_command.cpp:326] debug sakai call Command_CHAR OnPaint(0,55)-(925,69) : 0 呼び出し履歴: > sakura.exe!CEditView::HandleCommand(int nCommand=30262, int bRedraw=1, long lparam1=0, long lparam2=0, long lparam3=0, long lparam4=0) 行 317 C++ sakura.exe!CEditDoc::HandleCommand(int nCommand=95798) 行 3645 C++ sakura.exe!CEditWnd::OnCommand(unsigned short wNotifyCode=1, unsigned short wID=32, HWND__ * hwndCtl=0x00000000) 行 2123 C++ sakura.exe!CEditWnd::DispatchEvent(HWND__ * hwnd=0x000704dc, unsigned int uMsg=273, unsigned int wParam=65568, long lParam=0) 行 1540 C++ sakura.exe!CEditWndProc(HWND__ * hwnd=0x000704dc, unsigned int uMsg=273, unsigned int wParam=65568, long lParam=0) 行 131 + 0x18 バイト C++ ● →を押した場合 MYTRACEログ?: sakura.exe!CEditWndProc(HWND__ * hwnd=0x000704dc, unsigned int uMsg=273, unsigned int wParam=65574, long lParam=0) 行 131 + 0x18 バイト C++ 呼び出し履歴: > sakura.exe!CEditView::HandleCommand(int nCommand=30311, int bRedraw=1, long lparam1=0, long lparam2=0, long lparam3=0, long lparam4=0) 行 344 C++ sakura.exe!CEditDoc::HandleCommand(int nCommand=95847) 行 3645 C++ sakura.exe!CEditWnd::OnCommand(unsigned short wNotifyCode=1, unsigned short wID=38, HWND__ * hwndCtl=0x00000000) 行 2123 C++ sakura.exe!CEditWnd::DispatchEvent(HWND__ * hwnd=0x000704dc, unsigned int uMsg=273, unsigned int wParam=65574, long lParam=0) 行 1540 C++ sakura.exe!CEditWndProc(HWND__ * hwnd=0x000704dc, unsigned int uMsg=273, unsigned int wParam=65574, long lParam=0) 行 131 + 0x18 バイト C++ ※ 呼び出し履歴 == gdbのbacktrace ※ それにしても、VirtualBox上で、Windowz7+VC++は重いねぇ。 ●追加でテスト!! OnPaint(0,0)-(729,429) : 0 CEditWnd::OnCommand() nFuncCode=30311 # 上ボタン [d:\project\sakuraeditor\trunk\sakura_core\ceditview_command.cpp:344] debug sakai F_UP OnPaint(28,54)-(925,55) : 1 CEditWnd::OnCommand() nFuncCode=30312 # 下ボタン [d:\project\sakuraeditor\trunk\sakura_core\ceditview_command.cpp:347] debug sakai F_DOWN OnPaint(28,40)-(925,41) : 1 CEditWnd::OnCommand() nFuncCode=30313 # 左ボタン [d:\project\sakuraeditor\trunk\sakura_core\ceditview_command.cpp:350] debug sakai F_LEFT OnPaint(28,54)-(925,55) : 1 CEditWnd::OnCommand() nFuncCode=30314 # 右ボタン [d:\project\sakuraeditor\trunk\sakura_core\ceditview_command.cpp:353] debug sakai F_RIGHT OnPaint(28,40)-(925,41) : 1 CEditWnd::OnCommand() nFuncCode=30412 # SHIFT+下ボタン OnPaint(28,54)-(925,55) : 1 CEditWnd::OnCommand() nFuncCode=30602 # CTRL+C CEditWnd::OnCommand() nFuncCode=30602 # CTRL+C CEditWnd::OnCommand() nFuncCode=30602 # CTRL+C OnPaint(0,0)-(889,429) : 0 CEditWnd::OnCommand() nFuncCode=30604 # CTRL+V OnPaint(0,13)-(925,429) : 0 OnPaint(28,68)-(925,69) : 1 OnPaint(0,0)-(0,0) : 0 OnPaint(0,0)-(0,0) : 0 OnPaint(0,0)-(0,0) : 0 → つまり、Wine側で、まず、OnCommand関数で出力してみればよいわけだ!!
目標:
sakura editorをwineで使用できるようにする。 問題点: ・テキストペインで矢印キーの入力ができない ・テキストペインでスペースキーの入力がきかない ・テキストペインでCTRLキーが・・・・・ ・ BackSpaceキーがきかない ※ でも英数字、_-+*、日本は入力できる!! TABもOK 手順: (1)Windowz7 + VC++ Express2008環境の構築 (2)Windowzでの動作の確認 (3)wineでの動作確認 (4)sakura editor側で対応してみる。 2009年9月目処にできるようにがんばってみる。 現状できているのは、(1)だけだね。 debianのアップデートを実施(etch->lenny) マシン:Let's Note R6 以下のdebianページを参考にしました。 http://www.debian.org/releases/lenny/i386/release-notes/
<<前のページ
|
カレンダー
カテゴリー
フリーエリア
最新コメント
最新記事
(05/02)
(01/25)
(01/15)
(12/04)
(12/01)
最新トラックバック
ブログ内検索
最古記事
(02/21)
(07/12)
(07/12)
(07/18)
(07/20) |