C++ C++;VS 2017设置全局变量--程序仅在调试中使用断点工作
当我在应该设置为true的断点处设置断点时,我的“lClick”全局变量成功地设置为true,但如果不是这样运行,则不会。请帮忙 在global.h中:C++ C++;VS 2017设置全局变量--程序仅在调试中使用断点工作,c++,C++,当我在应该设置为true的断点处设置断点时,我的“lClick”全局变量成功地设置为true,但如果不是这样运行,则不会。请帮忙 在global.h中: #pragma once extern bool lClick; 在global.cpp中: #include "global.h" bool lClick = false; 在main.cpp中: LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPAR
#pragma once
extern bool lClick;
在global.cpp中:
#include "global.h"
bool lClick = false;
在main.cpp中:
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_LBUTTONDOWN:
{
int iPosX = LOWORD(lParam);
int iPosY = HIWORD(lParam);
lClick = true;
break;
}
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hWnd, &ps);
// draw bitmaps
DrawAll(hdc);
EndPaint(hWnd, &ps);
}
在Scrabble.cpp中:
void DrawArrow(HDC hdc, int x, int y)
{
Draw("arrowrt_mask.bmp", hdc, 110, 150, 1);
Draw("arrowrt.bmp", hdc, 110, 150, 2);
}
void DrawAll(HDC hdc)
{
InitPaint(hdc);
Draw("board.bmp", hdc, 10, 50);
Draw("racks.bmp", hdc, 770, 10);
Draw("textarea.bmp", hdc, TEXT_AREAX, TEXT_AREAY);
// display arrow if player left clicked somewhere on the board
if (lClick)
{
DrawArrow(hdc, 0, 0);
}
目标是在用户左键单击时在拼字板上的某个位置绘制箭头 绘画只在需要的时候进行。您可能打算在单击鼠标时重新绘制屏幕,但如果是这样,则需要使窗口无效 假设hwnd是您的主窗口,将其添加为案例WM_LBUTTONDOWN(中断前)的最后一行:
为什么需要全局变量呢?谢谢!这就解决了问题。但是,在箭头出现之前,整个屏幕会闪烁。有没有办法解决这个问题?是的,请看文档中的。“rect”=矩形,它不需要是完整的客户端区域。此外,如果您想更新2个点,例如旧的和新的单击位置,您可以使用2个小矩形调用InvalidateStribute两次。Windows将在下次发送绘制事件时收集并合并所有无效区域。
InvalidateRect(hwnd, NULL, TRUE);