मेरे पास एक एमएफसी ऐप है जो मैं कुछ हफ्तों के लिए काम कर रहा हूं, मैं लोड होने पर मुख्य फ्रेम के आयाम मैन्युअल रूप से सेट करना चाहता हूं, क्या कोई मुझे इसके साथ हाथ दे सकता है, विशेष रूप से कोड को कहां रखा जाए?एक एमएफसी विंडो का आकार
धन्यवाद!
मेरे पास एक एमएफसी ऐप है जो मैं कुछ हफ्तों के लिए काम कर रहा हूं, मैं लोड होने पर मुख्य फ्रेम के आयाम मैन्युअल रूप से सेट करना चाहता हूं, क्या कोई मुझे इसके साथ हाथ दे सकता है, विशेष रूप से कोड को कहां रखा जाए?एक एमएफसी विंडो का आकार
धन्यवाद!
तुम भी आकार सेट कर सकते हैं, या CWinApp
व्युत्पन्न वर्ग 'InitInstance
में। उस लाइन की तलाश करें जो pMainFrame->ShowWindow()
कहती है, और उस पंक्ति से पहले pMainFrame->SetWindowPos()
पर कॉल करें। यही वह जगह है जहां मैं हमेशा ऐसा करता हूं।
.. के साथ ..
CRect rect;
SystemParametersInfo(SPI_GETWORKAREA,0,&rect,0);
screen_x_size=rect.Width();
screen_y_size=rect.Height();
इन मानों का उपयोग एक्स और फिर अपने विंडो के Y आकार की गणना करने के लिए अपने स्क्रीन आकार का पता लगाएं
::SetWindowPos(m_hWnd,HWND_TOPMOST,0,0,main_x_size,main_y_size,SWP_NOZORDER);
कहाँ main_x_size
और main_y_size
अपने आकार रहे हैं।
मुझे लगता है कि आप PreCreateWindow देख रहे हैं और यह कि आपका ऐप संवाद आधारित नहीं है।
यह सीडब्ल्यूएनडी कक्षा का वर्चुअल सदस्य फ़ंक्शन है और इसे विंडो बनाने से ठीक पहले फ्रेमवर्क द्वारा बुलाया जाता है। तो यह आपके परिवर्तनों को रखने के लिए एक सही जगह है।
आप कुछ इस तरह लिखना चाहिए: CMainFrame::OnCreate()
के भीतर से (SetWindowPos()
साथ)
BOOL CMyWindow::PreCreateWindow(CREATESTRUCT& cs)
{
cs.cy = 640; // width
cs.cx = 480; // height
cs.y = 0; // top position
cs.x = 0; // left position
// don't forget to call base class version, suppose you derived you window from CWnd
return CWnd::PreCreateWindow(cs);
}
मैंने कोशिश की और बिल्कुल कोई प्रभाव नहीं पड़ा – masche
SPI_GETWORKAREA केवल प्राथमिक mnonitor के आकार हो जाता है। पूरे वर्चुअल डेस्कटॉप के लिए, इस का उपयोग करें: पूर्णांक desktopW = GetSystemMetrics (SM_CXVIRTUALSCREEN); int डेस्कटॉप एच = GetSystemMetrics (SM_CYVIRTUALSCREEN); –