锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
浠嬬粛:
鍒╃敤Win32 鏉ュ鐞哅yGui 3.0.1鐨勪腑鏂囪緭鍏ャ?br>
瀹炵幇:
閰嶇疆榪樻槸鍙傝冪綉涓婄殑閰嶇疆錛屼富瑕佸啀鍔犱腑鏂囧瓧浣?
濡備笅:
鈻?nbsp;鏇存敼閰嶇疆鏂囦歡MyGUI3.0\Media\MyGUI_Media涓?br>
鈽?nbsp;core_font.xml娣誨姞
<Resource type="ResourceTrueTypeFont" name="font_Simhei">
<Property key="Source" value="simhei.ttf"/>
<Property key="Size" value="19"/>
<Property key="Resolution" value="50"/>
<Property key="Antialias" value="false"/>
<Property key="SpaceWidth" value="4"/>
<Property key="TabWidth" value="8"/>
<Property key="CursorWidth" value="2"/>
<Property key="Distance" value="6"/>
<Property key="OffsetHeight" value="0"/>
<Codes>
<Code range="33 126"/>
<Code range="19969 40869"/>
<Code hide="128"/>
<Code hide="1026 1039"/>
<Code hide="1104"/>
</Codes>
</Resource>
鈽?nbsp;simhei.ttf瑕佷粠緋葷粺鐩綍涓嬬殑Fonts鎷瘋礉鍒板綋鍓嶇洰褰曘?br>
鈽?nbsp;core_settings.xml涓皢榛樿瀛椾綋鏀規垚
<MyGUI type="Font">
<Property key="Default" value="font_Simhei"/>
</MyGUI>
榪愯Demo瑙e喅鏂規: solution_directx銆?br>
緇橞aseManager娣誨姞Win32娑堟伅鍝嶅簲鍑芥暟void ProcIO(UINT messgae, WPARAM wParam, LPARAM lParam ).
case WM_CHAR:
case WM_KEYDOWN:
case WM_KEYUP:
{
base::BaseManager *baseManager = (base::BaseManager*)GetWindowLongPtr(hWnd, GWL_USERDATA);
if ( baseManager )
baseManager->ProcIO( uMsg , wParam , lParam );
break;
}
ProcIO涓昏鏄
WM_CHAR 瀛楃鍝嶅簲
WM_KEYDOWN/WM_KEYUP 鎸夐敭鍝嶅簲
鍦ㄥ鐞嗗瓧絎﹀搷搴旂殑鏃跺欓渶瑕佸尯鍒嗚緭鍏ユ硶鐘舵佸拰闈炶緭鍏ユ硶鐘舵佺殑瀛楃鍝嶅簲銆?br>
case WM_CHAR:
{
if ( ImmIsIME( GetKeyboardLayout(0) ))
ProcChar( wParam , lParam );
else
{
MyGUI::InputManager::getInstance().injectKeyPress(MyGUI::KeyCode::Enum(scan_code), code_point);
};
}
break;
ProcChar鍑芥暟涓昏澶勭悊涓枃銆傚洜涓烘眽瀛椾負8涓瓧鑺備細鍝嶅簲WM_CHAR2嬈°傞渶瑕佽繘琛岀粍鍚堜竴嬈°?br>WM_KEYDOWN錛氫富瑕佸鐞嗕竴浜沇idget瀛楃杈撳叆銆傚悓鏃惰繕鍙互鍋氬叏灞閿洏淇℃伅鐩戞帶錛堝揩鎹烽敭錛?
鍒ゆ柇涓涓猈idget鏄惁鍙互榪涜瀛楃杈撳叆:
\MyGUIEngine\include\MyGUI_InputManager.cpp
bool InputManager::isKeyInputCapture()
{
if( !mWidgetKeyFocus ) return false;
std::string strName = mWidgetKeyFocus->getTypeName();
if ( strName == "ComboBox" ||
strName == "Edit" ||
strName == "Message" ||
strName == "List")
{
return true;
}
return false;
}
鐢變簬閲囩敤Win32閿洏娑堟伅錛屽簲璇ュ睆钄借嚜甯IS鐨勩?br>Input\OIS\InputManager.cpp
void InputManager::captureInput()
{
if (mMouse) mMouse->capture();
//mKeyboard->capture();
}
鍦―emo涓洃鎺ф寜閿秷鎭? DemoKeeper鍔熻兘鏄疷IManager )銆?br>
void DemoKeeper::injectKeyPress(MyGUI::KeyCode _key, MyGUI::Char _text)
{
if (_key == MyGUI::KeyCode::Grave)
{
mConsole->setVisible(!mConsole->isVisible());
return;
}
else if (_key == MyGUI::KeyCode::F2 )
{
MyGUI::Message::createMessageBox("Message", "Info", "Press F2 ", MyGUI::MessageBoxStyle::Ok | MyGUI::MessageBoxStyle::IconInfo);
return;
}
else if (_key == MyGUI::KeyCode::F3 )
{
MyGUI::Message::createMessageBox("Message", "Info", "Press F3 ", MyGUI::MessageBoxStyle::Ok | MyGUI::MessageBoxStyle::IconInfo);
return;
}
base::BaseManager::injectKeyPress(_key, _text);
}
鏈鍚庨檮涓婃簮鐮佽В鍐蟲柟妗?
/Files/expter/MyGuiDemo.rar
鍥劇墖錛?img border=0 alt="" src="http://www.shnenglu.com/images/cppblog_com/expter/mygui.jpg" width=417 height=317>
]]>
閽堝鑷繁鐨勪竴涓唴瀛樻睜濡備綍嫻嬭瘯鍏舵ц兘.
浠嬬粛錛?br>1.鍐呭瓨姹犳祴璇曠敤渚嬬殑閫夊彇.
1.鍗曠嚎紼嬬殑鍒嗛厤鍜岄噴鏀?
2.鍐呭瓨鍥炴敹.
3.鎬ц兘鍏蟲敞.
鍏充簬鍐呭瓨姹犵殑璁捐鍜屽疄鐜扮綉涓婇亶鍦伴兘鏄紝鏈枃涓嶅叿浣撲粙緇嶅叧浜庡唴瀛樻睜鐨勫叿浣撳疄鐜板拰鏂瑰紡錛屼富瑕佹槸浠嬬粛璁捐涓涓唴瀛樻睜鎬庢牱鍘繪祴璇曞叾鎬ц兘鍜屽畨鍏ㄥ鐞嗭紝鏈変竴涓紑婧愮殑鍐呭瓨姹犻」鐩畉cmalloc涔熸湁浠嬬粛寰堝錛屼絾鏄負浜嗘弧瓚沖縐嶉渶姹傦紝浠g爜榪囦簬搴炲ぇ錛屾渶鍚庢垜鐢ㄦ潵嫻嬭瘯鍒嗛厤鎬ц兘嫻嬭瘯銆?/p>
1涓唴瀛樻睜鐨勬祴璇曠敤渚嬪簲璇ュ寘鍚細
1錛夎欏圭洰鍐呭瓨鍒嗛厤姒傜巼闅忔満鎬?
2錛夊悓鏃朵繚璇侀噴鏀劇殑闅忔満鎬?
3錛夊彲浠ユ敮鎸佸縐嶅垎閰嶆柟寮忥紙涓嶅悓澶у皬錛屼笉鍚屽璞″弬鏁扮瓑錛?
瑕佽揪鍒頒笂闈㈣姹傚垯鍙互璁捐
1.涓涓暟緇勬潵璁懼畾闇瑕佸垎閰嶇殑澶у皬銆?br> long arr[ ] = { 16,32,64,128,256,512,1024,2048,5120,5130,7000,6000,10240,15000,20000};
2.鏍規嵁闇姹傛潵鎸囧畾鍚勪釜澶у皬鐨勫垎閰嶅嚑鐜囷紝榪欏ソ姣旀湁澶氬皯姒傜巼閫変腑鏌愪釜鏁幫紙闇鐗瑰畾鐨勫垎閰嶏級:
3.閲婃斁淇濊瘉闅忔満鎬с?br> 浠涔堟椂鍊欓噴鏀撅紝浠ュ強鍒嗛厤浜嗗仛浠涔堢敤錛岄兘鏄張搴旂敤灞傚喅瀹氱殑錛屾墍浠ラ渶瑕佹妸鍒嗛厤鍑烘潵鐨勫唴瀛橀氳繃涓涓鍣ㄦ潵瀛樺偍.
鐢變簬鍒嗛厤鏄殢鏈烘э紝閭d箞閲婃斁鐨勬椂鍊欎篃淇濊瘉浜嗛殢鏈烘с?br>
4.鏀寔澶氱鍒嗛厤鏂瑰紡銆?br> A. 瀵硅薄鍒嗛厤:
B.鐩存帴鍒嗛厤
5.鎬ц兘嫻嬭瘯
涓轟簡嫻嬭瘯鎬ц兘錛屾垜閫夋嫨浜嗗垎閰?000W嬈★紝鍏朵腑鐢ㄤ竴涓鍣ㄤ繚瀛樺垎閰嶇殑鏁版嵁錛岀劧鍚庡綋瀹瑰櫒鍒拌揪100W鐨勬椂鍊欓噴鏀?0W鏁版嵁(淇濊瘉鏁版嵁姝e湪浣跨敤錛岄殢鏈洪噴鏀?銆?br> 涓嬮潰鐨凙lloc time 鍙槸緇熻鐨凙lloc鏃墮棿绱姞錛孎ree time鍙槸緇熻鐨凢ree 鏃墮棿绱姞錛孴otal time璁板綍榪欐嫻嬭瘯鎬誨叡鑺辮垂鏃墮棿銆?/p>
PS錛?br>1.鍐呭瓨姹犵殑浣跨敤錛?br>
2.鍐呭瓨姹犵殑浠g爜錛?br> 1) 瀹炵幇鍏ㄦ槸鍒╃敤鐨刦reelist,鍑忓皯鍐呭瓨寮閿錛屽垎閰嶉熷害錛岀洿鎺ュ畾浣嶃?br> 2) 綆$悊閮芥槸閫氳繃宸ュ巶綾繪潵鍚屼竴鐨勭鐞嗐?br> 3) 鎸囧畾鍒嗛厤絳栫暐.
婧愮爜涓篤s2008鐗堟湰...
/Files/expter/Pool.rar
鍏充簬瀹炵幇鏈夌枒闂拰寤鴻錛屽彲浠ユ彁鍑哄疂璐電殑鎰忚銆傘?/p>
鐪嬩竴涓緥瀛愬氨鏄庣櫧浜嗭細 紼嬪簭浠g爜*鍦ㄥ璇濇涓彇鍑烘暟鎹紝騫跺悜鍏朵粬紿楀彛鍙戦佹秷鎭拰鏁版嵁錛屽皢鏁版嵁鎸囬拡浣滀負涓涓弬鏁板彂閫?/
void CTestDlg2::OnCommBtn()
{
char szOut[30];
GetDlgItemText(IDC_OUT,szOut,30);
m_pParent->SendMessage(WM_DLG_NOTIFY,(WPARAM)szOut);
}
/*鍦ㄦ秷鎭帴鏀剁獥鍙d腑*/
/*鏄犲皠娑堟伅澶勭悊鍑芥暟*/
ON_MESSAGE(WM_DLG_NOTIFY,OnDlgNotifyMsg)
/*鍦ㄨ鍥句腑緇樺埗鍑哄瓧絎︿覆 m_szOut*/
void CMy53_s1View::OnDraw(CDC* pDC)
{
CMy53_s1Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
pDC->TextOut(0,0,"Display String");
pDC->TextOut(0,20,m_szOut);
}
/*澶勭悊閫氱煡娑堟伅錛屼繚瀛樹俊鎭茍鏇存柊鏄劇ず*/
LONG CMy53_s1View::OnDlgNotifyMsg(WPARAM wP,LPARAM lP)
{
m_szOut=(char*)wP;
Invalidate();
return 0;
}
涓涓瓧絎︿覆鐨勫湴鍧閫氳繃WPARAM鏉ユ爣璇嗭紝鍐嶉氳繃Windows娑堟伅鍙戦佸嚭鍘伙紱涔嬪悗鍦ㄦ秷鎭鐞嗗嚱鏁頒腑WPARAM鎺ュ彈鍒扮殑鍙傛暟灝辨槸璇ュ湴鍧錛岀劧鍚庡氨鍙互瀵硅鍦板潃榪涜鎿嶄綔浜嗭綖锝烇綖
榪欐槸Windows娑堟伅鏈哄埗涓粡甯哥敤鍒扮殑涓や釜data type錛屽懙鍛點?/p>