9.13(목) 실습-2

from Study/API 2007/10/10 11:31 view 18989
// 1. 각종 FindWindow 활용
int
main()
{
    HWND h = FindWindow( 0, "계산기" );    // 열려 있는 메뉴의 핸들을 얻는다.

    PostMessage( h, WM_QUIT, 0, 0 );

    //DestroyWindow( h ); // 안된다.이유는 이론편에..
}

int main()
{
    while( 1 )
    {
        Sleep(3000);

        HWND h = FindWindow( "#32768", 0 );    // 열려 있는 메뉴의 핸들을 얻는다.
      ShowWindow( h, SW_HIDE );
    }
}

int main()
{
    //HWND hwnd = FindWindow(
    //    0,            // 윈도우 클래스 이름
    //    "계산기" );    // 캡션바 내용

    // progman 은 바탕화면 이다.
    HWND hwnd = FindWindow( "Shell_TrayWnd", 0 ); // taskbar의 핸들을 얻음.
       
    if ( hwnd == 0 )
    {
        cout << "계산기를 먼저 실행하세요." << endl;
        return 0;
    }
    // -----------------------------
    HRGN h = CreateEllipticRgn( 0, 0, 300, 300 );
    SetWindowRgn( hwnd, h, TRUE );

    //SetMenu( hwnd, 0 );

    //if( IsWindowVisible( hwnd ) )
    //    ShowWindow( hwnd, SW_HIDE );
    //else
    //    ShowWindow( hwnd, SW_SHOW );
}

// 2. DLL 만들어보기


// Dll 소스
 //a.c

#include <stdio.h>    // 이 안에 wchar_t 가 typedef되어 있다.
#define DLLSOURCE
#include "a.h"    //    DLL 헤더

void PutStringA( const char* s )
{
    printf(s);
}
void PutStringW( const wchar_t* s )
{
    wprintf(s);
}
 //a.h

// DLL 내의 모든 함수의 선언을 제공한다.

// 이헤더는 DLL의 제작자가 사용할 때는 각 함수가 export 되도록 한다.
//  DLL 사용자가 사용할 때는 import  되도록 한다.

// 결국 MFC에서 등장하는 AFX_EXT_CLASS의 개념도  아래 DLLAPI의 개념과 완전 동일하다.

 

#ifdef DLLSOURCE

#define DLLAPI __declspec(dllexport)

#else

#define DLLAPI __declspec(dllimport)

#endif

 

#ifdef __cplusplus

extern "C"{

#endif

                  DLLAPI void PutStringA( const char* s );

                  DLLAPI void PutStringW( const wchar_t* s );

#ifdef __cplusplus

}

#endif

 

// UNICODE 매크로에따라서함수를결정할수있는매크로를제공한다.

#ifdef UNICODE

#define PutString    PutStringW

 

#else

#define PutString    PutStringA

#endif

// 1. C/C++ 을모두지원하기위해__cplusplus 사용

// 2. export/import 를위한C++ 지시어를알아야한다.

////////////////////////////////////////////////////////////////////////////////
// DLL을 사용하는 방법

#include "a.h"                                // 1. 헤더 include
#pragma comment(lib, "MyDll.lib")    // 2. lib를 링커에게 알려준다.

int main()
{
    PutStringA("hello");
    PutStringW(L"World\n");
}


Tag | ,

Trackback Address :: 이 글에는 트랙백을 보낼 수 없습니다