VC + + 두 프로그램 에서 문자열 등 상수 값 을 전달 하 는 방법: WM 사용COPYDATA 소식 의
메시지 소개: 필요 한 데이터 구조 / 유형: typedef struct tagCOPYDATASTRUCT { ULONG_PTR dwData; DWORD cbData; PVOID lpData;} COPYDATASTRUCT, *PCOPYDATASTRUCT;
구조 체 파라미터 설명: dwData(ULONG) 표지 등 으로 사용 할 수 있 는 수 치 를 저장 합 니 다. lpData(void*) 보 낼 데이터 의 시작 주소 (NULL 일 수 있 음) cbData(DWORD) 보 낼 데이터 의 길이 메시지 의 인자: hWnd: 데 이 터 를 받 는 창의 핸들 wParam: 이 데 이 터 를 전송 하 는 창 핸들 (NULL 도 상관 없습니다) lParam: COPYDATASTRUCT 형식 변수의 주소 사용 예시:
COPYDATASTRUCT cds;
char msg[] = " ";
cds.dwData = 0;
cds.lpData = msg;
cds.cbData = strlen(msg)+1; // '\0' , , ANSI
SendMessage(FindWindow("nbsg_class", NULL), WM_COPYDATA, 0, (LPARAM)&cds);
메모: CString 형식의 문자열 을 보 내 려 면 이렇게 할 수 있 습 니 다.
CString str = _T(" ");
char* msg = str.GetBuffer(0);
이렇게 하면 char * 타 입 으로 바 뀔 수 있 습 니 다.
수신 단 이 이 소식 에 대한 처리 가능성:
BOOL CxuanzeDlg::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct)
{
// TODO: /
COPYDATASTRUCT* pCDS = (COPYDATASTRUCT*)pCopyDataStruct;
CString str((char*)pCDS->lpData);
str.Format(_T("%s :%d"), str, pCDS->dwData);
AfxMessageBox(str);
return CDialogEx::OnCopyData(pWnd, pCopyDataStruct);
}
설명: WM 사용COPYDATA 메시지 의 전달 데 이 터 는 전달 할 데 이 터 를 공유 메모리 에 복사 한 후 주 소 를 다른 프로 세 스에 전달 하 는 것 입 니 다.
이 메시지 에서 dwData 라 는 표지 가 있 습 니 다. 이 데 이 터 는 ULONG 입 니 다.PTR 형식 으로 기호 가 없 는 긴 정수 로 데이터 의 표지 로 사용 할 수 있 습 니 다. 이렇게 서로 다른 표지 로 전 달 된 데 이 터 를 서로 다른 용도 로 사용 할 수 있 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.