'Windows Prog'에 해당되는 글 14건

  1. 2012.01.06 배경색 변경
  2. 2012.01.05 나이계산
  3. 2012.01.04 프린트(이전 적용 내용)
  4. 2012.01.01 툴바 없애기
  5. 2012.01.01 프린트(버튼클릭시)
  6. 2011.12.31 뷰 크기 지정
  7. 2011.12.28 [MFC] 두개의 테이블을 데이터 베이스에 연결하기
  8. 2011.12.28 으아 =_=
  9. 2011.12.24 -
  10. 2011.11.10 [펌] 프린터 관련 함수
2012. 1. 6. 01:16

HBRUSH CASNConverterDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

// TODO: 여기서 DC의 특성을 변경합니다.
if(nCtlColor != CTLCOLOR_EDIT && nCtlColor != CTLCOLOR_LISTBOX){
static CBrush s_brush(RGB(0, 0, 0));
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(255, 255, 255)); //글자색(일괄 변경)
pDC->SetBkColor(RGB(0, 0, 0)); //배경색
return s_brush;
}
// TODO: 기본값이 적당하지 않으면 다른 브러시를 반환합니다.
return hbr;
}

'Windows Prog' 카테고리의 다른 글

나이계산  (0) 2012.01.05
프린트(이전 적용 내용)  (0) 2012.01.04
툴바 없애기  (0) 2012.01.01
프린트(버튼클릭시)  (0) 2012.01.01
뷰 크기 지정  (0) 2011.12.31
Posted by Triany
2012. 1. 5. 17:39

나이계산
 CTime curr_time=CTime::GetCurrentTime();
 CString m_time=_T("");
 //INT YEAR,MONTH,DAY;
 //YEAR=curr_time.GetYear();
 //MONTH=curr_time.GetMonth();
 //DAY=curr_time.GetDay();
 m_time=curr_time.Format("%Y-%m-%d");
 TRACE(m_time);
 CString rtn=m_time.AllocSysString();
 
  int y, m, d;
 char szy[8], szm[8], szd[8];
 m_time="2012-01-01";
 strcpy(szy,m_time.Mid(0,4));
 strcpy(szm,m_time.Mid(5,2));
 strcpy(szd,m_time.Mid(8,2));
 
  y = atoi(szy);
  m = atoi(szm);
  d = atoi(szd);
 
 CTime ct(y,m,d,0,0,0);
 CString strr;

  CTime temp=curr_time.GetTime()-ct.GetTime();
  strr.Format("curr_time날짜계산 %d %d %d", curr_time.GetYear(), curr_time.GetMonth(), curr_time.GetDay());
 AfxMessageBox(strr);

 strr.Format("ct날짜계산 %d %d %d", ct.GetYear(), ct.GetMonth(), ct.GetDay());
 AfxMessageBox(strr);

 int temp2= (curr_time.GetYear() - ct.GetYear() ) * 12 + (curr_time.GetMonth() - ct.GetMonth());
 
 strr.Format("날짜계산 %d %d %d", temp.GetYear(), temp.GetMonth(), temp.GetDay());
 AfxMessageBox(strr);
 strr.Format("%d개월", temp2);
 AfxMessageBox(strr);
 TRACE("%d\n",temp2);

'Windows Prog' 카테고리의 다른 글

배경색 변경  (0) 2012.01.06
프린트(이전 적용 내용)  (0) 2012.01.04
툴바 없애기  (0) 2012.01.01
프린트(버튼클릭시)  (0) 2012.01.01
뷰 크기 지정  (0) 2011.12.31
Posted by Triany
2012. 1. 4. 10:48


   // 인쇄 다이얼로그 박스 출력
 CPrintDialog printDlg(FALSE);
 if (printDlg.DoModal() == IDCANCEL) return;
 
  // 프린터 DC를 얻음
 CDC dc;
 dc.Attach(printDlg.GetPrinterDC());
 dc.m_bPrinting = TRUE;
 
  // 인쇄될 도큐먼트에 관한 정보 설정
 CString strTitle;                          
 strTitle.LoadString(AFX_IDS_APP_TITLE);
 DOCINFO di;                      
  ::ZeroMemory (&di, sizeof (DOCINFO));
 di.cbSize = sizeof (DOCINFO);
 di.lpszDocName = strTitle;
 
  // 도큐먼트 인쇄 시작
  BOOL bPrintingOK = dc.StartDoc(&di);

  // CPrintInfo에 인쇄 관련 정보 설정
  CPrintInfo Info;
  Info.m_rectDraw.SetRect(0,0, dc.GetDeviceCaps(HORZRES), dc.GetDeviceCaps(VERTRES));
 
  // OnBeginPrinting 함수 호출
  OnBeginPrinting(&dc, &Info);

  // 페이지를 인쇄하는 루프
 // int aaa = Info.GetMaxPage();
//  for (UINT page = Info.GetMinPage(); page <= printPage && bPrintingOK; page++)
//  {
//   // 페이지 인쇄 시작
   dc.StartPage();
   Info.m_nCurPage = 1;
 
   // OnPrint 함수 호출
   OnPrint(&dc, &Info);

   // 페이지 인쇄 완료
   bPrintingOK = (dc.EndPage() > 0);
//  }
 
  // OnEndPrinting 함수 호출
  OnEndPrinting(&dc, &Info);

  // 도큐먼트 인쇄 종료
  if (bPrintingOK) dc.EndDoc();
  else dc.AbortDoc();
  dc.Detach();

'Windows Prog' 카테고리의 다른 글

배경색 변경  (0) 2012.01.06
나이계산  (0) 2012.01.05
툴바 없애기  (0) 2012.01.01
프린트(버튼클릭시)  (0) 2012.01.01
뷰 크기 지정  (0) 2011.12.31
Posted by Triany
2012. 1. 1. 22:36

[Q.]

기본툴바를 지우고 싶은데요~ 어떻게 하나요? 메인프레임에서 뭘 써줘야하나요

[A.]

안녕하세요~!

해당 프로그램의 소스에서 MainFrm.h에

/CToolBar    m_wndToolBar;

라는 코드를 주석처리하시구요.. 



그 다음 MainFrm.cpp에서 OnCreate 함수에 있는 코드중에

if(!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD |
  WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS |
    CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
{
  TRACE0("Failed to create toolbar\\n");
  return -1;      // fail to create
}

라고 되어있는 코드를

 전체 삭제 또는 주석처리하시구요. 그 아래쪽에 있는 다음 코드를 주석처리
또는 삭제하시면 됩니다.

m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar);

이렇게 하신후에 컴파일하시고 실행하시면 툴바가 제거되고 실행될 것입니다.

'Windows Prog' 카테고리의 다른 글

나이계산  (0) 2012.01.05
프린트(이전 적용 내용)  (0) 2012.01.04
프린트(버튼클릭시)  (0) 2012.01.01
뷰 크기 지정  (0) 2011.12.31
[MFC] 두개의 테이블을 데이터 베이스에 연결하기  (0) 2011.12.28
Posted by Triany
2012. 1. 1. 22:01

void OnPrint()
{
 // 인쇄 다이얼로그 박스 출력
 CPrintDialog printDlg(FALSE);
 if (printDlg.DoModal() == IDCANCEL) return;
 
 // 프린터 DC를 얻음
 CDC dc;
 dc.Attach(printDlg.GetPrinterDC());
 dc.m_bPrinting = TRUE;
 
 // 인쇄될 도큐먼트에 관한 정보 설정
 CString strTitle;                          
 strTitle.LoadString(AFX_IDS_APP_TITLE);
 DOCINFO di;                      
 ::ZeroMemory (&di, sizeof (DOCINFO));
 di.cbSize = sizeof (DOCINFO);
 di.lpszDocName = strTitle;
 
 // 도큐먼트 인쇄 시작
 BOOL bPrintingOK = dc.StartDoc(&di);

 // CPrintInfo에 인쇄 관련 정보 설정
 CPrintInfo Info;
 Info.m_rectDraw.SetRect(0,0, dc.GetDeviceCaps(HORZRES), dc.GetDeviceCaps(VERTRES));
 
 // OnBeginPrinting 함수 호출
 OnBeginPrinting(&dc, &Info);

 // 페이지를 인쇄하는 루프
// int aaa = Info.GetMaxPage();
 for (UINT page = Info.GetMinPage(); page <= printPage && bPrintingOK; page++)
 {
  // 페이지 인쇄 시작
  dc.StartPage();
  Info.m_nCurPage = page;
 
  // OnPrint 함수 호출
  OnPrint(&dc, &Info, Info.m_nCurPage);

  // 페이지 인쇄 완료
  bPrintingOK = (dc.EndPage() > 0);
 }
 
 // OnEndPrinting 함수 호출
 OnEndPrinting(&dc, &Info);

 // 도큐먼트 인쇄 종료
 if (bPrintingOK) dc.EndDoc();
 else dc.AbortDoc();

 dc.Detach();
}
 
void OnPrint(CDC *pDC, CPrintInfo *pInfo, UINT pPage)
{
 adoOnQuery();
 CHeaderCtrl* pHeaderCtrl = mListCtrl.GetHeaderCtrl();
 
 TCHAR cbuf[100];
 LVCOLUMN lvcolumn;
 lvcolumn.mask = LVCF_TEXT;
 lvcolumn.pszText = cbuf;
 lvcolumn.cchTextMax = 100;
 
/*
 for (int k = 0; k < nColumnCount; k++)
 {   
  mListCtrl.GetColumn(k,&lvcolumn);
  m_strData += lvcolumn.pszText;
  m_strData += _T(" | ");
 }
 m_strData += _T("\r\n");
 
//컬럼 목차는 제외
*/
 int nColumnCount = pHeaderCtrl->GetItemCount();
 int nSelected = 1;
 int nIndex = -1;
 
 mListCtrl.SetItemState(nIndex, LVIS_FOCUSED | LVIS_SELECTED,
 
                                                 LVIS_FOCUSED | LVIS_SELECTED);
 POSITION pos = mListCtrl.GetFirstSelectedItemPosition();
 nIndex =  mListCtrl.GetNextSelectedItem(pos);
 nSelected = mListCtrl.GetItemCount();
 
//리스트 전체 개수
 
 printPage = nSelected / 65; //한페이지에 프린트 할 개수
 nSelected % 65 > 0 ? printPage++ : printPage;
 
 nIndex += (pPage-1) * 65;
 m_strData = _T("");
 
 int pRange = (int)printPage == pPage ? nSelected % 65 : 65;
 
 for(int i = 0; i < pRange; i++ )
 {
  nIndex++;
 
  for (int j = 0; j < nColumnCount; j++)
  {
   if(j == 0)
    m_strData += mListCtrl.GetItemText(nIndex, j).Left(10)+_T(" | ");
   else
    m_strData += mListCtrl.GetItemText(nIndex, j)+_T(" | ");
   if (j == nColumnCount - 1)
    m_strData += _T("\r\n");
  }
 }
 
 CRect rectBound(500, -500, 12000, -16500);
 
//프린트 페이지 크기(좌, 상, 우, 하)
 UpdateData();
 pDC->SetMapMode(MM_TWIPS);
 pDC->DrawText(m_strData, rectBound, DT_LEFT|DT_TOP);
}
 
void OnEndPrinting(CDC *pDC, CPrintInfo *pInfo)
{
}

'Windows Prog' 카테고리의 다른 글

프린트(이전 적용 내용)  (0) 2012.01.04
툴바 없애기  (0) 2012.01.01
뷰 크기 지정  (0) 2011.12.31
[MFC] 두개의 테이블을 데이터 베이스에 연결하기  (0) 2011.12.28
으아 =_=  (0) 2011.12.28
Posted by Triany
2011. 12. 31. 13:22


[CView]
CMainFrame *pMain=(CMainFrame*)AfxGetMainWnd(); // MainFrame에 대한 포인터 얻기
 pMain->SetWindowPos(NULL,0,0,100,100,SWP_SHOWWINDOW);


[FormView]
 CRect Rect;
 GetWindowRect(&Rect);
 SetWindowPos(NULL,0,0,Rect.Width(),Rect.Height(),SWP_NOMOVE|SWP_NOZORDER);
 GetParentFrame()->GetWindowRect(&Rect);
 GetParentFrame()->SetWindowPos(NULL,0,0,Rect.Width(),Rect.Height()+45,SWP_NOMOVE|SWP_NOZORDER);


 

'Windows Prog' 카테고리의 다른 글

툴바 없애기  (0) 2012.01.01
프린트(버튼클릭시)  (0) 2012.01.01
[MFC] 두개의 테이블을 데이터 베이스에 연결하기  (0) 2011.12.28
으아 =_=  (0) 2011.12.28
-  (0) 2011.12.24
Posted by Triany
2011. 12. 28. 11:26

VS 2008버전으로 열심히 하다가 -_-;;
너무 오류가 많이 나서 다시 6.0으로 돌아왔다....;;
6.0에서 두개의 테이블을 이용하여 Access DB에 연결하는 방법을 정리해 보겠다.
(DB생성시 2개의 테이블을 조인하여 생성하게 되면, '변경할 수 없습니다' 뭐 이런 오류가 뜨더라 ...
 어제 밤부터 거의 삽질함..;;)

먼저 일반적인 방법으로 MFC프로젝트를 생성한다.(생성과정 생략- ODBC는 아직 추가 안하고.)


StdAfx.h에
afxcmn밑에
#include <afxdb.h> 추가

View.h에 #include "OneSet.h"
추가

public에 COneSet m_oset;
보통 m_pSet의 경우
m_pSet->AddNew();
m_pSet->m_ID = 131231;
m_pSet->Update();
구조이다.
 
하지만 복수의 테이블을 다루기 위해 살짝 다르게 사용하니 문법절차가 살짝 다르다.
 
테이블에 접근하기 위해 만든 변수를 사용할때 가장먼저 Open() 을 써야 한다.
이부분이 없다면 "레코드셋은 읽기전용임" 혹은 에러가 날것이다.
 
스샷처럼
 
m_gSet.Open();
m_gSet.AddNew();
m_gSet.m_ID = 123123;
m_gSet.m_Name = "asdasd"
....
m_gSet.Update();
m_gSet.Close();
 
하면된다.
 
마찬가지로 다른 테이블에 접근할경우 이전에 설정해준 변수를 사용하면된다.
 
어떤가 정말쉽다. 나는 이걸로 5시간을 삽질했다만.. -_-
 
다음은 사용할수있는 펑션들이다.

CRecordset :: MoveFirst() 데이터베이스의 맨 처음 레코드로 이동
CRecordset :: MoveLast() 데이터베이스의 맨 마지막 레코드로 이동
CRecordset :: MoveNext() 데이터베이스의 다음 레코드로 이동
CRecordset :: MovePrev() 데이터베이스의 이전 래코드로 이동
CRecordset :: IsBOF() 데이터베이스의 처음인가를 알고자 할때
CRecordset :: IsEOF() 데이터베이스의 마지막인가를 알고자 할때
CRecordset :: AddNew() 데이터베이스에 새로운 레코드를 설정할 때
CRecordset :: Delete() 현재 설정된 레코드를 삭제할 때
CRecordset :: Edit() 현재 레코드를 수정할 수 있는 상태로 놓을 때
CRecordset :: Open() 데이터베이스를 연다.
CRecordset :: Close() 데이터베이스를 닫는다.
CRecordset :: m_strFilter  SQL문을 이용한 필터 만들기
CRecordset :: m_strSort 데이터 레코드를 특정 방식으로 sorting
CRecordset :: Update() 현재 레코드를 데이터베이스에 업데이트한다
[출처] MFC + ODBC (복수의 테이블)|작성자 케이
 

'Windows Prog' 카테고리의 다른 글

프린트(버튼클릭시)  (0) 2012.01.01
뷰 크기 지정  (0) 2011.12.31
으아 =_=  (0) 2011.12.28
-  (0) 2011.12.24
[펌] 프린터 관련 함수  (0) 2011.11.10
Posted by Triany
2011. 12. 28. 03:56

<<odbc 연결할 때, 수정, 삭제가 가능하도록 하려면  Dyanaset으로 선택하고, 읽기만(select)하려면  Snapshot으로 선택을 하여야 합니다. >>

◆ Snapshot : 변경되지 않는 데이터를 볼 때 스냅샷을 이용합니다. 또한 DAO에서 스냅샷은 항상 읽기 전용입니다. 스냅샷으로 열었다면 절대 수정할 수 없습니다. ODBC라면 사용되는 드라이버에 따라 업데이트가 가능합니다.

◆ Dyanaset : 스냅샷과 반대의 개념입니다. 다른 사용자가 레코드, 즉 데이터베이스를 업데이트하면 즉시 읽고 있는 다른 사용자에게 알려줍니다. 그러나 누군가가 새로이 내용을 추가했다면 다시 질의(SELECT)할 때까지 변경사항을 볼 수 없습니다.

◆ Table : 레코드셋의 결과가 데이터베이스 내의 테이블 하나일 때(바로 지금과 같은 상황) 사용합니다. 다이나셋과 역할은 같지만 조금 더 빠릅니다. 하지만 실제 물리적인 테이블 하나이므로 레코드셋이 뷰(View)거나 저장 프로시저를 참조한다면 허용되지 않습니다.

 

MFC ODBC의 두개의 데이터 베이스 테이블 조인하기

대부분의 데이터베이스 프로그래머들은 조인(join)dl 2개 이상의 테이블에서 온 필드로 구성된 커다란 놀리적테이블이라는 것을 알고 있다. Student Registeration 데이터 베이스에서 Student 테이블을 Enrollent테이블과 조인하여 학생과 학생들이 등록된 수업의 목록을 얻을수 있다.

조인은 Visual c++를 사용하는 것이 쉽다. ClassWizard가 기존 레크드 집합에 테이블을 추가하게 해주기 때문이다. 약간의 추가 프로그래밍 작업이 필요할 뿐이다. 다음은 Enrollment테이블을 Student테이블과 조인하는 과정이다.

1.ClassWizard를 사용하여 Member Variables 탭의 CEx31aSet클래스에 엑세스한다. Update Columns버튼을 누른다음, Enrollment 테이블을 Student Registration 데이터베이스로부터 선택한다. 데이터 원본에 레코드 집합 클래스가 필요로 하는 모든 열이 들어있지 않음을 알리는 경고 메시지를 얻고 싶다면 Yes 버튼을 누르고 계속한다. 그 다음 Bina All버튼을 눌러 Enrollment필드에 대한 데이터 멤버를 추가한다.

2. 아래와 같이 CEx31aSet::GetDefaultSQl 함수를 수정하여 Student와 Enrollment테이블에 엑세스 한다.

CString Cex31aSet::GetDefaultSQL()

{

return _T("[Stuent],[enrollment]");

}

3. 이제 조인된 테이블에 2개의 StudentID필드가 있다. CEx31aSet::DoFieldExchange함수에서 StudentIID행을 수정하여 테이블 이름으로 필드에게 자격을 부여한다.

RFX_Long(pFX, _T("[Student].[StunedtID]"),m_StudentID);

4. CEx31aView::OnInitialUpdate 함수에서 레코드 집합의 m_strFiliter문자열을 다음과 같이 설정한다.

m_pSet->m_strFilter="[Student].[StudentID]=[Enrollment].pStudentID]";

5. CEx31aView::OnDraw 함수에서 코드를 추가하여 새 Enrollment 필드를 표시한다. 다음은 그 예 중의 하나이다.

pDC->TextOot(pText.x+500,pText.y,m_pSet->m_CurseID);




http://blog.naver.com/ktg0629?Redirect=Log&logNo=10125001792

'Windows Prog' 카테고리의 다른 글

뷰 크기 지정  (0) 2011.12.31
[MFC] 두개의 테이블을 데이터 베이스에 연결하기  (0) 2011.12.28
-  (0) 2011.12.24
[펌] 프린터 관련 함수  (0) 2011.11.10
그동안 건강에 너무도 소홀했다  (0) 2011.11.05
Posted by Triany
2011. 12. 24. 00:06

export SSL_CERT_FILE instead. and also, in your example you have to set port 443 and force ssl..

export SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt

uri = URI.parse(“https://www.google.com/”)
http = Net::HTTP.new(uri.host, 443)
http.use_ssl = true
request = Net::HTTP::Get.new(uri.request_uri)
response = http.request(request)


'Windows Prog' 카테고리의 다른 글

[MFC] 두개의 테이블을 데이터 베이스에 연결하기  (0) 2011.12.28
으아 =_=  (0) 2011.12.28
[펌] 프린터 관련 함수  (0) 2011.11.10
그동안 건강에 너무도 소홀했다  (0) 2011.11.05
[Ruby] editor 다운로드  (0) 2011.10.29
Posted by Triany
2011. 11. 10. 02:04

blog.naver.com/reverse_ing/60140048162
CView::OnDraw()

그리기 코드를 모니터 화면과 프린터 모두에 출력한다.

OnPaint() 함수는 모니터단지 출력에 불과하다는 점과 다르다.

MS워드나 엑셀처럼 프린터 출력이 중요한 프로그램을 개발하는 상황이라면 클라이언트 뷰 화면의 코드와 프린터 출력 코드를 별도로 분리하지 말고 OnDraw() 함수 하나로 통일하는것이 여러모로 편리하고 구조적으로도 간결하다.

CView::OnPrint()

OnPrint() 함수는 가상함수로 선언된 CView 클래스의 멤버이다.

이 함수는 페이지 단위로 나누어지는 프린터 출력에서 각페이지를 출력할 때 마다 호출된다.

참고로 OnPrint() 함수가 인자로받는 CPrintInfo 구조의 m_nCurPage 멤버에는 현재 출력해야할 페이지 번호가 들어있다.

ex)

Strtmp.Format(L"Current Page : %d", pInfo->m_nCurPage);

pDC->TextOut(10,10, Strtmp);

CView::OnPreparePrinting()

OnPreparePrinting() 함수는 프린터 출력에앞서 인쇄 대화상자를 출력하기 직전에 호출된다.

이 함수가 DoOnPreparePrinting() 함수를 호출하면 인쇄 대화 상자가 화면에 나타나게 된다.

그러므로 이 함수에는 프린터 출력에 앞서 인쇄할 전체 문서의 길이가 얼마나 되는지 계산하는 코드가 주로 들어가게 된다.

SetMaxPage() 함수를 이용해서 출력 문서의 전체 길이를 설정할수 있을것이다.

ex)

BOOL CPrintDemoView::OnPreparePrinting(CPrintInfo* pInfo)
{

pInfo->SetMaxPage(3); //전체페이지가 3임을 명시
return DoPreparePrinting(pInfo);
}

CView::OnBeginPrinting(), OnEndPrinting()

OnBeginPrinting() 함수와 OnEndPrinting() 함수는 각각실제로 문서를 출력하기 시작하는 시점과 출력을 완료한 시점에 호출된다.

CWinApp클래스의 Initlnstance() 함수와 ExitInstance() 함수처럼 각각 프린터 출력에 필요한 GDI 리소스나 메모리를

할당/해제 하는 코드를 작성하는 것이 바람직하다.

참고 ++

IsPrinting()

IsPrinting() 함수는 DC가 프린터 DC인지 아닌지를 BOOL형으로 반환한다.

ex)

if(pDC->IsPrinting()) //프린터 출력인가?
{
pDC->SetMapMode(MM_ISOTROPIC);
pDC->SetWindowExt(100,100);
pDC->SetViewportExt(600,600);
//6배 확대해서 출력한다.
}


'Windows Prog' 카테고리의 다른 글

으아 =_=  (0) 2011.12.28
-  (0) 2011.12.24
그동안 건강에 너무도 소홀했다  (0) 2011.11.05
[Ruby] editor 다운로드  (0) 2011.10.29
[Ruby] Ruby의 특징  (0) 2011.10.29
Posted by Triany