ዝርዝር ሁኔታ:

የተከተተ የመስኮት ሥራ አስኪያጅ 10 ደረጃዎች
የተከተተ የመስኮት ሥራ አስኪያጅ 10 ደረጃዎች

ቪዲዮ: የተከተተ የመስኮት ሥራ አስኪያጅ 10 ደረጃዎች

ቪዲዮ: የተከተተ የመስኮት ሥራ አስኪያጅ 10 ደረጃዎች
ቪዲዮ: ዲጂታል ቴክኖሎጂ ምንድነው ? | Bete Essag tv 2024, ህዳር
Anonim
የተከተተ የመስኮት አስተዳዳሪ
የተከተተ የመስኮት አስተዳዳሪ
የተከተተ የመስኮት አስተዳዳሪ
የተከተተ የመስኮት አስተዳዳሪ
የተከተተ የመስኮት አስተዳዳሪ
የተከተተ የመስኮት አስተዳዳሪ
የተከተተ የመስኮት አስተዳዳሪ
የተከተተ የመስኮት አስተዳዳሪ

ይህ ፕሮጀክት የ LCD ፓነል እና የንክኪ ማያ ገጽ ባለው በተገጠመ ማይክሮ መቆጣጠሪያ ላይ ተንቀሳቃሽ ተደራራቢ መስኮቶች ያሉት የመስኮት ሥራ አስኪያጅ እንዴት እንደሚተገበር ያሳያል። ይህንን ለማድረግ በንግድ የሚገኙ የሶፍትዌር ፓኬጆች አሉ ነገር ግን እነሱ ዋጋ ያስከፍላሉ እና ዝግ ምንጭ ናቸው። MiniWin ተብሎ የሚጠራው ይህ ነፃ እና ክፍት ምንጭ ነው። እሱ ሙሉ በሙሉ በሚስማማ C99 ውስጥ የተፃፈ ሲሆን በ C ወይም C ++ መተግበሪያ ውስጥ ሊያገለግል ይችላል። የ MiniWin ግቦች ለመጠቀም ቀላል ፣ ለመለወጥ ቀላል ፣ ሊሰፋ የሚችል ፣ ወደ ብዙ የሃርድዌር ተንቀሳቃሽ እና በጣም ሀብትን የማይራቡ ናቸው።

እንዲሁም መስኮቶችዎን ለማስተዳደር ኮዱን መስጠቱ MiniWin የተጠቃሚ በይነገጽ መቆጣጠሪያዎች ስብስብ አለው - አዝራሮች ፣ ተንሸራታቾች ፣ የእድገት አሞሌዎች ፣ ዛፎች ወዘተ። የተለያዩ አይነቶች ብዙ መስኮቶች ወይም ተመሳሳይ ዓይነት ብዙ አጋጣሚዎች ሊኖሩዎት ይችላሉ። መስኮቶች በዙሪያቸው ሊንቀሳቀሱ ፣ ሊለወጡ ፣ ሊጨምሩ ፣ ሊቀንሱ ፣ ሊዘጉ ይችላሉ - በትላልቅ የመስኮት አስተዳዳሪዎች ውስጥ በመስኮቶች የሚያደርጉት የተለመዱ ነገሮች ሁሉ። ትሪቲፕ ቅርጸ-ቁምፊዎችን ከርኒንግ እና ፀረ-ተውላጠ ስም (ጽሑፍን smooooooth ያደርገዋል) እንዲሁም ለጽሑፍ አተረጓጎም ይደገፋሉ።

በእያንዳንዱ መስኮት ውስጥ የደንበኛ ቦታ (በጠረፍ ውስጥ እና ከላይኛው አሞሌ በታች ያለው ቦታዎ) አለዎት። በዚህ ላይ መገናኛ ለማድረግ መቆጣጠሪያዎችን ማከል ይችላሉ ወይም የፈለጉትን ለመሳል ውስጠ-ግንቡ የግራፊክስ ቤተ-መጽሐፍትን መጠቀም ይችላሉ። ሁሉም የግራፊክስ ቤተ -መጽሐፍት ተግባራት መስኮት ያውቃሉ። መስኮትዎ የት እንዳለ ፣ የሚደራረብበት ወይም ቢቀንስ መጨነቅ አያስፈልግዎትም።

የራስዎን መስኮቶች ከማድረግ በተጨማሪ ለመደመር በጣም ቀላል የሆኑ አንዳንድ መደበኛ መገናኛዎች ተካትተዋል - ለምሳሌ የማረጋገጫ መገናኛዎች (እሺ ወይም አዎ/አይ አዝራሮች ብቻ) ፣ የጊዜ/ቀን ቅንጅቶች ፣ የፋይል መራጮች ፣ የቀለም መራጮች ወዘተ።

MiniWin መደበኛ የዊንዶውስ ሥራ አስኪያጅ የንድፍ መልእክት ወረፋ ስርዓት ይጠቀማል። ዊንዶውስ እርስ በእርስ እና የመስኮቱ አቀናባሪ በመልእክቶች በኩል መስተጋብር መፍጠር ይችላል። ነገሮችን በቀጥታ ለማከናወን ተግባሮችን አይጠሩም ፣ በወረፋ ላይ መልእክት ያክሉ እና የመስኮቱ አቀናባሪ ለእርስዎ ያፀድቃል።

MiniWin ከማይክሮ መቆጣጠሪያ አቅራቢዎች ST ፣ NXP እና Renesas ንኪ ማያ ገጽ ማሳያዎች ጋር ወደ መደበኛ የልማት ሰሌዳዎች ተላል hasል። ለእነዚህ ሁሉ መሣሪያዎች የሃርድዌር ነጂዎች እና ምሳሌ ፕሮጄክቶች አሉ። የተከተተ ሃርድዌርዎን ከማግኘትዎ በፊት የተጠቃሚ በይነገጽ ኮድዎን ማስመሰል እንዲችሉ MiniWin ለዊንዶውስ ወይም ለሊኑክስ ሊሠራ ይችላል።

MiniWin የኮድ ጀነሬተር አለው። የሰው ሊነበብ የሚችል የ JSON ፋይል ለመፍጠር መስኮቶችዎን እና መቆጣጠሪያዎችዎን በቀላሉ መግለፅ ይችላሉ እና የኮድ ጄኔሬተር ፋይሉን ይተነትናል እና ኮዱን ለእርስዎ ይፈጥራል (ብዙ ብዙ ምሳሌዎች አሉ)። እሱ ሊገነቡ የሚችሉ የዊንዶውስ ወይም የሊኑክስ የተሟላ የማስመሰል መተግበሪያዎችን ይፈጥራል እና ከእርስዎ MiniWin መስኮቶች ጋር የእርስዎ የማስመሰል LCD ማሳያ አለ። እርስዎ በትክክል ተመሳሳይ የመነጨ ኮድ ወስደው ወደ የተከተተ ፕሮጀክት ውስጥ መጣል እና በተከተተው ሃርድዌርዎ ላይ በኋላ ተመሳሳይ መስኮቶችን እና መቆጣጠሪያዎችን የሚያሳይ ተመሳሳይ ኮድ ሊኖራቸው ይችላል።

MiniWin በተከተተው መሣሪያ ላይ ምንም የአሠራር ድጋፍ አያስፈልገውም። ሁሉም በአንድ ክር ይሠራል። MiniWin በተካተተ አንጎለ ኮምፒውተር ላይ ከሚሠራው RTOS ጋር ሊዋሃድ ይችላል እና MiniWin ን ከ FreeRTOS ጋር የሚያዋህዱ ምሳሌዎች አሉ።

ይህ አስተማሪ ቀድሞውኑ ከ QVGA ንክኪ ማያ ገጽ ማሳያ ጋር የሚመጣውን ርካሽ STM32F429 Discovery ሰሌዳ በመጠቀም MiniWin ን እንዴት በ STM32 M4 አንጎለ ኮምፒውተር ላይ ማስኬድ እንደሚቻል ያሳያል። እነዚህ ከኤሌክትሮኒክስ ክፍል አቅራቢዎ በቀላሉ ይገኛሉ።

MiniWin በመካከለኛ ክልል ጥቃቅን ተቆጣጣሪዎች እና ከዚያ በላይ ላይ ይሠራል።

አቅርቦቶች

STM32F429I-DISC1 የልማት ሰሌዳ እና የማይክሮ ዩኤስቢ ገመድ

STM32CubeIDE ነፃ የሆነውን ያውርዱ።

ደረጃ 1 - ኮዱን ማግኘት

ኮዱን ማግኘት
ኮዱን ማግኘት

በመጀመሪያ STM32CubeIDE መጫን ያስፈልግዎታል። ያንን ከ ST ድርጣቢያ ያገኛሉ። መመዝገብ አለብዎት እና እሱን ለማውረድ እና ለመጫን ትንሽ ጊዜ ይወስዳል። ሁሉም ነፃ ነው።

ያ በመጫን ላይ እያለ የ MiniWin ምንጭን ያውርዱ እና ይንቀሉት። ትልቅ ነው ፣ ግን እርስዎ ትንሽ ክፍል ብቻ ይጠቀማሉ። አረንጓዴውን '' Clone ወይም Download '' የሚለውን ቁልፍ እዚህ ጠቅ ያድርጉ…

github.com/miniwinwm/miniwinwm

ከዚያ ዚፕ አውርድ የሚለውን ይምረጡ። ይዘቶቹን ይንቀሉ።

ደረጃ 2 የምሳሌ ፕሮጀክት መገንባት

ምሳሌ ፕሮጀክት መገንባት
ምሳሌ ፕሮጀክት መገንባት
ምሳሌ ፕሮጀክት መገንባት
ምሳሌ ፕሮጀክት መገንባት

በመጀመሪያ አንድ ምሳሌ ፕሮጄክቶችን እንገንባ። ጥሩ ሰው MiniWinSimple ይባላል። STM32CubeIDE ን ያስጀምሩ እና ይህንን ያድርጉ

  1. ፋይል ይምረጡ | አስመጣ…
  2. አጠቃላይ ይክፈቱ እና ነባር ፕሮጀክት ወደ የሥራ ቦታ ይምረጡ። ቀጥሎ።
  3. አስስ የሚለውን ጠቅ ያድርጉ እና MiniWin ን ወደሚገለብጡበት ይሂዱ። ከዚያ ወደ STM32CubeIDE / MiniWinSimple / STM32F429 አቃፊ ይሂዱ። ጠቅ ያድርጉ አቃፊ ይምረጡ።
  4. በፕሮጀክት ውስጥ: MiniWinSimple_STM32F429 ን ምልክት ያድርጉ እና ከዚያ ጨርስን ጠቅ ያድርጉ።
  5. MiniWinSimple_STM32F429 ፕሮጀክት በፕሮጀክት አሳሽዎ ውስጥ ይታያል። ይምረጡት ከዚያ በፕሮጀክት | በግንባታ ፕሮጀክት ይገንቡት።
  6. አሁን የዩኤስቢ ገመድዎን በቦርዱ እና በኮምፒተርዎ ላይ ይሰኩ እና Run | አርም በመጠቀም ያሂዱ እና ሲወርድ አሂድ | ከቆመበት ይቀጥሉ። ለመጀመሪያ ጊዜ የማያ ገጽ ማስተካከያ ማሳያ ያገኛሉ ስለዚህ በ LCD ማሳያ ላይ የ 3 መስቀሎችን መሃል ይንኩ። አሁን በማሳያው ላይ ካለው መስኮት ጋር መስተጋብር መፍጠር ይችላሉ።

መስኮት ለማንቀሳቀስ በርዕሱ አሞሌ ይጎትቱት። የመስኮት መጠንን ለመለወጥ ከርዕስ አሞሌው በስተግራ ያለውን ነጭ የሶስት ማዕዘን አዶ ይጠቀሙ። MiniWin ጥቅም ላይ የዋሉ ማሳያዎች በጣም ትንሽ ስለሆኑ የ MiniWin መስኮቶች ድንበሮችን በመጎተት መጠናቸው ሊቀየር አይችልም። መስኮትን ለመቀነስ ፣ ለማሳደግ ወይም ለመዝጋት በርዕሱ አሞሌ በቀኝ በኩል ያሉትን አዶዎች ይጠቀሙ (መዝጋት ሊሰናከል ይችላል)። መስኮት ሲቀነስ ፣ የተቀነሱትን አዶዎች ዙሪያ ማንቀሳቀስ አይችሉም። ከታች ከግራ ወደ ቀኝ ይገነባሉ።

ደረጃ 3 የኮድ ጀነሬተርን ማሄድ

የኮድ ጀነሬተርን ማስኬድ
የኮድ ጀነሬተርን ማስኬድ

አሁን አንዳንድ የራሳችንን መስኮቶች በማመንጨት አዲሱን ኮድ ወደ ውስጥ በመጣል የምሳሌ ፕሮጄክቱን እንለውጣለን። ይህንን ለማድረግ የኮድ ጀነሬተርን እናካሂዳለን።

  1. የትእዛዝ ጥያቄን ይክፈቱ እና MiniWin ን ወደተገለበጡበት አቃፊ ይሂዱ እና ከዚያ ወደ መሳሪያዎች / CodeGen አቃፊ ይሂዱ።
  2. ለዊንዶውስ CodeGen.exe አስፈፃሚው ቀድሞውኑ ይገኛል። ለሊነክስ እርስዎ በመተየብ እሱን መገንባት አለብዎት። (የወረደውን አስፈፃሚ ማስኬድ ቢጨነቁ እርስዎ ግን ከምንጭ ለዊንዶውስ ሊገነቡ ይችላሉ ፣ ነገር ግን አጠናቃሪው እና የእድገት አከባቢው ተጭኗል። ለዝርዝሮች በሰነዶች አቃፊ ውስጥ የ MiniWin ሰነድን ይመልከቱ)።
  3. በዚህ አቃፊ ውስጥ አንዳንድ የ JSON ፋይሎች ምሳሌዎች አሉ። እኛ ምሳሌ_empty.json ን እንጠቀማለን። ለዊንዶውስ ወይም ለሊኑክስ ለማዋቀር መጀመሪያ ማረም ያስፈልግዎታል። በአርታዒው ውስጥ ይክፈቱት እና “TargetType” ን የሚያገኙበት የ “ሊኑክስ” ወይም “ዊንዶውስ” እሴቱን የኮድ ጀነሬተርን ወደሚያሄዱበት ይለውጡ።
  4. አሁን በትእዛዝ ጥያቄው ውስጥ codegen example_empty.json ን ይተይቡ።
  5. በ STM32CubeIDE ውስጥ ወደ ፕሮጀክትዎ ይሂዱ እና አቃፊ MiniWinSimple_Common ን ይክፈቱ። እዚያ ውስጥ ያሉትን ሁሉንም ፋይሎች ይሰርዙ።
  6. በ “MiniWinGen” ላይ በ “JSON” ፋይል ውስጥ “TargetName” ን በነባሪነት እንተወዋለን ስለዚህ ያ የመነጨ ኮድ አቃፊችን ስም ነው። MiniWin ን ወደሚገለብጡበት አቃፊ ይሂዱ እና ከዚያ MiniWinGen_Common አቃፊ ይሂዱ። አሁን እነዚህን ሁሉ ፋይሎች ይምረጡ እና በፕሮጀክትዎ MiniWinSimple_Common አቃፊ ውስጥ ወደ STM32CubeIDE ይጎትቱ እና ይጣሉ።
  7. አሁን በ STM32CubeIDE ውስጥ ፕሮጀክቱን እንደገና ይገንቡ እና እንደገና ያስጀምሩ እና አዲሱ የንድፍ መስኮትዎ ይታያል። ምሳሌ_ empty.json ማንኛውንም አይገልጽም ምክንያቱም በመስኮቱ ውስጥ ያለው ቁልፍ ጠፍቷል።

ደረጃ 4 - መስኮት ማከል

መስኮት ማከል
መስኮት ማከል

አሁን በ JSON ውቅረት ፋይል ውስጥ ሁለተኛ መስኮት እንጨምራለን እና ኮዱን እንደገና እናድሳለን።

1. በፅሁፍ አርታኢ ውስጥ example_empty.json ን ይክፈቱ።

2. በ “ዊንዶውስ” ክፍል ስር በአሁኑ ጊዜ አንድ መስኮት ብቻ ያለው የዊንዶውስ ትርጓሜዎች ድርድር አለ። ይህን ሁሉ ቅዳ…

{

“ስም”: “W1” ፣ “አርእስት”: “መስኮት 1” ፣ “X”: 10 ፣ “Y”: 15 ፣ “ስፋት”: 200 ፣ “ቁመት”: 180 ፣ “ድንበር”: እውነት ፣ “TitleBar”: እውነት ፣ “የሚታይ”: እውነት ፣ “የተቀነሰ”: ሐሰት}

እና 2 ትርጓሜዎችን በሚለያይ ኮማ እንደገና ይለጥፉት።

3. "W1" ን ወደ "W2" እና "መስኮት 1" ወደ "መስኮት 2" ይለውጡ። የማያ ገጽ ጥራት 240 ስፋት በ 320 ከፍታ መሆኑን ከግምት ውስጥ በማስገባት “X” ፣ “Y” ፣ “ስፋት” እና “ቁመት” ወደ አንዳንድ የተለያዩ እሴቶች ይለውጡ።

4. ፋይሉን ያስቀምጡ እና የኮድ ጀነሬተርን እንደገና ያሂዱ።

5. ፋይሎቹን እንደ ቀደመው ደረጃ ይቅዱ ፣ እንደገና ይገንቡ እና እንደገና ይድገሙ። አሁን በማሳያዎ ላይ 2 መስኮቶች ይኖሩዎታል።

ደረጃ 5 መቆጣጠሪያን ማከል

መቆጣጠሪያን ማከል
መቆጣጠሪያን ማከል

አሁን አንዳንድ መቆጣጠሪያዎችን ወደ አዲሱ መስኮትዎ እንጨምራለን። በቀደመው ደረጃ እንደነበረው ተመሳሳይ ፋይል ያርትዑ።

1. በመስኮት W1 ዝርዝር ውስጥ ከመጨረሻው ቅንብር በኋላ (“ተቀንሷል”: ሐሰት) ኮማ ያክሉ ከዚያም ይህንን ጽሑፍ ያክሉ

"MenuBar": እውነት ፣

"MenuBarEnabled": እውነት ፣ "MenuItems": ["ፍሬድ" ፣ "በርት" ፣ "ፔት" ፣ "አልፍ" ፣ "ኢያን"] ፣ "አዝራሮች" ፦ [{"ስም" ፦ "B1" ፣ "መለያ") "አዝራር 1" ፣ “ኤክስ”: 10 ፣ “ያ”: 10 ፣ “ነቅቷል”: እውነት ፣ “የሚታይ”: እውነት}]

ይህ ክፍል ከ 5 ንጥሎች ጋር የምናሌ አሞሌን ያክላል እና ያነቃዋል (የምናሌ አሞሌዎች በዓለም አቀፍ ደረጃ ሊሰናከሉ ይችላሉ ፣ ይሞክሩት)። እንዲሁም የነቃ እና የሚታይ አዝራርን ያክላል (እነሱ የማይታዩ ሆነው ሊፈጠሩ እና ከዚያ በኋላ በኮድ ውስጥ እንዲታዩ ማድረግ ይችላሉ)።

2. ኮዱን እንደገና ያድሱ ፣ ይቅዱ ፣ እንደገና ይገንቡ ፣ እንደበፊቱ ሁሉ እንደገና ይድገሙ።

ደረጃ 6 መቆጣጠሪያዎቹን አንድ ነገር እንዲያደርጉ ማድረግ

መቆጣጠሪያዎችን አንድ ነገር ማድረግ
መቆጣጠሪያዎችን አንድ ነገር ማድረግ

አሁን አንድ ነገር እንዲሠራ ለማድረግ የምንፈልገው መሠረታዊ የተጠቃሚ በይነገጽ አለን። ለዚህ ምሳሌ በመስኮት 1 ውስጥ ያለው አዝራር ሲጫን የቀለም መራጭ መገናኛን እናነሳለን።

በ STM32CubeIDE ውስጥ ወደ ፕሮጀክትዎ ይሂዱ እና የ MiniWinSimple_Common አቃፊን ይክፈቱ እና ከዚያ ፋይል W1.c ን ይክፈቱ (የዚህ ፋይል ስም ኮዱ ሲፈጠር በ JSON ፋይል ውስጥ ካለው የመስኮቱ “ስም” መስክ ጋር ይዛመዳል)።

በዚህ ፋይል ውስጥ የተግባር መስኮት_W1_message_function () ያገኛሉ። ይህን ይመስላል -

ባዶ መስኮት_W1_message_function (const mw_message_t *message) {MW_ASSERT (መልእክት! = (ባዶ *) 0 ፣ «ባዶ ጠቋሚ መለኪያ»); / * ቀጣዩ መስመር ተለዋዋጭ በአሁኑ ጊዜ ጥቅም ላይ ያልዋለ ስለሆነ የአቅራቢ ማስጠንቀቂያዎችን ያቆማል */ (ባዶ) መስኮት_W1_data; መቀየሪያ (መልእክት-> መልእክት_ይድ) {case MW_WINDOW_CREATED_MESSAGE: / * * ማንኛውንም የመስኮት መነሻነት ኮድ እዚህ ያክሉ * / እረፍት; መያዣ MW_MENU_BAR_ITEM_PRESSED_MESSAGE: / * የመስኮት ምናሌ አያያዝ ኮድ እዚህ * / እረፍት; መያዣ MW_BUTTON_PRESSED_MESSAGE: ከሆነ (መልእክት-> sender_handle == button_B1_handle) { / * እዚህ መቆጣጠሪያ * /} ለእረፍትዎ የአስተዳዳሪዎን ኮድ ያክሉ። ነባሪ / / * ሚሳራን ደስተኛ ያድርጓት * / እረፍት; }}

የመስኮቱ ሥራ አስኪያጅ አንድ ነገር እንደተከሰተ መስኮቱን ማሳወቅ በሚያስፈልግበት ጊዜ ይህ ለዚህ መስኮት በመስኮቱ ሥራ አስኪያጅ ይባላል። በዚህ ሁኔታ የመስኮቱ ብቸኛ ቁልፍ እንደተጫነ የማወቅ ፍላጎት አለን። ለመልዕክት ዓይነቶች በመቀየሪያ መግለጫ ውስጥ ለ MW_BUTTON_PRESSED_MESSAGE ጉዳይ ያያሉ። አዝራሩ ሲጫን ይህ ኮድ ይሠራል። በዚህ መስኮት ውስጥ አንድ አዝራር ብቻ አለ ፣ ግን የበለጠ ሊኖር ይችላል ፣ ስለዚህ በየትኛው አዝራር ላይ ቼክ ይደረጋል። በዚህ ሁኔታ እሱ አዝራር B1 ብቻ ሊሆን ይችላል (ስሙ በ JSON ፋይል ውስጥ ካለው አዝራር ስም ጋር ይዛመዳል)።

ስለዚህ ከዚህ ጉዳይ መሰየሚያ በኋላ የቀለም መራጭ መገናኛ ብቅ ብቅ ለማለት ኮዱን ያክሉ ፣ ይህ ነው

mw_create_window_dialog_colour_chooser (10 ፣ 10 ፣ “ቀለም” ፣ MW_HAL_LCD_RED ፣ ሐሰተኛ ፣ መልእክት-> ተቀባይ_አንድ)

መለኪያዎች እንደሚከተለው ናቸው

  • 10 ፣ 10 በንግግር ማያ ገጹ ላይ ያለው ቦታ ነው
  • “ቀለም” የንግግሩ ርዕስ ነው
  • MW_HAL_LCD_RED መገናኛው የሚጀምረው ነባሪው ቀለም ነው
  • ሐሰት ማለት ትልቅ መጠንን አያሳዩ (ወደ እውነት ለማቀናበር ይሞክሩ እና ልዩነቱን ይመልከቱ)
  • message-> የተቀባዩ እጀታ የዚህ መገናኛ ባለቤት ማን ነው ፣ በዚህ ሁኔታ ይህ መስኮት ነው። የመስኮት እጀታ በተግባሩ የመልዕክት ልኬት ውስጥ ነው። ይህ የንግግር ምላሽ የሚላክበት መስኮት ነው።

ተጠቃሚው የንግግር አቀናባሪውን የመረጠውን የቀለም ዋጋ ለማወቅ ተጠቃሚው በመገናኛ ውስጥ እሺ የሚለውን ቁልፍ ሲጫን መስኮታችን ከተመረጠው ቀለም ጋር መልእክት ይልካል። ስለዚህ ይህንን በሚመስል የመቀየሪያ መግለጫ ውስጥ ከሌላ ጉዳይ ጋር ይህንን መልእክት ማቋረጥ አለብን።

መያዣ MW_DIALOG_COLOUR_CHOOSER_OK_MESSAGE ፦

{mw_hal_lcd_colour_t selected_colour = message-> message_data ፤ (ባዶ) የተመረጠ ቀለም; } መሰበር;

እኛ በተመረጠው ቀለም እስካሁን ምንም እያደረግን አይደለም ፣ ስለዚህ የአቀነባባሪ ማስጠንቀቂያ ለመከላከል ባዶ እንዲሆን ጣለው። የዚህ ተግባር የመጨረሻ ኮድ አሁን ይህንን ይመስላል

ባዶ መስኮት_W1_message_function (const mw_message_t *message)

{MW_ASSERT (መልዕክት! = (ባዶ*) 0 ፣ «ባዶ ጠቋሚ መለኪያ»); / * ቀጣዩ መስመር ተለዋዋጭ በአሁኑ ጊዜ ጥቅም ላይ ያልዋለ ስለሆነ የአቅራቢ ማስጠንቀቂያዎችን ያቆማል */ (ባዶ) መስኮት_W1_data; መቀየሪያ (መልእክት-> መልእክት_ይድ) {case MW_WINDOW_CREATED_MESSAGE: / * ማንኛውንም የመስኮት መነሻ ኮድ እዚህ ያክሉ * / እረፍት; መያዣ MW_MENU_BAR_ITEM_PRESSED_MESSAGE: / * የመስኮት ምናሌ አያያዝ ኮድ እዚህ * / እረፍት; መያዣ MW_BUTTON_PRESSED_MESSAGE: ከሆነ (መልእክት-> sender_handle == button_B1_handle) { / * ለእዚህ ቁጥጥር የአስተዳዳሪዎን ኮድ እዚህ ያክሉ * / mw_create_window_dialog_colour_chooser (10 ፣ 10 ፣ “ቀለም” ፣ MW_HAL_LCD_RED ፣ የሐሰት ፣ መልእክት- } መሰበር; መያዣ MW_DIALOG_COLOUR_CHOOSER_OK_MESSAGE: {mw_hal_lcd_colour_t selected_colour = message-> message_data; (ባዶ) የተመረጠ ቀለም; } መሰበር; ነባሪ / / * MISRA ን በደስታ ይጠብቁ * / እረፍት; }}

ኮዱን ማስኬድ ከላይ ባለው ምስል ላይ ይታያል። አንድ ንግግር በሚታይበት ጊዜ እርስዎ ሌላ ማንኛውንም ነገር ከማድረግዎ በፊት ለእሱ ምላሽ መስጠት እና ማሰናበት እንዳለብዎት ያስተውሉ ይሆናል። ይህ ሞዳል ባህሪ ይባላል። በ MiniWin ውስጥ ውይይቶች እና ሁሉም ሁል ጊዜ በዓለም አቀፍ ደረጃ ሞዳል እና እርስዎ በአንድ ጊዜ አንድ ማሳያ ብቻ ሊኖርዎት ይችላል። ተጨማሪ ማብራሪያ እዚህ አለ…

am.wikipedia.org/wiki/ ሞዳል_ዊንዶው

ደረጃ 7 በመስኮቱ ውስጥ ስዕል

በመስኮቱ ውስጥ ስዕል
በመስኮቱ ውስጥ ስዕል

እስካሁን እኛ መቆጣጠሪያዎችን ብቻ ነው የተጠቀምነው ፣ እና እነሱ እራሳቸውን ይሳሉ። በመስኮታችን ላይ አንዳንድ ብጁ ስዕል ለመስራት ጊዜው አሁን ነው። ሊስሉበት የሚችሉት ክፍል በደንበሮቹ ውስጥ ነው (ካሉ ፣ እነሱ አማራጭ ናቸው) ፣ በማሸብለያ አሞሌዎች ውስጥ (ከተገለጸ ፣ እንዲሁ አማራጭ) እና ከርዕሱ አሞሌ በታች (አንድ ካለ ፣ ያ እንዲሁ አማራጭ ነው)። በመስኮት ቃላቶች ውስጥ የደንበኛ አካባቢ ተብሎ ይጠራል።

በ MiniWin ውስጥ ሊጠቀሙበት የሚችሉት የግራፊክስ ትዕዛዞች ቤተ -መጽሐፍት አለ። ሁሉም በመስኮት ያውቃሉ። ያ ማለት መስኮቱ ከታየ ፣ በከፊል በሌሎች መስኮቶች ከተደበዘዘ ፣ ከፊል ጠፍቶ ወይም ሙሉ በሙሉ ከማያ ገጹ ላይ ወይም እርስዎ የሚስሉበት ቦታ ቅንጅት በደንበኛው አካባቢ ወይም ከዚያ በላይ ከሆነ መጨነቅ አያስፈልግዎትም. ሁሉም ለእርስዎ እንክብካቤ ነው። ከደንበኛዎ አካባቢ ውጭ መሳል አይችሉም።

በመስኮቶች የቃላት አገባብ ውስጥ በደንበኛ አካባቢዎች ላይ መሳል ሥዕል ይባላል እና እያንዳንዱ መስኮት ስዕልዎን የሚያደርጉበት የቀለም ተግባር አለው። የእርስዎን የቀለም ተግባር አይጠሩም ፣ የመስኮቱ ሥራ አስኪያጅ አስፈላጊ በሚሆንበት ጊዜ ያደርግልዎታል። መስኮት ሲንቀሳቀስ ወይም በላዩ ላይ ሌላ መስኮት ቦታው ወይም ታይነቱ ሲቀየር ያስፈልጋል። የመስኮቱ ይዘቶች የሚወሰኑት አንዳንድ መረጃዎች ስለተለወጡ የመስኮትዎን ቀለም መቀባት ከፈለጉ (ማለትም የመስኮቱ ሥራ አስኪያጅ ከማወቅ ይልቅ መቀባት እንደሚያስፈልግ ያውቃሉ) ፣ ከዚያ እንደገና መቀባት እንደሚያስፈልግ እና እሱ እንደሚደውል የመስኮቱን ሥራ አስኪያጅ ንገሩት። የእርስዎ ቀለም ተግባር። እርስዎ እራስዎ አይጠሩትም። (ይህ ሁሉ በሚቀጥለው ክፍል ይታያል)።

በመጀመሪያ ፣ የእርስዎን የቀለም ተግባር መፈለግ ያስፈልግዎታል። የኮድ ጀነሬተር ለእርስዎ ይፈጥርልዎታል እና በቀደመው ክፍል ከተሻሻለው የመልእክት ተቆጣጣሪ ተግባር በላይ ነው። ወደ ፕሮጀክትዎ ይሂዱ እና ፋይል W1.c ን እንደገና ይክፈቱ።

በዚህ ፋይል ውስጥ የተግባር መስኮት_W1_paint_function () ያገኛሉ። ይህን ይመስላል -

ባዶ መስኮት_W1_paint_function (mw_handle_t window_handle ፣ const mw_gl_draw_info_t *draw_info)

{MW_ASSERT (draw_info! = (ባዶ*) 0 ፣ «ባዶ ጠቋሚ መለኪያ»); / * የመስኮቱን ደንበኛ ቦታ በጠንካራ ነጭ */ mw_gl_set_fill (MW_GL_FILL) ይሙሉ ፤ mw_gl_set_solid_fill_color (MW_HAL_LCD_WHITE); mw_gl_set_border (MW_GL_BORDER_OFF); mw_gl_clear_pattern (); mw_gl_rectangle (draw_info ፣ 0 ፣ 0 ፣ mw_get_window_client_rect (window_handle)። ስፋት ፣ mw_get_window_client_rect (window_handle). ቁመት) ፤ / * እዚህ የመስኮት ስዕል ኮድ እዚህ ያክሉልዎታል//}

ይህ በባዶ የተፈጠረ ኮድ ነው እና የሚያደርገው የደንበኛውን አካባቢ በጠንካራ ነጭ መሙላት ብቻ ነው። በደንበኛው አካባቢ ላይ ቢጫ የተሞላ ክበብ እንሳል። በመጀመሪያ የግራፊክስ አውድ ጽንሰ -ሀሳብ (ሌላ የዊንዶውስ ነገር) መረዳት አለብን። በግራፊክስ አውድ ውስጥ የስዕል ልኬቶችን እናስቀምጣለን እና ከዚያ አጠቃላይ የክበብ ስዕል አሰራሩን እንጠራዋለን። በዚህ ምሳሌ ውስጥ ልናስቀምጣቸው የሚገቡት ነገሮች ክበቡ ድንበር ፣ የድንበር መስመር ዘይቤ ፣ የድንበር ቀለም ፣ ክበቡ ተሞልቶ ፣ ቀለም ይሙሉ እና ስርዓተ -ጥለት ይኑሩ አይኑሩ። በደንበኝነት በማይሞላ ጠንካራ በተሞላ ነጭ አራት ማእዘን የደንበኛውን አካባቢ ለመሙላት ከዚህ በላይ ያለውን ተመሳሳይ ኮድ ማየት ይችላሉ። በግራፊክስ አውድ ውስጥ ያሉት እሴቶች በእያንዳንዱ የቀለም ተግባር ጥሪ መካከል አይታወሱም ስለዚህ እሴቶቹን ሁል ጊዜ ማቀናበር አለብዎት (ምንም እንኳን ከቀለም ተግባሩ ጋር ይታወሳሉ)።

ከላይ ባለው ኮድ ውስጥ መሙላት እንደበራ እና የመሙላት ጥለት እንደጠፋ ማየት ይችላሉ ፣ ስለዚህ እነዚያን እንደገና ማዘጋጀት አያስፈልገንም። ድንበር ፣ የድንበር መስመር ዘይቤን ወደ ጠንካራ ፣ የድንበር የፊት ቀለም ወደ ጥቁር እና እንደዚህ ያለ ቢጫ ቀለም መሙላት አለብን።

mw_gl_set_fg_lour (MW_HAL_LCD_BLACK);

mw_gl_set_solid_fill_cour (MW_HAL_LCD_YELLOW); mw_gl_set_line (MW_GL_SOLID_LINE); mw_gl_set_border (MW_GL_BORDER_ON); mw_gl_circle (draw_info ፣ window_simple_data.circle_x ፣ window_simple_data.circle_y ፣ 25) ፤

ኮድዎን ያክሉ በሚለው በዚህ ተግባር ውስጥ በአስተያየቱ ላይ ይህንን ኮድ ያክሉ። በመቀጠል እንደዚህ ያለ ክበብ መሳል አለብን

mw_gl_circle (draw_info ፣ 30 ፣ 30 ፣ 15) ፤

ይህ በ 30 ፣ 30 በ 30 ራዲየስ በ 30 ራዲየስ ላይ ክበብ ይስባል። ኮዱን እንደገና ይገንቡ እና እንደገና ይድገሙት እና ከላይ እንደሚታየው በመስኮቱ ውስጥ ክበብ ያያሉ። ክበቡ እና አዝራሩ ተደራራቢ መሆናቸውን ያስተውላሉ ነገር ግን አዝራሩ ከላይ ነው። ይህ በዲዛይን ነው። መቆጣጠሪያዎች በደንበኛው አካባቢ ከሚስቧቸው ከማንኛውም ነገር በላይ ናቸው።

ደረጃ 8 የመስኮት ውሂብ

የመስኮት ውሂብ
የመስኮት ውሂብ

እስካሁን ድረስ በመስኮት 1 የመልእክት ተግባር (ገቢ መልዕክቶችን ለማስተናገድ) እና የቀለም ተግባሩን (በመስኮቱ ደንበኛ አካባቢ ላይ ለመሳል) የራሳችንን ኮድ ተግባራዊ አድርገናል። ሁለቱን ለማገናኘት ጊዜው አሁን ነው። አዝራሩ ሲጫን ተጠቃሚው በቀለም መራጭ በሚመርጠው ቀለም በቀለም ተግባሩ ውስጥ የተቀረፀውን ክበብ እንሞላ። ያስታውሱ ፣ እኛ የቀለም ተግባሩን አንጠራውም ፣ የመስኮቱ ሥራ አስኪያጅ ያደርገዋል ፣ ስለዚህ የመልእክት ተግባራችን (የተመረጠውን ቀለም የሚያውቀው) በቀጥታ የቀለም ተግባሩን ራሱ መጥራት አይችልም። ይልቁንስ ውሂቡን መሸጎጥ እና የመስኮቱ ሥራ አስኪያጅ እንደገና መቀባት እንደሚያስፈልግ ማሳወቅ አለብን። ከዚያ የመስኮቱ ሥራ አስኪያጅ የተሸጎጠውን ውሂብ ሊጠቀም የሚችል የቀለም ተግባር ይደውላል።

በ W1.c አናት ላይ ባዶ የውሂብ አወቃቀር እና የዚህ ዓይነት ነገር በዚህ በኮድ ጄኔሬተር የተገለፀውን ያያሉ-

የንድፍ መዋቅር

{ / * የውሂብ አባላትዎን እዚህ ያክሉ * / char dummy; /* አንዳንድ አቀናባሪዎች ስለ ባዶ ቅጦች ቅሬታ ያሰማሉ ፣ የእርስዎን አባላት */} መስኮት_W1_data_t ሲያክሉ ይህን ያስወግዱ ፤ የማይንቀሳቀስ መስኮት_W1_data_t መስኮት_W1_data;

በጥሪዎች ላይ ተጠብቆ የመስኮት ውሂብ በመባል እንዲታወቅ የእኛን ውሂብ የምናስቀምጥበት ይህ ነው። እኛ እዚህ የተመረጠውን ቀለም ብቻ ማከማቸት አለብን ፣ እንደዚህ ያለ

የንድፍ መዋቅር

{ / * የውሂብ አባሎችዎን እዚህ ያክሉ * / mw_hal_lcd_colour_t selected_color; } መስኮት_W1_data_t; የማይንቀሳቀስ መስኮት_W1_data_t window_W1_data = {MW_HAL_LCD_YELLOW};

የመነሻ ቢጫ ቀለም እንሰጠዋለን። አሁን በመልዕክቱ ተግባር ውስጥ የተመረጠውን ቀለም እዚህ ለማስቀመጥ ኮዱን በትንሹ እንለውጣለን-

መያዣ MW_DIALOG_COLOUR_CHOOSER_OK_MESSAGE ፦

{window_W1_data.chosen_colour = message-> message_data; } መሰበር;

ከዚያ እንደዚህ ዓይነቱን ክበብ በሚስልበት ጊዜ ይህንን እሴት ለመጠቀም የቀለም ተግባሩን እንለውጣለን-

mw_gl_set_solid_fill_colour (መስኮት_W1_data.chosen_colour);

አሁን የመስኮቱ ይዘቶች የሚመኩበትን ውሂብ ቀይረናል ፣ ስለዚህ የመስኮቱ ሥራ አስኪያጅ መስኮቱ መቀባት እንደሚያስፈልገው ማሳወቅ አለብን። የንግግር እሺ መልእክት ሲደርሰው በመልዕክት ተግባር ውስጥ እናደርጋለን ፣ እንደዚህ

mw_paint_window_client (መልዕክት-> ተቀባዩ_ አያያዝ);

ይህ መስኮቱ በቀጥታ እንዲሳል አያደርግም። መስኮት እንደገና መቀባት እንዳለበት ወደ መስኮት አቀናባሪው መልእክት የሚልክ የፍጆታ ተግባር ነው (ወደ ውስጥ ከገቡ ይህ እንዴት እንደሚከሰት ማየት ይችላሉ)። በዚህ ጉዳይ ላይ እንደገና መቀባት ያለበት መስኮት ራሱ ነው ፣ እና በመስኮቱ ላይ ያለው እጀታ በመልዕክት ተቆጣጣሪው ተግባር ውስጥ ባለው የመልዕክት ልኬት ውስጥ ነው።

ከላይ ያሉት አንዳንድ የኮድ ቁርጥራጮች የት እንደሚሄዱ እርግጠኛ ካልሆኑ ጠቅላላው ፋይል አሁን ይህንን ይመስላል

#ያካትቱ

#miniwin.h " #ያካትቱ" miniwin_user.h " #" W1.h "typedef structure { / * የውሂብ አባሎችዎን እዚህ ያክሉ * / mw_hal_lcd_lour_t የተመረጠውን_ልብ; } መስኮት_W1_data_t; የማይንቀሳቀስ መስኮት_W1_data_t window_W1_data = {MW_HAL_LCD_YELLOW}; ባዶ መስኮት_W1_paint_function (mw_handle_t window_handle ፣ const mw_gl_draw_info_t *draw_info) {MW_ASSERT (draw_info! = (ባዶ *) 0 ፣ «Null pointer parameter»); / * የመስኮቱን ደንበኛ ቦታ በጠንካራ ነጭ */ mw_gl_set_fill (MW_GL_FILL) ይሙሉ ፤ mw_gl_set_solid_fill_color (MW_HAL_LCD_WHITE); mw_gl_set_border (MW_GL_BORDER_OFF); mw_gl_clear_pattern (); mw_gl_rectangle (draw_info ፣ 0 ፣ 0 ፣ mw_get_window_client_rect (window_handle)። ስፋት ፣ mw_get_window_client_rect (window_handle). ቁመት) ፤ / * እዚህ የመስኮት ስዕል ኮድ እዚህ ያክሉ// mw_gl_set_fg_colour (MW_HAL_LCD_BLACK); mw_gl_set_solid_fill_colour (መስኮት_W1_data.chosen_colour); mw_gl_set_line (MW_GL_SOLID_LINE); mw_gl_set_border (MW_GL_BORDER_ON); mw_gl_circle (draw_info ፣ 30 ፣ 30 ፣ 15) ፤ } ባዶ መስኮት_W1_message_function (const mw_message_t *message) {MW_ASSERT (መልዕክት! = (ባዶ *) 0 ፣ «ባዶ ጠቋሚ መለኪያ»); / * ቀጣዩ መስመር ተለዋዋጭ በአሁኑ ጊዜ ጥቅም ላይ ያልዋለ ስለሆነ የአቅራቢ ማስጠንቀቂያዎችን ያቆማል */ (ባዶ) መስኮት_W1_data; መቀየሪያ (መልእክት-> መልእክት_ይድ) {case MW_WINDOW_CREATED_MESSAGE: / * ማንኛውንም የመስኮት መነሻ ኮድ እዚህ ያክሉ * / እረፍት; መያዣ MW_MENU_BAR_ITEM_PRESSED_MESSAGE: / * የመስኮት ምናሌ አያያዝ ኮድ እዚህ * / እረፍት; መያዣ MW_BUTTON_PRESSED_MESSAGE: ከሆነ (መልእክት-> sender_handle == button_B1_handle) { / * ለእዚህ ቁጥጥር የአስተዳዳሪዎን ኮድ እዚህ ያክሉ * / mw_create_window_dialog_colour_chooser (10 ፣ 10 ፣ “ቀለም” ፣ MW_HAL_LCD_RED ፣ የሐሰት ፣ መልእክት- } መሰበር; መያዣ MW_DIALOG_COLOUR_CHOOSER_OK_MESSAGE: {window_W1_data.chosen_colour = message-> message_data; mw_paint_window_client (መልዕክት-> ተቀባዩ_ አያያዝ); } መሰበር; ነባሪ / / * MISRA ን በደስታ ይጠብቁ * / እረፍት; }}

እንደገና ይገንቡ እና ያሂዱ እና የክበቡን ሙሌት ቀለም ማዘጋጀት መቻል አለብዎት።

ይህ የመስኮት መረጃ ምሳሌ የምንጭ ፋይል ከላይ ባለው የማይንቀሳቀስ የውሂብ መዋቅር ውስጥ የተከማቸ ውሂብን ይጠቀማል። በዚህ ምሳሌ ውስጥ እንደምናደርገው የመስኮቱ አንድ ምሳሌ ብቻ ካለዎት ይህ ጥሩ ነው ፣ ግን ከአንድ በላይ ምሳሌ ካለዎት ሁሉም ተመሳሳይ የውሂብ አወቃቀር ይጋራሉ። ተመሳሳይ የመስኮት ዓይነት በርካታ አጋጣሚዎች የራሳቸው ውሂብ እንዲኖራቸው በየአንድ ምሳሌ ውሂብ ሊኖር ይችላል። ይህ በሰነዶች ማውጫ ውስጥ በተገኘው የ MiniWin ሰነድ ውስጥ ተብራርቷል። የፋይሉ ምሳሌ በአንድ መስኮት ዓይነት ውስጥ ብዙ ምስሎችን ለማሳየት ይጠቀምበታል (በዚህ አስተማሪው አናት ላይ ባለው ዋናው ምስል ላይ እንደሚታየው)።

ደረጃ 9 - አንዳንድ የመጨረሻ ቅርጸ ቁምፊ መዝናኛ

አንዳንድ የመጨረሻ ቅርጸ ቁምፊ መዝናኛ
አንዳንድ የመጨረሻ ቅርጸ ቁምፊ መዝናኛ

MiniWin የ TrueType ቅርጸ -ቁምፊ አተረጓጎም ይደግፋል። የተጠቃሚ በይነገጽዎን ጥሩ የሚያደርግ አንድ ነገር ካለ ማራኪ ቅርጸ -ቁምፊዎች ነው። ይህ የመጨረሻ ደረጃ በእውነተኛ ዓይነት ቅርጸ -ቁምፊ በ MiniWin መስኮት ውስጥ እንዴት እንደሚሰጥ ያሳያል።

የ TrueType ቅርጸ -ቁምፊዎችን ለማቅረብ ሁለት መንገዶች አሉ። አንደኛው ቀደም ሲል ለክበቡ እንደተደረገው በቀጥታ በደንበኛዎ አካባቢ ላይ መሳል ነው ፣ ሁለተኛው የጽሑፍ ሳጥን መቆጣጠሪያን ወደ መስኮትዎ ማከል ነው። እኛ እንደቀለለ የኋለኛውን እናደርጋለን።

አሁን በእኛ የ JSON ውቅረት ፋይል ውስጥ የጽሑፍ ሳጥን መቆጣጠሪያን እንጨምራለን። ይህንን እንዲመስል ወደ መስኮት 2 ትርጓሜ ያክሉት-

ልክ እንደዚህ:

{

“ስም”: “W2” ፣ “አርእስት”: “መስኮት 2” ፣ “X”: 50 ፣ “Y”: 65 ፣ “ስፋት”: 100 ፣ “ቁመት”: 80 ፣ “ድንበር”: እውነት ፣ “TitleBar”: እውነት ፣ “የሚታይ”: እውነት ፣ “የተቀነሰ”: ሐሰት ፣ “TextBoxes”: [{“ስም”: “TB1” ፣ “X”: 0 ፣ “Y”: 0 ፣ “ስፋት”: 115 ፣ “ቁመት”): 50 ፣ “ማረጋገጫ”: “ማእከል” ፣ “የጀርባ ቀለም”: “MW_HAL_LCD_YELLOW” ፣ “ForegroundColour”: “MW_HAL_LCD_BLACK” ፣ “ቅርጸ -ቁምፊ”: “mf_rlefont_BLKCHCRY16” ፣ “የነቃ”: እውነት ፣”እውነተኛ)

በ MiniWin ውስጥ ስለ TrueType ቅርጸ -ቁምፊዎች ፈጣን ቃል። ቅርጸ ቁምፊዎች በ.ttf ፋይሎች ይመጣሉ። በትላልቅ ኮምፒተሮች ላይ በመስኮት አስተዳዳሪዎች ውስጥ እነዚህ አስፈላጊ ሲሆኑ ወደ ማሳያዎ ይሰጣሉ። ይህ ብዙ የማቀነባበሪያ ኃይል እና ማህደረ ትውስታን ይወስዳል እና ለአነስተኛ መሣሪያዎች ተስማሚ አይደለም። በ MiniWin ውስጥ ወደ ቢት ካርታዎች ቀድመው ተሠርተው በቋሚ ቅርጸ-ቁምፊ መጠን እና ዘይቤ (ደፋር ፣ ሰያፍ ወዘተ) ላይ በማጠናቀር ጊዜ ተገናኝተዋል። ባወረዱት የ MiniWin ዚፕ ፋይል ውስጥ ይህ ለሁለት ምሳሌ ቅርጸ -ቁምፊዎች ለእርስዎ ተደርጓል። በሌሎች መጠኖች እና ቅጦች ላይ ሌሎች ቅርጸ -ቁምፊዎችን ለመጠቀም ከፈለጉ በሰነዶች አቃፊው ውስጥ የ MiniWin ሰነድን ይመልከቱ። MiniWin ውስጥ ለዊንዶውስ እና ለሊኑክስ የ.ttf ፋይሎችን በፕሮጀክትዎ ውስጥ ሊጥሏቸው ወደሚችሉት የኮድ ኮድ ፋይሎች ውስጥ መሣሪያዎች አሉ።

እና ሁለተኛ ፈጣን ቃል - አብዛኛዎቹ ቅርጸ -ቁምፊዎች በ Microsoft ዊንዶውስ ውስጥ የሚያገ includingቸውን ጨምሮ የቅጂ መብት ናቸው። ለግል ጥቅም በፍቃዳቸው ይጠቀሙባቸው ፣ ግን እርስዎ የሚያትሙት ማንኛውም ነገር ቅርጸ -ቁምፊዎቹ የታተሙበት ፈቃድ በ MiniWin ውስጥ ለተካተቱት 2 ቅርጸ -ቁምፊዎች ፣ ግን የማይክሮሶፍት ቅርጸ -ቁምፊዎች እንዳልሆነ ማረጋገጥ አለብዎት።

ወደ ኮዱ ተመለስ! ፋይሎችን ይፍጠሩ ፣ ይጣሉ ፣ ይገንቡ እና እንደ ቀድሞው ይድገሙት እና መስኮት 2 አሁን በዊክ ቅርጸ -ቁምፊ ውስጥ በቢጫ ጀርባ ላይ አንዳንድ ነባሪ ጽሑፍ አለው። የዊንዶውስ 2 ምንጭ ፋይል W2.c. ን በማረም ጽሑፉን እንለውጠው።

እኛ አሁን ከፈጠርነው የጽሑፍ ሳጥን ጋር መገናኘት አለብን እና እንደ ሚኒዊን ውስጥ እንደማንኛውም ግንኙነት ያንን የሚያደርጉበት መንገድ መልእክት መላክ ነው። መስኮቱ ሲፈጠር ግን ከመታየቱ በፊት በመቆጣጠሪያው ውስጥ ጽሑፉን ማዘጋጀት እንፈልጋለን ፣ ስለዚህ በ MW_WINDOW_CREATED_MESSAGE መያዣ ውስጥ በመልዕክት ተቆጣጣሪው ውስጥ ኮድ እንጨምራለን። መስኮቱ ከመታየቱ በፊት ይህ በመስኮት ኮድ የተቀበለ እና ለእንደዚህ ዓይነቶቹ ጅማሬዎች የታሰበ ነው። የኮድ ጄኔሬተር በመልዕክት ተቆጣጣሪ ተግባር ውስጥ ይህንን የሚመስል የቦታ መያዣ ፈጠረ-

መያዣ MW_WINDOW_CREATED_MESSAGE ፦

/ * ማንኛውንም የመስኮት የመጀመሪያ ደረጃ ኮድ እዚህ ያክሉ */ እረፍት;

ይህንን የመሰለ mw_post_message ተግባርን በመጠቀም ምን ጽሑፍ እንዲያሳይ እንደምንፈልግ ለጽሑፍ ሳጥኑ መቆጣጠሪያ መልእክት እንለጥፋለን-

መያዣ MW_WINDOW_CREATED_MESSAGE ፦

/ * እዚህ ማንኛውንም የመስኮት መነሻነት ኮድ እዚህ ያክሉ */ mw_post_message (MW_TEXT_BOX_SET_TEXT_MESSAGE ፣ መልእክት-> ተቀባዩ_ እጅ ፣ የጽሑፍ_ቦክስ_ቲቢ1_ሃንድል ፣ 0UL ፣ “ጨለማ እና ዐውሎ ነፋሻ ሌሊት…” ፣ MW_CONTROL_MESSAGE) ፤ ሰበር;

እነዚህ መለኪያዎች ናቸው

  • MW_TEXT_BOX_SET_TEXT_MESSAGE - ይህ ወደ መቆጣጠሪያው የምንልከው የመልዕክት አይነት ነው። እነሱ በ miniwin.h ውስጥ ተዘርዝረው በሰነዶቹ ውስጥ ተመዝግበዋል።
  • message-> receiver_handle - ይህ መልእክቱ ከማን ነው - ይህ መስኮት - እጀታው በመልዕክት ተቆጣጣሪ ተግባር ውስጥ በተላለፈው የመልዕክት ልኬት ውስጥ ነው።
  • text_box_TB1_handle - መልእክቱን ወደማን እየላክን ነው - የጽሑፍ ሳጥኑ መቆጣጠሪያ እጀታ። እነዚህ በተፈጠረው ፋይል miniwin_user.h ውስጥ ተዘርዝረዋል።
  • 0UL - የውሂብ እሴት ፣ በዚህ ጉዳይ ላይ ምንም የለም።
  • “ጨለማ እና አውሎ ነፋሻ ምሽት ነበር…” - የጠቋሚ እሴት - አዲሱ ጽሑፍ።
  • MW_CONTROL_MESSAGE - መቆጣጠሪያ ዓይነት ተቀባይ ተቀባይ ዓይነት።

ይሀው ነው. እንደተለመደው እንደገና ይገንቡ እና እንደገና ይድገሙት እና ከላይ ባለው ምስል ላይ እንደሚታየው የጽሑፍ ሳጥኑን ያገኛሉ።

የመልዕክት መለጠፍ ለ MiniWin መሠረታዊ ነው (ለሁሉም የመስኮት አስተዳዳሪዎች እንደሚደረገው)። ለተጨማሪ ምሳሌዎች በዚፕ ፋይል ውስጥ ያሉትን የምሳሌ ፕሮጄክቶችን ይመልከቱ እና ለአጠቃላይ ማብራሪያ በሰነዱ ውስጥ በ MiniWin መልዕክቶች ላይ ያለውን ክፍል ያንብቡ።

ደረጃ 10: ወደ ፊት መሄድ

Image
Image

ለ MiniWin ለዚህ መሠረታዊ መግቢያ ያ ነው። MiniWin እዚህ ከታየ የበለጠ ብዙ ማድረግ ይችላል። ለምሳሌ ፣ በዚህ መማሪያ ውስጥ ጥቅም ላይ የዋለው በቦርዱ ላይ ያለው ማያ ገጽ ትንሽ ነው እና መቆጣጠሪያዎቹ ትንሽ ናቸው እና ከዲበርበር ጋር መጠቀም ያስፈልጋል። ሆኖም ፣ ሌሎች ምሳሌዎች እና ሃርድዌር በትላልቅ ማሳያዎች ላይ ትላልቅ መቆጣጠሪያዎችን (2 መጠኖች አሉ) እና እነዚህ በጣት ሊሠሩ ይችላሉ።

እዚህ ከሚታዩት ሌሎች ብዙ የቁጥጥር ዓይነቶች አሉ። ለተጨማሪ መቆጣጠሪያዎች በኮድ ጀነሬተር አቃፊው ውስጥ ያሉትን የተለያዩ የ JSON ፋይሎችን ይመልከቱ። ሁሉም የቁጥጥር ዓይነቶች በእነዚህ ምሳሌዎች ተሸፍነዋል።

ዊንዶውስ ብዙ አማራጮች አሉት። ድንበሩ ፣ የርዕስ አሞሌው እና አዶዎቹ ሁሉም ሊዋቀሩ ይችላሉ። የማሸብለያ አሞሌዎች እና የመስኮት ደንበኛ ቦታዎችን ማሸብለል ይችላሉ ፣ ተመሳሳይ የመስኮት ዓይነት እና መስኮቶች በርካታ አጋጣሚዎች እርቃን ሊሆኑ ይችላሉ (የደንበኛ አካባቢ ብቻ ፣ ድንበር ወይም የርዕስ አሞሌ የለም) ይህ ማለት በማሳያው ላይ በቦታው ላይ በማጠናቀር ጊዜ ተስተካክለዋል ማለት ነው (በትላልቅ አዶዎች በዚህ ምስል ውስጥ ምስሉን ይመልከቱ - እነዚህ በእውነቱ 6 እርቃናቸውን መስኮቶች ናቸው)።

MiniWin ምንም ተለዋዋጭ ማህደረ ትውስታን አይጠቀምም። ይህ ለአነስተኛ እገዳ መሣሪያዎች ተስማሚ ያደርገዋል እና ለአንዳንድ የተከተቱ ፕሮጄክቶች መስፈርት ነው። MiniWin እና እሱ የሚያመነጨው ኮድ እንዲሁ ሙሉ በሙሉ MISRA 2012 ለ ‹ተፈላጊ› ደረጃ ተገዢ ነው።

ለተጨማሪ መረጃ በሰነዶቹ አቃፊ ውስጥ ለሰነዱ እና እንዲሁም በዚፕ ፋይል ውስጥ ላለው ሌላ ምሳሌ መተግበሪያዎች ይመልከቱ። የ MiniWin ሁሉንም ባህሪዎች እንዴት እንደሚጠቀሙ እና MiniWin ን ከ FatFS እና FreeRTOS ጋር እንዴት ማዋሃድ እንደሚቻል የሚያሳዩ ምሳሌዎች እዚህ አሉ።

የሚመከር: