vc 상용 지식 분류

1. 모드 대화상자는 어떻게 최대화합니까?
A: 대화 상자의 OnInitDialog에서 호출:
ShowWindow(SW_MAXIMIZE);		// 

MSDN:
OnInitDialog, OnOK, and OnCancel are virtual functions. To override them, you declare an overriding function in your derived dialog class using the Properties window.
Member function
Message it responds to
Purpose of the override
OnInitDialog
WM_INITDIALOG
Initialize the dialog box's controls.
 
2、static 글꼴 크기를 어떻게 설정합니까?
답: OnInitDialog에서 먼저CreateFont, 그리고SetFont:
BOOL CLoginDlg::OnInitDialog()
{
	CDialog::OnInitDialog();
	// TODO:  Add extra initialization here
	CFont font;
	font.CreateFont(24,   0,   0,   0,   0,   0,   0,   0,   1,   0,   0,   0,   0,   _T( "  "));	//24 
	GetDlgItem(IDC_STATIC_NAME)->SetFont(&font);
	GetDlgItem(IDC_STATIC_SEX)->SetFont(&font);
	GetDlgItem(IDC_STATIC_GROUP)->SetFont(&font);
	return TRUE;  // return TRUE unless you set the focus to a control
	// EXCEPTION: OCX Property Pages should return FALSE
}

수정: 상술한 문제가 있습니다. 화면을 한 번 새로 고치면 글꼴이 기본값으로 돌아갑니다. 글꼴 변수 font가 전역 변수나 구성원 변수로 정의되어야 하기 때문입니다.3. 어떻게 탭 순서를 설정합니까?
A: 대화 상자에서 Ctrl + D
4, 어떻게 메시지 정의 함수를 삭제합니까?
대답:
우선 헤더 파일에서 메시지 함수 정의를 삭제합니다
       afx_msg BOOL OnEraseBkgnd(CDC* pDC);
그 다음에 원본 파일에서 메시지 함수 응답을 삭제합니다
BOOL CMatchDlg::OnEraseBkgnd(CDC* pDC)
{
    //TODO: Add your message handler code here and/or call default
     return CDialog::OnEraseBkgnd(pDC);
}
마지막으로 BEGIN에서MESSAGE_MAP 및 ENDMESSAGE_MAP에서 메시지 응답 매크로를 제거하려면:
ON_WM_ERASEBKGND()
 
5. 대화상자 배경 그림은 어떻게 대화상자 크기에 적응합니까?대화상자가 커지면 그림이 자동으로 확대된다는 것이다.대화상자가 시간으로 바뀌면 그림이 자동으로 축소됩니다.
A:StretchBlt 함수 사용
Msdn의 StretchBlt 설명:
Copies a bitmap from a source rectangle into a destination rectangle, stretching or compressing the bitmap if necessary to fit the dimensions of the destination rectangle.(목표 직사각형 크기에 맞게 그림을 스트레칭하거나 압축)
OnEraseBkgnd 함수에서 StretchBlt 함수를 호출합니다.
 
6. 입방근 구하기
	float x;
	x=10.1;
	long y;
	y=3;
	long z;
	z=x*y;
	float m=pow(z,1.0/3.0);  //pow long int ,float 

 
//pow 함수의 첫 번째 인자는long 또는 int형이고float형 컴파일 오류
1>d:\backup\내 문서\visual 스튜디오 2008\projects\hjh\hjh\hjhdlg.cpp(163) : error C2666: 'pow' : 6 overloads have similar conversions 1>        c:\program files\microsoft visual studio 9.0\vc\include\math.h(575): could be 'long double pow(long double,int)' 1>        c:\program files\microsoft visual studio 9.0\vc\include\math.h(573): or       'long double pow(long double,long double)' 1>        c:\program files\microsoft visual studio 9.0\vc\include\math.h(527): or       'float pow(float,int)' 1>        c:\program files\microsoft visual studio 9.0\vc\include\math.h(525): or       'float pow(float,float)' 1>        c:\program files\microsoft visual studio 9.0\vc\include\math.h(489): or       'double pow(double,int)' 1>        c:\program files\microsoft visual studio 9.0\vc\include\math.h(123): or       'double pow(double,double)'
why???
또한 두 번째 매개변수는 소수점 형식으로 써야 합니다. 그렇지 않으면 오류가 발생합니다.
1>d:\backup\내 문서\visual 스튜디오 2008\projects\hjh\hjh\hjhdlg.cpp(163) : error C2668: 'pow' : ambiguous call to overloaded function 1>        c:\program files\microsoft visual studio 9.0\vc\include\math.h(575): could be 'long double pow(long double,int)' 1>        c:\program files\microsoft visual studio 9.0\vc\include\math.h(527): or       'float pow(float,int)' 1>        c:\program files\microsoft visual studio 9.0\vc\include\math.h(489): or       'double pow(double,int)' 1>        while trying to match the argument list '(long, int)'
또한 두 번째 매개변수는 O보다 커야 합니다. 그렇지 않으면 계산 결과가 -1#입니다.IND00

좋은 웹페이지 즐겨찾기