JavaScript에서 호출 할 수있는 사용자 지정 C++ 함수를 만들려고합니다. 이 함수는 창 크기를 조정하는 간단한 함수입니다.브라켓 셸 사용자 지정 네이티브 (C++) 함수가 호출되지 않습니다.
나는 다음과 같은 장소에서 다음과 같은 비트가 : appshell_extensions_platform.h에서
:
#if defined(OS_WIN)
void ResizeWindow(CefRefPtr<CefBrowser> browser, int width, int height);
#endif
appshell_extensions_win.cpp에서 :
void ResizeWindow(CefRefPtr<CefBrowser> browser, int width, int height) {
OutputDebugString(L"ResizeWindow");
CefWindowHandle hWnd = browser->GetHost()->GetWindowHandle();
SetWindowPos(hWnd, 0, 0, 0, width, height, SWP_NOMOVE|SWP_NOZORDER|SWP_NOACTIVATE);
}
appshell_extensions.js에서 :
/**
* Resize the window to the given size.
*
* @param {number} width
* @param {number} height
*
* @return None. This is an asynchronous call that sends all return information to the callback.
*/
native function ResizeWindow();
appshell.app.resizeWindow = function (width, height) {
ResizeWindow(width, height);
};
appshell_extensions.cpp에서
: 비주얼 스튜디오 2012를 사용
} else if (message_name == "ResizeWindow") {
// Parameters:
// 0: int32 - width
// 1: int32 - height
int width = argList->GetInt(0);
int height = argList->GetInt(1);
ResizeWindow(browser, width, height);
}
, 나는 그 빌드 및 디버그 디버그는 Win32 릴리스합니다. 콘솔을 열면 appshell.app.resizeWindow
이 예상대로 나타납니다. 나는 그것을 부를 수 있고 그것은 잘 작동한다. 함수에 추가 JavaScript 코드를 추가하면 작동합니다.
appshell_extensions.cpp
의 함수에 OutputDebugString(std::wstring(message_name.begin(), message_name.end()).c_str());
을 추가했습니다. 필자가 작성한 함수가 아닌 다른 함수의 경우 메시지 이름을 올바르게 출력합니다. 내가 쓴 사람에게는 아무것도 얻지 못합니다.
함수 자체에서 출력을 얻지 못합니다.
메시지가 처리하는 기능에 실제로 도달하지 못하는 것 같습니다. 단서가 없습니다. 나는 방금 괄호 셸 (2012 년으로 변환)과 함께 제공된 sln을 사용하여 컴파일하고 있습니다. 어쩌면 실종되었거나 뭔가 건설 단계가 있습니까?
감사합니다.
안녕하세요. 의견을 보내 주셔서 감사합니다. ProcessMessageDeletegate :: OnProcessMessageReceived에서 출력을 얻는 것 같습니다. 내가 추가 한 함수가 호출되었을 때만 (또는 아닌지 의심 스럽습니다) 때가 있습니다. DragWindow 함수처럼 거기에있는 다른 것을 호출하면 내 출력에 "DragWindow"가 표시됩니다. 그것은 내 자신의 기능이 아닙니다. – samanime
@samanime VS 프로젝트를 재구성 해보십시오. 캐시 문제 일 수 있습니다. 이거 치워. 다시 빌드하십시오. –
@samanime 잘못된 파일이나 잘못된 시간을 편집하고있는 것일 수도 있습니다. 프로젝트를 재 빌드하기 전에 .js 파일을 편집하십시오. –