답변 감사드립니다. ^^
지나가다가 님이 쓰신 글 :
: 우선 header 파일이 없다면, 컴파일시 헤더파일이 없다는 오류가 발생합니다.
: 해당 파일은 존재하는데, 사용하는 빌더 버전이 낮아서,
: IFrameworkInputPane 에 대한 정의가 되어 있지 않은것이 문제입니다.
:
: 해당 정의는 Windows 8.1 에서 생긴듯 한데, 빌더 버전을 높이는게 좋은 방법입니다.
: 굳이 예전버전을 사용해야 한다면,
: shobjidl.h의 경우, windows sdk에 포함되어 있는 shobjidl.h 파일의 내용을 일부 발췌하여 사용하여야 합니다.
: 손이 좀 가는 작업일겁니다.
:
: 참고로, 엠바카데로 사이트에가면 community 버전을 등록하면 무료로 사용할 수 있습니다
: 제한적이지만 상업적 사용이 가능합니다.
:
: 친구 님이 쓰신 글 :
: : 안녕하세요
: : 빌더 6에서 아래 터치 키보드 관련 c++ 소스를 컴파일 하고 싶습니다.
: :
: : 컴파일 하면 Undefined symbol 'IFrameworkInputPane' 에러가 나고요
: :
: : #include "Shobjidl.h" 에 있어야 하는데 제 해더 파일엔 없더라고요
: : 이런경우 어떻게 해결이 가능 할까요?
: :
: :
: :
: :
: : #include "stdio.h"
: : #include "Shobjidl.h"
: : #include "Windows.h"
: :
: : bool GetKeyboardRect( RECT *r ) {
: : IFrameworkInputPane *inputPane = NULL;
: : bool result = false;
: : HRESULT hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
: : if (SUCCEEDED(hr)) {
: : hr = CoCreateInstance(CLSID_FrameworkInputPane, NULL, CLSCTX_INPROC_SERVER, IID_IFrameworkInputPane, (LPVOID*)&inputPane);
: : if (SUCCEEDED(hr)) {
: : hr=inputPane->Location( r );
: : if (SUCCEEDED(hr)) {
: : result = true;
: :
: : if( r->left == 0 )
: : if( r->right == 0 )
: : if( r->top == 0 )
: : if( r->bottom == 0 )
: : result = false;
: : }
: : inputPane->Release();
: : }
: : }
: : CoUninitialize();
: : return result;
: : }
: :
: : int main()
: : {
: : HRESULT hr;
: : hr = CoInitialize(0);
: :
: : RECT r;
: : bool result = GetKeyboardRect( &r );
: : printf( "result=%d RECT=%d,%d,%d,%d\n", result, r.left, r.top, r.right, r.left );
: : return 0;
: : }
: :