PostMessage의 WPARAM 이나 LPARAM 으로 shared_ptr 와 같은 스마트 포인터 객체를 넘기고 싶은 경우가 있습니다.
이러한 경우 WPARAM 이나 LPARAM 으로 변환이 불가능 하기 때문에 .get() 함수를 사용해서 포인터를 넘길 수 있는데요. 그렇게 되면 스마트 포인터의 역활을 하지 못하게 되기 때문에 문제가 있습니다.
이러한 경우 class 또는 struct 로 해당 객체를 한번 감싸 주도록 하고, 감싼 객체를 WPARAM, LPARAM 으로 전송하게 되면 문제를 해결 할 수 있습니다.
예를 들면 아래와 같습니다.
struct tagMsg
{
std::shared_ptr<STATE> pChannelState;
}
auto pChannelState = std::make_shared<STATE>();
auto msg = new tagMsg();
msg->pChannelState = pChannelState;
PostMessage(m_hWnd, MESSAGE_STATE, (WPARAM)msg, 0);
메세지를 받는 쪽에서 WPARAM을 tagMsg 객체로 변환해서 pChannelState을 사용하고 tagMsg 객체는 delete 해주면 됩니다.
Problem stdout: stderr: Downloading xxxx.a (83 MB) error: git-lfs smudge -- 'xxxx.a' died of signal…
https://www.playmobil.de/playmobil-xxl-weihnachtsmann/6629.html 구매가 : 48.49 유로 (플레이모빌 독일 홈페이지) 결제하는데 안되서 PayPal 로 결제하니 잘 잔행…
롯데온에서 355ml 24캔 롯데카드로 구매시 13,210원 https://www.lotteon.com/p/product/PD36294 APP으로 35,000원 이상 구매시 7,000 포인트 적립 행사…
구입 매장 : 현대 홈쇼핑 (홈쇼핑 방송 중) 모바일 앱 http://www.hyundaihmall.com/front/pda/itemPtc.do?slitmCd=2114353981 최종 결제 가격 :…
Visual Studio 에서 작업 중 이러한 컴파일 에러가 발생한 케이스가 있었습니다. 이 경우에는 .rc 파일에…