2014-02-19 30 views
-5

我只想知道如何在C/C++ GUI程序中實現一個void函數(例如返回一個字符串)並在窗口中顯示輸出。在C/C++ Windows API中使用Void函數

你會把它放在WndProc函數或WinMain函數下的WM_CREATE情況下嗎?或者更復雜一些,你必須將命令提示輸出重定向到窗口?

編輯: 所以,我,例如...

void function() { 
    cout << "Hello"; 
} 

,然後我想在一個GUI實現這個...

LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) 
{ 
    switch(msg) 
    { 
     case WM_CLOSE: 
      DestroyWindow(hwnd); 
      break; 
     case WM_DESTROY: 
      PostQuitMessage(0); 
      break; 
     default: 
      return DefWindowProc(hwnd, msg, wParam, lParam); 
    } 
    return 0; 
} 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, 
LPSTR lpCmdLine, int nCmdShow) 
{ 
    hwnd = CreateWindowEx(
    WS_EX_CLIENTEDGE, 
    g_szClassName, 
    "The title of my window", 
    WS_OVERLAPPEDWINDOW, 
    CW_USEDEFAULT, CW_USEDEFAULT, 240, 120, 
    NULL, NULL, hInstance, NULL); 

    // Implement function somewhere here? 

    ShowWindow(hwnd, nCmdShow); 
    UpdateWindow(hwnd); 
} 
+3

我不知道你在問什麼....也許一個代碼示例將幫助? –

+0

'void' _',例如**返回**一個字符串'_聽起來有點矛盾,因爲我的理解。你的意思是_reference_參數嗎? –

+0

你並沒有真正解釋你的問題是什麼。你對void函數感興趣嗎,WM_CREATE,WndProc還是什麼? –

回答

0

我不認爲你需要去低級別的WndProc

實現通常的多重回報功能最基本的方法是通過引用傳遞,例如

void someFunction(string* aS) 
{ //do something 
    aS = someString;   
} 

應該impemented像這樣

string someString; 

someFunction(&someString); 

ShowMessage(someString);