第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

程序也沒(méi)有任何報(bào)錯(cuò)信息,求大俠指點(diǎn)下到底是煩什么?怎么修改?

程序也沒(méi)有任何報(bào)錯(cuò)信息,求大俠指點(diǎn)下到底是煩什么?怎么修改?

如注釋所示,我想在按鈕上實(shí)現(xiàn)四種點(diǎn)擊響應(yīng),在運(yùn)行的時(shí)候,其它的都行,就是無(wú)法實(shí)現(xiàn)“左鍵雙擊變藍(lán)色”的效果a=uicontrol(gcf,'style','push','BackgroundColor',[0,0.7,0],...'ButtonDownFcn',['if strcmp(get(gcf,''SelectionType''),''open'')'...%鼠標(biāo)右鍵雙擊時(shí)按鈕變黃色'set(gco,''style'',''push'',''backgroundcolor'',[1,1,0]);'...'else set(gco,''style'',''push'',''backgroundcolor'',[1,0,0]);'...%鼠標(biāo)右鍵單擊變紅色'end'],...'Callback',['if strcmp(get(gcf,''SelectionType''),''open'')'...%鼠標(biāo)左鍵雙擊變藍(lán)色'set(gco,''style'',''push'',''backgroundcolor'',[0,0,1]);'...'else set(gco,''style'',''push'',''backgroundcolor'',[0,0,0]);'...%鼠標(biāo)左鍵單擊變黑色'end']);
查看完整描述

1 回答

?
交互式愛(ài)情

TA貢獻(xiàn)1712條經(jīng)驗(yàn) 獲得超3個(gè)贊

你的要求可能無(wú)法實(shí)現(xiàn)。

1、對(duì)于除listbox之外的其它所有控件類型,當(dāng)控件處于活動(dòng)狀態(tài)(Enable為on)時(shí),任何點(diǎn)擊鼠標(biāo)左鍵的動(dòng)作(包括同時(shí)按下Ctrl或Shift鍵),窗口的SelectionType屬性都會(huì)設(shè)置為normal。

2、對(duì)于處于活動(dòng)狀態(tài)的列表框,雙擊鼠標(biāo)左鍵會(huì)把窗口的SelectionType設(shè)為open。換言之,列表框是唯一能響應(yīng)雙擊鼠標(biāo)左鍵的控件類型。

3、對(duì)于所有的鼠標(biāo)右鍵動(dòng)作,窗口的SelectionType屬性能夠正常體現(xiàn)(單擊為alt,雙擊為open)。

4、如果控件處于不活動(dòng)或禁用狀態(tài)(Enable屬性為inactive或off),鼠標(biāo)的按鍵動(dòng)作能夠被窗口SelectionType屬性正常體現(xiàn)。

所以,如你所寫(xiě)的代碼,對(duì)于按鈕類型的控件,是不可能捕捉到鼠標(biāo)的左鍵雙擊動(dòng)作的。要想實(shí)現(xiàn)你所說(shuō)的變色,只有把按鈕設(shè)置為非活動(dòng)狀態(tài),例如:


a=uicontrol(gcf,'style','push','BackgroundColor',[0,0.7,0],'Enable','inactive',...    'ButtonDownFcn',[ ...    'if strcmp(get(gcf,''SelectionType''),''open'')'...%右鍵雙擊時(shí)變黃色    '  if strcmp(lastclick,''left'')'...%左鍵雙擊變藍(lán)色    '    set(gco,''backgroundcolor'',[0,0,1]);'...    '  else,' ...    '    set(gco,''backgroundcolor'',[1,1,0]);'...    '  end,' ...    'elseif strcmp(get(gcf,''SelectionType''),''alt'')' ...    '    lastclick=''right'';'...    '    set(gco,''backgroundcolor'',[1,0,0]);'...%鼠標(biāo)右鍵單擊變紅色    'else' ...    '    lastclick=''left'';'...    '    set(gco,''backgroundcolor'',[0,0,0]);'...%鼠標(biāo)左鍵單擊變黑色    'end']);

這里,有必要說(shuō)明幾個(gè)細(xì)節(jié)問(wèn)題:

1、對(duì)于鼠標(biāo)雙擊按鍵的動(dòng)作,其實(shí)會(huì)產(chǎn)生兩個(gè)消息:第一個(gè)是normal或alt(區(qū)分左右鍵);第二個(gè)為open(不區(qū)分左右鍵),但可以借助于前一個(gè)消息來(lái)區(qū)分。

2、當(dāng)控件處于活動(dòng)狀態(tài)時(shí),按鼠標(biāo)左鍵會(huì)執(zhí)行控件的Callback回調(diào)函數(shù),但不設(shè)置窗口的CurrentPoint屬性,也不執(zhí)行控件的ButtonDownFcn以及窗口的WindowButtonDownFcn回調(diào)函數(shù);而對(duì)于控件處于不活動(dòng)狀態(tài)或者按鼠標(biāo)右鍵的情況,在執(zhí)行ButtonDownFcn之后,還會(huì)執(zhí)行窗口的WindowButtonDownFcn回調(diào)函數(shù)。

3、從MFC類的繼承關(guān)系來(lái)說(shuō),控件也是一種窗口,當(dāng)鼠標(biāo)點(diǎn)擊按鍵時(shí),鼠標(biāo)消息是被按鍵捕獲的,所以,F(xiàn)igure的SelectionType屬性是由MATLAB在后臺(tái)進(jìn)行設(shè)置的,而也正因如此,才會(huì)根據(jù)鼠標(biāo)左右按鍵、控件類型以及是否活動(dòng)而存在比較復(fù)雜的邏輯。 

順便說(shuō)一聲,這樣寫(xiě)回調(diào)函數(shù)太費(fèi)勁,我在2000年之前曾經(jīng)寫(xiě)過(guò)上百行這樣的回調(diào)函數(shù),后來(lái)除非對(duì)于非常簡(jiǎn)單的回調(diào)函數(shù),一般都不用這種寫(xiě)法了。

 



查看完整回答
反對(duì) 回復(fù) 2023-02-15
  • 1 回答
  • 0 關(guān)注
  • 62 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)