Qt for windows消息循环、libqxt分析和wince快捷键处理

利用Qt做windows图形界面开发和MFC相比,个人感觉还是比较简单好用的:首先利用Designer工具搞个ui文件;然后在程序中写几个信号和槽;然后加载ui文件;最后显示界面就搞定了。

在界面开发中,快捷键处理肯定是必不可少的。现在使用的是开源的第三方处理类:libqxt。它提供跨平台的解决方案:win和x11。使用起来也很方便。使用方便并不是万事大吉,我们要有求索精神:“知其然知其所以然”。好了废话不多说开始分析。

Windows下程序设计总是要遵循它自身的机制的,在《windows程序设计》书中给出了详细的说明。下面给出经典的windows程序示例(hello Windows):

#include

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,

PSTR szCmdLine, int iCmdShow)

{

static TCHAR szAppName[] = TEXT ("HelloWin") ;

HWND hwnd ;

MSG msg ;

WNDCLASwndclass ;

wndclass.style = CS_HREDRAW | CS_VREDRAW ;

wndclass.lpfnWndProc = WndProc ;

wndclass.cbClsExtra = 0 ;

wndclass.cbWndExtra = 0 ;

wndclass.hInstance = hInstance ;

wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;

wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;

wndclass.hbrBackground= (HBRUSH) GetStockObject (WHITE_BRUSH) ;

wndclass.lpszMenuNam = NULL ;

wndclass.lpszClassName= szAppName ;

if (!RegisterClass (&wndclass)) {

MessageBox ( NULL, TEXT ("This program requires Windows NT!"),

szAppName, MB_ICONERROR) ;

return 0 ;

}

hwnd = CreateWindow( szAppName, // window class name

TEXT ("The Hello Program"), // window caption

WS_OVERLAPPEDWINDOW, // window style

CW_USEDEFAULT,// initial x position

CW_USEDEFAULT,// initial y position

CW_USEDEFAULT,// initial x size

CW_USEDEFAULT,// initial y size

http://www.360docs.net/doc/info-dd3b0c3faf45b307e8719777.html

https://wenku.baidu.com/view/dd3b0c3faf45b307e8719777.html

时间: 2024-10-10 00:54:47

Qt for windows消息循环、libqxt分析和wince快捷键处理的相关文章

理解Windows消息循环机制

理解消息循环和整个消息传送机制对Windows编程十分重要.如果对消息处理的整个过程不了解,在windows编程中会遇到很多令人困惑的地方. 什么是消息(Message)每个消息是一个整型数值,如果查看头文件(查看头文件了解API是一个非常好的习惯和普遍的做法)可以发现如下一些宏定义: #define WM_INITDIALOG                   0x0110 #define WM_COMMAND                      0x0111 #define WM_L

Windows 消息循环(2) - WPF中的消息循环

接上文: Windows 消息循环(1) - 概览 win32/MFC/WinForm/WPF 都依靠消息循环驱动,让程序跑起来. 本文介绍 WPF 中是如何使用消息循环来驱动程序的. 4 消息循环在 WPF 中的应用 4.1 引入 只听说过 Dispatcher ,哪里来的消息循环? 先瞧一眼 WPF 启动运行堆栈: 可以发现 PushFrameImpl 这个方法. 去看其源码,就发现了熟悉的消息循环 : 可以理解为:Dispatcher 对消息循环的操作进行了"封装" . 那,Di

windows 消息循环的那些事

本文将结合网上的一些资料及自己的经验.见解,对windows消息机制进行简单的剖析,有不对的地方欢迎指正哈!! 首先,指明一些消息在windows系统中是什么角色: 消息是消息机制中的邮件,用于工作线程与UI线程.窗体与窗体.一个进程对另一个线程的窗体进行通讯.他是win32程序运行的血液,通过消息才能把整个系统关联起来. 消息对应于系统的一个UINT值,也即32位的无符号整形值,例如我们平时会自定义的WM_USER.WM_PAINT等等.它唯一的定义了一个事件,向 Windows发出一个通知,

windows 消息循环和窗口与线程关系

/WinMain函数 int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){ g_hinstance = hInstance; if( !Register("Main",WndProc) ) //注册窗口类 RegisterClassEx { MessageBox(NULL,"注册失败","Infor",M

Android应用程序线程消息循环模型分析

文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6905587 我们知道,Android应用程序是通过消息来驱动的,即在应用程序的主线程(UI线程)中有一个消息循环,负责处理消息队列中的消息.我们也知 道,Android应用程序是支持多线程的,即可以创建子线程来执行一些计算型的任务,那么,这些子线程能不能像应用程序的主线程一样具有消息循环呢?这 些子线程又能不能往应用程序的主线程中发送消息呢?本

Android IntentService源码理解 及 HandlerThread构建消息循环机制分析

前言:前面写了Handler的源码理解,关于Handler在我们Android开发中是到处能见到的异步通信方式.那么,在Android原生里,有那些也有到了Handler机制的呢?有很多,比如我们今天所要理解分析的IntentService就使用到了Handler.接下来,我们来深入了解一下. HandlerThread: IntentService使用到了Handler+HandlerThread构建的带有消息循环的异步任务处理机制,我们先简单看一下HandlerThread是如何工作的吧.

浅谈windows消息机制

首先来了解几个基本概念: 消息:在了解什么是消息先来了解什么是事件.事件可分为几种,由输入设备触发的,比如鼠标键盘等等.由窗体控件触发的,比如button控件,file菜单等.还有就是来自Windows内部的事件.这三种称为事件.而消息,是由事件翻译而来的.事件产生消息. 从数据结构角度来讲,消息是一种结构体.结构如下: 1 typedef struct tagMSG 2 3 { 4 5 HWND hwnd; //窗口句柄. 6 7 UINT message;//消息类型. 8 9 WPARAM

Windows程序开发的背景知识---Windows消息机制

一,消息 消息(Message)指的就是Windows 操作系统发给应用程序的一个通知,它告诉应用程序某个特定的事件发生了.比如,用户单击鼠标或按键都会引发Windows 系统发送相应的消息.最终处理消息的是应用程序的窗口函数,如果程序没处理的话操作系统有默认函数将会作出处理.      从数据结构的角度来说,消息是一个结构体,它包含了消息的类型标识符以及其他的一些附加信息.系统定义的结构体MSG用于表示消息,MSG 具有如下定义形式: typedef struct MSG {      HWN

模态窗口其实就是在当前窗口调用系统的消息循环,响应用户的操作,将相关的消息发送到对应的窗口(转)

上周准备在公司内部转岗,面了3个部门windows客户端相关的工作,最终拿到3个Offer,主要涉及C++和Windows两大块内容,C++的题目基本都答上了,Windows一直都是我的弱项,在这里记录一下Windows相关的题目.有些答不上的问题就没列出来,还有些问题忘了,下面的答案有些大部分是我自己的理解,有些是直接从网上copy的,有问题大家可以讨论. 1:GetMessage和PeekMessage的区别? GetMessage:获取消息队列中的一个消息,存入MSG中,并从消息队列中移除