我将MSDN里的例子WORDPAD里的CFormatBar类拷贝过来,想做一个和这个例子相似的字体格式工具栏。但在使用中出现一个问题。
在我的程序里,运行到void CFormatBar::SyncToView()函数里的VERIFY(GetOwner()->SendMessage(WM_NOTIFY, fh.idFrom, (LPARAM)&fh));这句时,fh里的成员cf的成员,除了size之外,其它成员均未被初始化,因此出错。而在WORDPAD中,到这里时cf的成员都被初始化过了。究竟WORDPAD是在哪里将cf初始化的呢,请高手指教。

解决方案 »

  1.   

    CHARHDR fh;
    CHARFORMAT& cf = fh.cf;
    fh.hwndFrom = m_hWnd;
    fh.idFrom = GetDlgCtrlID();
    fh.code = FN_GETFORMAT;
             该函数的意思是向视图发送取字体信息,字体信息是在发送消息后取得的,你应当设置
    fh.idFrom为你想取字体的窗口的ID,例子中上面不久是设置了fh的值吗
      

  2.   

    这段代码我没改。这几句里,我取到的是我的工具栏的ID,而WORDPAD取到的是它那个工具栏的ID,都没有问题。问题就是运行到下面的时候,它的cf里都是有效值,而我的里面是无效值,我就出错了。