PDA

View Full Version : سوال: کامپوننتهای ویندوزی در win32



ace.coder
سه شنبه 15 اردیبهشت 1388, 10:41 صبح
سلام

میخواستم بدونم چطور می تونم توی برنامه نویسی win32 دکمه های ویندوزی داشته باشم!!
منظورم از ویندوزی یعنی مثل ویندوز xp یا vista

کلا Button ، listbox ,textbox,groupbox هر کامپوننتی!

http://i43.tinypic.com/2qmew3q.jpg

Nima_NF
سه شنبه 15 اردیبهشت 1388, 16:33 عصر
این ها فقط visual style XP/Vista هستند و بر روی همان کنترل های استاندارد اعمال می شوند.

1- شما تنها باید یک فایل XML هم نام با برنامه خود بسازید ( YOURNAME.exe.manifest ) و محتویات زیر را در آن کپی کنید. اطاعات نام برنامه، شرکت و غیره را پر کنید، نوع CPU نیز مهم هست، برای 64 بیت باید X64 به جای X86 در processorArchitecture قرار داده شود یا * (استار) :



<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="X86"
name="CompanyName.ProductName.YourApp"
type="win32"
/>
<description>Your application description here.</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>



2- داخل فایل .res ،تعریف زیر را اضافه کنید:



CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "YourApp.exe.manifest"

3- قبل از باز شدن و یا ساختن پنجره باید حتما InitCommonControls یا InitCommonControlsEx را فراخوانی کنید، در غیر این صورت ممکن است دیالوگ ها باز نشوند.



4- برای یک نمونه ساده win32 برنامه زیر را دریافت و مشاهده کنید که شامل visual style هست:
http://barnamenevis.org/forum/showpost.php?p=600604&postcount=3

یا برای MFC مثال زیر :
http://www.codeproject.com/KB/cpp/AddXpStyle.aspx


توضیحات کامل تر و روش ها دیگر در این لینک MSDN (http://msdn.microsoft.com/en-us/library/ms997646.aspx)

ace.coder
چهارشنبه 16 اردیبهشت 1388, 01:06 صبح
اینو من Down کردم !! مثال موس را !! Vs2008 دارم!! ارور می ده!! Compile nemishe!

Nima_NF
چهارشنبه 16 اردیبهشت 1388, 03:36 صبح
به resource view بروید در فولدر RT_MANIFEST یک فایل با نام 1 هست. آن را پاک کنید.

سپس در source explorer بر روی MouseResource.rc راست کلیک کنید و view code.

دوباره مقدار زیر را در وسط در جای مناسب و در یک خط تعریف کنید:



CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "MouseSpeed.exe.manifest"

حال اگر کامپایل کنید فایل RT_MANIFEST دوباره ساخته می شود و در exe قرار می گیرد.

تذکر: دقت کنید که اگر مورد فوق را اضافه نکنید و پس از کامپایل RT_MANIFEST در resource view ساخته نشود، فایل MouseSpeed.exe.manifest داخل exe قرار نمی گیرد و در نتیجه بدون آن باید این فایل کنار فایل exe کپی شود.

ضمنا در این پروژه comctl32.lib نیز به linker اضافه کرده ام.

ace.coder
چهارشنبه 16 اردیبهشت 1388, 14:07 عصر
اقا نیما!! نمونه کد شما MFC هست!! من توی Win32 native می خوام!!
ممنون!

Nima_NF
چهارشنبه 16 اردیبهشت 1388, 15:09 عصر
اقا نیما!! نمونه کد شما MFC هست!! من توی Win32 native می خوام!!
ممنون!
شما که خودتان win32 می خواهید کار کنید باید راحت تشخصی دهید که نمونه برنامه mousespeed من با win32 هست نه MFC.

در هر حال چه win32 و چه MFC روش فرقی ندارد. همین کار هایی که گفتم را باید انجام دهید. فکر نمی کنم خیلی سخت باشه !

ace.coder
چهارشنبه 16 اردیبهشت 1388, 15:58 عصر
حق با شما بود!! من سوتی یجایی داده بودم تو VS ، ممنون... :خجالت:

سوتی این بود که فرم که باز بود ! روی Button دو بار کلیک کردم ( مثل C# ) تا Code View باز شه !
بعد Wizard MFC اومد!!
بعد الا که گفتی فهمیدم چه سوتی بدی دادم ..:لبخند: