잡동산..정리가 필요함. MFC

2006/11/21 22:26

복사 http://blog.naver.com/zelatul0/31165666

AfxGetApp()->

(CDFConnect*)AfxGetMainWnd() 메인프레임에 접근

///////////////////////////////////////////////////////////////////////////////

void CDrawgraphDlg::OnPaint()
{
CPaintDC dc(this);

UpdateWndow(); //이거 한줄여..ㅡㅡ;;
CWnd* graphFrame = (CWnd*)GetDlgItem(IDC_GRAPH_FRAME);
CDC* pDC = graphFrame->GetDC();

testGraph->DrawGraph(pDC); //다른 클래스에 dc값을 넘겨 그림을 그려줌..

ReleaseDC(pDC);
}


저 한줄은 하위컨트롤들 먼저그려주게 하는거에염...
그러구 나서 그위에 그리면 윈도우가 밖으로 외출하지 않아도 되져..^^;;
주의하실 점은 만약 그리신 것이 컨트롤들을 덮어버림 보이지 않는다는 점이져..

사실 소스를 바꾸기가 그래서 그런데..혹시 이상하심
CDialog::OnPaint();
UpdateWindow();
으로 바꿔주세염.. CPaintDC부분 빼시구염..

그럼 즐푸하셈... 꾸벅


///////////////////////////////////////////////////////////////////////////////////


C_App::InitInstance()에보면

DialogBox를 생성하는 부분이 있습니다.

"int nResponse = dlg.DoModal();"

이부분을 주석처리해주면 처음부터 다이얼로그는 뜨지 않습니다.

다른 방법으로는 타이머를 이용해서

다이얼로그박스가 생성된 후 일정 시간 후에 SW_HIDE메세지를 보내서 사라지게 하는 방법이 있습니다.

트레이에만 표시되고 실행되는 경우라면 전자를 추천합니다.


///////////////////////////////////////////////////////////////////////////////

GetDlgItem(IDC_MAIN_WEEK)->ShowWindow(SW_HIDE);

///////////////////////////////////////////////////////////////////////////////


btn.EnableWindow(TRUE); --> 활성..

btn.EnableWindow(FALSE) --> 비활성..


////////////////////////////////////////////////////////////////////////////////
RegCreateKey//키값 만들기?

RegOpenKey//키값 등록
RegCloseKey//

RegEnumKey//읽기 하위 검색(?)
RegEnumKeyEx
RegEnumValue
RegQueryValue//읽기 하위는 검색안함(?)
RegQueryValueEx
RegSetValue//쓰기
RegDeleteKey//삭제

///////////////////////////////////////////////////////////////////////////////////
8. 스킨의 형태가 모서리가 둥글 경우 코딩
// Dialog 의 모서리를 라운드로 돌린다.
CRect rc;
GetWindowRect(rc);

CRgn rnd;
rnd.CreateRoundRectRgn(rc.left, rc.top, rc.right, rc.bottom, 26, 26);

::SetWindowRgn(this->m_hWnd, (HRGN)rnd, TRUE);


//////////////////////////////////////////////////////////////////////////////////

시작 프로그램 등록

내컴퓨터\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run 에 등록하면 된


////////////////////////////////////////////////////////////////////////////////////

윈도 최대화: ShowWindow(SW_MAIMIZE);

윈도 복구: ShowWindow(SW_RESTORE);

윈도 복구 할 때는 IsZoomed() 메소드로 확인한다음에 복구 합니다.

윈도 최소화: ShowWindow(SW_MINIMIZE);

IsIconic() 메소드가 TRUE를 반환한다면 최소화 상태임을 나타냅니다.

//////////////////////////////////////////////////////////////////////////////////////


SendMessage(WM_SYSCOMMAND, SC_MAXIMIZE, NULL);


////////////////////////////////////////////////////////////////////////////////


문자열의 실제 픽셀 길이를 알려줌.
GetTextExtent()

///////////////////////////////////////////////////////////////////////////////////

앞쪽 공백 자동정렬

Alt + F8


/////////////////////////////////////////////////////////////////////////////////////

문자열 블럭지정
SetSel()

////////////////////////////////////////////////////////////////////////////////////
[답변] MFC/동적생성/ComboBox 메시지 받기


파일 첨부가 안되네.. 쩝..

.................................................

{//임의로 콤보박스를 생성...

CComboBox* pCombo = new CComboBox();

RECT rc = {10, (m_id * 25), 100, (m_id * 25) + 120};

pCombo->Create(WS_CHILD | WS_VISIBLE | CBS_DROPDOWN | WS_VSCROLL, rc, this, m_id++);

pCombo->AddString("하나 추가요");

pCombo->AddString("둘 추가요");

pCombo->AddString("셋 추가요");

}

//메시지 맵에 콤보 CBN_SELCHANGE메시지를 기입..

BEGIN_MESSAGE_MAP(CDComboDlg, CDialog)

//{{AFX_MSG_MAP(CDComboDlg)

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

ON_BN_CLICKED(IDC_CREATE, OnCreate)

//}}AFX_MSG_MAP

ON_CONTROL_RANGE(CBN_SELCHANGE, 1, 9999, OnSelChange)

END_MESSAGE_MAP()

//이 함수로 메시지가 날라온다..~~

void CDComboDlg::OnSelChange(UINT nID)

{

CString strText, strSel;

CComboBox* pCombo = (CComboBox*)GetDlgItem(nID);

pCombo->GetLBText(pCombo->GetCurSel(), strText);

strSel.Format("선택한 ID:%d, 문자열:%s", nID, strText);

MessageBox(strSel);

}
///////////////////////////////////////////////

double을 문자열로..

_gcvt()

///////////////////////////////////////////////
ini파일 작성
WritePrivateProfileString()


////////////////////////////////////////////////
작업표시줄 내리기 올리기
APPBARDATA appBarData;
ZeroMemory(&appBarData, sizeof(APPBARDATA));
appBarData.cbSize = sizeof(APPBARDATA);
appBarData.hWnd = GetSafeHwnd();
appBarData.lParam = AUTOHIDE;//ABS_ALWAYSONTOP

SHAppBarMessage(ABM_SETSTATE, &appBarData);

////////////////////////////////////////////////
미니덤프 만들기
MiniDumpWriteDump()

////////////////////////////////////////////////////

마이크로세컨드까지 시스템 카운트 구하기

데브피아 불펌

LARGE_INTEGER nStartClk;

LARGE_INTEGER nEndClk;

QueryPerformanceCounter(&nStartClk); // 시작 클록

// 시간 잴 부분을 여기에....

QueryPerformanceCounter(&nEndClk); // 끝나는 클록

LARGE_INTEGER frequency;

LONGLONG timeinmicroseconds = 0;

QueryPerformanceFrequency(&frequency); // 시스템 클록을 얻어옴

if( !frequency.QuadPart )

timeinmicroseconds = -1;

else

timeinmicroseconds // 1000이면 밀리세컨, 1000*1000이면 마이크로초 1000*1000*1000이면 나노초~

= (nEndClk.QuadPart-nStartClk.QuadPart)*1000*1000/frequency.QuadPart;

////////////////////////////////////////////////////////

작업표시줄 윈도우 핸들

FindWindow("Shell_traywnd", "")

////////////////////////////////////////////////////////

내 네트워크 정보

netstat.exe

/////////////////////////////////////////////////////

곡선 사각형

RoundRect()

////////////////////////////////////////////////////

점이 사각형 안에 있는지 판별

PtInRect()

////////////////////////////////////////////////////

투명윈도우

SetWindowLong(this->m_hWnd, GWL_EXSTYLE, GetWindowLong( this->m_hWnd, GWL_EXSTYLE ) | WS_EX_LAYERED);

SetLayeredWindowAttributes(NULL, TransLevelToNum(nLevel), LWA_ALPHA);

+ Recent posts