728x90

마우스 이벤트 처리를 해서 듀얼 모니터에서 왔다갔다하니까 좌표 계산이 이상해져서 창이 왔다갔다하는 현상이있었다.

 

그럴 때 그냥 Mouse Press Event 에서 아래와 같은 처리만 하면 되었다. (기록...)

 

const int WM_SYSCOMMAND = 0x0112;
const int SC_FORMMOVE = 0xf012;

if (Mouse Press Event && LeftButton)
{
	ReleaseCapture();
	SendMessage(hwnd, WM_SYSCOMMAND, SC_FORMMOVE, 0);
}
728x90

'GUI Toolkit > QT' 카테고리의 다른 글

QT - QWidget에서 DirectX Rendering  (0) 2019.11.20
QT - qDebug() 와 QT_NO_DEBUG_OUTPUT  (0) 2019.01.17
QT - InputMethodEvent() 버그...?  (3) 2019.01.15
QT - QT 설치하기.  (0) 2017.02.18
728x90

QWidget에 DirectX를 렌더링하니 뭔가가 계속 덮어져서 Rendering 한 영상이 지워지는 현상이 있었다.

 

그래서 인터넷 검색을 해보니 다른 API를 이용하여 QWidget에 그릴 때에는 paintEngine()을 오버라이딩 해줘야 한다.

QPaintEngine *paintEngine() const { return NULL;

 

https://stackoverflow.com/questions/34220730/qt-directx-rendering

 

Qt Directx rendering

I'm rendering in Qt widget by DirectX. I disabled qt paint engine QPaintEngine *paintEngine() const { return NULL; } but sometimes I want to enable qt paint and disable directX rendering. I'm

stackoverflow.com

 

 

728x90

'GUI Toolkit > QT' 카테고리의 다른 글

QT - Dragger  (0) 2023.06.22
QT - qDebug() 와 QT_NO_DEBUG_OUTPUT  (0) 2019.01.17
QT - InputMethodEvent() 버그...?  (3) 2019.01.15
QT - QT 설치하기.  (0) 2017.02.18
728x90

qDebug()는 MFC의 TRACE()나 ASSERT()처럼 Debug 모드에만 나오고 Release에는 안나오는 그런 define이 아니다.


기본적으로는 그냥 동작을 하고, 전처리기에 QT_NO_DEBUG_OUTPUT을 추가하면 동작하지 않는 그런 define이다.



나라면 DebugView를 이용하기 위해서라도 QT_NO_DEBUG_OUTPUT를 사용하지 않을 것 같다...




  • qDebug() is used for writing custom debug output.
  • qWarning() is used to report warnings and recoverable errors in your application.
  • qCritical() is used for writing critical error mesages and reporting system errors.
  • qFatal() is used for writing fatal error messages shortly before exiting.


728x90

'GUI Toolkit > QT' 카테고리의 다른 글

QT - Dragger  (0) 2023.06.22
QT - QWidget에서 DirectX Rendering  (0) 2019.11.20
QT - InputMethodEvent() 버그...?  (3) 2019.01.15
QT - QT 설치하기.  (0) 2017.02.18
728x90

QT에서 한글을 입력받게 만들어서 조합 하고 완성하기 위해서는 InputMethodEvent()를 사용해야 한다.


그런데 이 이벤트가 Debug에서는 발생하고, Release에서는 발생이 안되서 약 몇시간동안 삽질을 했었는데, 


결론은 QWidget::setAttribute(Qt::WA_InputMethodEnabled, true); 으로 InputMethodEvent를 사용하겠다고 명시적으로 설정해야된다.




한글 조합 및 완성

- InputMethodEvent()에서 QInputMethodEvent를 매개변수로 받는데, 이 매개변수의 preeditString()은 조합 중인 단어, commitString()은 조합이 완료된 단어이다. 이것을 잘 이용하면 실시간으로 한글이 작성되는 것을 볼 수 있다.



InputMethodEvent()가 발생하지 않는다면...

- 이 이벤트가 발생하지 않는 QWidget의 속성에서 사용하겠다고 알려주면 된다.

   QWidget::setAttribute(Qt::WA_InputMethodEnabled, true); 

728x90

'GUI Toolkit > QT' 카테고리의 다른 글

QT - Dragger  (0) 2023.06.22
QT - QWidget에서 DirectX Rendering  (0) 2019.11.20
QT - qDebug() 와 QT_NO_DEBUG_OUTPUT  (0) 2019.01.17
QT - QT 설치하기.  (0) 2017.02.18
728x90

WPF의 ButtonDown, MouseMove, ButtonUp 등의 이벤트가 내가 만든 Rendering Viewer에는 발생하지 않는다.


이 이벤트들은 OpenGL을 Renering하면서 등록한 MsgProc에서 처리된다.


내 생각에는 CreateWindow로 만든 윈도우를 WPF에 붙인 것이기 때문에 WPF와 이벤트 메시지가 다르거나 뭐 그렇지 않을까 예상만 한다.


일단. 위와 같은 이벤트들을 WM_LBUTTONDOWN, WM_LBUTTONUP, WM_MOUSEMOVE 등과 같은 메시지로 처리를 하면 내가 생각했던 것처럼 동작한다.

728x90

'GUI Toolkit > WPF' 카테고리의 다른 글

WPF - OpenGL 연동하기 - 1  (0) 2018.09.13
WPF - 강좌  (0) 2018.09.11
728x90

WPF는 기본적으로 DirectX가 내부적으로 돌고있다...


3D가 필요하여 별도의 DirectX나 OpenGL을 개발하여 붙일 필요는 굳이 없다.


나의 경우는 그냥 회사 프로젝트를 진행하다보니... 붙일 일이 생겼다. ㅎㅎㅎㅎ


그래서 검색하다보니


https://www.codeproject.com/Articles/23736/Creating-OpenGL-Windows-in-WPF


자료를 발견하여 공유한다.


왜인지는 모르겠지만 위 자료를 받아서 실행 및 빌드가 제대로 안되서...


그냥 새로 프로젝트 만들어서 빌드했다.


WPF_OpenGL_TestProject.zip


728x90

'GUI Toolkit > WPF' 카테고리의 다른 글

WPF - OpenGL 연동하기 - 2  (0) 2018.09.18
WPF - 강좌  (0) 2018.09.11
728x90

매우 보기 좋게 정리해놓으셔서 공유...


http://www.hoons.net/Lecture/List/54

728x90

'GUI Toolkit > WPF' 카테고리의 다른 글

WPF - OpenGL 연동하기 - 2  (0) 2018.09.18
WPF - OpenGL 연동하기 - 1  (0) 2018.09.13
728x90
728x90

+ Recent posts