MFC
- Converting from char[] to tstring 2011.03.15
- Dialog 배경색상 변경 2011.03.10
- 리스트콘트롤 체크박스 구현 2011.03.10
- 파일연결 바꾸기 2010.07.15
- 문자열 인코딩 체크함수 2009.05.21
- 윈도우 최상위로 끌어올리기 2009.02.24
- 기본적인 DHTML 컨트롤 2009.02.16
- 트레이 아이콘 만들기 2009.02.13
- 죽을때 에러메세지 안 보이기 2009.02.13
- 해상도 변경 2009.02.13
Converting from char[] to tstring
2011. 3. 15. 09:16
Dialog 배경색상 변경
2011. 3. 10. 10:49
리스트콘트롤 체크박스 구현
2011. 3. 10. 10:38
파일연결 바꾸기
2010. 7. 15. 15:44
"C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin\MSDEV.EXE" "%1"
귀찮아서;;
귀찮아서;;
문자열 인코딩 체크함수
2009. 5. 21. 11:30
출처 : 데브피아
http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=50&MAEULNo=20&no=568605&ref=561246
윈도우 최상위로 끌어올리기
2009. 2. 24. 13:59
기본적인 DHTML 컨트롤
2009. 2. 16. 14:29
HTML 컨트롤을 선택하여 기본적으로 제공되는 소스를 수정한 DHTML컨트롤.
기존의 IDHTCtrlUI을 삭제(이때, 컴파일 에러는 전부 주석처리)하고 외부로 노출될 UIObj Object를 추가했다.(ATL Object Wizard)
IDHTCtrl 인터페이스 생성부분에서 아래와 같이 수정 및 멤버변수를 추가했다.
// 웹 브라우저 생성, 인터페이스 교환
LRESULT OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
CAxWindow wnd(m_hWnd);
// 1. Web Browser 컨트롤 생성
HRESULT hr = wnd.CreateControl(IDH_DHTCTRL);
if(SUCCEEDED(hr)) {
hr = CComObject<CUIObj>::CreateInstance(&m_pUI);
if(SUCCEEDED(hr)) {
// 2. Web Browser에게 연동되는 UIDisp 전달
CComQIPtr<IDispatch> pDisp(m_pUI);
hr = wnd.SetExternalDispatch(pDisp);
}
if(SUCCEEDED(hr)) {
// 3. Web Browser가 노출하고 있는 Interface 포인터 획득
hr = wnd.QueryControl(IID_IWebBrowser2, (void**)&m_spBrowser);
// 4. Web Browser와 실제 연동할 m_pUI인터페이스에게 Web Interface 전달
m_pUI->put_Web(m_spBrowser);
}
}
return SUCCEEDED(hr)?0:-1;
}
CComObject<CUIObj> *m_pUI;
//////////////////////////////////////////////////////////////////////////////
IUIObj 인터페이스에 Web property를 추가.
STDMETHODIMP CUIObj::get_Web(IUnknown **pVal)
{
m_spBrowser->Navigate(m_urlPath,NULL,NULL,NULL,NULL);
return S_OK;
}
STDMETHODIMP CUIObj::put_Web(IUnknown *newVal)
{
m_spBrowser = (IWebBrowser2*)newVal;
return S_OK;
}
GoToURL()이란 메소드도 추가하여 메소드 안에서 m_spBrowser->Navigate(m_urlPath,NULL,NULL,NULL,NULL)을 호출.
멤버변수
CComPtr<IWebBrowser2> m_spBrowser; //IDHCtrl 에서 전달되는 인터페이스 저장
CComBSTR m_urlPath; //URL 저장공간
OnClick()메소드도 옮겨오기....소스복사, IDL수정....뭐 대충 이정도밖에 기억안나네ㅡ.,ㅡ
기존의 IDHTCtrlUI을 삭제(이때, 컴파일 에러는 전부 주석처리)하고 외부로 노출될 UIObj Object를 추가했다.(ATL Object Wizard)
IDHTCtrl 인터페이스 생성부분에서 아래와 같이 수정 및 멤버변수를 추가했다.
// 웹 브라우저 생성, 인터페이스 교환
LRESULT OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
CAxWindow wnd(m_hWnd);
// 1. Web Browser 컨트롤 생성
HRESULT hr = wnd.CreateControl(IDH_DHTCTRL);
if(SUCCEEDED(hr)) {
hr = CComObject<CUIObj>::CreateInstance(&m_pUI);
if(SUCCEEDED(hr)) {
// 2. Web Browser에게 연동되는 UIDisp 전달
CComQIPtr<IDispatch> pDisp(m_pUI);
hr = wnd.SetExternalDispatch(pDisp);
}
if(SUCCEEDED(hr)) {
// 3. Web Browser가 노출하고 있는 Interface 포인터 획득
hr = wnd.QueryControl(IID_IWebBrowser2, (void**)&m_spBrowser);
// 4. Web Browser와 실제 연동할 m_pUI인터페이스에게 Web Interface 전달
m_pUI->put_Web(m_spBrowser);
}
}
return SUCCEEDED(hr)?0:-1;
}
CComObject<CUIObj> *m_pUI;
//////////////////////////////////////////////////////////////////////////////
IUIObj 인터페이스에 Web property를 추가.
STDMETHODIMP CUIObj::get_Web(IUnknown **pVal)
{
m_spBrowser->Navigate(m_urlPath,NULL,NULL,NULL,NULL);
return S_OK;
}
STDMETHODIMP CUIObj::put_Web(IUnknown *newVal)
{
m_spBrowser = (IWebBrowser2*)newVal;
return S_OK;
}
GoToURL()이란 메소드도 추가하여 메소드 안에서 m_spBrowser->Navigate(m_urlPath,NULL,NULL,NULL,NULL)을 호출.
멤버변수
CComPtr<IWebBrowser2> m_spBrowser; //IDHCtrl 에서 전달되는 인터페이스 저장
CComBSTR m_urlPath; //URL 저장공간
OnClick()메소드도 옮겨오기....소스복사, IDL수정....뭐 대충 이정도밖에 기억안나네ㅡ.,ㅡ
트레이 아이콘 만들기
2009. 2. 13. 12:55
void CTestDlg::TrayIcon()
{
if(!m_TaskFlag)
{
ShowWindow(SW_HIDE);
NOTIFYICONDATA nid;
nid.cbSize = sizeof(nid);
nid.hWnd = m_hWnd; //현재 다이얼로그의 윈도우 핸들
nid.uID = IDR_MAINFRAME; //아이콘의 리소스ID
nid.uFlags = NIF_MESSAGE|NIF_ICON|NIF_TIP;
nid.uCallbackMessage = UM_ICONNOTIFY; //우리가 만든 메시지
nid.hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
lstrcpy(nid.szTip,"우리가 만든 태스크바"); // 툴팁
Shell_NotifyIcon(NIM_ADD,&nid);
// taskBar상태영역에 아이콘 추가,삭제,수정할때 시스템에 메시지 전달
SendMessage(WM_SETICON,(WPARAM)TRUE,(LPARAM)nid.hIcon);
// taskBar 상태영역에 아이콘 설정
m_TaskFlag = TRUE;
}
}
이 함수를 실행하면 현재의 창이 사라지면서 트레이 아이콘이 생깁니다.
void CDetectPointDlg::TrayCallback(WPARAM wParam, LPARAM lParam)
{
switch(lParam)
{
case WM_RBUTTONDOWN:
AfxMessageBox("트레이 아이콘!");
break;
case WM_LBUTTONDOWN:
ShowWindow(SW_SHOW);
m_TaskFlag = FALSE;
break;
case WM_RBUTTONDBLCLK:
CMenu menu, *pSubMenu;
if(!menu.LoadMenu(IDR_MENU)) return 0;
if(!(pSubMenu = menu.GetSubMenu(0))) return 0;
CPoint pos;
GetCursorPos(&pos);
SetForegroundWindow();
pSubMenu->TrackPopupMenu(TPM_RIGHTALIGN, pos.x, pos.y, this);
menu.DestroyMenu();
break;
}
}
이 함수는 오른쪽 밑에 있는 트레이 아이콘에 대한 이벤트 처리하는 부분이고요...
BEGIN_MESSAGE_MAP에 메세지 연결 해주시고...
ON_MESSAGE(UM_ICONNOTIFY,TrayCallback) // 메시지 추가
#define UM_ICONNOTIFY WM_USER+6001
이것두 추가해 주셔야 합니다...
// 트레이 종료..
Shell_NotifyIcon(NIM_DELETE, &nid);
{
if(!m_TaskFlag)
{
ShowWindow(SW_HIDE);
NOTIFYICONDATA nid;
nid.cbSize = sizeof(nid);
nid.hWnd = m_hWnd; //현재 다이얼로그의 윈도우 핸들
nid.uID = IDR_MAINFRAME; //아이콘의 리소스ID
nid.uFlags = NIF_MESSAGE|NIF_ICON|NIF_TIP;
nid.uCallbackMessage = UM_ICONNOTIFY; //우리가 만든 메시지
nid.hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
lstrcpy(nid.szTip,"우리가 만든 태스크바"); // 툴팁
Shell_NotifyIcon(NIM_ADD,&nid);
// taskBar상태영역에 아이콘 추가,삭제,수정할때 시스템에 메시지 전달
SendMessage(WM_SETICON,(WPARAM)TRUE,(LPARAM)nid.hIcon);
// taskBar 상태영역에 아이콘 설정
m_TaskFlag = TRUE;
}
}
이 함수를 실행하면 현재의 창이 사라지면서 트레이 아이콘이 생깁니다.
void CDetectPointDlg::TrayCallback(WPARAM wParam, LPARAM lParam)
{
switch(lParam)
{
case WM_RBUTTONDOWN:
AfxMessageBox("트레이 아이콘!");
break;
case WM_LBUTTONDOWN:
ShowWindow(SW_SHOW);
m_TaskFlag = FALSE;
break;
case WM_RBUTTONDBLCLK:
CMenu menu, *pSubMenu;
if(!menu.LoadMenu(IDR_MENU)) return 0;
if(!(pSubMenu = menu.GetSubMenu(0))) return 0;
CPoint pos;
GetCursorPos(&pos);
SetForegroundWindow();
pSubMenu->TrackPopupMenu(TPM_RIGHTALIGN, pos.x, pos.y, this);
menu.DestroyMenu();
break;
}
}
이 함수는 오른쪽 밑에 있는 트레이 아이콘에 대한 이벤트 처리하는 부분이고요...
BEGIN_MESSAGE_MAP에 메세지 연결 해주시고...
ON_MESSAGE(UM_ICONNOTIFY,TrayCallback) // 메시지 추가
#define UM_ICONNOTIFY WM_USER+6001
이것두 추가해 주셔야 합니다...
// 트레이 종료..
Shell_NotifyIcon(NIM_DELETE, &nid);
죽을때 에러메세지 안 보이기
2009. 2. 13. 11:04
해상도 변경
2009. 2. 13. 10:43