c语言wm_char声明,c的windows_api中的wm_char消息的有关问题(4)

本文探讨了在C语言Windows API编程中如何有效处理wm_char消息,涉及字符输入处理、文本输出与颜色控制,以及暂停标识与得分逻辑。重点在于如何优化字符匹配和节点管理,同时展示了关键代码片段和事件响应处理技巧。
摘要由CSDN通过智能技术生成

当前位置:我的异常网» C语言 » c的windows_api中的wm_char消息的有关问题

c的windows_api中的wm_char消息的有关问题(4)

www.myexceptions.net  网友分享于:2014-05-10  浏览:1次

TextColor = (pTemp->cCoord.y >= ((iyMax / 3 )* 2)) ? RGB(255,255,255) : RGB(0,0,0);

OutputNodeData(hdc,pTemp,TextColor);                      //输出所有字符

pTemp= pTemp->pNext;

}

ReleaseDC(hwnd,hdc);

}

break;

case WM_CHAR:

TempChar = (char)wParam;

//hdc = GetDC(hwnd);

// TextOut(hdc,ixMax / 2 * cxChar,(iyMax - 1)* cyChar,szBuffer,wsprintf(szBuffer,"%c",TempChar));

if(TempChar 126)

break;

pTemp = ScanListCh(&pHead,TempChar);

//TextOut(hdc,ixMax / 2 * cxChar + 2 * cxChar,(iyMax - 1)* cyChar,szBuffer,wsprintf(szBuffer,"%d",pTemp));

//ReleaseDC(hwnd,hdc);

if(pTemp && (pTemp->cCoord.y 

{

iCount += 10;//增加分数

hdc = GetDC(hwnd);

SetMapMode(hdc,MM_ANISOTROPIC);

SetWindowExtEx(hdc,1,1,NULL);

SetViewportExtEx(hdc,cxChar,cyChar,NULL);

SetBkMode(hdc,TRANSPARENT);

TextColor = RGB(255,255,255);

OutputNodeData(hdc,pTemp,TextColor);

DeleteNode(&pHead,pTemp);//删除节点

ReleaseDC(hwnd,hdc);

if(iCount >= (iLevel + 1) * LevelFlage)

{

iLevel ++;

KillTimer(hwnd,TIME_ID_2);

SetTimer(hwnd,TIME_ID_2,iTimeMe -= 100,NULL);

}

}

//如果有相同字符,清除该字符,并释放节点;

//分数+10

//如果分数》= (ilevel + 1) * levelflage;ilevel += 1;

//killtimer time_id_2;setkilltimer -50;

break;

case WM_KEYDOWN:

if(iPaush)//如果暂停标识为真,则置为假;

{

iPaush = FALSE;

break;

文章评论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
抱歉,我之前的回答有些误导,"current_window.type" 是 i3wm 的命令,不是C语言的命令。如果您需要在C语言获取当前窗口的类型,需要使用与窗口系统相关的API。 以下是一个简单的例子,可以在X11窗口系统获取当前窗口的类型: ``` #include <stdio.h> #include <stdlib.h> #include <X11/Xlib.h> #include <X11/Xatom.h> int main() { Display *display = XOpenDisplay(NULL); Window window; Atom type; int format; unsigned long nitems, bytes_after; unsigned char *prop; window = XGetInputFocus(display, None); type = XInternAtom(display, "_NET_WM_WINDOW_TYPE", False); if (XGetWindowProperty(display, window, type, 0, 1, False, AnyPropertyType, &type, &format, &nitems, &bytes_after, &prop) == Success) { if (*(Atom*)prop == XInternAtom(display, "_NET_WM_WINDOW_TYPE_NORMAL", False)) { printf("Current window is a normal window.\n"); } else if (*(Atom*)prop == XInternAtom(display, "_NET_WM_WINDOW_TYPE_DOCK", False)) { printf("Current window is a dock.\n"); } else if (*(Atom*)prop == XInternAtom(display, "_NET_WM_WINDOW_TYPE_DIALOG", False)) { printf("Current window is a dialog.\n"); } else if (*(Atom*)prop == XInternAtom(display, "_NET_WM_WINDOW_TYPE_TOOLTIP", False)) { printf("Current window is a tooltip.\n"); } else { printf("Current window is of an unknown type.\n"); } XFree(prop); } XCloseDisplay(display); return 0; } ``` 该程序使用 X11 库的函数来获取当前窗口的类型,并根据类型输出相应的信息。具体来说,它使用 XGetInputFocus 函数获取当前窗口的 ID,然后使用 XGetWindowProperty 函数获取窗口的类型。在这个例子,我们假设窗口的类型是 _NET_WM_WINDOW_TYPE_NORMAL、_NET_WM_WINDOW_TYPE_DOCK、_NET_WM_WINDOW_TYPE_DIALOG 或 _NET_WM_WINDOW_TYPE_TOOLTIP。如果窗口类型不是这些类型之一,则认为它是未知类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值