프로젝트 -> 속성 -> 일반 -> MFC사용 -> 정적 라이브러리로 바꿔주고 확인.

Posted by 현수림
TAG MFC

댓글을 달아 주세요

BOOL ClistCtrlImageDlg::OnInitDialog()
{
    CDialog::OnInitDialog();

    // 시스템 메뉴에 "정보..." 메뉴 항목을 추가합니다.

    // IDM_ABOUTBOX는 시스템 명령 범위에 있어야 합니다.
    ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
    ASSERT(IDM_ABOUTBOX < 0xF000);

    CMenu* pSysMenu = GetSystemMenu(FALSE);
    if (pSysMenu != NULL)
    {
        CString strAboutMenu;
        strAboutMenu.LoadString(IDS_ABOUTBOX);
        if (!strAboutMenu.IsEmpty())
        {
            pSysMenu->AppendMenu(MF_SEPARATOR);
            pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
        }
    }

    // 이 대화 상자의 아이콘을 설정합니다. 응용 프로그램의 주 창이 대화 상자가 아닐 경우에는
    // 프레임워크가 이 작업을 자동으로 수행합니다.
    SetIcon(m_hIcon, TRUE);   // 큰 아이콘을 설정합니다.
    SetIcon(m_hIcon, FALSE);  // 작은 아이콘을 설정합니다.

    // TODO: 여기에 추가 초기화 작업을 추가합니다.
    m_list.InsertColumn(0,"HEADER_1",LVCFMT_LEFT,180,1);
    m_list.InsertColumn(1,"HEADER_2",LVCFMT_LEFT,180,1);
    m_list.InsertColumn(2,"HEADER_3",LVCFMT_LEFT,193,1);
 
    ListView_SetExtendedListViewStyle(m_list.m_hWnd,
         LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|
         LVS_EX_FLATSB|LVS_EX_HEADERDRAGDROP );

    // Insert Background Image into the ListControl

    LVBKIMAGE bki;

    if (m_list.GetBkImage(&bki) && (bki.ulFlags ==LVBKIF_SOURCE_NONE))
    {
        m_list.SetBkImage(TEXT("C:\\app400main_listctrl.bmp"),TRUE);
        // Use your own Image Address Here
    }


    return TRUE;  // 컨트롤에 대한 포커스를 설정하지 않을 경우 TRUE를 반환합니다.
}




BOOL ClistCtrlImageApp::InitInstance()
{
     // 응용 프로그램 매니페스트가 ComCtl32.dll 버전 6 이상을 사용하여 비주얼 스타일을
     // 사용하도록 지정하는 경우, Windows XP 상에서 반드시 InitCommonControls()가 필요합니다.
     // InitCommonControls()를 사용하지 않으면 창을 만들 수 없습니다.
     InitCommonControls();

     CWinApp::InitInstance();

     AfxEnableControlContainer();


    CoInitialize(NULL); // Initialize COM libraries


     // 표준 초기화
     // 이들 기능을 사용하지 않고 최종 실행 파일의 크기를 줄이려면
     // 아래에서 필요 없는 특정 초기화 루틴을 제거해야 합니다.
     // 해당 설정이 저장된 레지스트리 키를 변경하십시오.
     // TODO: 이 문자열을 회사 또는 조직의 이름과 같은
     // 적절한 내용으로 수정해야 합니다.
     SetRegistryKey(_T("로컬 응용 프로그램 마법사에서 생성한 응용 프로그램"));

     ClistCtrlImageDlg dlg;
     m_pMainWnd = &dlg;
     INT_PTR nResponse = dlg.DoModal();
     if (nResponse == IDOK)
     {
          // TODO: 여기에 대화 상자가 확인을 눌러 없어지는 경우 처리할
          // 코드를 배치합니다.
     }
     else if (nResponse == IDCANCEL)
     {
          // TODO: 여기에 대화 상자가 취소를 눌러 없어지는 경우 처리할
          // 코드를 배치합니다.
     }

     // 대화 상자가 닫혔으므로 응용 프로그램의 메시지 펌프를 시작하지 않고
     // 응용 프로그램을 끝낼 수 있도록 FALSE를 반환합니다.
     return FALSE;
}

Posted by 현수림
TAG MFC

댓글을 달아 주세요

속성에 따라서 창이 뜨는 위치가 바뀌게 된다.


Popup - 새로운 창을 호출하는 다이얼로그와는 전혀 별개로 생성된다.

Child - 새로운 창을 호출하는 다이얼로그 내에 생성된다.

Posted by 현수림
TAG MFC

댓글을 달아 주세요

출처 : http://www.codeguru.com/Cpp/controls/buttonctrl/article.php/c2069


원래 소스에서 약간 편집해서 사용했다.


이거 하는것도 하루가 꼬박 걸리다니... 휴우~

Posted by 현수림
TAG MFC

댓글을 달아 주세요

출처 : http://www.codeproject.com/editctrl/CReadOnlyEdit.asp

 

좋다...

Posted by 현수림
TAG MFC

댓글을 달아 주세요

 

리스트 컨트롤의 배경에 비트맵 파일을 호출해서 그리게 하고,

리스트 컨트롤에 서브 아이템을 넣었더니 배경이 흰색으로 나와서 그림이 전부 가려지더라구요... 그래서 데브피아에서 이것저것 검색하다가 밑에 글을 발견해보고 했더니 됐습니다...

 

이것때문에 대체 얼마나 시달렸는지, 맨날 밤마다 꿈에 나오고 지긋지긋했습니다. -_ㅠ ui프로그래밍은 정말 힘든거구나...

 

그래서 해결한 방법은...

 

m_ctlServiceList.SetBkColor(CLR_NONE);

m_ctlServiceList.SetTextBkColor(CLR_NONE);

m_ctlServiceList.SetTextColor(RGB_BLACK);


이겁니다. 이 간단한걸 가지고 생고생만 했네요. /../

 

출처 : http://www.devpia.com/Forum/BoardView.aspx?no=534695&ref=534695&page=1&forumname=VC_QA&stype=&KeyW=%b8%ae%bd%ba%c6%ae%c4%c1%c6%ae%b7%d1+%b9%e8%b0%e6&KeyR=title

Posted by 현수림
TAG MFC

댓글을 달아 주세요

ListView Ctrl 에서 배경화면 넣기  

        LVBKIMAGE bki;

        CString strImgPath;

        strImgPath = "\\Image\\Back.bmp";

 

        bki.ulFlags = LVBKIF_STYLE_TILE | LVBKIF_SOURCE_URL;

        bki.pszImage = strImgPath.GetBuffer(strImgPath.GetLength());

        bki.cchImageMax = strImgPath.GetLength();

 

        m_listTest.SetBkImage(&bki);

 

위와 같은 방법으로 ListCtrl 에 배경화면을 넣었는데요...

요 방법은 Image 디렉토리에 그림이 있어야 배경화면을 넣을수 있는건데...

리소스에 등록해 놓은 그림을 배경화면으로 넣는 방법은 없나요??

아시는 분 부탁드릴께요...

 Re: HBITMAP이용해서 하시면...  
BOOL SetBkImage( HBITMAP hbm, BOOL fTile = TRUE, int xOffsetPercent = 0, int yOffsetPercent = 0 );

LVBKIMAGE구조체 말고도 hbitmap을 이용해서도 사용 할수 있습니다...

 

LoadBitmap을 이용해서 리소스에 있는 이미지 로드해서... 사용하시면 되겠네요.

 Re: 이렇게 하면 리소스에 포함된 배경 이미지를 쓸 수 있습니다.  

이렇게 하면 리소스에 포함된 배경 이미지를 쓸 수 있습니다.

 

void CMyList::MySetBkImage()

{

    CoInitialize(NULL);

 

    TCHAR szBuf[_MAX_PATH];

    VERIFY(::GetModuleFileName(::AfxGetInstanceHandle(), szBuf, _MAX_PATH));

    CString strPath;

    strPath.Format(_T("res://%s/%d/%d"), szBuf, RT_BITMAP, IDB_BGIMAGE);    

 

    LVBKIMAGE lvbk;

    lvbk.pszImage = (LPTSTR) (LPCTSTR) strPath;

    lvbk.ulFlags  = LVBKIF_SOURCE_URL | LVBKIF_STYLE_NORMAL;

    lvbk.xOffsetPercent = 0;

    lvbk.yOffsetPercent = 0;

 

    if (!this->GetListCtrl().SetBkImage(&lvbk))

        AfxMessageBox("Fail");

}

Posted by 현수림
TAG MFC

댓글을 달아 주세요

// this example creates the Excel file C:\DEMO.XLS, puts in a worksheet with two
// columns (one text the other numeric) an appends three no-sense records.  
// 
void MyDemo::Put2Excel()
{
  CDatabase database;
  CString sDriver = "MICROSOFT EXCEL DRIVER (*.XLS)"; // exactly the same name as in the ODBC-Manager
  CString sExcelFile = "c:\\demo.xls";                // Filename and path for the file to be created
  CString sSql;
   
  TRY
  {
    // Build the creation string for access without DSN
      
    sSql.Format("DRIVER={%s};DSN='';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=\"%s\";DBQ=%s",
                sDriver, sExcelFile, sExcelFile);

    // Create the database (i.e. Excel sheet)
    if( database.OpenEx(sSql,CDatabase::noOdbcDialog) )
    {
      // Create table structure
      sSql = "CREATE TABLE demo (Name TEXT,Age NUMBER)";
      database.ExecuteSQL(sSql);

      // Insert data
      sSql = "INSERT INTO demo (Name,Age) VALUES ('Bruno Brutalinsky',45)";
      database.ExecuteSQL(sSql);

      sSql = "INSERT INTO demo (Name,Age) VALUES ('Fritz Pappenheimer',30)";
      database.ExecuteSQL(sSql);

      sSql = "INSERT INTO demo (Name,Age) VALUES ('Hella Wahnsinn',28)";
      database.ExecuteSQL(sSql);
    }     

    // Close database
    database.Close();
  }
  CATCH_ALL(e)
  {
    TRACE1("Driver not installed: %s",sDriver);
  }
  END_CATCH_ALL;
}
</PRE>

Posted by 현수림
TAG MFC

댓글을 달아 주세요

맨날 만들고 지우고 만들고 지우고 귀찮아서 올려놓음.

Posted by 현수림
TAG MFC

댓글을 달아 주세요

pMainDialog = new CExerciseDlg();


 //모달리스로 띄우기
 pMainDialog->Create(IDD_EXERCISE_DIALOG,this);


 //호출하는 다이얼로그의 주소를 호출된 다이얼로그에 넘겨준다.
 pMainDialog->pSubDialog = this;//pSubDialog : 호출된 Dlg에서 선언한 호출하는 Dlg의 포인터변수

 pMainDialog->ShowWindow(SW_SHOW);




 //모달로 띄우기
 if(pMainDialog->DoModal()==IDOK)
 {
       this->ShowWindow(SW_SHOW);
 }
 

Posted by 현수림
TAG MFC

댓글을 달아 주세요