0

私は、WM_CLOSE メッセージ プロシージャが 0 を返すように設定された、タイトル バーのないウィンドウを作成するプログラムに取り組んでいます。

LRESULT CALLBACK WindowEventProc(HWND hWindow, UINT uMsg,WPARAM wParam, LPARAM lParam)
{
    PAINTSTRUCT Paint;
    HDC hdc;
    switch (uMsg)
    {
        case WM_DESTOY:
            PostQuitMessage (0);
            return 0;
        case WM_CLOSE:
            return 0;
        case WM_PAINT:
            hdc=BeginPaint(hWindow,&Paint);
                //here should go the code for painting
            EndPaint(hWindow, &Paint);
            return 0L; 
    }
    return DefWindowProc(hWindow, uMsg, wParam, lParam);
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int nCmdShow)
{
    GetDesktopSize(h,w);
    WNDCLASSEX KlasaOkna;
    ZeroMemory (&KlasaOkna, sizeof(WNDCLASSEX));
    KlasaOkna.cbSize = sizeof(WNDCLASSEX);
    KlasaOkna.hInstance = hInstance;
    KlasaOkna.lpfnWndProc = WindowEventProc;
    KlasaOkna.lpszClassName = Name.c_str();
    KlasaOkna.hCursor = LoadCursor(NULL, IDC_ARROW);
    KlasaOkna.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    KlasaOkna.hbrBackground = (HBRUSH) COLOR_WINDOW;
    RegisterClassEx (&KlasaOkna);

    HWND hwn;
    hwn = CreateWindowEx(NULL,Name.c_str(),"",WS_MYSET,0,0,w,h,NULL,NULL,hInstance,NULL);

    SetWindowPos(hwn,HWND_TOPMOST,0,0,w,h,NULL);
    SetWindowLong(hwn, GWL_STYLE, 0);

    ShowWindow (hwn, SW_SHOWMAXIMIZED);
    MSG msg;
    while (GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage (&msg);
        DispatchMessage (&msg);
    }
}

これは意図したとおりに機能しますが、ここで最も難しい問題が発生します。ウィンドウのクライアント領域で Web サイトを開くようにしたいのです。サイトの機能を維持するための最善の方法は、ブラウザーからサイトを開くことだと思います。インターネット ブラウザをウィンドウに描画する方法は確かにありますが、思いつきませんし、MSDN でも見つかりませんでした。誰もそれを行う方法を知っていますか?

4

1 に答える 1

0

確かに可能ですが、簡単ではありません。WebKit を埋め込みます。

Microsoft のソリューションは、Trident を ActiveX コンポーネントとして埋め込むことです。

于 2013-06-28T00:18:12.673 に答える