做完棋盘之后却无法完成左键点击棋盘,而切换棋盘BMP图片
Posted 养老保险年审
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了做完棋盘之后却无法完成左键点击棋盘,而切换棋盘BMP图片相关的知识,希望对你有一定的参考价值。
做完棋盘之后却无法完成左键点击棋盘,而切换棋盘BMP图片解决办法:
目前推测可能是因为HDC的原因造成无法切换,HDC只能在WM_PAINT消息中使用,其它消息中使用都不会被执行。
有了原因就想出对策,把需要HDC的函数全部放在WM_PAINT消息中去处理,这样就可以共用WM_PAINT中的HDC了
代码:
HINSTANCE g_hInst = NULL;
HANDLE g_hStdout = NULL; //控制台
CHAR szText[256] = { 0 }; //调试用
#define PrintLog(x) WriteConsole(g_hStdout, x, strlen(x), 0, 0);
int i = 1;
//获得坐标
int xPos = 0;
int yPos = 0;
void DrawBk(HDC hDC)
{
int marc = 0; //控制棋盘所在位置
for (int i = 0; i < 10; i++) //画九格横线
{
MoveToEx(hDC, marc + 50, marc + 50 + i * 48, NULL);
LineTo(hDC, marc + 480, marc + 50 + i * 48);
}
for (int j = 0; j < 10; j++) //画九格直线
{
MoveToEx(hDC, marc + 50 + j * 48, marc + 50, NULL);
LineTo(hDC, marc + 50 + j * 48, marc + 480);
}
//背景图处理
HBITMAP hBitMap = LoadBitmap(g_hInst, MAKEINTRESOURCE(IDB_BKMP1));
HDC hBmap = CreateCompatibleDC(hDC);
HGDIOBJ hOldBmp = SelectObject(hBmap, hBitMap);
//绘图开始
for (int i = 0; i < 9; i++)
{
for (int j = 0; j < 9; j++)
{
BitBlt(hDC, 50 + j * 48, 50 + i * 48, 48, 48, hBmap, 0, 0, MERGECOPY);
}
}
SelectObject(hDC, hOldBmp);
DeleteDC(hBmap);
DeleteObject(hBitMap);
}
void OnLButton(HDC hDC)
{
//PAINTSTRUCT ps = { 0 };
//HDC hDC = BeginPaint(hWnd, &ps);
int marc = 0; //控制棋盘所在位置
if (xPos>50 && yPos >50)
{
//背景图处理
HBITMAP hBitMap = LoadBitmap(g_hInst, MAKEINTRESOURCE(IDB_BKMP2));
HDC hBmap = CreateCompatibleDC(hDC);
HGDIOBJ hOldBmp = SelectObject(hBmap, hBitMap);
//绘图开始
int xPoint = (xPos - 50) / 48;
int yPoint = (yPos - 50) / 48;
sprintf_s(szText, 256, "OnLButton,x=%d,y=%d\n", xPoint, yPoint);
PrintLog(szText);
BitBlt(hDC, 50 + xPoint * 48, 50 + yPoint * 48, 48, 48, hBmap, 0, 0, SRCCOPY);
SelectObject(hDC, hOldBmp);
DeleteDC(hBmap);
DeleteObject(hBitMap);
}
}
//OnPaint
void OnPaint(HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lParam)
{
PAINTSTRUCT ps = { 0 };
HDC hDC = BeginPaint(hWnd, &ps);
if (i == 1) //暂时屏蔽棋盘每次刷新的办法,后面可以用控件解决
{
DrawBk(hDC);
i = 2;
}
OnLButton(hDC);
EndPaint(hWnd, &ps);
}
以上是关于做完棋盘之后却无法完成左键点击棋盘,而切换棋盘BMP图片的主要内容,如果未能解决你的问题,请参考以下文章