VC 리셋 함수의 사용에 대한 상세한 설명
리셋 함수의 매개 변수 형식은 리셋 함수의 호출자 (일반적으로 Windows) 에 의해 정의되며, 리셋 함수의 실현자는 반드시 이런 형식을 따라야 한다.Windows 프로그램은 이벤트 구동 모델을 바탕으로 하기 때문에 리셋 함수라는 메커니즘을 반드시 사용해야 한다.
콜백 함수를 철저히 이해하려면 SDK Samples를 많이 보십시오.한편, MFC의 메시지 매핑 메커니즘은 창 메시지 응답의 리셋 함수를 숨겼다. 이것은 C++의 프로그래밍 사상에 부합된다. 리셋 함수는 결국 전역 함수로서 클래스에서 실현할 수 없다. 메시지 매핑 메커니즘의 목적은 메시지 응답의 코드를 최종적으로 창 클래스(CWnd 클래스의 하위 클래스)에 봉인하는 것이다.
시간이 있으면 MESSAGEMAP 매크로, 메시지 매핑은 리셋 함수입니다. 단지 이런 리셋 함수의 사용법이 다를 뿐입니다.일반적인 리셋 함수는 주소를 제공해서 어떤 함수에 전달해서 호출하는 것이다.메시지 매핑 함수는 당신이 정의한 함수입니다.MESSAGEMAP 매크로는 주소를 가져와 호출합니다.
리셋 함수는 프로그래머가 현저하게 호출할 수 없는 함수이다.리셋 함수의 주소를 호출자에게 전달함으로써 호출을 실현합니다.리셋을 실현하려면 먼저 함수 포인터를 정의해야 한다.비록 정의된 문법은 약간 불가사의하지만, 함수 성명의 일반적인 방법을 잘 알면, 함수 지침의 성명과 함수 성명이 매우 유사하다는 것을 발견할 수 있다.
CODE:
#include "stdafx.h"
#include "stdio.h"
void (*fun1)();
void A()
{
printf("fun1/n");
}
void caller(void(*fun1)())
{
printf("fun1 start/n");
fun1();
printf("fun1 end/n");
}
bool func2(int * i)
{
printf("From func2() = %d, Hello World!/n", (*i)++);
return true;
}
void caller2(bool func2(int *),int *j)
{
func2(j);
}
int main(int argc, char* argv[])
{
printf("From main(), Hello World!/n");
printf("/n");
caller(A);
int i = 0;
for (int j = 0; j < 10; j++)
{
caller2(func2, &i); //* */
}
getchar();
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.