1. 程式人生 > >MFC(一)——WINDOWS訊息機制

MFC(一)——WINDOWS訊息機制

建立一個完整的視窗需要經過下面四個操作步驟:

  1. 設計一個視窗類;
  2. 註冊視窗類;
  3. 建立視窗;
  4. 顯示及更新視窗。
#include <Windows.h>
#include <stdio.h>
LRESULT CALLBACK WinSunProc
(
    HWND hwnd,
    UINT uMsg,
    WPARAM wParam,
    LPARAM lParam
);
int WINAPI WinMain
(
    HINSTANCE hInstance,        //handle to current instance
    HINSTANCE hPrevInstance,    //handle to previous instance
LPSTR lpCmdline, //command line int nCmdShow //show state ) { //design window class WNDCLASS wndcls; wndcls.cbClsExtra = 0; wndcls.cbWndExtra = 0; wndcls.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH); wndcls.hCursor = LoadCursor(nullptr, IDC_CROSS); wndcls.hIcon = LoadIcon(nullptr
, IDI_ERROR); wndcls.hInstance = hInstance; wndcls.lpfnWndProc = WinSunProc; wndcls.lpszClassName = "SCU2016"; wndcls.lpszMenuName = nullptr; wndcls.style = CS_HREDRAW | CS_VREDRAW; //register window class RegisterClass(&wndcls); //creat window HWND hwnd; //handle
hwnd = CreateWindow("SCU2016", "ZHAOMIN", WS_OVERLAPPEDWINDOW, 0, 0, 600, 400, nullptr, nullptr, hInstance, nullptr); //(className,windowName,windowStyle //show window ShowWindow(hwnd, SW_SHOWNORMAL); //update window UpdateWindow(hwnd); MSG msg; while (GetMessage(&msg, nullptr, 0, 0))//(message,handle,mix,max) { TranslateMessage(&msg); DispatchMessage(&msg); } return 0; } //callback function-視窗過程函式 LRESULT CALLBACK WinSunProc ( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam ) { switch (uMsg) { case WM_CHAR: char szChar[20]; sprintf_s(szChar, "char is %d", wParam); MessageBox(hwnd, szChar, "ZHAOMIN", 0); break; case WM_LBUTTONDOWN: MessageBox(hwnd, "mouse clicked", "ZHAOMIN", 0); HDC hdc; hdc = GetDC(hwnd); TextOut(hwnd, 0, 50, "compucture", strlen("compucture")); ReleaseDC(hwnd, hdc); break; case WM_PAINT: break; case WM_CLOSE: break; case WM_DESTROY: break; default: return DefWindowProc(hwnd, uMsg, wParam, lParam); } return 0; }

相關推薦

MFC——WINDOWS訊息機制

建立一個完整的視窗需要經過下面四個操作步驟: 設計一個視窗類; 註冊視窗類; 建立視窗; 顯示及更新視窗。 #include <Windows.h> #include <stdio.h> LRESULT CALLBACK Wi

訊息中介軟體——RabbitMQWindows/Linux環境搭建完整版

前言 最近在學習訊息中介軟體——RabbitMQ,打算把這個學習過程記錄下來。此章主要介紹環境搭建。此次主要是單機搭建(條件有限),包括在Windows、Linux環境下的搭建,以及RabbitMQ的監控平臺搭建。 環境準備 在搭建RabbitMQ之前,請先確保如下環境已經搭建完畢 Java環境(我

JVM運行機制

執行 vol defined 觀察 分配 bsp 寄存器 思考 區間 1.啟動流程 2.JVM基本結構 PC寄存器   》每個線程擁有一個PC寄存器   》在線程創建時創建   》指向下一條指令的地址   》執行本地方法時,PC的值為undefined 方法區 保存

Windows下安裝RabbitMQ服務

百度網盤 http lang gin 配置 ble localhost 語言 load 一:安裝RabbitMQ需要先安裝Erlang語言開發包,百度網盤地址:http://pan.baidu.com/s/1jH8S2u6。直接下載地址:http://erlang.org/

深入淺出Redis系列 windows環境下Redis的安裝

windows下Redis的安裝: 一:【下載】:       去官網找了很久,發現原來在官網上可以下載的windows版本的,現在官網以及沒有下載地址,只能在github上下載,官網只提供linux版本的下載;   &nb

《深入理解java虛擬機器》讀書筆記---- 類載入機制

類載入的時機 1、類從虛擬機器載入到記憶體開始,到卸載出記憶體為止,整個生命週期分為七個階段:載入、驗證、準備、解析、初始化、使用和解除安裝。其中驗證、準備和解析統稱為連線階段。 2、載入、驗證、準備、初始化和解除安裝這五個階段是按順序執行的,而解析階段卻不一定,解析可以在初始化之後

初學MFC

MFC(Microsoft Foundation Classes),是一個微軟公司提供的類庫(class libraries),以C++類的形式封裝了Windows的API,並且包含一個應用程式框架,以減少應用程式開發人員的工作量。其中包含的類包含大量Windows控制代碼封裝類和很多Windows

JavaScript進階JS事件機制

前言       做了這麼久的鋪墊,終於迎來了新的篇章,該章介紹JS中的事件機制 方法 1.概念 我們知道,JS是參與網頁互動的一門指令碼語言,之前所說的都是JS的基本概念,那麼怎麼來進行互動呢!那就需要JS的事件機制來進行控制了,如按鈕的點選事件觸

異常處理機制詳解

# 前言 本文主要是對Java異常處理機制的闡述,瞭解Java的異常機制的設計和分類,及Java異常有哪些坑,如何在自定義異常類時避免採坑。 # 異常機制分類 異常情況是指阻止當前方法或作用域繼續繼續執行的情況。在Java中異常也是物件,我們可以像建立其他物件一樣,用new在堆上建立異常物件。從上圖可以看

OpenVPM系列圖文教程之—— Windows下搭建服務端、客戶端配置

背景:公司移動APP需要使用吶網服務,就順便研究了一下各種搭建方式,廢話不說看教程! 本文測試環境 雲香港 ECS 1 核 1GB (新人2折) Windows server 2012 R2 Datacenter Intel® Xeon® CPU

Java架構之訊息佇列 訊息佇列的概述

訊息佇列系列分享大綱:  一、訊息佇列的概述 二、訊息佇列之RabbitMQ的使用 三、訊息佇列之Kafka的使用 四、訊息佇列之RabbitMQ的原理詳解 五、訊息佇列之Kafka的原理詳解 六、訊息佇列之面試集錦 1.訊息佇列的概述 訊息佇列(Me

Attention機制學習傳統Attention機制

前言 縱觀神經網路的發展歷程,從最原始的MLP,到CNN,到RNN,到LSTM,GRU,再到現在的Attention機制,人們不斷的在網路裡面加入一些先驗知識,使得網路不過於“發散”,能夠朝著人們希望的方向去發展。 這些先驗知識是指:區域性視野知識、序列遞迴知識、結構遞迴知識,已經長

【環境配置】windows下面配置opencv/opencv_contrib編譯

windows下面配置opencv2/3很簡單,有兩種方式 方式一:直接下載編譯好的.exe檔案安裝即可,使用的時候配置相關include,dll,lib就行了 這種方式下opencv3只會有兩個dll,opencv_world和opencv_ts 方式二:下載原始碼,

ThinkPHP學習 Windows下Nginx+PHP5+ThinkPHP 3 2 1的安裝與配置

                工具原料:Nginx153:網盤下載地址:http://pan.baidu.com/s/1qWNgLf2php-5.3.28-nts-Win32-VC9-x86網盤下載地址:http://pan.baidu.com/s/1pdukYThinkPHP_3.2.1網盤下載地址:ht

訊息佇列】MSMQ——微軟訊息佇列簡介及安裝

一、前言       從這篇部落格開始小編就從一個簡單的例項來展示一下訊息佇列中MSMQ的基本使用方法,展示一下他對訊息的增刪改查,訊息佇列有很多種樣式,做.NET開發的程式猿,最容易安裝的就是MSM

Eclipse Che安裝體驗----Windows下docker的安裝

最近在研究Eclipse Che,其中需要用到Docker,這裡是我安裝Docker的過程,當然,Eclipse Che的安裝需要用到的還有git,git安裝教程比較多,我們docker的安裝也在已經安裝了git的基礎上進行的。 (一) 關於docker Docker在wi

OpenVPN 系列圖文教程之—— Windows下搭建VPN服務端、客戶端配置

背景:公司移動APP需要使用VPN服務,就順便研究了一下各種VPN的搭建,突然發現買個阿里雲香港伺服器自己用也是不錯的選擇哈哈,廢話不說看教程! 本文測試環境 阿里雲香港 ECS 1 核 1GB(簡約型 t1, ecs.t1.small) 領取優惠

ElasticSearch學習 - windows下安裝ElasticSearch

ElasticSearch版本6.5.4;要求jdk版本必須為1.8以上 1、從官網下載elasticsearch 地址:https://www.elastic.co/downloads/elasticsearch 2、解壓zip到檔案目錄 3、開啟ElasticSearch

區塊鏈開發Windows平臺搭建基於以太坊的區塊鏈開發環境

引言 Ethereum(以太坊)是一個使開發人員能夠建立和釋出下一代分散式應用的公共區塊鏈平臺。 通過其專用加密貨幣以太幣(Ether)提供去中心化的虛擬機器(稱為“以太虛擬機器”Ethereum Virtual Machine)來處理點對點合約。具體可以訪問

Java拾遺之SPI機制

例子: IOperation plus = new PlusOperationImpl(); IOperation division = new DivisionOperationImpl(); System.out.println(plus.