コールバック関数をクラスのメンバにした時のSetWindowTextのエラーについて

[戻る]
tm 2005/09/15(木) 13:04:41
windowsXP VC++6.0 SDKで勉強中なのですが、コールバック関数をクラスのメンバとして
からウィンドウプロシージャから配置したボタンのキャプションをSetWindowTextを使っ
て変えようとしたら、下のようなエラーが出ました。ちなみにクラスのメンバにする前
はエラーが出ずに問題なくコンパイルビルドできました。どうしたらエラーなくなるの
かわからないので教えてください。

『error C2664: 'SetWindowTextA' : 1 番目の引数を 'struct HWND__' から 'struct 
HWND__ *' に変換できません。 (新しい機能 ; ヘルプを参照)
この変換を実行可能なユーザー定義変換演算子がないか、または演算子を呼び出せませ
ん。』



//クラス唯一の静的ウィンドウプロシージャ
LRESULT Ban::WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    Ban *pTargetWnd = (Ban*)GetProp(hwnd, PROP_NAME);
    if(pTargetWnd == NULL)
    {
        return DefWindowProc(hwnd, msg, wParam, lParam);    
    }
    //ウィンドウプロシージャ本体を呼び出す
    return pTargetWnd->WindowProc(hwnd, msg, wParam, lParam);
}
//オーバーロード可能なウィンドウプロシージャ
LRESULT Ban::WindowProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp)
{
    int num =0;
    static HWND hBtn;
    static RECT rect;
    static unsigned short int x = 0 , y = 0;
    switch(msg){
    case WM_CREATE:
        printButton(hwnd, hInst);
         MessageBox(hwnd , TEXT("ID_BUTTON") , TEXT("Kitty") , 
MB_OK);
         break;

    case WM_COMMAND:
        switch(LOWORD(wp)) {
        case 0:
            SetWindowText(hBtn[0], "×"); //エラー部分
            break;
        case 1:
            SetWindowText(hBtn[1], "□"); //エラー部分
            break;
        }
        break;

    case WM_DESTROY:
        PostQuitMessage(0);
        return 0;
    }
    return DefWindowProc(hwnd , msg , wp , lp);
}

PATIO 2005/09/15(木) 13:08:20
パンチミスかな?

static HWND hBtn;
で

SetWindowText(hBtn[0], "×"); //エラー部分
SetWindowText(hBtn[1], "□"); //エラー部分

というのは駄目なんじゃ。

古いスレッドには追加発言できません。