Windows API에서 메시지 (WM_USER)를 사용해서 다른 프로세스에게 문자열은 못넘기나요?
렁찬
첫번째 창에서 메시지를 보내면 두번째 창에서 정보를 받는데요.
숫자값은 wParam으로 잘 받는데 문자열은 lParam에서 받질 못하네요.
혹시 WM_USER IPC 방식으로는 문자열 보내는건 불가능한건가요?메시지를 보내는 창의 코드
LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
HWND h;
static TCHAR str[100];
static int i;
switch(iMessage) {
case WM_CREATE:
CreateWindow(TEXT(button),TEXT(USER+1),WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,10,10,80,20,hWnd,(HMENU)1,g_hInst,NULL);
CreateWindow(TEXT(button),TEXT(USER+2),WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,110,10,80,20,hWnd,(HMENU)2,g_hInst,NULL);
return 0;
case WM_COMMAND:
switch(LOWORD(wParam)){
case 1:
h=FindWindow(LSecond Window,NULL);
if(h!=0){
}else{
MessageBox(hWnd,L두번째 윈도우가\n없당게.,L알림,MB_OK);
return 0;
}
SendMessage(h,WM_USER+1,1500,LHELLO WORLD);
break;
case 2:
h=FindWindow(LSecond Window,NULL);
if(h!=0){
}else{
MessageBox(hWnd,L두번째 윈도우가\n없당게.,L알림,MB_OK);
return 0;
}
SendMessage(h,WM_USER+2,35500,LSecond);
break;
}
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
case WM_PAINT:
hdc = BeginPaint(hWnd,&ps);
EndPaint(hWnd,&ps);
return 0;
}
return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}
메시지를 받는 창의 코드
LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
int i;
TCHAR s[25];
static TCHAR str[45];
switch(iMessage) {
case WM_CREATE:
return 0;
case WM_USER+1:
i=(DWORD)wParam;
strcat(s,lParam);
wsprintf(str,LwParam의 값은: %d lParam의 값은: %s,i,s);
InvalidateRect(hWnd,NULL,TRUE);
return 0;
case WM_USER+2:
i=(DWORD)wParam;
strcat(s,lParam);
p; wsprintf(str,LwParam의 값은: %d lParam의 값은: %s,i,s);
InvalidateRect(hWnd,NULL,TRUE);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
case WM_PAINT:
hdc = BeginPaint(hWnd,&ps);
TextOut(hdc,0,0,str,lstrlen(str));
EndPaint(hWnd,&ps);
return 0;
}
return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}