2010년 12월 30일 목요일
2010년 12월 20일 월요일
2010년 12월 12일 일요일
2010년 11월 26일 금요일
에뮬레이터 스킨을 바꾸어보아용~
에뮬레이터를 돌려보는 방법입니다. 매우 간단해요~
어딘가 사이트를 보고 저도 한거 였는데.....기억이 나질 않아 패스하고 간략하게 설명하겠습니다 (__)
안드로이드를 설치하면 설치한 폴더가 어디있는지 아시죠??
저같은 경우는 " C:\Android " <-- 요기에 있어요
폴더에 들어가시면
이런식으로 구성이 되어 있을텐데용 " Platforms " 라는 곳에 들어갑니다
들어가게되면 아래와 같이 화면이 나옵니다.
현재 자신이 진행하고 있는 프로젝트 버전에 맞게 들어갑니다. 전 android-2.0버전이라 2.0으로 들어갈께용
화면을 보시면 Skins 라고 있지요? 그 화면에 들어가서 제가 올려놓은 압축파일을 풀기만 하면 됩니다.
완전 쉽죠??
그럼 이제 이클립스상에서 세팅하는 방법에 대해 보겠습니다.
이클립스 에뮬레이터 구동하기!!!
이클립스를 구동시키면 핸드폰 모양의 에뮬레이터기를 눌러 새롭게 추가를 합니다.
좌측 팝업창의 New 를 누르면 우측 팝업창이 나오는데
Name : 여긴 구동하는 에뮬레이터의 이름을 씁니다. (아무거나 상관없어용)
Target : 여긴 아까 스킨을 넣은 버전을 선택합니다. 전 2.0이었으니 2.0선택
SD Card : sd카드선택하기 (각자 해당하는 위치를 지정)
Skin : 여기서 눌러보면 저처럼 NEXUS-ONE 이라는 영역이 하나 추가가 되어 있을꺼에요 요거 선택
마지막으로 Create AVD를 누르시면 생성이 되실 꺼에요
생성 후 실행해보기
좌측 팝업창에서 생성되어 있는 에뮬레이터를 선택하시고 Start를 누르시면
우측창과 같이 디스플레이 옵션이 나오는데용 보통 Screen Size는 3 Monitor dpi는 80으로
되어 있더라구용 근데 그렇게 하니까 너무 작게 나오는거 같아서 저는 6 에 80 으로 하는데
이건 사용자 취향에 따라 적당히 조절해서 쓰시면 될꺼 같습니다.
별거 없는 내용인데....이미지만 괜히 많아서 스크린 압박이 심하겠는데요 ㅎㅎ
이쁘게 잘 쓰시구용~~
마지막으로 인증샷~!
그림판 실력이라 사진이 후지네용 ㅋㅋ 그래도 깔끔하지용?
아... 가로 세로 바꾸는건 Ctrl+F11 키인거 아시죠?? [이 게시물은 카이로님에 의해 2010-03-22 07:31:48 강좌/학습에서 이동 됨]
2010년 11월 25일 목요일
2010년 10월 31일 일요일
델파이와 c++의 데이터 타입표
delphi data type | c++ data type | bytes | range of value |
Byte | unsigned __int8 | (1byte: unsigned) | 0 to 255 |
ShortInt | __int8 | (1byte: signed) | -127 to 127 |
Word | unsigned __int16 | (2byte, unsigned) | 0 to 65,535 |
SmallInt |
__int16 |
(2byte: signed) | -32,768 to 32,767 |
LongWord |
unsigned __int32 |
(4byte: unsigned) | 0 to 4,294,967,295 |
unsigned int | |||
unsigned long | |||
Cardinal |
unsigned __int32 | ||
LongInt |
__int32 |
(4byte: signed) | -2,147,483,648 to 2,147,483,647 |
int | |||
unsigned long | |||
Integer |
__int32 | ||
Int64 | __int64 |
(8byte: signed) | -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 |
long long |
2010년 10월 28일 목요일
std::map 에서 key를 내가 원하는 놈으로 쓰기
map이란 놈이 조금 당혹스러운 면이 있다..
find 메소드에서 내가 원하는 결과를 얻을려면..
operator< 를 구현해줘야 하는데..
딴 operator가 없으니 가령.. "==" operator..
serial한 값을 넣어서 비교 해줘야 하는것 같다..
내가 능력이 딸려서 그런지는 모르겠지만..
struct net_event_key
{
DWORD _type;
WORD _lParam;
WORD _wParam;
explicit net_event_key( DWORD type, WORD lparam, WORD wparam ) {
_type = type;
_lParam = lparam;
_wParam = wparam;
}
bool operator<( const net_event_key& param ) const {
unsigned __int64 lvalue = 0;
lvalue = (unsigned __int64 ) _type << (4 * 8);
lvalue |= _lParam << ( 2 * 8 );
lvalue |= _wParam;
unsigned __int64 rvalue = 0;
rvalue = (unsigned __int64 ) param._type << (4 * 8);
rvalue |= param._lParam << ( 2 * 8 );
rvalue |= param._wParam;
return lvalue < rvalue;
}
};
이런 식으로 해주니 된다..
2010년 10월 19일 화요일
delphi의 TDateTime
새로 입사한 회사에서 쓰는거라 delphi를 쓰긴 쓰지만..
이건 머.. ㅡㅡa
아놔..
사족은 닥치고.. TDateTime은 1899년 12월 30일 12:00 AM부터 날짜와 시간을 담고 있다.
1은 하루이고 소숫점이 시간값이다.
24시간 = 1
1시간 = 0.04166666666667
1분 = 6.944444444444e-4
1초 = 1.157407407407e-5
짜증난다 정말.. -_-;;
2010년 10월 12일 화요일
2010년 8월 31일 화요일
2010년 8월 30일 월요일
내 폰에 스마트 키보드 깔았눈데 은근히 이거 재밌고 계속 쓰고 싶네
좋다 !
스마트 폰으로 장문을 쓸일은 없을것 같았능데 이거 설치하닌깐 은근히 타이핑하고 싶네~~
ㅎㅎ
2010년 8월 20일 금요일
2010년 8월 8일 일요일
2010년 8월 6일 금요일
2010년 4월 6일 화요일
2010년 3월 10일 수요일
바깥 테두리 투명 처리
//원형 시계
//ExClock.c #include <windows.h> #include <stdlib.h> #include <time.h> #define CLOCKTIMER 1 #define CLOCKSIZE 100 LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); VOID CALLBACK TimeProc(HWND hwnd,UINT iMsg,UINT wParam,DWORD lParam); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { static char szAppName[] = "ExClock"; HWND hwnd; MSG msg; WNDCLASSEX wndclass; int cx,x; wndclass.cbSize = sizeof(wndclass); wndclass.style = CS_HREDRAW | CS_VREDRAW; wndclass.lpfnWndProc = WndProc; wndclass.cbClsExtra = 0; wndclass.cbWndExtra = 0; wndclass.hInstance = hInstance; wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION); wndclass.hCursor = LoadCursor(NULL, IDC_ARROW); wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); wndclass.lpszMenuName = NULL; wndclass.lpszClassName = szAppName; wndclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION); RegisterClassEx(&wndclass); //스크린의 가로 크기를 얻는다. cx=GetSystemMetrics(SM_CXFULLSCREEN); x=cx-CLOCKSIZE; hwnd = CreateWindow(szAppName, "원형시계 예제:ExClock", WS_POPUP | WS_VISIBLE, x, 0, CLOCKSIZE, CLOCKSIZE, NULL, NULL, hInstance, NULL); ShowWindow(hwnd, iCmdShow); UpdateWindow(hwnd); while(GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; } LRESULT CALLBACK WndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRUCT ps; HBRUSH hBrush,oldBrush; HPEN hPen,oldPen; HRGN rgn; switch(iMsg) { case WM_CREATE: SetTimer(hwnd,CLOCKTIMER,100,(TIMERPROC)TimeProc); rgn=CreateRoundRectRgn(0,0,CLOCKSIZE,CLOCKSIZE,CLOCKSIZE,CLOCKSIZE); SetWindowRgn(hwnd,rgn,FALSE); return 0; case WM_PAINT: hdc = BeginPaint(hwnd, &ps); hBrush=CreateSolidBrush(RGB(0,0,200)); hPen=CreatePen(PS_SOLID,3,RGB(200,200,91)); oldBrush=SelectObject(hdc,hBrush); oldPen=SelectObject(hdc,hPen); RoundRect(hdc,0,0,CLOCKSIZE,CLOCKSIZE,CLOCKSIZE,CLOCKSIZE); SelectObject(hdc,CreateSolidBrush(RGB(0,0,0))); RoundRect(hdc,15,30,85,60,20,20); SelectObject(hdc,oldBrush); SelectObject(hdc,oldPen); DeleteObject(hBrush); DeleteObject(hPen); EndPaint (hwnd, &ps) ; return 0; case WM_DESTROY: KillTimer(hwnd,CLOCKTIMER); PostQuitMessage(0); return 0; } return DefWindowProc(hwnd, iMsg, wParam, lParam); } VOID CALLBACK TimeProc(HWND hwnd,UINT iMsg,UINT wParam,DWORD lParam) { time_t curtime; struct tm cur; char curdate[80]; HDC hdc; time(&curtime); cur=*localtime(&curtime); wsprintf(curdate,"%02d:%02d:%02d",cur.tm_hour,cur.tm_min,cur.tm_sec); hdc=GetDC(hwnd); SetBkColor(hdc,RGB(0,0,0)); SetTextColor(hdc,RGB(255,255,0)); TextOut(hdc,20,37,curdate,strlen(curdate)); ReleaseDC(hwnd,hdc); }
2010년 3월 8일 월요일
Dialog를 작업표시줄(task bar)에서 숨기려면
Dialog기반 프로그램을 작업표시줄에서 감추고 싶다면, 간단하게 Window Style을 수정해 주면 된다.
- LRESULT CMainDlg::OnInitDialog(
- UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
- {
- ...
- ModifyStyleEx( WS_EX_APPWINDOW,WS_EX_TOOLWINDOW,0 );
- return TRUE;
- }
문제는!!
이렇게 되면 Alt+Tab으로는 이 window를 선택할 수 없다는 점이다. 어쩌다 포커스를 잃게되면, window를 다시
찾기 상당히 귀찮아진다.
두시간의 삽질-_-을 통해 꽁수를 부려봤다. 좀 더 좋은 방법이 있다면 알려주시길~
WTL기반으로 작업했지만, MFC라도 약간만
응용하면 적용할 수 있다. (오히려 더 쉽게)
한줄요약: 작업표시줄에서는 나타나지 않으면서, Alt + Tab을 통해 활성화 되는 Dialog를 만들어 보자.
1. 바보-_- 윈도를 하나 만들자. (MFC라면 CWnd를 쓰면 되므로 이 과정은 생략)
- class CInvisibleWnd : public CWindowImpl<CInvisibleWnd >
- {
- public:
- DECLARE_WND_CLASS(NULL);
- BEGIN_MSG_MAP(CInvisibleWnd)
- END_MSG_MAP()
- };
2. WTL이라면 Run함수에서 Dialog를 생성할 것이다. (MFC라면
CWinApp::InitInstance)
이때, Dialog의 부모로 바보윈도를 설정해 준다. 눈치
채셨겠지만, 이 꽁수의 핵심은 Dialog의 부모로 설정한 바보윈도는 화면에 표시되면 안된다는 점이다.
- int Run(LPTSTR /*lpstrCmdLine*/ = NULL, int nCmdShow = SW_SHOWDEFAULT)
- {
- ...
- CInvisibleWnd wndInvisible;
- wndInvisible.Create( NULL, 0, NULL, WS_OVERLAPPEDWINDOW );
- CMainDlg dlgMain;
- if ( dlgMain.Create( wndInvisible ) == NULL )
- {
- ATLTRACE(_T("Main dialog creation failed!\n"));
- return 0;
- }
- dlgMain.ShowWindow(nCmdShow);
- int nRet = theLoop.Run();
- _Module.RemoveMessageLoop();
- if ( wndInvisible.IsWindow() )
- wndInvisible.DestroyWindow();
- return nRet;
- }
그렇다. 바보 윈도는 화면에 표시되지 않고 있으니 작업표시줄에 나타나지 않지만, 인스턴스가 있으므로 Alt + Tab을 치면 나타난다! 그
인스턴스를 활성화 시켜주면 자식윈도로 등록된 Dialog가 활성되는 원리.
중요한점은, 프로그램 종료 시점에서 바보윈도또한
소멸시켜 줘야 한다는 거!
MFC라면 좀 더 쉽다. CDialog를 생성할때, 바보 윈도를 생성자의 parameter로 넘겨주기만 하면된다.
(물론, 소멸은
신경써줘야 한다.)
- BOOL CComaApp::InitInstance()
- {
- ...
- CWnd wndInvisible;
- LPCTSTR pstrOwnerClass = AfxRegisterWndClass(0);
- if (!wndInvisible.CreateEx(0,
- pstrOwnerClass,
- _T(""),
- WS_OVERLAPPEDWINDOW ,
- CW_USEDEFAULT,
- CW_USEDEFAULT,
- CW_USEDEFAULT,
- CW_USEDEFAULT,
- NULL,
- 0 ))
- {
- TRACE(_T("failed to create invisible window"));
- return FALSE;
- }
- CMainDlg dlg(&wndInvisible);
- m_pMainWnd = &dlg;
- dlg.DoModal();
- if (wndInvisible.m_hWnd != NULL)
- wndInvisible.DestroyWindow();
- }
3. 이제 OnInitDialog에서 ModifyStyleEx( WS_EX_APPWINDOW,0 ); 해주면 된다.
꽁수 끄읏!
2010년 3월 4일 목요일
com 모듈을 웹에서 사용하는 방법
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Ext\PreApproved
이렇게 하면 된다#include <atlctl.h>
class ATL_NO_VTABLE {customclass} :
...
public IObjectSafetyImpl<{customclass},
INTERFACESAFE_FOR_UNTRUSTED_CALLER |
INTERFACESAFE_FOR_UNTRUSTED_DATA>
....
BEGIN_COM_MAP({customclass})
...
COM_INTERFACE_ENTRY(IObjectSafety)
END_COM_MAP()