RSS feed
<< 8월 2007 | Home | 10월 2007 >>

std::basic_string을 VARIANT의 bstrVal 타입에 대입하기와 반대로 VARIANT의 bstr

std::basic_string을 VARIANT의 bstrVal 타입에 대입하기와 반대로 VARIANT의 bstrVal을 std::basic_string을 넣기 예제 -- 작성자 goodidea.blogsite.org: 고진혁


보통 IDispatch 를 통해 외부에 interface로 호출할때 VARIANT로 값을 넘기고 받게 되는데 이때 문자열처리예제이다.

아래는 IE에서 띄운 ActiveX 에서 javascript 함수쪽에 이벤트를 발생해서 다시 javascript 함수결과를 받아서 처리하는경우이다.

void foo::sample( int messageType, std::basic_string *message){

VARIANT vtT[1]; // 리턴용
VARIANT rgargs[2]; // 파라메터용

rgargs[1].vt =VT_INT;
rgargs[1].intVal=messageType;

rgargs[0].vt =VT_BSTR;
// 이부분은 std::basic_string 을 bstrVal 로 대입할때
rgargs[0].bstrVal=SysAllocString( _bstr_t(message->c_str()));

(*message)="기본메시지";

if (m_dispEvents)
{
if (SUCCEEDED(DsoDispatchInvoke(m_dispEvents, NULL, SOME_EVENT_ID, 0, 2, rgargs, &vtT[0])))
{
char buf[2048];

// 핵심은 이부분이다. 이벤트 결과로 받은 bstrVal을 std::basic_string으로 넣는경우이다.
wcstombs(buf,vtT[0].bstrVal,2048);

(*message)=buf;

// 받은곳에서 클리어 ActiveX 에서 브라우져쪽에 javascript를 호출해서 javascript 함수내에서 문자열을 되돌린경우 이에대한 메모리 해제책임은 넘겨받은 쪽에있다.
VariantClear(&vtT[0]);


}else{

(*message) = "invoke error";
}

}


** 하여간 c나 c++ 은 타입처리가 정말이지... 뭣 같다... java가 좋아..
Tags :

에버런 사용기

나의 에버런 사용기 - http://goodidea.blogsite.org


** 수령박스 ^^ **

** 내손에 에버런..^^


그동안 많은 PMP와 UMPC 사이들에서 갈등끝에 결정하게 된 에버런 키보드와 배터리사용만으로 선택한 이유가 충분했다.

출퇴근시간이 긴편이라 이시간에 주로 활용할 용도 (영화, 강좌, 인터넷, 약간의 만화와 게임, 그리고 글쓰기 ) 를 가능하게 하면서 크기는 작아야 했다. 매일 들고 다녀야 하고
작은 가방에 넣고 다닐있어야 했다. 여기다 배터리도 한번 충전하면 (한장으로) 갈아 끼우지않아도 4시간은 족히 갈수있는... 그런놈을 원했는데.. 에버런이 딱이었다.

하지만 가격이 아무래도 맘에 걸렸다. 정식 출시즈음해서는 유사 UMPC들이 출시예정기사들이 나왔고 더욱더 망설이게 했는데.. 결국 결정했다. 사실 다른 UMPC나 PMP보다
정작 에버런 와이브로 모델이냐 기본모델이냐에서 갈등이 심했다.

처음 수령하고 보고 만져본 느낌은 생각보다... 묵직했다. 너무 가벼운걸 기대했나..? 근데 그건은 며칠 들고 다녀보니 무거운게 아닌것 같았다...(이게 무겁다면 다른건... ㅡㅡ;) 가방에 넣지않고 퇴근시간내내 (버스, 도보 )중에 2시간가까이 들고있었는데 ... 갖고 다닐만 하다는거였다. 다만 어디 부딪힐까봐 조심조심..

주로 사용해본 용도는 첫째 동영상 프리즌브레이크 (1시간 350메가) , HD 다큐를 압축한 AVI (50분 700메가), TV일반 방송 1시간 700메가 가량 그리고 테스트용으로 2~3장짜리 까지 돌렸는데 무난히 잘 보여줬다.(플레이어는 곰플레이어)

다만이때 이어폰이 블루투스가 아니었는데 이어폰 꽂는데가 상단이어서 영 그림이 안나왔음... 밑에다 있음 딱 좋은데.. 지금은 블루투스가 있지만 편한가.? 블루투스로 하면 선연결 필요없지만 그렇게 편한것 같지 않다. 이어폰을 껐다 켰다 해야 하고 에버런에서는 매번 켤때마다 디바이스 연결해줘야하고. 이어폰 꽂는데가 밑에만 있어도 그냥 유선이 낳을지도 모르겠다.

그리고 게임 평소 게임을 즐겨하는 편은 아닌데 왠지 성능테스트라도 해보고 싶어서.. 에뮬을 깔았는데.. 이런 마메가 다이렉트 3D를 썼었나..? 포기.. 다른에뮬들중에서 된다는게 있다지만 에뮬은 그만두고 심시티4 설치 했는데 처음 시작할때 에러는나는데 플레이는 가능했다. 하지만 사용중 스크롤할때 속도 지연이 발생해서 이동중에 하기에는 답답할듯하다. 그래서 심시티 3000을 설치 했는데 무난하게 잘돌아주어... 일단 정복 대상 게임은 심시티3000으로 (그동안미뤄(?)왔던) 해보기로 했다.



무선랜. 무선랜은 집에있는 공유기와의 연결을 했는데 블루투스와 같은 단일 칩위에 돌아가는지 무선랜을 끄면 블루투스도 멈춰버리는 기대이상의 효과(?)를 나타내 조금 안타까웠다.
일부 불안정한 부분이 있어보였는데.. 블루투스와의 한집에 있는게 문제가 아닌가싶다.

와이브로는 일단 접속되는 곳이면 사용에는 안정적이었다. 이동하면서 인터넷을 한다는건 이전에도 했었지만 노트북이나 PDA에서 였기때문에 활용도에 제한있었지만 에버런은 PC 이면서도 한손으로도 받치고 사용하기편한 그야말로 UMPC의 활용성이 많아질것임을 기대하게 했다. 정말 많은 활용가능성을 보여주는 부분이다...


피봇!!! 사용해보기전에는 딱히 어디다 쓰나 했는데... 이런 결정적인 효과를 보여준 곳이있었는데.. 만화 보기 였다.. 세로로 피벗한 상태에서 한장씩 보기를 화면 세로로 꽉찬화면에
완벽한 e-Book으로 재탄생하는것이었다. 오호!! 가독성좋고... 나이스~

** 에버런은 만화보기 ebook 이얌^^ **




문제점으로 보이는것은...
아직까지 사용한지 며칠이 되지는 않아서 이것저것 해보고있는데 무선랜과 블투쪽이 다소 불안정한 모습이있었고(드라이버업데이트 등으로 개선이 필요할것같다.)
대기모드에서 살아날때 무선랜재접속시 멈춤문제가 발생한다던가 하는.. 문제등이 좀 발생했다. 대기모드쪽 테스트를 라온에서 좀더 많이 해서 드라이버나 부품등이 개선되길 기대해본다.
(이런부분에 있어서는 아직까지는 PDA를 따라갈수없을듯 하다. PDA는 절전과 일반사용상태를 느끼지 못할정도로 자주 오가면서도 아주문제가 없는데... UMPC 라면 이런부분에서 노트북보다 더 잘 동작되어주길 기대...)

에버런을 며칠간 이동중과 집에서 써본느낌은.. 일단 작아서 좋다... 이다. 그리고 충분한 배터리사용시간. 그리고 대부분요구되는 기능을 보여줄수있는 성능에서 사실 놀라웠다.(물론 3D게임은 제외) . 좀더 써봐야 겠지만.. 후회없는 선택이 되어줄것같은생각이 든다. 앞으로 좀더 잘쓰면서 .. .좋은 사용정보를 교환하면서 잘써야겠다...