मैं इस कार्यक्रम मैं कहाँ एक खिड़की बनाई गई है और वह अंदर मैं सादा सी (कोई MFC या संवाद) का उपयोग कर एक संपादन नियंत्रण जोड़ा, संपादित नियंत्रण निर्माण कोड के रूप मेंकोई एमएफसी का उपयोग कर मेरे Win32 C++ एप्लिकेशन में मेरा संपादन नियंत्रण अजीब क्यों दिखता है?
hWnd=::CreateWindowExA(NULL, //no extended style
"EDIT",
NULL, //no title
WS_CHILD|WS_VISIBLE|WS_BORDER,
x,
y,
Width,
Height,
hWndParent,
(HMENU)id,
(HINSTANCE) GetWindowLong(hWndParent, GWL_HINSTANCE),//the module instance
NULL);
है लेकिन गाया नियंत्रण बदसूरत लग रहा है। ..
और यहाँ है मैं क्या चाहते हैं मेरे नियंत्रण की तरह देखने के लिए ...
मैं InitCommonControlsEx
बुला की कोशिश की और comctl32.lib
शामिल है, लेकिन कुछ भी नहीं बदला।
मैं एक आवेदन प्रकट सभी निर्भरता का वर्णन समस्या को ठीक होगा फ़ाइल जोड़ने लगता है, लेकिन मैं कैसे कि विजुअल स्टूडियो 1010 आईडीई का उपयोग कर
(मैं मालसूची फ़ाइल अपने आप को संपादित नहीं कर सकते) करने के लिए पता नहीं है क्या यह संभव है केवल सी/सी ++ (कोई एमएफसी या .NET जैसे कुछ भी) का उपयोग करके सामान्य विस्टा शैली नियंत्रण प्राप्त करने के लिए। यदि मैनिफेस्ट संसाधन जोड़ना समस्या को ठीक करेगा तो मैं एक मैनिफेस्ट फ़ाइल कैसे लिखूं/उत्पन्न कर सकता हूं और इसे अपने एक्सई में जोड़ सकता हूं?
#include<Windows.h>
#include <commctrl.h >
#pragma comment(linker,"\"/manifestdependency:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
#pragma comment(lib,"comctl32.lib")
HWND hwndEdit;
LRESULT CALLBACK WndProc(HWND hWnd,UINT uMsg,WPARAM wp,LPARAM lp)
{
switch(uMsg)
{
case WM_CREATE:
hwndEdit = CreateWindow(
"EDIT", /* predefined class */
NULL, /* no window title */
WS_CHILD | WS_VISIBLE |
ES_LEFT | ES_AUTOHSCROLL|WS_BORDER,
0, 0, 100, 50, /* set size in WM_SIZE message */
hWnd, /* parent window */
(HMENU) 1, /* edit control ID */
(HINSTANCE) GetWindowLong(hWnd, GWL_HINSTANCE),
NULL); /* pointer not needed */
return 0;
break;
case WM_CLOSE:
::PostQuitMessage(0);//quit application
break;
default:
return ::DefWindowProcA(hWnd,uMsg,wp,lp);
}
return 0l;
}
int WINAPI WinMain(HINSTANCE hinstance,HINSTANCE hPrevinstance,char *cmd,int show)
{
INITCOMMONCONTROLSEX icc;
icc.dwICC=ICC_ANIMATE_CLASS|ICC_NATIVEFNTCTL_CLASS|ICC_STANDARD_CLASSES;
icc.dwSize=sizeof(icc);
InitCommonControlsEx(&icc);
char* tst="Simple edit control";
WNDCLASSEX mywindow;
MSG msg;
HWND hwnd;
mywindow.cbClsExtra=0;
mywindow.cbWndExtra=0;
mywindow.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);
mywindow.hCursor=LoadCursor(NULL,IDC_CROSS);
mywindow.hIcon=LoadIcon(NULL,IDI_APPLICATION);
mywindow.hInstance=hinstance;
mywindow.lpfnWndProc=WndProc;
mywindow.lpszClassName="Test";
mywindow.lpszMenuName=NULL;
mywindow.style=0;
mywindow.cbSize=sizeof(WNDCLASSEX);
mywindow.hIconSm=NULL;
if(!RegisterClassEx(&mywindow))
MessageBox(NULL,"Window Registration failed","Error occured",NULL);
hwnd=CreateWindowEx(WS_EX_TOPMOST,"Test","My window",WS_OVERLAPPEDWINDOW,900,300,400,350,NULL,NULL,hinstance,tst);
if(hwnd==NULL)
MessageBox(NULL,"Window creation failed","error",NULL);
::ShowWindow(hwnd,SW_SHOW);
::UpdateWindow(hwnd);
while (1) //NOTE: Game engine type message loop
{ Sleep(1);
if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
if (msg.message == WM_QUIT)
break;
TranslateMessage(&msg);
DispatchMessage (&msg);
}
}
return msg.wParam;
}
अद्यतन: मैं यूनिकोड चारसेट/पुस्तकालयों और अब दृश्य शैलियों संपादित करें नियंत्रण के लिए छोड़कर काम कर रहे हैं का उपयोग करने के ... एक बार देख ले अपने प्रोजेक्ट अद्यतन ..
मैं संपादन नियंत्रण WS_CHILD के लिए शैलियों का इस्तेमाल किया | WS_VISIBLE | ES_AUTOHSCROLL | ES_NOHIDESEL
ठीक है मैं MSDN साइट में "सक्षम करने से दृश्य शैलियाँ" पढ़ सकते हैं और जोड़ा प्रकट तो जाँच की है कि संसाधन हैकर में ... हर अपेक्षित परिणाम नहीं मिला ठीक चला गया, लेकिन अभी भी। – smit
यह मुझे पागल गाड़ी चला रहा है ... वह कैसे ** इस दुनिया में मैं सरल गैर संवाद आधारित नियंत्रण के लिए दृश्य शैलियों सक्षम कर सकते हैं ??????????????????? की – smit
संभव डुप्लिकेट [सी + विन एपीआई में प्रोग्रामिंग: कैसे नियंत्रण के लिए विंडोज 7 से देखने के लिए] (http://stackoverflow.com/questions/5663091/programming-in-c-win-api-how-to-get -windows-7-रंग-रूप के लिए नियंत्रण)। मेरा जवाब लिंकर को आपके लिए ऐसा करने के द्वारा आपके एप्लिकेशन में एक मैनिफेस्ट एम्बेड करने का एक आसान तरीका प्रदान करता है। कोई संसाधन संपादक की आवश्यकता नहीं है। –