如何获取桌面最上层的窗口vcwindows编程

如何获取桌面最上层的窗口vcwindows编程,第1张

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)

{

int wmId, wmEvent;

PAINTSTRUCT ps;

HDC hdc,hd;

RECT rc;

TCHAR tx[]=L"Hello,VS2005";

HWND hw;

switch (message)

{

case WM_COMMAND:

break;

case WM_CREATE:

SetTimer(hWnd,1,1000,NULL);

break;

case WM_TIMER:

hw=GetForegroundWindow();

if(hw)

{

hd=GetDC(hw);

TextOut(hd,10,10,tx,_tcslen(tx));

ReleaseDC(hw,hd);

}

break;

case WM_PAINT:

hdc = BeginPaint(hWnd, &ps);

// TODO: Add any drawing code here

EndPaint(hWnd, &ps);

break;

case WM_DESTROY:

KillTimer(hWnd,1);

PostQuitMessage(0);

break;

default:

return DefWindowProc(hWnd, message, wParam, lParam);

}

return 0;

}

//GetForegroundWindow有时不灵光

//仅仅尝试了下TextOut,有了DC,画图其实一样。

包含图标的窗口实际上是DesktopWindow的一个字窗口。确切地讲,Desktop Window包含一个无标题的、类名为“SHELLDLL_DefView”的子窗口,这个字窗口又包含一个无标题的、类名为“SysListView32”的子窗口——这才是那个真正包含桌面图标的窗口。 // HWN[VC++]如何得到桌面窗口的句柄(桌面图标)

建立工程的时候,你可以选择mfc工程,或者 win32 application工程,这都是可视化程序

你直接根据向导的提示一直下一步就可以了。创建好后直接build就可以生成程序了,它有基础框架的,基本代码直接写好了,一出生就是一个可以运行的程序,甚至不需要你写一个字母,但这个程序什么都没有,就仅仅是一个对话框或者一个干干净净的窗口,连个字估计都没有。至于这个程序怎么正确地添加代码才能实现更多的功能,就要你去多钻研了,从console程序到windows可视化界面的程序是需要一个转变过程的。你初看这个图形界面的代码你可能会疯掉,耐心研究研究就好了,找几本windows程序设计的书看看,再写几个程序练练就好了。我从第一次接触图形界面到可以自己写图形界面程序大概花了半年,没人可以请教,全靠看书和上网查资料。图形界面的程序的编写思路是完全不同的。你慢慢练吧!

你这样吧,你运行VC++的时候那个窗口是全屏的话,你就按下ALT+ENTER键,然后这个时候就是窗口模式了,然后你再点左上角的"控制按钮",然后会d出一个菜单,你就选择"属性",这个时候就会d出一个对话框选择"选项"这个选项卡,你会看到有一个"显示选项"里面有"窗口"和"全屏显示"你选择"窗口",然后点确定,这个时候它会问你是一直保存吗还是当前保存,你就选择第二个"保存属性,供以后具有相同标题的窗口使用"然后再点确定你再看看以后还会不会出现全屏的现象

建立mfc工程然后实现您要的功能

步骤:

1、

new 选择project选项卡

2、

选择MFC AppWizard (exe) 填写相关信息点击确定就可以了

点击运行,就可以出现图形界面了,打开窗口设计文件可以添加控件到上面之类的。

算了吧!

#pragma comment(linker,"/SUBSYSTEM:Windows  /ENTRY:mainCRTStartup")

#include <windowsh>

/ 使类名成为全局变量 /

TCHAR szClassName[ ] = TEXT("WindowsApp");

/ 这个函数由Windows内部函数DispatchMessage()调用 /

LRESULT CALLBACK WindowProcedure (HWND hWnd, UINT message, WPARAM wParam,LPARAM lParam)

{

    HDC hdc ;

    PAINTSTRUCT ps ;

    RECT rect ;

    switch (message)  / 处理信息 /

    {

        case WM_DESTROY:

            PostQuitMessage (0);  / 发送WM_QUIT到消息队列 /

            break;

        case WM_PAINT:

            hdc = BeginPaint (hWnd, &ps) ;

            GetClientRect (hWnd, &rect) ;

            DrawText (hdc, TEXT("Hello, Windows NT!"), -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;

            EndPaint (hWnd, &ps) ;

            break ;

        default:  / 不处理的消息 /

            return DefWindowProc (hWnd, message, wParam, lParam);

    }

    return 0;

}

/ 下面是主函数 /

int main ( void )   

{

    HINSTANCE hThisInstance = GetModuleHandle(NULL) ;

    int nFunsterStil = SW_SHOW ;

    HWND hWnd; / 这是窗口的句柄 /

    MSG messages;/ 应用程序的消息保存在这里 /

    WNDCLASSEX wincl;/ 窗口类的数据结构 /

    / 窗口结构 /

    winclhInstance = hThisInstance;

    wincllpszClassName = szClassName;

    wincllpfnWndProc = WindowProcedure;/ 这个函数由Windows *** 作系统调用 /

    winclstyle = CS_DBLCLKS; / 获取双击指令 /

    winclcbSize = sizeof (WNDCLASSEX);

    / 使用默认图标和鼠标指针 /

    winclhIcon = LoadIcon (NULL, IDI_APPLICATION);

    winclhIconSm = LoadIcon (NULL, IDI_APPLICATION);

    winclhCursor = LoadCursor (NULL, IDC_ARROW);

    wincllpszMenuName = NULL; / 没有菜单 /

    winclcbClsExtra = 0;/ 窗口类后面没有多余的字节 /

    winclcbWndExtra = 0;/ 结构或者窗口实例 /

    / 使用窗口的默认颜色作为窗口的背景色 /

    winclhbrBackground = (HBRUSH) COLOR_BACKGROUND;

    / 注册窗口类。如果注册失败,那么就退出程序 /

    if (!RegisterClassEx (&wincl))

        return 0;

    / 窗口类已被注册。创建它的程序 /

    hWnd = CreateWindowEx (

            0,

            szClassName,    / 类名 /

            TEXT("Windows App"),    / 窗口标题栏的文字 /

            WS_OVERLAPPEDWINDOW, / 默认窗口 /

            CW_USEDEFAULT, / 窗口左上角的位置 /

            CW_USEDEFAULT, / 窗口右下角的位置 /

            544, / 窗口宽度(以“像素”位单位) /

            375, / 窗口高度(以“像素”位单位) /

            HWND_DESKTOP,/ 窗口是桌面的子窗口 /

            NULL,/ 该窗口无菜单 /

            hThisInstance, / 程序实例的句柄 /

            NULL / 没有窗口创建的数据 /

            );

    / 显示窗口 /

    ShowWindow (hWnd, nFunsterStil);

    / 重绘窗口 /

    UpdateWindow(hWnd);

    / 运行消息循环。循环到GetMessage()函数返回0 /

    while (GetMessage (&messages, NULL, 0, 0))

    {

        / 把虚拟信息翻译成字符信息 /

        TranslateMessage(&messages);

        / 发送信息到窗口过程 /

        DispatchMessage(&messages);

    }

    / 返回PostQuitMessage()函数的返回值 /

    return messageswParam;

}

以上就是关于如何获取桌面最上层的窗口vc windows编程全部的内容,包括:如何获取桌面最上层的窗口vc windows编程、[VC++]如何得到桌面窗口的句柄(桌面图标)、VC++中如何在一个空白的工程中建立一个可视化的窗口等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10630000.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-10
下一篇2023-05-10

发表评论

登录后才能评论

评论列表(0条)

    保存