0

アプリでバルーンタイプのUIを使用して、特定の状況で特定のアクションを実行する必要があるという情報をユーザーに表示できるようにするためのヒントを作成しようとしていますが、フォーラムで見たいくつかのコードを吸っています。私が見つけたバルーン ヒントの一例は、次のサイトhttp://www.tek-tips.com/viewthread.cfm?qid=1611641にあります。C++ Builder 2009 IDE で作成され、C builder 2010 IDE RS を使用してコンパイルしようとしたと思いますが、バルーン ヒントを取得できませんでした。まず、コンパイルすると、次の行で停止します。
GetClientRect(hWnd, &ti.rect);次に、GetWindowRect に変更しましGetClientRectたヒントは表示されますが、ツールヒントは表示されません。

さらに、リンクを提供したコードを提示しました。

#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
typedef struct{

 unsigned long     cbStruct;
 PWChar     pszTitle;
 PWChar     pszText;
 int         ttiIcon;
   } tagEDITBALLOONTIP;
  tagEDITBALLOONTIP *EDITHINT;


void __fastcall TForm1::ShowBalloonTip(TWinControl *Control,int  Icon,char *Title,char *Text,TColor BackCL,TColor TextCL)
{
    HWND hWndTip;
    TOOLINFO ti;
    HWND hWnd;

    hWnd    = Control->Handle;
    hWndTip = CreateWindow(TOOLTIPS_CLASS, NULL, WS_POPUP | TTS_NOPREFIX | TTS_BALLOON | TTS_ALWAYSTIP, 0, 0, 0, 0, hWnd, 0, HInstance, NULL);
    if( hWndTip )
    {
        SetWindowPos(hWndTip, HWND_TOPMOST, 0, 0, 0, 0,
          SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE);
        ti.cbSize = sizeof(ti);
        ti.uFlags = TTF_CENTERTIP | TTF_TRANSPARENT | TTF_SUBCLASS;
        ti.hwnd = hWnd;
        ti.lpszText = Text;
        GetClientRect(hWnd, &ti.rect); // the only problem is here 
        SendMessage(hWndTip, TTM_SETTIPBKCOLOR, BackCL, 0);
        SendMessage(hWndTip, TTM_SETTIPTEXTCOLOR, TextCL, 0);
        SendMessage(hWndTip, TTM_ADDTOOL, 1, Integer(&ti));
        SendMessage(hWndTip, TTM_SETTITLE, Icon % 4, Integer(Title));
    }
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{

ShowBalloonTip(Button1, 1, "ik0","Example on how to create Balloon Tips in C++ Builder", ColorBox1->Selected,ColorBox2->Selected );

}`

次に、ビルダー 2010 IDE で動作させる方法を尋ねていますか??? 2つのパラメーターを提供するようなWindows API funcを使用して2009 IDEで機能したのはなぜでしょうか。Windows GetClientRect()7のCビルダー2010 IDEでコンパイルすると、パラメーターが予期されないと言われました...

4

1 に答える 1

3

メソッドGetClientRect()内から Win32 API 関数を呼び出そうとしています。TFormはから別のメソッドをTForm継承しているため、どのメソッドを呼び出すかをコンパイラに指示する必要があります。メソッドではなく Win32 API 関数を呼び出したい場合は、グローバル名前空間を指定します。GetClientRect()TControlTControl::GetClientRect()

::GetClientRect(hWnd, &ti.rect);

一方、HWND は から来ているため、代わりにコントロールのプロパティをTWinControl使用できます (使用する必要があります) 。ClientRect

ti.rect = Control->ClientRect;
于 2012-11-01T18:12:27.700 に答える