從CEdit派生乙個只允許輸入16進製制資料的新類

2021-06-02 12:53:09 字數 1532 閱讀 2422

//從cedit派生乙個只允許輸入16進製制資料的新類

//支援輸入 空格 0-f backspace

//在啟用時切換輸入法至英文鍵盤

//在失去焦點時恢復輸入法

//遇非法字元時有警示音提示

#pragma once

// chexeditctrl

class chexeditctrl : public cedit

;

// hexeditctrl.cpp : implementation file

//#include "stdafx.h"

#include "hexeditctrl.h"

#include #pragma comment(lib, "imm32.lib")

// chexeditctrl

implement_dynamic(chexeditctrl, cedit)

chexeditctrl::chexeditctrl()

chexeditctrl::~chexeditctrl()

begin_message_map(chexeditctrl, cedit)

on_control_reflect_ex(en_setfocus, onensetfocu***)

on_control_reflect_ex(en_killfocus, onenkillfocu***)

end_message_map()

// chexeditctrl message handlers

lresult chexeditctrl::windowproc(uint message, wparam wparam, lparam lparam)

; _wcsupr(szinput);

static lpcwstr szvaliditem =l" 0123456789abcdef\b";

if(wcsstr(szvaliditem, szinput) == 0)

wparam = szinput[0];

} if(wm_inputlangchangerequest == message) //切換輸入法訊息

return cedit::windowproc(message, wparam, lparam);

}bool chexeditctrl::onensetfocu***()

return true;

}bool chexeditctrl::onenkillfocu***()

m_bimmgetopenstatus = 0;

} return true;

}

//應用示例

// mfc_1dlg.h : 標頭檔案

//#pragma once

#include "hexeditctrl.h"

// cmfc_dlg 對話方塊

class cmfc_dlg : public cdialog

CEdit只允許十六進製制的資料輸入

網上說的大部分方法是過載cedit,重寫onchar函式,在歷遍進行資料判斷,如果只實現這乙個功能完全不必過載cedit,只需重寫pretranslatemessage函式即可,函式新增方法,選中對話方塊類,右鍵屬性在過載的函式中找。實現方法如下 bool cwindowsrouterdlg pre...

只允許程式執行乙個例項

有兩類方法 第一類 判斷程序是否存在,如果存在則直接退出。第二類 最簡單也是最準確的方法,用命名的互斥物件。如下 m hmutex 可以是成員變數,全域性變數或者是區域性變數 m hmutex createmutex null,false,t not imide if m hmutex 在呼叫 cr...

C 只允許啟動乙個程序

方法一 只禁止多個 程序執行 stathread public static void main else 方法二 禁止多個 程序執行,並當重複執行時啟用以前的 程序 stathread public static void main else public static process runni...