炫彩界面库论坛

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 2258|回复: 2

怎么这么示例没一个是做系统热键的?

[复制链接]

该用户从未签到

发表于 2013-9-20 19:45:25 | 显示全部楼层 |阅读模式
Win32 编程,炫彩界面库怎么没有做系统热键的示例啊,自己搞了好久都没成,实在没办法,只能Win32做个窗口,不显示窗口,热键做好后再调用炫彩界面做的窗口,应该不用这么麻烦吧。

该用户从未签到

 楼主| 发表于 2013-9-21 05:30:00 | 显示全部楼层
自己做成了个系统快捷键,但是是C代码风格模板
全部代码如下:
#define WIN32_LEAN_AND_MEAN  // 从 Windows 头中排除极少使用的资料
#include <windows.h>

// C 运行时头文件
#include <stdlib.h>
#include <malloc.h>
#include <memory.h>
#include <tchar.h>

#define KEY_Home        5001
#define KEY_End         5002
#define KEY_CtrlEnd     5003
#define KEY_CtrlAltEnd  5004
#define dmNum  6 //多开数

#ifdef _DEBUG
#pragma comment(lib, "XCGUI/XCGUId.lib")
#else
#pragma comment(lib, "XCGUI/XCGUI.lib")
#endif
#include "XCGUI\xcgui.h"

BOOL CALLBACK WndProc(HWINDOW hWindow,UINT message, WPARAM wParam, LPARAM lParam)
{
        switch(wParam)
        {
        case KEY_Home://截获这个消息来处理自己想要的结果       
                XMessageBox(hWindow, L"Home", L"你按下的是", 0);
                break;
        case KEY_End://截获这个消息来处理自己想要的结果
                XMessageBox(hWindow, L"End", L"你按下的是", 0);
                break;
        case KEY_CtrlEnd://截获这个消息来处理自己想要的结果 
                XMessageBox(hWindow, L"Ctrl+End", L"你按下的是", 0);
                break;
        case KEY_CtrlAltEnd: //退出程序
                break;
        }
        return false;
}

//事件响应
BOOL CALLBACK My_EventBtnClick(HELE hEle,HELE hEventEle)
{
        //弹出消息框
        //XMessageBox(hEle,L"你点击了按钮",L"提示",XMB_OK | XMB_CANCEL);
        return false;
}

int APIENTRY _tWinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPTSTR lpCmdLine, int nCmdShow)
{
        XInitXCGUI(); //初始化

        HWINDOW hWindow=XWnd_CreateWindow(0,0,300,200,L"炫彩界面库-窗口");//创建窗口
        if(hWindow)
        {
                HWND hWnd = XWnd_GetHWnd( hWindow); //获取窗口句柄HWND
                RegisterHotKey(hWnd, KEY_Home, 0, VK_HOME);
                RegisterHotKey(hWnd, KEY_End, 0, VK_END);
                RegisterHotKey(hWnd, KEY_CtrlEnd, MOD_CONTROL, VK_END);
                RegisterHotKey(hWnd, KEY_CtrlAltEnd, MOD_ALT, VK_END);
                XWnd_RegisterMsgProc(hWindow, &WndProc);

                HELE hButton=XBtn_Create(10,10,80,25,L"按钮",hWindow);//创建按钮
                XEle_RegisterEvent(hButton,XE_BNCLICK,My_EventBtnClick);//注册按钮点击事件

                XWnd_ShowWindow(hWindow,SW_SHOW);//显示窗口

                XRunXCGUI(); //运行
        }
        return 0;
}

该用户从未签到

 楼主| 发表于 2013-9-21 05:35:15 | 显示全部楼层
下面做好了VC++代码风格的快捷键,全部代码如下:
#define WIN32_LEAN_AND_MEAN  // 从 Windows 头中排除极少使用的资料
#include <windows.h>

// C 运行时头文件
#include <stdlib.h>
#include <malloc.h>
#include <memory.h>
#include <tchar.h>

#define KEY_Home        5001
#define KEY_End         5002
#define KEY_CtrlEnd     5003
#define KEY_CtrlAltEnd  5004
#define dmNum  6 //多开数

#ifdef _DEBUG
#pragma comment(lib, "XCGUI/XCGUId.lib")
#else
#pragma comment(lib, "XCGUI/XCGUI.lib")
#endif
#include "XCGUI\xcgui.h"

BOOL CALLBACK WndProc(HWINDOW hWindow,UINT message, WPARAM wParam, LPARAM lParam)
{
        switch(wParam)
        {
        case KEY_Home://截获这个消息来处理自己想要的结果       
                XMessageBox(hWindow, L"Home", L"你按下的是", 0);
                break;
        case KEY_End://截获这个消息来处理自己想要的结果
                XMessageBox(hWindow, L"End", L"你按下的是", 0);
                break;
        case KEY_CtrlEnd://截获这个消息来处理自己想要的结果 
                XMessageBox(hWindow, L"Ctrl+End", L"你按下的是", 0);
                break;
        case KEY_CtrlAltEnd: //退出程序
                break;
        }
        return false;
}

class CMyWnd : public CXEventMsg
{
public:
        HWINDOW m_hWindow; //窗口句柄
        HELE    m_hButton; //按钮句柄

        BOOL Create() //创建窗口和按钮
        {
                m_hWindow=XWnd_CreateWindow(0,0,400,300,L"炫彩界面库-窗口"); //创建窗口
                if(m_hWindow)
                {
                        HWND hWnd = XWnd_GetHWnd( m_hWindow); //获取窗口句柄HWND
                        RegisterHotKey(hWnd, KEY_Home, 0, VK_HOME);
                        RegisterHotKey(hWnd, KEY_End, 0, VK_END);
                        RegisterHotKey(hWnd, KEY_CtrlEnd, MOD_CONTROL, VK_END);
                        RegisterHotKey(hWnd, KEY_CtrlAltEnd, MOD_ALT, VK_END);
                        XWnd_RegisterMsgProc(m_hWindow, &WndProc);

                        m_hButton =XBtn_Create(10,10,80,25,L"按钮",m_hWindow); //创建按钮
                        XCGUI_RegEleEvent(m_hButton,XE_BNCLICK,&CMyWnd::OnEventBtnClick); //注册按钮点击事件

                        XWnd_ShowWindow(m_hWindow,SW_SHOW); //显示窗口
                        return true;
                }
                return false;
        }
        BOOL OnEventBtnClick(HELE hEle,HELE hEleEvent) //按钮点击事件响应
        {
                //弹出消息框
                XMessageBox(hEle,L"你点击了按钮",L"提示",XMB_OK | XMB_CANCEL);
                return false;
        }
};

int APIENTRY _tWinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPTSTR lpCmdLine, int nCmdShow)
{
        XInitXCGUI(); //初始化

        CMyWnd  MyWnd;
        if(MyWnd.Create())
        {
                XRunXCGUI(); //运行
        }
        return 0;
}
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

QQ|Archiver|手机版|小黑屋|炫彩界面库 ( 鄂ICP备2023014763号-1 )

GMT+8, 2024-9-19 09:58 , Processed in 0.066307 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表