忍者ブログ
趣味+メモ用のブログです。 GNU/Linux関連、OSS関連情報、調査事項になるでしょうが、何を書くか分かりません。
[5] [6] [7] [8] [9] [10]
×

[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/





忍者ブログ [PR]
カレンダー
10 2024/11 12
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
フリーエリア
最新コメント
最新トラックバック
プロフィール
HN:
一乗寺 又兵衛
性別:
男性
職業:
コンパイル
趣味:
コンパイル
バーコード
ブログ内検索