0

これは重複しているように見えますが、最初に聞いてください。これは、デバッグ側の詳細です。hereの方法を使用して、ウィンドウの境界線を削除しようとしています。

これらの機能が機能しなくなる原因は何ですか? を使用してウィンドウを非表示にしShowWindow(Handle, SW_HIDE)ても機能しません。多くの関数を持つ独自の Window クラスを作成したので、ここにコード全体を貼り付けたくありません。

ウィンドウの初期化関数は次のとおりです。

HRESULT SampleWindow::InitializeSimple(SampleWindow* win)
{
    HRESULT         hr;
    HWND            hWnd;
    SampleWindow*   sampleWin;

    sampleWin = new SampleWindow();

    aMWindowProps->Center();
    hWnd = CreateWindowEx(
        NULL,
        aMWindowProps->aWindowClass,
        aMWindowProps->aWindowTitle,
        WS_OVERLAPPEDWINDOW,
        aMWindowProps->aRealLeft,
        aMWindowProps->aRealTop,
        aMWindowProps->GetRelativePosWidth(),
        aMWindowProps->GetRelativePosHeight(),
        HWND_DESKTOP,
        NULL,
        *aMWindowProps->aHInstance,
        sampleWin);

    aMWindowProps->aHwnd = &hWnd;

    hr = hWnd ? S_OK : E_FAIL;

    win->aHwnd = &hWnd;
    //ShowWindow(hWnd, SW_SHOWNORMAL);

    return hr;
}

WindowPropsご覧のとおり、作成中のウィンドウに関するさまざまな情報が含まれています。HWNDクラスには、ウィンドウ ハンドラーを指すポインター変数もあります。

メインで試したことがいくつかあります。ここで、sw2 はウィンドウ クラスへのポインターです。

    ShowWindow(*sw2->aHwnd, SW_SHOW);
    //ShowWindow(*sw2->aHwnd, nCmdShow);
    LONG lStyle = GetWindowLong(*sw2->aHwnd, GWL_STYLE);
    lStyle &= WS_POPUP;
    //lStyle &= ~(WS_CAPTION | WS_THICKFRAME | WS_MINIMIZE | WS_MAXIMIZE | WS_SYSMENU);
    SetWindowLong(*sw2->aHwnd, GWL_STYLE, lStyle);
    //ShowWindow(*sw2->aHwnd, SW_MINIMIZE);
    //ShowWindow(*sw2->aHwnd, SW_HIDE);
    //ShowWindow(*sw2->aHwnd, SW_HIDE);
    //SetWindowLong(*sw2->aHwnd, GWL_STYLE, GetWindowLong(*sw2->aHwnd, GWL_STYLE) && ~ WS_BORDER && ~ WS_SIZEBOX && ~ WS_DLGFRAME);
    SetWindowPos(*sw2->aHwnd, HWND_TOP, sw2->aMWindowProps->aRealLeft, sw2->aMWindowProps->aRealTop, sw2->aMWindowProps->aRealWidth, sw2->aMWindowProps->aRealHeight, SWP_FRAMECHANGED);
    //LONG lExStyle = GetWindowLong(*sw2->aHwnd, GWL_EXSTYLE);
    //lExStyle &= ~(WS_EX_DLGMODALFRAME | WS_EX_CLIENTEDGE | WS_EX_STATICEDGE);
    //SetWindowLong(*sw2->aHwnd, GWL_EXSTYLE, lExStyle);
    //SetWindowPos(*sw2->aHwnd, NULL, 0, 0, 0, 0, SWP_FRAMECHANGED | SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_NOOWNERZORDER);

コードをデバッグする場所についての提案が欲しいです。はるかに単純なウィンドウ プロジェクト (Microsoft のサンプル プロジェクト) でテストしたので、関数が機能することはわかっています。

4

1 に答える 1