<div>api정복 책을 보다가 SetTextAlign으로 출력되는 글자의 정렬상태를 조정할 수 있다는데</div> <div>그래서 한번 실험을 했습니다만 </div> <div>그런데요</div> <div>TA_UPDATECP는</div> <div>지정한 좌표대신 Current Position를 사용해서 문자열 출력 후에 Current Position를 변경한다 고 나와있습니다만</div> <div>아래의 소스에서 주석처리된 SetTextAlign(hdc,TA_UPDATECP);의 위치에 따라서 </div> <div>SetTextAlign가 가장 위에 있을때</div> <div>hello의 출력은 </div> <div>HelloHelloHello</div> <div> </div> <div>SetTextAlign가 두번째 라면</div> <div>HelloHello</div> <div>Hello</div> <div> </div> <div>마지막으로 SetTextAlign가 세번째라면</div> <div>Hello</div> <div>HelloHello</div> <div> </div> <div>로 나와야 한다고 생각합니다만</div> <div> </div> <div>.....................</div> <div>그런데 실제 해보면 </div> <div>HelloHelloHello</div> <div> </div> <div>HelloHello</div> <div> </div> <div>Hello</div> <div>Hello</div> <div> </div> <div>이렇게 SetTextAlign가 맨 위에 있을때만 제외하면 마지막 Hello의 출력이 계속해서 생략 누락됩니다. </div> <div>아무리 생각해도 마지막 TextOut문만 누락되는 이유를 모르겠는데</div> <div>그 이유를 아시는 분 계시면 알려 주시면 좋겠네요.</div> <div> </div> <div> </div> <div>#include <windows.h></div> <div>LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);<br>HINSTANCE g_hInst;<br>HWND hWndMain;<br>LPCTSTR lpszClass=TEXT("Textout");</div> <div>int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance<br> ,LPSTR lpszCmdParam,int nCmdShow)<br>{<br> HWND hWnd;<br> MSG Message;<br> WNDCLASS WndClass;<br> g_hInst=hInstance;</div> <div> WndClass.cbClsExtra=0;<br> WndClass.cbWndExtra=0;<br> WndClass.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);<br> WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);<br> WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);<br> WndClass.hInstance=hInstance;<br> WndClass.lpfnWndProc=WndProc;<br> WndClass.lpszClassName=lpszClass;<br> WndClass.lpszMenuName=NULL;<br> WndClass.style=CS_HREDRAW | CS_VREDRAW;<br> RegisterClass(&WndClass);</div> <div> hWnd=CreateWindow(lpszClass,lpszClass,WS_OVERLAPPEDWINDOW,<br> CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,<br> NULL,(HMENU)NULL,hInstance,NULL);<br> ShowWindow(hWnd,nCmdShow);</div> <div> while (GetMessage(&Message,NULL,0,0)) {<br> TranslateMessage(&Message);<br> DispatchMessage(&Message);<br> }<br> return (int)Message.wParam;<br>}</div> <div>LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)<br>{<br> HDC hdc;<br> PAINTSTRUCT ps;</div> <div> switch (iMessage) {<br> case WM_DESTROY:<br> PostQuitMessage(0);<br> return 0;<br> case WM_PAINT:<br> hdc=BeginPaint(hWnd,&ps);<br> SetTextAlign(hdc,TA_UPDATECP);<br> TextOut(hdc,0,0,TEXT("Hello"),5);<br> //SetTextAlign(hdc,TA_UPDATECP);<br> TextOut(hdc,0,20,TEXT("Hello"),5);<br> //SetTextAlign(hdc,TA_UPDATECP);<br> TextOut(hdc,40,20,TEXT("Hello"),5);<br> EndPaint(hWnd,&ps);<br> <br> return 0;<br> }<br> return(DefWindowProc(hWnd,iMessage,wParam,lParam));<br>}<br></div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.