본문 바로가기
반응형

C & C++444

쓸만한 Rect 관련 API 함수 쓸만한 Rect 관련 API 함수 RECT 구조체를 교집합, 이동, 증가하기 등을 처리할 경우 직접 코드를 작성하여도 좋지만, 이미 제공되는 함수도 쓸만한 것들이 많이 있습니다. BOOL UnionRect( LPRECT lprcDst, // destination rectangle CONST RECT *lprcSrc1, // first rectangle CONST RECT *lprcSrc2 // second rectangle ); 두개의 사각형으로 하나의 사각형으로 합한다. 면적이 0이면 FALSE 아니면 TRUE 를 리턴한다. BOOL InflateRect( LPRECT lprc, // rectangle int dx, // amount to adjust width int dy // amount to ad.. 2011. 3. 27.
[Cursor] 작업동안 사용자 배려 대기 커서 보이기 개요.. 이미지 로딩, 복잡한 알고리즘 계산과 같은 오랜 시간이 걸리는 작업을 할 경우 유저는 입력작업을 하지 못하고 잠시 기다려야 할 경우가 있습니다. 그러한 경우 대기 커서(Wait Cursor) 모래시계 로 커서가 바뀌면 사용자는 프로그램이 오류가 발생한 것이 아니고 프로그램이 작업 중이니 기다려야한다는 것을 인지하고 참고 기다려줄 것입니다. "몇 초 정도 기다리면 어때" 라고 생각하시는 분도 많지만 조금 더 유저에게 배려를 한다면 더 좋은 프로그램을 만드실 수 있으리라 생각됩니다. 코드 : (MFC App 시스템에서 정상 작동됩니다.) 방법1: { BeginWaitCursor(); Sleep(3000); // 아주오래걸리는일 EndWaitCursor(); } 방법2: { CWaitCursor wc.. 2011. 3. 27.
[IP] 자신의 IP 얻어오기 다수의 아이피(IP)를 가지고 있는 경우 자신의 아이피(IP) 주소 목록을 얻는 프로그램입니다. 아래와 같이 winsock의 gethostname(), gethostbyname()을 이용하면 아이피 목록을 쉽게 알아낼 수 있습니다. 핵심코드:코드 참고 : http://www.debuglab.com/knowledge/getip.html void GetMyIPArray( CArray& raIP ) { WSADATA WsaData; if( WSAStartup( 0x202, &WsaData ) == SOCKET_ERROR ) return; char name[256]; PHOSTENT pHostInfo; struct sockaddr_in addr; // 자신의 호스트이름 얻기.. 2011. 3. 27.
툴바 짧은경로명 길게~ MFC 프로그래밍에서 이미지 뷰어나 노트 패드와 처럼 탐색기에서 더블클릭으로 실행하는 프로그램은, 매우 긴 경로가 인자로 있다면 '게임~3.dat'와 같이 짧은 경로로 변환이 되어 입력이 됩니다. 이와 같은 단축 경로명이 보기 좋지 않기 때문에 아래와 같이 코드를 수정하면 전체 경로명으로 표현이 됩니다. 코드 BOOL CRSeeApp::InitInstance() { ... ... // Parse command line for standard shell commands, DDE, file open CCommandLineInfo cmdInfo; ParseCommandLine(cmdInfo); // 짧은 주소를 길게 바꾼다. char szLongPathName[1024]; if( GetLongPathName(.. 2011. 3. 27.
[Tip] 특정시간과 날짜에만 실행 개요.. 종종 게임 서버에서는 이벤트나 특정 날짜에만 실행되는 부분을 추가할 일이 생깁니다. 하지만 그 시간에 맞추어서 서버를 업데이트하기도 힘들지요. 그러한 경우 아래 코드를 사용하면 쉽게 해결됩니다. 코드 2005년 10월 1일 0시 0분 0초 ~ 2005년 10월 19일 59분 59초 까지 하는 이벤트의 예... // 날짜 계산 CTime timeCurrent = CTime::GetCurrentTime(); CTime timeStart( 2005, 10, 1, 0, 0, 0 ); CTime timeEnd( 2005, 10, 20, 0, 0, 0 ); // 이벤트 가능 날짜 if( timeCurrent >= timeStart && timeCurrent < timeEnd ) { // 아싸 이벤트~ 추가.. 2011. 3. 27.
[Dialog] 시작시 트레이 아이콘으로 시작 프로그램이 최초 실행 시 트레이에서 실행되는 메신저 프로그램처럼, 창으로 뜨지 않고 시작하는 프로그래밍 방법을 설명합니다. 핵심.. 화면에 보이지 않는 모달리스 다이알로그(Modaless Dialog)로 개발합니다. 사용방법.. 0. 헤더에 선언한다. CNorazoClientLauncherDlg* m_pDlg; 1. 다이알로그를 모달리스윈도우로 생성한다. BOOL CNorazoClientLauncherApp::InitInstance() { ... ... m_pDlg = new CNorazoClientLauncherDlg; m_pDlg->Create( CNorazoClientLauncherDlg::IDD ); m_pDlg->ShowWindow( SW_HIDE ); m_pMainWnd = m_pDlg; re.. 2011. 3. 27.
반응형