VC++问题集16

来源:互联网 发布:linux系统安装snmp服务 编辑:程序博客网 时间:2024/05/16 01:19

161.

MFC应用程序关闭了窗口但进程没有退出。
可能原因:
      在构造函数和析构函数中添加了一写代码,因为在派生类的构造函数中会自动调用基类的默认构造函数,不应该手动调用,析构函数 也是如此。
162.

SCROLLINFO结构
typedef struct tagSCROLLINFO {
    UINT cbSize;
    UINT fMask;
    int  nMin;
    int  nMax;
    UINT nPage;
    int  nPos;
    int  nTrackPos;
}   SCROLLINFO, *LPSCROLLINFO;
typedef SCROLLINFO CONST *LPCSCROLLINFO;
//////////////////
cbSize是结构大小,填sizeof(SCROLLINFO)
fMask指定使用结构中哪些成员,不指定的就不使用
可以是以下几个值的任意组合
SIF_ALL
SIF_DISABLENOSCROLL
SIF_PAGE
SIF_POS
SIF_RANGE
SIF_TRACKPOS
后面是最小位置,最大位置,page size,设置(或获得)位置, immediate position
nPage是每滚动一页的大小,也就是在滚动条空白区域点击的效果,滚动条的长度是一页的大小相对于总的范围的大小。

163.

如何获得一组单选按钮中选中的单选按钮:
 设置一组单选按钮中选中的按钮可以用CWnd::CheckRadioButton(...);
 获得可以用CWnd::GetCheckRadioButton(...);

164.

如何从Dll文件中导出C++类。
新建Win32 Dynamic-Link library工程。在此工程中定义要导出的类名。声明为__declspec(dllexport)
例如:
class __declspec(dllexport) A{
 A(){};
 ~A(){};
 void ShowMessage(){
  AfxMessageBox("I am Wjh");
 }
};
即可,编译生成Dll文件和lib文件。

然后新建一个工程dlltest用来测试刚生成的dll文件。
把前面生成的两个文件拷贝到dlltest目录下。然后拷贝一下类的声明,
class __declspec(dllimport) A{
 A();
 ~A();
 void ShowMessage();
};
把标识__declspec(dllexport)改成__declspec(dllimport)即可。
在工程中设置lib文件的路径,这样就可以定义类A使用了。
165.

如何在输入列表框项目中直接给CComboBox空间添加多条数据?
 直接输入数据,若需要多条数据可按ctrl+回车,换行输入即可.
166.

如何让应用程序窗口一创建就全屏显示,但不覆盖任务栏?
 方法如下:
 1.得到屏幕的宽度和高度;
 2.得到任务栏的窗口指针,进而得到任务栏的高度.
 3.CMainFrame::PreCreateWindow调用前设置CREATESTRUCT& cs.我们可以把这些设置放在CMainFrame::PreCreateWindow调用的最前面即可.
示例代码如下:
 BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
 //改变窗口显示大小,让窗口一创建的时候就全屏显示,但不覆盖状态栏
 cs.x=0;
 cs.y=0;
 cs.cx=::GetSystemMetrics(SM_CXSCREEN);

 HWND   hWnd=::FindWindow("Shell_TrayWnd",0);//得到状态栏窗口指针
 RECT   Rect;  
 if(::GetWindowRect(hWnd,&Rect)) //得到状态栏窗口矩形  
   {  
  cs.cy=::GetSystemMetrics(SM_CYSCREEN)-Rect.bottom+Rect.top;
   }
 else{
  cs.cy=::GetSystemMetrics(SM_CYSCREEN)-25;
 }
 m_clientRect.SetRect(0,0,cs.cx,cs.cy);//记下窗口显示区域
 if( !CFrameWnd::PreCreateWindow(cs) )
  return FALSE;
 if( !CFrameWnd::PreCreateWindow(cs) )
  return FALSE;
 cs.dwExStyle &= ~WS_EX_CLIENTEDGE;
 cs.lpszClass = AfxRegisterWndClass(0);
 return TRUE;
}
167.

设置连续单选框中选中按钮.
 调用函数CheckRadioButton即可.
168.

如何设置编辑框中显示的字体。
 只需调用函数CWnd::SetFont(...);即可。注意:字体要为全局变量在编辑框作用范围过程中该字体要一直保存着。
169.

内存分配问题。
 我在视图A中定义了一个自定义空间类型的指针aa,但在OnCreate中用new的方法给他分配内存,总是出现异常。
 我的视图A和框架F和视图B的关系是:框架F中先创建视图B,在B中有个单击事件创建视图A,但A的父窗口指定为F.这样就出现了new的异常.
 经过一番检查后我把A指向的父窗口改成B就没问题了.
 我不知道是因为不能指向框架F的原因还是因为在B中没有得到框架F的正确指针的问题.
170. 

error LNK2001: unresolved external symbol __endthreadex
 error LNK2001: unresolved external symbol __beginthreadex错误。
解决办法:
 alt+f7-->c++--->分类--->code grnerate--->use runtime  lib to 多线程

原创粉丝点击