MFC 点左键开始/暂停一个无限循环

case WM_LBUTTONDOWN: while(flag){ if(::PeekMessage(&message,NULL,0,0,PM_REMOVE)){ if(message..message == WM_LBUTTONDOWN) flag = !flag; } if(!flag)break; i=n%4; ... 展开
都用左键容易冲突,不好解决的话
if(message..message == WM_LBUTTONDOWN)
flag = !flag;

这里换成RBUTTONDOWN 也能接受
 我来答

答题抽奖

首次认真答题后

即可获得3次抽奖机会,100%中奖。

更多问题
邀请更新
2013-12-07 最佳答案
#include <Windows.h>

static int flag = 0;
static int txtpos = 0;

LRESULT CALLBACK wndproc(HWND hw, UINT msg, WPARAM wp, LPARAM lp)
{
switch (msg) {
case WM_NCDESTROY:
PostQuitMessage(0);
return 0;
case WM_LBUTTONDOWN:
flag = !flag;
return 0;
case WM_ERASEBKGND:
return 1;
default:
return DefWindowProc(hw, msg, wp, lp);
}
}

int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR szCmd, INT nShow)
{
WNDCLASS wc;
ZeroMemory(&wc, sizeof(wc));
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = wndproc;
wc.lpszClassName = TEXT("mywnd");
wc.hbrBackground = (HBRUSH)COLOR_WINDOW;
RegisterClass(&wc);

HWND h = CreateWindow(TEXT("mywnd"), TEXT("这是一个窗口"), WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, 300, 300, NULL, NULL, hInst, 0);
ShowWindow(h, nShow);
UpdateWindow(h);

MSG msg;
for(;;) {
BOOL r;
if (flag == 1)
r = PeekMessage(&msg, 0, 0, 0, PM_REMOVE);
else {
r = GetMessage(&msg, 0, 0, 0);
if (r <= 0) break;
}
if (r > 0) {
if (msg.message == WM_QUIT)
break;
TranslateMessage(&msg);
DispatchMessage(&msg);
} else {
if (flag == 1) {
HDC dc = GetDC(h);
RECT rect;
GetClientRect(h, &rect);

HBRUSH bg = CreateSolidBrush(RGB(255, 255, 255));
SetTimer(h, 1, 33, 0);

const TCHAR str[] = TEXT("哇哈哈");

while(flag == 1) {
GetMessage(&msg, 0, 0, 0);
if (msg.message == WM_TIMER) {
txtpos -= 5;
if (txtpos < 0)
txtpos = rect.right;
FillRect(dc, &rect, bg);
TextOut(dc, txtpos, 50, str, sizeof(str)/sizeof(*str) - 1);
ValidateRect(h, NULL);
} else if (msg.message == WM_QUIT) {
PostQuitMessage(msg.wParam);
break;
} else {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}

DeleteObject(bg);
KillTimer(h, 1);

ReleaseDC(h, dc);
}
}
}
}

仅供参考


对了还有,我看了你的代码,怎么看也不像MFC,所以我的用API写了

空雪梦见

采纳率:78% 来自团队:快乐之家 擅长: C/C++ C#/.NET VC++

为您推荐:

×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消