在SDK,进行windows程序设计(不使用mfc),使用这些控件,要进行一些必要的初试化,否则如果在对话框上画这些控件,对话框就不能正常显示
先说Rich Edit控件,这个是个特例。
如果往对话框里添加了一个Rich Edit控件,然后运行程序.理应弹出对话框,但是没有弹出.
如果把Rich Edit 控件去掉,再运行.对话框就可以弹出。
如果在mfc下进行开发,那么只要程序启动的时候添加AfxInitRichEdit()这个函数,但是我们说了,现在不使用mfc,那怎么办呢!还好,我们还有msdn,在上面查了查,找到如下解决方法~~
在响应主窗口的WM_CREATE消息
在窗口函数中这样写
static HINSTANCE m_hLibRichEdit;
switch (message)
{
case WM_CREATE:
{
m_hLibRichEdit = LoadLibrary(_T("RICHED32.DLL"));
然后创建你的控件
break;
}
case WM_DESTROY:
FreeLibrary(m_hLibRichEdit);
break;
…………………………
或者在程序启动的时候就 在winmain中
就调用这个m_hLibRichEdit = LoadLibrary(_T("RICHED32.DLL"));
然后记得一定要在程序退出的时候调用
FreeLibrary(m_hLibRichEdit);
可以用一个全局的HINSTANCE 来保存这个m_hLibRichEdit
ok,解决了,开心ing……………………
我们说了,Rich Edit是个特例,其他的控件没有那么麻烦,但是…………
但是来了,在sdk编程时,用dialogbox显示的对话框上,只能有按钮、单选、复选等控件,加上如progress就显示不出来了。那在sdk下,类似于progress的控件要如何使用呢?
INITCOMMONCONTROLSEX initCtrls;
initCtrls.cbSize = sizeof(INITCOMMONCONTROLSEX);
initCtrls.dwICC = ICC_PROGRESS_CLASS;
InitCommonControlsEx(&initCtrls);
以前有个InitCommonControls的函数,现在已经逐步被这个InitCommonControlsEx取代了
我们来看看INITCOMMONCONTROLSEX 这个结构,有两个成员
DWORD dwSize;
DWORD dwICC;
第一个是大小,没什么好说的
第二个是指定了哪一种 common control ,查了一下msdn,支持如下控件类型
Value
Description
ICC_BAR_CLASSES
Loads toolbar, status bar, trackbar and command bar classes.
ICC_COOL_CLASSES
Loads rebar control class.
ICC_DATE_CLASSES
Loads date and time-picker control class.
ICC_LISTVIEW_CLASSES
Loads list view and header control classes.
ICC_PROGRESS_CLASS
Loads progress bar control class.
ICC_TAB_CLASSES
Loads tab control classes.
ICC_TREEVIEW_CLASSES
Loads tree view control classes.
ICC_UPDOWN_CLASS
Loads Up-Down control class.
ok,知道怎么做了吧