1. 程式人生 > >VC6.0 MFC點選編輯框彈出對話方塊

VC6.0 MFC點選編輯框彈出對話方塊

在寫介面的用於觸屏時,往往需要編輯框彈出盤來進行輸入,下面就將我思路寫一下吧,

1.剛開始在網讓找一些這方面的資料,結果在論壇中有發現這樣一個帖子,見面的連結:

看過之後有一些思路,就是派生一個編輯框類,在派生的類中處理PreTranslateMessage,

於是寫程式碼如下:

BOOL CMyEdit::PreTranslateMessage(MSG* pMsg)  
{
// TODO: Add your specialized code here and/or call the base class
if (pMsg->message == WM_LBUTTONDOWN)
{
HWND hWnd = ::GetFocus();


int iID=::GetDlgCtrlID(hWnd);
if(iID==IDC_EDIT1)
{
AfxMessageBox(_T("點我!"));
}
}
return CEdit::PreTranslateMessage(pMsg);
}

可是還不能達到我的預期效果,第一次點選了編輯框1後無反應,在點二次編輯框1後,每次再點對話方塊的任何位置還是會彈出對話方塊,

於是想,難道這種思路不對?

但是突然間想到,在執行完AfxMessageBox(_T("點我!"));後接著執行了return CEdit::PreTranslateMessage(pMsg);

所以跟以前沒有什麼 區別,於是在AfxMessageBox(_T("點我!"));後追加 return true;這樣執行完

AfxMessageBox(_T("點我!"));後

就不執行了return CEdit::PreTranslateMessage(pMsg);試了一下,第一次點選了編輯框1後無反應,在點二次編輯框1後彈出相應的提示,

每次再點對話方塊的任何位置不會彈出對話方塊,目標達到高興中....

但是問題又來了, 假如在對話中有兩個編輯框,一個為編輯框1,另一個為編輯框2,則再按上面的程式碼寫:

BOOL CMyEdit::PreTranslateMessage(MSG* pMsg)  
{
// TODO: Add your specialized code here and/or call the base class


if (pMsg->message == WM_LBUTTONDOWN)
{
HWND hWnd = ::GetFocus();
int iID=::GetDlgCtrlID(hWnd);
if(iID==IDC_EDIT1)
{
AfxMessageBox(_T("1"));
}

else if(iID==IDC_EDIT2)
{
AfxMessageBox(_T("2"));

}

}
return CEdit::PreTranslateMessage(pMsg);
}

這樣執行程式,發麵在第一次點選了編輯框1後,如前面一樣,無反應,在第二次編輯框1才執行AfxMessageBox(_T("1"));

再點編輯框2,還是會執行AfxMessageBox(_T("1"));無語了,思來想去,原來是HWND hWnd = ::GetFocus();在做怪,因為

這是在PreTranslateMessage中執行HWND hWnd = ::GetFocus();所以編輯框還沒有得到焦點,此時還是編輯框1的

焦點,把以還是執行AfxMessageBox(_T("1"));於是想著,不在PreTranslateMessage處理單擊事件了,

直接在Edit中的單擊事件中處理,於是程式碼如下:

void CMyEdit::OnLButtonUp(UINT nFlags, CPoint point) 
{
// TODO: Add your message handler code here and/or call default
HWND hwnd=::GetFocus();
int iID=::GetDlgCtrlID(hwnd);
if(iID==IDC_EDIT1)
{
AfxMessageBox("1");
}
   else if(iID==IDC_EDIT2)
{
AfxMessageBox("2");
}
CEdit::OnLButtonUp(nFlags, point);
}

這樣執行檔案,效果達到了!!!

相關推薦

VC6.0 MFC編輯對話方塊

在寫介面的用於觸屏時,往往需要編輯框彈出盤來進行輸入,下面就將我思路寫一下吧, 1.剛開始在網讓找一些這方面的資料,結果在論壇中有發現這樣一個帖子,見面的連結: 看過之後有一些思路,就是派生一個編輯框類,在派生的類中處理PreTranslateMessage, 於

android仿微信、QQ等聊天介面,實現輸入軟鍵盤、其他區域收起軟鍵盤,預設滑動至最低端

如圖所示,點選輸入框及選擇圖片和傳送按鈕時軟鍵盤顯示且不消失,點選其他區域,則隱藏軟鍵盤。 主要程式碼如下: override fun dispatchTouchEvent(ev: MotionEvent?): Boolean { if (ev!!.getAction() ==

android 實現輸入日期選擇對話方塊(DatePickerDialog)

前言 這裡我們實現一個功能,點選日期輸入框(EditText),即可彈出日期選擇對話方塊(DatePickerDialog),等使用者選擇日期後,將使用者選擇的日期顯示在日期輸入框。 1.activity_main.xml 這裡只有一個TextView和EditText。

文字下拉並賦值

實現下面效果  窗體:Form1: 一:窗體佈局:文字框一個或多個,下拉框一個,初始化隱藏,定義全域性變數 string click_value = ""; private void Form1_Load(object sender, EventArgs e) {

Input日期選項

測試地址:http://down.admin5.com/demo/code_pop/18/1299/ 效果圖片: 後臺程式碼: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:

MFC按鈕開啟檔案選擇對話方塊

函式名:OnBnClickedOpenFileButton 函式功能:通過點選一個按鈕實現開啟檔案選擇對話方塊 引數:無 返回值:void 作者:weekdawn void CexeDemoDlg:

VC++6.0 MFC中獲取編輯內容

1、方法一:設定編輯框變數 在MFC的基本對話方塊中,建立一個編輯框控制元件,為控制元件新增一個型別為CEdit的變數 m_Edit 。 CString str; m_Edit.GetWindowText(str); 2、方法二:通過ID獲取 CString

C#:按鈕,輸入,輸入並獲取內容

1.起因 一開始是直接用 TextBox接收使用者的輸入內容,但是有時候不想在窗體上加控制元件,所以就想到了另一種辦法,彈出一個輸入框,輸入並獲取內容,之後輸入框又消失不見,不佔位置。 2.用法 先要在專案中引入框架   Microsoft.VisualStudio

ListViewitem底部popupWindow刪除、修改、取消選擇

先看一下效果: 點選單個item彈出選擇框,可以選擇刪除或者修改。刪除單條item,或者跳轉到修改頁面。 listview的佈局: <?xml version="1.0" encoding="utf-8"?> <LinearLay

ios學習筆記之-一個按鈕撥打電話提示

按鈕的程式碼就不寫了。直接寫主要程式碼。 <key>LSApplicationQueriesSchemes</key> <array> <string>tel</string> <string>telp

bootstrap刪除按鈕確認實現

<%@ page language="java" import="com.student.servlet.*" contentType="text/html; charset=UTF-8"

按鈕Alert遮罩層效果的提示程式碼

<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-CN" lang="zh-CN"> <head> <title>經過改善優化的Alert彈出提示效果</titl

DialogFragment常見問題(黑色稜角、編輯外關閉軟鍵盤..)

1、設定對話方塊外部的背景為完全透明:      在onStart()方法中加入以下程式碼: @Override public void onStart() { super.onStart(); /** * 將對話方塊

dwz問題之動態生成的查詢帶回,沒有(動態生成的dom,不能dialog)

一、問題 頁面通過點選事件,生成一個查詢帶回按鈕,點選這個按鈕,應該彈出彈框,實際上是頁面直接更換了連結。 二、原因 通過點選事件生成的按鈕,不能使用dwz的功能,原因是沒有繫結,需要再次繫結這些功能。 三、結果 在dwz的 dwz.ui.js

listview根據條目位置軟鍵盤,內容不被遮擋,item移動到軟鍵盤上方

ItemHeight即點選的條目的高度,對,兩行程式碼,就這麼簡單。再監聽下軟鍵盤開啟放裡面就是,百度有。原生api不懂就百度。 int y = ListView.getBottom() - ItemHeight; ListView.setSelectionFromTop(Postion + L

對話方塊時,“取消”表單仍然提交的解決方法

大家在實際工作中用js的時候可能會遇到這種情況:confirm()彈出的對話方塊,當用戶點選“取消”的時候,表單仍然提交的問題; 一般來說這種問題產生的原因有一下幾點:1:在判斷comfirm ()為“取消”的時候,我們沒有返回false;即:if(!comfirm(“確定要提交表單嗎?”)){ &

Jquery 圖片在層顯示大圖 (很好用)

效果圖片: 1.點選前的效果: 2.點選後的效果: html程式碼: <td width="350"> <img height="100" width="100" src="http://or7y3wqnj.bkt.clouddn.com/${f

下載連結空白頁面

分為兩種情況 如果下載由js觸發而非a標籤,則可以在彈出的頁面中進行如下修改: <head>與</head>之間加入: <base target="tempiframe" />  在<body>&l

聯絡我們臨時QQ對話方塊

一般企業網站或電商網站都有聯絡我們的功能。 為了能方便快速聯絡,提高使用者體驗,需要點選聯絡我們按鈕就能讓使用者與商家直接溝通。 這樣就需要用到以下程式碼: <a href="http://wpa.qq.com/msgrd?v=3&uin=商家QQ號(220xxxxxx

案例:li標籤對應的索引

需求:點選li標籤,彈出對應的索引 先看效果: html結構: <ul id="ul1"> <li>我是li標籤1</li> <li>我是li標籤2</li> <li>