質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Win32 API

Win32 APIはMicrosoft Windowsの32bitプロセッサのOSで動作するAPIです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

1035閲覧

win32のウィンドウが上のバー(ウィンドウ名と3つのボタン)しか出ない

Negligible-n

総合スコア18

Win32 API

Win32 APIはMicrosoft Windowsの32bitプロセッサのOSで動作するAPIです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2019/06/14 13:51

編集2019/06/14 14:05

ひとつ前の質問のを進めていたところ https://youtu.be/Il6jySpR3VI の31:09であったり、46:27(ここまでは打ちました。)であったり、ウィンドウが、![イメージ説明](91d7896596e5f6be4f16113111ea60b5.jpeg)これしか出ません。どうしてなのでしょうか。。。
コードも載せておきます。長いですすみません。

WinMain.cpp

c++

1#include<windows.h> 2#include"D3DApp.h" 3 4class testApp :public d3DApp { 5public: 6 //Constructor 7 testApp(HINSTANCE hInstance); 8 //Destructor 9 ~testApp(); 10 11 //Methods 12 13 bool init() override; 14 void update(float dt) override; 15 void render() override; 16}; 17 18testApp::testApp(HINSTANCE hInstance) :d3DApp(hInstance) { 19 20} 21 22testApp::~testApp() { 23 24} 25 26bool testApp::init() { 27 if (!d3DApp::init()) { 28 return false; 29 } 30 31 return true; 32} 33 34void testApp::update(float dt) { 35 36} 37 38void testApp::render() { 39 m_pDevice3D->Clear(0, 0, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(0, 255, 0), 1.0f, 0); 40 41 m_pDevice3D->Present(0, 0, 0, 0); 42} 43 44int WINAPI WinMain( 45 HINSTANCE hInstance, 46 HINSTANCE hPrevInstance, 47 LPSTR lpCmdLine, 48 int nCmdShow) { 49 50 testApp* tApp = new testApp(hInstance); 51 52 if (!tApp->init()) { 53 return 1; 54 } 55 56 return tApp->run(); 57 58}

D3DApp.h

c++

1#include<windows.h> 2#include<d3d9.h> 3#include<d3dx9.h> 4 5class d3DApp { 6public: 7 //Constructor 8 d3DApp(HINSTANCE hInstance); 9 10 //destructor 11 virtual ~d3DApp(); 12 13 //Main application loop 14 int run(); 15 16 //Framework methods 17 virtual bool init(); 18 virtual void update(float dt) = 0; 19 virtual void render() = 0; 20 LRESULT msgProc(HWND hwnd, UINT msg, WPARAM aParam, LPARAM lParam); 21 22protected: 23 //Attributes 24 HWND m_hAppWindow; 25 HINSTANCE m_hAppInstance; 26 unsigned int m_uiClientWidth; 27 unsigned int m_uiClientHeight; 28 LPCWSTR m_sAppTitle; 29 DWORD m_WindowStyle; 30 31 //DirectX Attributes 32 IDirect3D9* m_pDirect3D; 33 IDirect3DDevice9* m_pDevice3D; 34 D3DPRESENT_PARAMETERS m_d3dpp; 35 36 37 //methods 38 39 //Initialize the app window 40 bool initWindow(); 41 42 //Initialize Direct3D 43 bool initDirect3D(); 44};

D3DApp.cpp

c++

1#include"D3DApp.h" 2 3namespace { 4 //Create a global pointer to d3DApp 5 d3DApp* g_pd3DApp; 6} 7 8LRESULT CALLBACK MainWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { 9 //Foward the messages 10 return g_pd3DApp->msgProc(hwnd, msg, wParam, lParam); 11} 12 13d3DApp::d3DApp(HINSTANCE hInstance) { 14 m_hAppInstance = hInstance; 15 m_hAppWindow = NULL; 16 m_uiClientWidth = 800; 17 m_uiClientHeight = 600; 18 m_sAppTitle = (LPCWSTR)TEXT("DIRECTX9 App"); 19 m_WindowStyle = WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX; 20 g_pd3DApp = this; 21} 22 23d3DApp::~d3DApp() { 24 //Release object from memory 25} 26 27int d3DApp::run() { 28 //Main message loop 29 MSG msg = { 0 }; 30 while (WM_QUIT != msg.message) { 31 if (PeekMessage(&msg, NULL, NULL, NULL, PM_REMOVE)) { 32 TranslateMessage(&msg); 33 DispatchMessage(&msg); 34 } else { 35 //Update 36 update(0.0f); 37 //Render 38 render(); 39 } 40 } 41 42 return static_cast<int>(msg.wParam); 43 44} 45 46bool d3DApp::init() { 47 //Check window creation 48 if (!initWindow()) { 49 return false; 50 } 51 52 //Check Direct3D initilization 53 if (!initDirect3D()) { 54 return false; 55 } 56 57 return true; 58} 59 60bool d3DApp::initWindow() { 61 //Create WNDCLASS 62 WNDCLASSEX wcex; 63 static LPCWSTR classNameLPCWSTR = (LPCWSTR)TEXT("D3DAPPWNDCLASS"); 64 ZeroMemory(&wcex, sizeof(WNDCLASSEX)); 65 wcex.cbClsExtra = 0; 66 wcex.cbWndExtra = 0; 67 wcex.cbSize = sizeof(WNDCLASSEX); 68 wcex.style = CS_HREDRAW | CS_VREDRAW; 69 wcex.hInstance = m_hAppInstance; 70 wcex.lpfnWndProc = MainWndProc; 71 wcex.hIcon = LoadIcon(NULL, IDI_APPLICATION); 72 wcex.hCursor = LoadCursor(NULL, IDC_ARROW); 73 wcex.hbrBackground = (HBRUSH)GetStockObject(NULL_BRUSH); 74 wcex.lpszMenuName = NULL; 75 wcex.lpszClassName = classNameLPCWSTR; 76 wcex.hIconSm = LoadIcon(NULL, IDI_APPLICATION); 77 78 //Register that class 79 if (!RegisterClassEx(&wcex)) { 80 MessageBox(NULL, (LPCWSTR)TEXT("Failed to register window class"), NULL, NULL); 81 return false; 82 } 83 84 //Cache requested width, height 85 RECT r = { 0,0,m_uiClientWidth,m_uiClientHeight }; 86 AdjustWindowRect(&r, m_WindowStyle, false); 87 int width = r.right - r.left; 88 int height = r.top - r.bottom; 89 90 //Create the window 91 m_hAppWindow = CreateWindow( 92 (LPCWSTR)TEXT("D3DAPPWNDCLASS"), 93 m_sAppTitle, 94 m_WindowStyle, 95 GetSystemMetrics(SM_CXSCREEN) / 2 - width / 2, 96 GetSystemMetrics(SM_CYSCREEN) / 2 - height / 2, 97 width, 98 height, 99 NULL, 100 NULL, 101 m_hAppInstance, 102 NULL); 103 104 //Check if window was created 105 if (!m_hAppWindow) { 106 MessageBox(NULL, (LPCWSTR)TEXT("Failed to create window"), NULL, NULL); 107 return false; 108 } 109 110 //Show the window 111 ShowWindow(m_hAppWindow, SW_SHOW); 112 113 return true; 114} 115 116bool d3DApp::initDirect3D() { 117 118 //Get interface to Direct3D 119 m_pDirect3D = Direct3DCreate9(D3D_SDK_VERSION); 120 if (!m_pDirect3D) { 121 MessageBox(NULL, (LPCWSTR)TEXT("Failed to create direct3D com object"), NULL, NULL); 122 return false; 123 } 124 125 //Check divice capabilities 126 D3DCAPS9 m_d3dDevCaps; 127 m_pDirect3D->GetDeviceCaps(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, &m_d3dDevCaps); 128 129 int vp; 130 if (m_d3dDevCaps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT) { 131 vp = D3DCREATE_HARDWARE_VERTEXPROCESSING; 132 } 133 else { 134 vp = D3DCREATE_SOFTWARE_VERTEXPROCESSING; 135 } 136 137 //Fill out the present parameters 138 ZeroMemory(&m_d3dpp, sizeof(D3DPRESENT_PARAMETERS)); 139 m_d3dpp.BackBufferWidth = m_uiClientWidth; 140 m_d3dpp.BackBufferHeight = m_uiClientHeight; 141 m_d3dpp.Windowed = true; 142 m_d3dpp.BackBufferCount = 1; 143 m_d3dpp.BackBufferFormat = D3DFMT_A8R8G8B8; 144 m_d3dpp.MultiSampleType = D3DMULTISAMPLE_NONE; 145 m_d3dpp.MultiSampleQuality = 0; 146 m_d3dpp.hDeviceWindow = m_hAppWindow; 147 m_d3dpp.Flags = 0; 148 m_d3dpp.EnableAutoDepthStencil = true; 149 m_d3dpp.AutoDepthStencilFormat = D3DFMT_D24S8; 150 m_d3dpp.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT; 151 m_d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE; 152 m_d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; 153 154 //Create the device 155 m_pDirect3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, m_hAppWindow, vp, &m_d3dpp, &m_pDevice3D); 156 if (!m_pDevice3D) { 157 MessageBox(NULL, (LPCWSTR)TEXT("Failed device creation"), NULL, NULL); 158 return false; 159 } 160 161 162 163 return true; 164} 165 166LRESULT d3DApp::msgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { 167 switch (msg) { 168 case WM_DESTROY: 169 PostQuitMessage(0); 170 return 0; 171 } 172 173 return DefWindowProc(hwnd, msg, wParam, lParam); 174}

まだまだ初心者ですみませんが、よろしくお願いします

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

C++

1 int height = r.top - r.bottom;

これが、こうですね。

C++

1 int height = r.bottom - r.top;

投稿2019/06/14 17:30

atata0319

総合スコア881

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Negligible-n

2019/06/15 04:40

家に帰ったら試してみます!ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問