ウィンドウのクライアント領域にマウスの左ボタンをクリックした後にのみテキストを表示したいとします。私はこのコードを持っていますが、動作しません。私は、マウスを左クリックするとボタンが何も起こりません:なぜ、クリックさの状態の変化はWM_PAINTメッセージによってマウスの左ボタンをクリックした後のテキストの表示
void Text(HDC hdc)
{
SetTextColor(hdc, RGB(255, 0, 0));
SetBkColor(hdc, RGB(0, 0, 0));
TCHAR display_msg[] = _T("Message in window");
TextOut(hdc, RestartButtonWidth, 10, display_msg, _tcslen(display_msg));
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
PAINTSTRUCT ps;
HDC hdc;
bool Clicked = false;
switch (message)
{
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
if (Clicked == true)
{
Text(hdc);
}
EndPaint(hWnd, &ps);
break;
case WM_LBUTTONDOWN:
Clicked = true;
break;
を登録していないブール値ですか?
なぜCASE WM_PAINTブロックを入力したときにクリックする必要がありますか? – Grantly
スコープと変数の生存期間について[良いC++の本](https://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)をお読みください。 –
https://msdn.microsoft.com/en-us/library/windows/desktop/dd145002(v=vs.85).aspx –