반응형
// PostMessage.cpp : Defines the entry point for the console application.
//
#include<windows.h>
#include<stdio.h>
#define WM_ADD
WM_APP+100
int main() {
char * FName="B";
HWND hwnd = FindWindow(0, FName);
if(hwnd == 0 ) {
printf("%s를 먼저 실행해 주세요\n",FName);
return 0;
}
//----------------------------------------------
int sum=0;
sum=SendMessage(hwnd, WM_ADD, 10, 20);
printf("전송완료 : %d\n",sum);
return 0;
}
#include<windows.h>
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
HINSTANCE g_hinst; LPCTSTR lpszClass=TEXT("TextOut");
#define WM_ADD WM_APP+100
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrev, LPSTR lpCmdLine, int nShowCmd) {
MSG Message; //1. 위도우 클래스 만들기 (10가지를 다 정확히 입력하지 않으면 화면이 뜨지 않는다.)
WNDCLASS wc; //미리정의된 10개 항목을 채우는 클래스 (WNDCLASSEX 12개 항목 10개 항목에 작은 아이콘, 구조체 크기를 포함한다.)
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hbrBackground = (HBRUSH)GetStockObject( WHITE_BRUSH);
wc.hCursor = LoadCursor ( 0, IDC_CROSS);
wc.hIcon = LoadIcon ( 0, IDI_WINLOGO );
wc.hInstance = hInstance;
wc.lpfnWndProc = WndProc; //<~ 이부분을 자신이 만드는 함수로 바꿔줘야 한다. 메시지 함수등록
wc.lpszClassName= TEXT("First");
wc.lpszMenuName = 0;
wc.style = 0; //2. 윈도우 클래스 등록하기.
RegisterClass( & wc ); // 등록을 하는 함수도 2가지가 있다. RegisterClass와 RegisterClassEx가 있다.
//WNDCLASS로 만들었으면 RegisterClass로 등록하고 WNDCLASSEX로 만들었으면 RegisterClassEx로 등록
//3. 등록된 클래스를 사용해서 윈도우 만들기.
//
typedef long HWND; // 윈도우의 번호를 담을때 사용
HWND hwnd = CreateWindowEx(0 , // 확장 윈도우 스타일
TEXT("First"), // 윈도우 클래스 이름
TEXT("B"), // 창이름
WS_OVERLAPPEDWINDOW, // 기본 Window Styles : & ~ 연산으로 기존스타일 제거하기
// WS_OVERLAPPEDWINDOW & ~WS_MAXIMIZEBOX
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, // X,Y,W,H
0, // 부모 윈도우 핸들( 번호 )
0, // 메뉴 핸들( 번호 )
hInstance, // 인스턴스 핸들
0); // 생성인자.( MDI 만들때 사용 )
//
//CreateWindowEx는 CreateWindow가 가지는 11개에 확장 윈도우 스타일 1가지 인자를 더 가져서 12가지 인자를 가진다.
//4. 윈도우 보여주기
ShowWindow(hwnd, nShowCmd);
while(GetMessage(&Message,0,0,0)) //메시지 큐에 가서 메시지를 꺼내오고 가져온 메시지를 윈도우 클래스에 등록된 메세지 처리함수로 전달한다.
{
TranslateMessage(&Message);
DispatchMessage(&Message);//가져온 메시지를 윈도우 클래스에 등록된 메시지 처리함수로 전달한다.
}
MessageBox(0, "이제 알겠죠?","물음",MB_OKCANCEL);//종료되지 않게 하기 위해
return 0;
} /* 1. 메세지 함수모양 2. 메세지 루프의 모양 3. 종료후 조건(WM_QUIT 이 Q에 들오얼때) */
LRESULT CALLBACK WndProc(HWND hwnd,UINT iMessage,WPARAM wParam,LPARAM lParam) {
HDC hdc;
PAINTSTRUCT ps;
switch(iMessage){
case WM_DESTROY:
PostQuitMessage(0);
return 0 ;
case WM_LBUTTONDOWN:
hdc=GetDC(hwnd);
TextOut(hdc,100,100,TEXT("Beautiful Korea"),15);
ReleaseDC(hwnd,hdc);
return 0;
case WM_PAINT:
hdc=BeginPaint(hwnd,&ps);
TextOut(hdc,100,100,TEXT("Beautiful Korea"),15);
EndPaint(hwnd,&ps);
return 0;
case WM_ADD:
{
char s[256];
wsprintf(s, "WM_ADD도착 : %d %d",wParam,lParam);
MessageBox(0,s,"",MB_OKCANCEL);
return wParam + lParam;
}
} //꺼내온 메시지를 처리하지 않은경우 -> 바드시 아래 함수를 처리한다.
return(DefWindowProc(hwnd,iMessage,wParam,lParam)); }
반응형
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."