এলপিসিডব্লিউএসটি কীসের পক্ষে দাঁড়ায় এবং কীভাবে এটি পরিচালনা করা উচিত?


91

প্রথমত, এটি ঠিক কি? আমার ধারণা এটি একটি পয়েন্টার (এলপিসি মানে দীর্ঘ পয়েন্টার ধ্রুবক), তবে "ডাব্লু" এর অর্থ কী? এটি কোনও স্ট্রিংয়ের নির্দিষ্ট পয়েন্টার বা নির্দিষ্ট স্ট্রিংয়ের পয়েন্টার? উদাহরণস্বরূপ, আমি "টেস্ট উইন্ডো" নামে একটি উইন্ডোটি বন্ধ করতে চাই।

HWND g_hTest;
LPCWSTR a;
*a = ("TestWindow");
g_hTest = FindWindowEx(NULL, NULL, NULL, a);
DestroyWindow(g_hTest);

কোডটি অবৈধ এবং এটি কার্যকর হয় না কারণ কনস্ট চর []] কনস্ট ডাব্লুসিএইচআর রূপান্তরিত করা যায় না। আমি এটা মোটেও পাই না। আমি এই সমস্ত এলপিসিডব্লিউএস, এলপিসিএসটিআর, এলপিসিটারের একটি স্পষ্ট বোঝা পেতে চাই। আমি কিছু সন্ধান করার চেষ্টা করেছি, তবে আমি আরও বিভ্রান্ত হয়ে পড়েছি। এমএসডিএন-তে সাইট FindWindowExহিসাবে ঘোষণা করা হয়েছে

HWND FindWindowEx(      
    HWND hwndParent,
    HWND hwndChildAfter,
    LPCTSTR lpszClass,
    LPCTSTR lpszWindow
);

সুতরাং সর্বশেষ পরামিতিটি এলপিসিএসটিআর এবং সংকলক এলপিসিডব্লিউএসআরটিতে দাবি করে। সাহায্য করুন.


59
মাইক্রোসফ্ট হাঙ্গেরিয়ান স্বরলিপিটিতে স্বাগতম।
টমাস ম্যাথিউজ

4
এটি আসলে আরও পড়ার যোগ্য ডকুমেন্টেশনের জন্য তৈরি করে, এটি সম্পর্কে যথাসময়ে করুণা করা সমস্ত কিছু।
ম্যাট যোগদানকারী

4
@Thomas: এই না কি মাইক্রোসফট (অথবা যে বিষয়টি জন্য সিমোনি) প্রাথমিকভাবে বাঁধা হাঙ্গেরীয় স্বরলিপি । এটি কোনও দুর্ঘটনার কমবেশি ফলাফল, যখন ডকুমেন্টেশন গ্রুপটি কিছু "পাঠযোগ্যতা" উন্নতি করার সিদ্ধান্ত নিয়েছে। তারা বিকাশকারী ছিল না এবং ফলস্বরূপ পরিবর্তনগুলি করুণাময় ছিল না। পটভূমি তথ্য হুগেরিয়ান স্বরলিপি
IInspectable

@Inspectable: ভাঙ্গা লিংক
নিকোলাস রাউল

উত্তর:


137

LPCWSTR"লং পয়েন্টার টু কনস্ট্যান্ট ওয়াইড স্ট্রিং" এর অর্থ। ডাব্লু ওয়াইডের পক্ষে দাঁড়ায় এবং এর মানে হল যে স্ট্রিংটি সাধারণভাবে 2 বাইটের অক্ষরে সংরক্ষণ করা হয় char। যে কোনও সি / সি ++ কোডের জন্য সাধারণ যা কেবলমাত্র নন-এএসসিআইআই স্ট্রিংগুলির সাথে ডিল করতে পারে = =

কোনটিকে নির্ধারণের জন্য একটি সাধারণ সি আক্ষরিক স্ট্রিং পেতে LPCWSTR, আপনাকে এটি এল দিয়ে উপসর্গ করা দরকার

LPCWSTR a = L"TestWindow";

8
কেবল প্রসারিত করার জন্য - 'লং' অংশটি 16 বিট উইন্ডো থেকে একটি হ্যাংওভার এবং এড়িয়ে যেতে পারে (নামে আপনার প্রয়োজন এটি ছাড়াই)
মার্টিন বেকেট

14
"16 বিট উইন্ডোজ থেকে হ্যাঙ্গওভার" - এটি নিশ্চিত!
জন ডিবলিং

4
নাহ, এটা সঠিক। এটি ছিল এবং 32 টি বিট পয়েন্টার। কোনও "সংক্ষিপ্ত" 16 বিট পয়েন্টার নেই, তাই আপনি যদি এটির সন্ধান করেন তবে অভিযোগ করতে পারেন SPCWSTR
MSalters

50
আমার .শ্বর। এল ??? চিঠি এল? এমনকি একটি ফাংশন না, এল ()? শুধু সাদামাটা এল? হেক কে নিয়ে এলো ??
জন ktejik

12
@ ব্যবহারকারী 39646483 এটি কোনও ভাষায় মানুষের অর্থ পরিবর্তন না করে কীভাবে প্রতিনিধিত্ব করা হয় তা পরিবর্তনের জন্য ধ্রুবকগুলিতে উপসর্গ এবং প্রত্যয় যুক্ত করা সাধারণ ভাষায় প্রচলিত। উদাহরণস্বরূপ, 36ULসি # তে একই (ulong)36(এক স্বাক্ষরিত স্বাক্ষরিত 64-বিট পূর্ণসংখ্যা)। @স্ট্রিংগুলির উপসর্গ হিসাবে একই ভাষায় ব্যবহার করা যেতে পারে, কীভাবে তারা সামান্য পার্স হয়।
জেনেক্সার

12

LPCWSTRসমতূল্য wchar_t const *। এটি একটি বিস্তৃত অক্ষরের স্ট্রিংয়ের পয়েন্টার যা ফাংশন কল দ্বারা সংশোধিত হবে না।

আপনি LPCWSTRএকটি স্ট্রিং আক্ষরিক একটি এল প্রিপেন্ডিং দ্বারা নির্ধারণ করতে পারেন :LPCWSTR *myStr = L"Hello World";

এলপিসি টি এসটিআর এবং অন্য কোনও টি প্রকার, আপনার প্রকল্পের ইউনিকোড সেটিংসের উপর নির্ভর করে একটি স্ট্রিং টাইপ নিন। যদি _UNICODEআপনার প্রকল্পের জন্য সংজ্ঞায়িত করা হয় তবে টি প্রকারের ব্যবহার বিস্তৃত অক্ষর ফর্মের সমান, অন্যথায় আনসি ফর্মগুলি। উপযুক্ত ফাংশনটিকেও এভাবে বলা হবে: এই সংজ্ঞা FindWindowExহিসাবে FindWindowExAবা তার FindWindowExWউপর নির্ভর করে সংজ্ঞায়িত করা হয় ।


7

এটি একটি ধ্রুবক, প্রশস্ত স্ট্রিংয়ের (যেমন প্রশস্ত অক্ষরের একটি স্ট্রিং) দীর্ঘ সূচক।

যেহেতু এটা ব্যাপক স্ট্রিং, আপনি যেমন আপনার ধ্রুবক বানাতে চাই: L"TestWindow"। আমি মধ্যবর্তীটিও তৈরি করতাম না a, আমি কেবলমাত্র L"TestWindow"প্যারামিটারটি পাস করতাম :

ghTest = FindWindowEx(NULL, NULL, NULL, L"TestWindow");

আপনি যদি প্যাডেন্টিকভাবে সঠিক হতে চান, তবে একটি "এলপিসিটিএসটিআর" হ'ল "পাঠ্য" স্ট্রিং - ইউনিকোড বিল্ডের একটি প্রশস্ত স্ট্রিং এবং এএনএসআই বিল্ডে একটি সরু স্ট্রিং, সুতরাং আপনার উপযুক্ত ম্যাক্রো ব্যবহার করা উচিত:

ghTest = FindWindow(NULL, NULL, NULL, _T("TestWindow"));

খুব কম লোকই কোড তৈরির বিষয়ে যত্নশীল যা ইউনিকোড এবং এএনএসআই চরিত্র উভয় জন্যই সংকলন করতে পারে এবং আপনি যদি এটি সত্যিকার অর্থে কাজ না করে থাকেন তবে সামান্য লাভের জন্য অতিরিক্ত কিছু কাজ হতে পারে। এই বিশেষ ক্ষেত্রে, খুব অতিরিক্ত কাজ নেই, তবে আপনি যদি স্ট্রিংগুলি ম্যানিপুলেট করছেন তবে সঠিক স্টাঙ্কগুলির সমাধান করার জন্য স্ট্রিং ম্যানিপুলেশন ম্যাক্রোগুলির একটি পুরো সেট রয়েছে।


4
আপনাকে প্যাড্যান্টিক্যালি সঠিক হওয়ার দরকার নেই, আপনি যদি _T (MAIN_WINDOW) এর মতো ধ্রুবক ব্যবহার করছেন তবে অন্যথায় LMAIN_WINDOW ব্যর্থ হবে _T () ব্যবহার করুন।
রোডলফো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.