2015-06-28 66 views
0

我正在尋找一種將windowLink中的DXLinked窗口放置爲子窗口的方法。這將允許在輸入到DX方法之前對菜單/表單控件進行外部管理。C++:混合Directx9和默認窗口

到目前爲止,我試圖創建兩個WNDCLASSEX和兩個HWND類型,並在主循環中運行了兩個windowprocs。這不幸似乎不起作用。

一個我希望完成的屏幕截圖示例。 http://clip2net.com/s/3jXUG2l - 一個衆所周知的用於對象的Lua和C++代碼附件的修改工具。

感謝任何反饋。

我目前使用的原型相關代碼:

#include <windows.h> 
#include <windowsx.h> 
#include <d3d9.h> 


#pragma comment (lib, "d3d9.lib") 


LPDIRECT3D9 d3d;  
LPDIRECT3DDEVICE9 d3ddev; 
LPDIRECT3DVERTEXBUFFER9 v_buffer = NULL;  


void initD3D(HWND hWnd); 
void render_frame(void); 
void cleanD3D(void);  
void init_graphics(void); // 3D declarations 

struct CUSTOMVERTEX { FLOAT X, Y, Z, RHW; DWORD COLOR; }; 
#define CUSTOMFVF (D3DFVF_XYZRHW | D3DFVF_DIFFUSE) 


LRESULT CALLBACK WindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM  lParam); 

//Main 
int WINAPI WinMain(HINSTANCE hInstance, 
HINSTANCE hPrevInstance, 
LPSTR lpCmdLine, 
int nCmdShow) 
{ 
HWND hWnd; 
WNDCLASSEX wc; 

ZeroMemory(&wc, sizeof(WNDCLASSEX)); 

wc.cbSize = sizeof(WNDCLASSEX); 
wc.style = CS_HREDRAW | CS_VREDRAW; 
wc.lpfnWndProc = WindowProc; 
wc.hInstance = hInstance; 
wc.hCursor = LoadCursor(NULL, IDC_ARROW); 
wc.hbrBackground = (HBRUSH)COLOR_WINDOW; 
wc.lpszClassName = L"WindowClass"; 

RegisterClassEx(&wc); 

hWnd = CreateWindowEx(NULL, 
    L"WindowClass", 
    L"DirectX Test", 
    WS_OVERLAPPEDWINDOW, 
    300, 300, 
    800, 600, 
    NULL, 
    NULL, 
    hInstance, 
    NULL); 

ShowWindow(hWnd, nCmdShow); 

initD3D(hWnd); 

MSG msg; 

while (TRUE) 
{ 
    while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) 
    { 
     TranslateMessage(&msg); 
     DispatchMessage(&msg); 
    } 

    if (msg.message == WM_QUIT) 
     break; 

    render_frame(); 
} 

// clean up DirectX and COM 
cleanD3D(); 

return msg.wParam; 
} 


// t 
LRESULT CALLBACK WindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) 
{ 
switch (message) 
{ 
case WM_DESTROY: 
{ 
    PostQuitMessage(0); 
    return 0; 
} break; 
} 

return DefWindowProc(hWnd, message, wParam, lParam); 
} 
+1

你爲什麼不在堆棧溢出問? http://meta.stackexchange.com/a/129632/165773 – gnat

+0

由於這是一個編程問題) –

+0

你檢查了[元指導](http://meta.stackexchange.com/a/129632/165773)中提到的事先評論? 「如果你的代碼或你的IDE不起作用,請問...」等 – gnat

回答

0

很抱歉的混亂,我做了一些不正確的假設。 然而,欣賞反饋。